webservice和rmi调用原理是什么?

qq1206908474 2015-08-23 06:46:24
webservice和rmi都可以实现远程过程调用,但是我的猜想是1.webservice和rmi是将远程对象传输到客户端,即客户端获得远程对象实例,然后调用方法?2.webservice和rmi通过通信实现调用,比如客户端将需要调用的方法名和参数发送给服务器端,服务器端调用相关的方法后将结果以一定格式传送给客户端,客户端解析出来。

如果是上面的方法一,那么如果客户端调用了一个方法,虽然获得了远程对象实例,但是客户端机器并不具备运行环境,如方法需要调用运行在服务器上的某个其他对象,或者使用服务器上的一个数据库等等,那么在客户端并没有这个环境啊?
如果是方法二,那么我看书上的一个例子,使用spring实现rmi,客户端这样访问

ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:spring.xml");
UserDao ud=(UserDao)ctx.getBean("ud");
ud.sayHello();

其中发布rmi服务器的配置为

<bean class="org.springframework.remoting.rmi.RmiServiceExporter"
p:service-ref="userDao"
p:serviceName="UserDao"
p:serviceInterface="rmi.UserDao"
p:registryPort="11199"/>

这里又说明了客户端确实获得了对象实例。
求解
...全文
112 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
新IT民工 2015-08-23
  • 打赏
  • 举报
回复
Web Service提供的服务是基于web容器的,底层使用http协议,类似一个远程的服务提供者,比如天气预报服务,对各地客户端提供天气预报,是一种请求应答的机制,是跨系统跨平台的。就是通过一个servlet,提供服务出去。 首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy Class) 这个代理类负责与WebService服务器进行Request 和Response 当一个数据(XML格式的)被封装成SOAP格式的数据流发送到服务器端的时候,就会生成一个进程对象并且把接收到这个Request的SOAP包进行解析,然后对事物进行处理,处理结束以后再对这个计算结果进行SOAP包装,然后把这个包作为一个Response发送给客户端的代理类(Proxy Class),同样地,这个代理类也对这个SOAP包进行解析处理,继而进行后续操作。这就是WebService的一个运行过程。 Web Service大体上分为5个层次: 1. Http传输信道 2. XML的数据格式 3. SOAP封装格式 4. WSDL的描述方式 5. UDDI UDDI是一种目录服务,企业可以使用它对Webservices进行注册和搜索 RMI 采用stubs 和 skeletons 来进行远程对象(remote object)的通讯。stub 充当远程对象的客户端代理,有着和远程对象相同的远程接口,远程对象的调用实际是通过调用该对象的客户端代理对象stub来完成的,通过该机制RMI就好比它是本地工作,采用tcp/ip协议,客户端直接调用服务端上的一些方法。优点是强类型,编译期可检查错误,缺点是只能基于JAVA语言,客户机与服务器紧耦合; JRMP是Java持有的,基于流的协议,完成一个对象的Java到Java的远程调用;IIOP是CORBA对象请求代理之间交流的协议,Java中使得程序可以和其他语言的CORBA实现互操作性的协议,和JRMP互补。 优点:支持分布式对象、跨平台,stubs/skeletons机制;缺点:不能跨语言。
qq1206908474 2015-08-23
  • 打赏
  • 举报
回复
我是题主,刚我测试了一下,使用rmi虽然看似在客户端获得了对象实例,但是却是在服务器端执行的,可能是客户端创建了代理,在代理里封装了发送请求参数和接收结果的过程,所以感觉过程调用方法还是上面的方法二,不知道对不对?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧