论坛首页 Java企业应用论坛

spring3.0.5的rmi集成使用

浏览 19730 次
精华帖 (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

转载请注明出处
   发表时间:2011-02-16  
RMI和Spring有关系么?Spring能为RMI开发带来哪些方便?

能够方便地生成存根,还是只填写一个RMI地址和端口,Spring自动给你生成存根和参考客户端实现类?
0 请登录后投票
   发表时间:2011-02-16  
george 写道
RMI和Spring有关系么?Spring能为RMI开发带来哪些方便?

能够方便地生成存根,还是只填写一个RMI地址和端口,Spring自动给你生成存根和参考客户端实现类?

spring对rmi进行了相应的包装,客户端的存根就是服务端的接口,开发很简单,只需要配置就可以.详细请看代码
0 请登录后投票
   发表时间:2011-02-16   最后修改:2011-02-16
现在程序员仿佛都对Spring有“一往情深”的情节,做什么应用,首先想到用Spring来捆绑,像JMS,定时任务、Web Service...等等,这些东西和Spring本质上没有什么关系,为什么一定要用Spring来作为胶水来粘结呢?
0 请登录后投票
   发表时间:2011-02-16  
85977328 写道
george 写道
RMI和Spring有关系么?Spring能为RMI开发带来哪些方便?

能够方便地生成存根,还是只填写一个RMI地址和端口,Spring自动给你生成存根和参考客户端实现类?

spring对rmi进行了相应的包装,客户端的存根就是服务端的接口,开发很简单,只需要配置就可以.详细请看代码

客户端的存根就是服务端的接口
RMI本来就是这样的啊,这个不是Spring的功劳,如果存根不是服务端的接口,那客户端如何调用存根?
0 请登录后投票
   发表时间:2011-02-16  
java原生的RMI,要实现Remote接口
spring这个什么都不需要,配置就可以
0 请登录后投票
   发表时间: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应有的步骤么?
0 请登录后投票
   发表时间:2011-02-16  
启动类还要实现UnicastRemoteObject接口,结构很麻烦的
用spring,只需要配置
0 请登录后投票
   发表时间:2011-02-16  
存根就是接口,我们的项目是基于maven管理的,所以不需要做接口相关的事情,引用近来即可。
0 请登录后投票
   发表时间:2011-02-16  
spring官方,提供了spring tools的集成eclipse,但我是没怎么用过了。
刚我也把文章的前言更新了一下。希望大家能更好的理解spring的rmi
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics