发表于: 2016-05-13 16:31:38
1 1842
【操作步骤】
1.初步测试RMI服务成功,目前总结出这么几点需要注意的地方:
1.1 service端和client端都需要放进去jar包,我刚开始以为client端不用jar包,一切处理都交给service端就好了。但是二者的jar包能不能不相同,我没有测试过,可能是需要哪个包就导入哪个包吧。
1.2 service端和client端可以看成是两个程序,只不过一个程序远程调用了另一个程序的方法罢了。
1.3 启动过程是这样的:我先用tomcat启动service端(端口号设为9080),再用jetty启动client端(端口号设置为8080)。
1.4 我刚开始以为RmiServiceExporter类只能用一次,一个项目所有的服务都需要配置在一个RmiServiceExporter类下面,其实不是,一个服务配置一个RmiServiceExporter类。
1.5 看网上的文章,基本上都会在服务端写一个main方法,然后在这个main方法中调用函数:
new ClassPathXmlApplicationContext("org/shirdrn/spring/remote/rmi/server.xml");
通过调用这个函数来启动RMI服务。我在Spring中配置好了server.xml文件后,把这个文件import到applicationContext.xml中,这样在启动服务端程序后,就直接把server.xml文件加载了,不用再写一个main函数。
2.目前的工作:我把所有的dao、models、util都放到service端,把jsp页面和controller类放到client端,把util类中所有要用到的方法都做好接口放到client端。
【知识总结】
【出现的问题(已解决)】
【出现的问题(未解决)】
1.相比较之下,客户端要获取bean,方法要困难一点,使用下面两个函数才能得到:
ApplicationContext ctx = new ClassPathXmlApplicationContext("rmiClient.xml");
ClassesService classesService = (ClassesService) ctx.getBean("classesService");
我尝试过使用注解的方式得到bean,但是失败了。那么这样写起来就挺麻烦的。我疑惑的是我明明已经在applicationContext.xml文件中引入rmiClient.xml了,这样在项目启动时应该就会自动加载rmiClient.xml进去,我为什么不能直接写一个ClassesService classesService 就得到这个类,而只能通过写那么长的两个函数式来得到这个bean?
【疑问】
评论