发表于: 2017-12-05 23:35:37

2 660


今天做的事情:


            

               部署两台service,只需要在rmi-server.xml中多复制一个bean

              

<bean id="serviceExporter2"
     class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service" ref="rmiService"/>
<property name="serviceName" value="rmiService2" />
<property name="serviceInterface" value="com.jnshu.dao.RmiService" />
<property name="registryPort" value="1101"/>
<!--<property name="servicePort" value="10991"/>-->
</bean>

         

                多分配一个端口,就可以实现一个web访问两个server

       

ApplicationContext context =
new ClassPathXmlApplicationContext(
"rmi/rmi-client.xml");

RmiService service =
(RmiService) context.getBean("rmiServiceProxy");

String result1 = service.doWork();
System.out.println(result1);

int result2 = service.add(1, 2);
System.out.println(result2);

RmiService service2 =
(RmiService) context.getBean("rmiServiceProxy2");

System.out.println(service2.add(10,11));
String s = service2.doWork();
System.out.println(s);


               开始拆分项目,client客户端与server服务分开来。将server层和dao层和实体类和一些配置文件分到server服务,其余放在client。


             

       

              如控制台所示,两个server端口号也不同,1100,1101


             在客户端报错,空指针异常




             总的来说,还是理解rmi较浅,没有理解清楚,拆分错误。再好好看下吧。



              

RMI:远程方法调用(Remote Method Invocation)。能够让在某个java虚拟机上的对象像调用本地对象一样调用另一个java 虚拟机中的对象上的方法。

RMI远程调用步骤:

1,客户对象调用客户端辅助对象上的方法

2,客户端辅助对象打包调用信息(变量,方法名),通过网络发送给服务端辅助对象

3,服务端辅助对象将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象

4,调用真正服务对象上的真正方法,并将结果返回给服务端辅助对象

5,服务端辅助对象将结果打包,发送给客户端辅助对象

6,客户端辅助对象将返回值解包,返回给客户对象

7,客户对象获得返回值






遇到的问题:


                   任务要求的WEB和Service到底是什么,这个用了很久。怎么拆分,这个看师兄日报,百度搜索,方向都没有。




收获:



                稍微会拆分一点,知道怎么去做了



              禅道: http://task.ptteng.com/zentao/task-view-14727.html









返回列表 返回列表
评论

    分享到