JAVA认证:Spring2.5整合RMI技术
来源:优易学  2011-9-12 11:12:47   【优易学:中国教育考试门户网】   资料下载   IT书店

  Java的RMI技术使用起来比较麻烦,有两点:服务发布和调用服务。
  通过Spring的RMI支持,可以非常容易的暴露任何的服务。
  下面是之前一篇《Java RMI之HelloWorld篇》文章的基础上,加入了Spring的框架来实现的例子。
  环境:jdk1.5
  spring-framework-2.5.6.SEC01
  所用的第三方包优先从Spring的lib包中获取,以获取最佳的兼容性。
  一、服务端实现
  第一服务接口,和以前不一样了,不用实现远程接口了。
  package lavasoft.sturmi;
  /**
  * 定义一个远程接口
  *
  */
  public interface HelloService {
  /**
  * 简单的返回“Hello World!"字样
  *
  * @return 返回“Hello World!"字样
  */
  public String helloWorld();
  /**
  * 一个简单的业务方法,根据传入的人名返回相应的问候语
  *
  * @param someBodyName 人名
  * @return 返回相应的问候语
  */
  public String sayHelloToSomeBody(String someBodyName);
  }
  服务实现类
  package lavasoft.sturmi;
  /**
  * 远程的接口的实现
  *
  * @author leizhimin 2009-8-17 13:54:38
  */
  public class HelloServiceImpl implements HelloService {
  public HelloServiceImpl() {
  }
  /**
  * 简单的返回“Hello World!"字样
  *
  * @return 返回“Hello World!"字样
  */
  public String helloWorld() {
  return "Hello World!";
  }
  /**
  * 一个简单的业务方法,根据传入的人名返回相应的问候语
  *
  * @param someBodyName 人名
  * @return 返回相应的问候语
  */
  public String sayHelloToSomeBody(String someBodyName) {
  return "你好," + someBodyName + "!";
  }
  }

  Spring配置rmi服务
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  "http://www.springframework.org/dtd/spring-beans.dtd">
  <beans>
  <bean id="helloService" class="lavasoft.sturmi.HelloServiceImpl"/>
  <bean id="serviceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">
  <property name="service" ref="helloService"/>
  <!-- 定义服务名 -->
  <property name="serviceName" value="hello"/>
  <property name="serviceInterface" value="lavasoft.sturmi.HelloService"/>
  <property name="registryPort" value="8088"/>
  </bean>
  </beans>
  二、客户端调用测试
  客户端调用有两种方式,一种是使用Spring,一种不使用,这里仅介绍使用Spring的情况。
  在Spring中配置客户端要调用服务:
  <?xml version="1.0" encoding="UTF-8"?>
  <beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
  <bean id="helloService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
  <property name="serviceUrl" value="rmi://192.168.14.117:8088/hello"/>
  <property name="serviceInterface" value="lavasoft.sturmi.HelloService"/>
  </bean>
  <bean id="helloServiceClient" class="lavasoft.sturmi.HelloClient">
  <property name="helloService" ref="helloService"/>
  </bean>
  </beans>
  客户端测试代码:
  package lavasoft.sturmi;
  import org.springframework.context.ApplicationContext;
  import org.springframework.context.support.ClassPathXmlApplicationContext;
  import java.rmi.RemoteException;
  /**
  * 通过Spring来调用RMI服务
  *
  */
  public class HelloClient {
  private HelloService helloService;
  public static void main(String[] args) throws RemoteException {
  ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext_rmi_client.xml");
  HelloService hs = (HelloService) ctx.getBean("helloService");
  System.out.println(hs.helloWorld());
  System.out.println(hs.sayHelloToSomeBody("Lavasoft"));
  }
  public void setHelloService(HelloService helloService) {
  this.helloService = helloService;
  }
  }
  package lavasoft.sturmi;
  import org.springframework.context.ApplicationContext;
  import org.springframework.context.support.ClassPathXmlApplicationContext;
  /**
  * 通过Spring发布RMI服务
  *
  */
  public class HelloHost {
  public static void main(String[] args) {
  ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext_rmi_server.xml");
  System.out.println("RMI服务伴随Spring的启动而启动了.....");
  }
  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训