转载自 http://www.iteye.com/topic/908016
  • 一 前言 
        工作环境中,大部分功能,都是基于服务(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的集成使用方式; 

  • spring3.0.5_rmi.zip (2.3 MB)