发表于: 2017-12-05 23:35:37
2 661
今天做的事情:
部署两台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
评论