Spring整合Rmi总结
2012-08-08 11:54
471 查看
在Spring整合Rmi中:
服务端使用了org.springframework.remoting.rmi.RmiServiceExporter
RmiServiceExporter把任何Spring管理的Bean输出成一个RMI服务。通过把Bean包装在一个适配器类中工作。适配器类被绑定到RMI注册表中,并且将请求代理给服务类。
客户端使用了org.springframework.remoting.rmi.RmiProxyFactoryBean
客户端的核心是RmiProxyFactoryBean,包含serviceURL属性和serviceInterface属性。
通过JRMP访问服务。JRMP JRMP:java remote method protocol,Java特有的,基于流的协议。
下面给出简单例子
服务端程序:
新建接口:
再实现该接口的方法:
在src下新建applicationContext.xml 配置文件
启动服务端的类【MainServer.java】
客户端代码:
在客户端使用服务端的接口文件:
然后在src下新建【applicationContext.xml】
最新新建客户端的测试类【TestRmi.java】
最后控制台输出
服务端:
客户端:
附下载地址:http://pan.baidu.com/s/1nt9c27J
服务端使用了org.springframework.remoting.rmi.RmiServiceExporter
RmiServiceExporter把任何Spring管理的Bean输出成一个RMI服务。通过把Bean包装在一个适配器类中工作。适配器类被绑定到RMI注册表中,并且将请求代理给服务类。
客户端使用了org.springframework.remoting.rmi.RmiProxyFactoryBean
客户端的核心是RmiProxyFactoryBean,包含serviceURL属性和serviceInterface属性。
通过JRMP访问服务。JRMP JRMP:java remote method protocol,Java特有的,基于流的协议。
下面给出简单例子
服务端程序:
新建接口:
/** * IRmiServer.java * 版权所有(C) 2012 * 创建:cuiran 2012-08-08 11:12:40 */ package com.cayden.rmi; /** * TODO * @author cuiran * @version TODO */ public interface IRmiServer { public boolean test(); }
再实现该接口的方法:
/** * RmiServerImpl.java * 版权所有(C) 2012 * 创建:cuiran 2012-08-08 11:13:24 */ package com.cayden.rmi.impl; import com.cayden.rmi.IRmiServer; /** * TODO * @author cuiran * @version TODO */ public class RmiServerImpl implements IRmiServer { /* (non-Javadoc) * @see com.cayden.rmi.IRmiServer#test() */ @Override public boolean test() { System.out.println("调用了我--服务端 O(∩_∩)O哈!"); return true; } }
在src下新建applicationContext.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.5//EN" "file:/usr/local/tomcat_report/lib/spring-beans-2.0.dtd"> <beans> <!-- rmi --> <bean id="rmiService" class="com.cayden.rmi.impl.RmiServerImpl"> </bean> <bean id="remoteRmiService" class="org.springframework.remoting.rmi.RmiServiceExporter"> <property name="serviceName"> <value>remoteService</value> </property> <property name="service" ref="rmiService" /> <property name="serviceInterface"> <value>com.cayden.rmi.IRmiServer</value> </property> <property name="registryPort"> <value>9400</value> </property> <property name="servicePort"> <value>9401</value> </property> </bean> </beans>
启动服务端的类【MainServer.java】
package com.cayden.rmi; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * MainServer.java * 版权所有(C) 2012 * 创建:cuiran 2012-08-08 11:44:07 */ /** * TODO * @author cuiran * @version TODO */ public class MainServer { /** * TODO * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("rmi服务端启动"); ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); System.out.println("rmi服务端启动完成。。。"); } }
客户端代码:
在客户端使用服务端的接口文件:
/** * IRmiServer.java * 版权所有(C) 2012 * 创建:cuiran 2012-08-08 11:12:40 */ package com.cayden.rmi; /** * TODO * @author cuiran * @version TODO */ public interface IRmiServer { public boolean test(); }
然后在src下新建【applicationContext.xml】
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.5//EN" "file:/usr/local/tomcat_report/lib/spring-beans-2.0.dtd"> <beans> <!-- rmi远程调用 --> <bean id="testRmiService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> <property name="serviceUrl"> <value>rmi://127.0.0.1:9400/remoteService</value> </property> <property name="serviceInterface"> <value>com.cayden.rmi.IRmiServer</value> </property> </bean> </beans>
最新新建客户端的测试类【TestRmi.java】
/** * TestRmi.java * 版权所有(C) 2012 * 创建:cuiran 2012-08-08 11:38:06 */ package com.cayden.rmi.client; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.cayden.rmi.IRmiServer; /** * TODO * @author cuiran * @version TODO */ public class TestRmi { public static void main(String[] arg) { System.out.println("rmi客户端开始调用"); ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); IRmiServer rmi=(IRmiServer)ctx.getBean("testRmiService"); rmi.test(); System.out.println("rmi客户端调用结束"); } }
最后控制台输出
服务端:
rmi服务端启动 log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext). log4j:WARN Please initialize the log4j system properly. rmi服务端启动完成。。。 调用了我--服务端 O(∩_∩)O哈!
客户端:
rmi客户端开始调用 2012-8-8 11:46:51 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1c29ab2: display name [org.springframework.context.support.ClassPathXmlApplicationContext@1c29ab2]; startup date [Wed Aug 08 11:46:51 CST 2012]; root of context hierarchy 2012-8-8 11:46:51 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [applicationContext.xml] 2012-8-8 11:46:51 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory 信息: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@1c29ab2]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1e0bc08 2012-8-8 11:46:51 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1e0bc08: defining beans [testRmiService]; root of factory hierarchy rmi客户端调用结束
附下载地址:http://pan.baidu.com/s/1nt9c27J
相关文章推荐
- Spring整合Rmi总结
- Spring源码与分析总结——RMI整合
- Spring整合Rmi总结
- Spring整合Rmi总结
- Spring4的知识应用总结(七)—— Spring整合Struts2框架
- Redis学习总结(2)——Redis整合Spring结合使用缓存实例
- SSH的整合总结(Spring为主)
- Spring + mybatis整合方案总结 结合实例应用
- 微服务开发架构——Spring Cloud常见问题与总结<二>Hystrix/Feign 整合Hystrix后首次请求失败
- spring3.* + hibernate3.* 整合常见问题总结
- spring整合RMI实现Java远程方法调用
- Spring与Struts1整合的三种方法总结
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
- spring整合RMI - Java远程方法调用
- 整合Spring与Struts1的三种方法总结
- spring整合hibernate,jar包冲突错误信息总结(2)
- spring整合JPA总结
- spring 与 CXF 整合 webservice 出现error “Unable to locate Spring NamespaceHandler for XML schema namespace” 总结
- Spring整合使用RMI-HelloWorld例子
- Spring Test 整合 JUnit 4 使用总结