欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

远程调用java,

来源: javaer 分享于  点击 30801 次 点评:148

远程调用java,


远程通信的几种选择
多数情况下,ws(webservice)是同步的,jms是异步。虽然,ws也可以是异步的,而jms也可以是同步的。


RMI:java专用,RMI是一种PRC.java的RMI就是java平台上的RPC技术方案。
1.编写继承Romote的接口,然后实现此接口
2.将rmi注册到本机对应的端口、
3.访问服务器的端口然后调用方法



SOAP: 将方法的class文件放在一哥Tomcat服务器,然后远程调用
1.需要四个jar包,xerces.jar、soap.jar、mail.jar、activation.jar,分别导入Tomcat和项目中
2.将soap解压的soap。war放在Tomcat/Webapps中
3.启动tomcat,即可http://localhost:8080/soap/admin/访问soap的网站
4.编写项目,将编译好的class文件打包jar后放入tomcat的lib目录,重启tomcat
5.任意位置编写xml文件,将程序注册到SOAP服务中
6.设置四个jar包的classpath路径
7.dos窗口进入xml文件位置运行一下代码,未报错表示运行成功java  org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/soap/servlet/rpcrouter  deploy  HelloWorld.xml
8.进入http://localhost:8080/soap/admin/会看到注册的服务
9.运行客户端代码即可调用方法


WebService:Web service一般就是用SOAP协议通过HTTP来调用它,其实他就是一个WSDL文档,客户都可以阅读WSDL文档来用这个Web service,直接解析文档
1.建立webservice的服务端项目
2.编写代码,添加注解,编译,运行
3.访问http://localhost:9001/Service/ServiceHello?wsdl
4.新建webservice的客户端项目
5.dos窗口运行:wsimport -s G:\\workspace\\webService\\TheClient\\src -p com.hyan.client -keep http://localhost:9001/Service/ServiceHello?wsdl
6.编写测试类,调用方法




PRC:RPC是Remote Procedure Calling,远程过程调用的缩写。并不是“远程进程调用”,RPC总的来说是一个Client/Server的结构,提供服务的一方称为Server,消费服务的一方称为Client
总结来说,要实现远程过程调用,需要有3要素: 
1、server必须发布服务 
2、在client和server两端都需要有模块来处理协议和连接 
3、server发布的服务,需要将接口给到client 


JMS:应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
1.下载运行ActiveMQ
2.编写服务端代码,运行发送消息
3.编写测试端代码,运行接收消息




一、RPC与RMI
1.RPC 跨语言,而 RMI只支持Java
2.RMI 调用远程对象方法,允许方法返回 Java 对象以及基本数据类型,而RPC 不支持对象的概念,传送到 RPC 服务的消息由外部数据表示 (External Data Representation, XDR) 语言表示,这种语言抽象了字节序类和数据类型结构之间的差异。只有由 XDR 定义的数据类型才能被传递, 可以说 RMI 是面向对象方式的 Java RPC 。
3.在方法调用上,RMI中,远程接口使每个远程方法都具有方法签名。如果一个方法在服务器上执行,但是没有相匹配的签名被添加到这个远程接口上,那么这个新方法就不能被RMI客户方所调用。
    在RPC中,当一个请求到达RPC服务器时,这个请求就包含了一个参数集和一个文本值,通常形成“classname.methodname”的形式。这就向RPC服务器表明,被请求的方法在为 “classname”的类中,名叫“methodname”。然后RPC服务器就去搜索与之相匹配的类和方法,并把它作为那种方法参数类型的输入。这里的参数类型是与RPC请求中的类型是匹配的。一旦匹配成功,这个方法就被调用了,其结果被编码后返回客户方。


二。JMS和RMI
采用JMS 服务,对象是在物理上被异步从网络的某个JVM 上直接移动到另一个JVM 上(是消息通知机制)
而RMI 对象是绑定在本地JVM 中,只有函数参数和返回值是通过网络传送的(是请求应答机制)。
RMI一般都是同步的,也就是说,当client调用Server的一个方法的时候,需要等到对方的返回,才能继续执行client端,这个过程调用本地方法感觉上是一样的,这也是RMI的一个特点。
JMS 一般只是一个点发出一个Message到Message Server,发出之后一般不会关心谁用了这个message。
所以,一般RMI的应用是紧耦合,JMS的应用相对来说是松散耦合应用。

三。Webservice与RMI
RMI是在tcp协议上传递可序列化的java对象,只能用在java虚拟机上,绑定语言,客户端和服务端都必须是java
webservice没有这个限制,webservice是在http协议上传递xml文本文件,与语言和平台无关


四。Webservice与JMS
Webservice专注于远程服务调用,jms专注于信息交换。
JMS是java平台上的消息规范。一般jms消息不是一个xml,而是一个java对象,很明显,jms没考虑异构系统,说白了,JMS就没考虑非java的东西。但是好在现在大多数的jms provider(就是JMS的各种实现产品)都解决了异构问题。相比WebService的跨平台各有千秋吧。


五。HTTP和SOAP完全就是两个不同的协议:
HTTP只负责把数据传送过去,不会管这个数据是XML、HTML、图片、文本文件或者别的什么。而SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用等,怎么能够混为一谈。 
HTTP就是邮局的协议,他们规定了你的信封要怎么写,要贴多少邮票等。。。。   
    SOAP就是你们之间交流的协议,负责把你所需要表达的意思写在信纸上,同时也负责让对方能够看得懂你的信。
soap信息可以通过http协议包装后通过tcp或udp传输。

相关文章

    暂无相关文章
相关栏目:

用户点评