Java的RMI技术使用起来比较麻烦,有两点:服务发布和调用服务。
通过Spring的RMI支持,可以非常容易的暴露任何的服务。
下面是之前一篇《Java RMI之HelloWorld篇》文章的基础上,加入了Spring的框架来实现的例子。
环境:jdk1.5
spring-framework-2.5.6.SEC01
所用的第三方包优先从Spring的lib包中获取,以获取最佳的兼容性。
所依赖的jar包:
一、服务端实现
第一服务接口,和以前不一样了,不用实现远程接口了。
package lavasoft.sturmi; /** * 定义一个远程接口 * * @author leizhimin 2009-8-17 13:53:38 */ 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> |
服务端测试:
package lavasoft.sturmi; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 通过Spring发布RMI服务 * * @author leizhimin 2009-8-17 14:22:06 */ public class HelloHost { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext_rmi_server.xml"); System.out.println("RMI服务伴随Spring的启动而启动了....."); } } |
启动后如图所示:
[1] [2] 下一页