锁定老帖子 主题:spring3.0.5的rmi集成使用
精华帖 (1) :: 良好帖 (0) :: 新手帖 (14) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-16
最后修改:2011-03-30
工作环境中,大部分功能,都是基于服务(SOA模式)的,因此用到了rmi.使用他的目的就是让分布式的开发变的简单,同时提高了项目的扩展性,可维护性,可读性. rmi有很多种,例如: 1)远程方法调用(RMI) 2)Spring自己的HTTP invoker 3)EJB 4)Web Services ...... 本文选择了spring的rmi接口进行分布式开发应用.具体用哪种rmi,我们还需要深入的挖掘.本文不作讨论. 至于具体哪里简单呢?需要朋友们深入了解java的远程方法调用(RMI).服务端的接口要继承java.rmi.Remote接口.启动类需要继承java.rmi.server.UnicastRemoteObject类.而且诸如服务器地址等配置信息,也不应该放在代码中,因此spring的rmi模式就应运而生了. 二 环境(javaSE项目) jdk1.6.0.23 eclipse3.6.1_javaee 三 包 1)日志管理 commons-logging-1.1.1.jar log4j-1.2.16.jar 2)spring核心包 org.springframework.asm-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE.jar org.springframework.context-3.0.5.RELEASE.jar org.springframework.core-3.0.5.RELEASE.jar org.springframework.expression-3.0.5.RELEASE.jar 3)aop支持 aopalliance.jar org.springframework.aop-3.0.5.RELEASE.jar 四 spring基础配置 1)log4j的配置(src/log4j.properties),推荐配置; 2)commons-logging的配置(src/commons-logging.properties):这里是选配的,不配也不会报错,只是为了方便以后日志系统的切换; 3)spring的配置(src/applicationContext.xml),主要是头文件,spring3对头文件的要求很严格; 五 服务端配置与开发 1)开发服务的接口 2)开发服务的实现类 3)配置spring,配置实现类 4)配置spring,注册rmi服务,其中需要说明 a.远程调用服务名 b.提供服务的实现类 c.提供服务的接口 d.提供服务的端口 六 客户端配置与开发 1)将服务端的接口进行打包(注:不需要实现类,只是客户端访问服务端的一个存根) 2)配置spring a.指定访问服务的地址 b.指定服务的接口 七 总结 1)接口与类就是java最简单的结构.与RMI无关; 2)客户端必须要有实现类的接口(存根),这样才能访问后实现类的转型,引用与方法调用; 3)本文将服务端和客户端写到了一个工程里,朋友们可以自己将起分离开来使用,但需要注意修改IP地址和开放防火墙相应端口; 4)服务端和客户端都需要使用spring才可以进行rmi的相关开发; 5)笔者会陆续补充其他几种rmi的集成使用方式; 作者简介 昵称:澳洲鸟 姓名:朴海林 QQ:85977328 MSN:6301655@163.com 转载请注明出处 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-02-16
RMI和Spring有关系么?Spring能为RMI开发带来哪些方便?
能够方便地生成存根,还是只填写一个RMI地址和端口,Spring自动给你生成存根和参考客户端实现类? |
|
返回顶楼 | |
发表时间:2011-02-16
george 写道 RMI和Spring有关系么?Spring能为RMI开发带来哪些方便?
能够方便地生成存根,还是只填写一个RMI地址和端口,Spring自动给你生成存根和参考客户端实现类? spring对rmi进行了相应的包装,客户端的存根就是服务端的接口,开发很简单,只需要配置就可以.详细请看代码 |
|
返回顶楼 | |
发表时间:2011-02-16
最后修改:2011-02-16
现在程序员仿佛都对Spring有“一往情深”的情节,做什么应用,首先想到用Spring来捆绑,像JMS,定时任务、Web Service...等等,这些东西和Spring本质上没有什么关系,为什么一定要用Spring来作为胶水来粘结呢?
|
|
返回顶楼 | |
发表时间:2011-02-16
85977328 写道 george 写道 RMI和Spring有关系么?Spring能为RMI开发带来哪些方便?
能够方便地生成存根,还是只填写一个RMI地址和端口,Spring自动给你生成存根和参考客户端实现类? spring对rmi进行了相应的包装,客户端的存根就是服务端的接口,开发很简单,只需要配置就可以.详细请看代码 客户端的存根就是服务端的接口 RMI本来就是这样的啊,这个不是Spring的功劳,如果存根不是服务端的接口,那客户端如何调用存根? |
|
返回顶楼 | |
发表时间:2011-02-16
java原生的RMI,要实现Remote接口
spring这个什么都不需要,配置就可以 |
|
返回顶楼 | |
发表时间:2011-02-16
最后修改:2011-02-16
如果Spring能够提供一个GUI界面,来配置生成一些客户端存根和策略文件,并生成客户端demo代码段,也许还有用,如生成下面的策略文件,就降低了手动写的错误概率:
grant { permission java.net.SocketPermission "129.69.25.15:1024-65225","connect"; permission java.net.SocketPermission "129.69.25.16:1009","connect"; }; 如果还是传统的方式,一步一步地自己来生成存根、调用生成的类.... 这和Spring有什么关系,不就是平常开发RMI应有的步骤么? |
|
返回顶楼 | |
发表时间:2011-02-16
启动类还要实现UnicastRemoteObject接口,结构很麻烦的
用spring,只需要配置 |
|
返回顶楼 | |
发表时间:2011-02-16
存根就是接口,我们的项目是基于maven管理的,所以不需要做接口相关的事情,引用近来即可。
|
|
返回顶楼 | |
发表时间:2011-02-16
spring官方,提供了spring tools的集成eclipse,但我是没怎么用过了。
刚我也把文章的前言更新了一下。希望大家能更好的理解spring的rmi |
|
返回顶楼 | |