Spring Rmi远程方法调用
一: 服务端 暴露服务
package com.xx.service; /** * 定义远程服务接口 * 1.可以不继承java.rmi.Remote接口 * 2.方法可以不抛出java.rmi.RemoteException异常 * */ public interface ISayHelloService { public String doSayHello(String name); }
package com.xx.service.impl; import com.xx.service.ISayHelloService; /** * 远程接口实现 */ public class ChinaSayHelloServiceImpl implements ISayHelloService { public String doSayHello(String name) { return "hello " + name; } }
package com.xx.service; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 服务端 * 暴露远程服务 */ public class ServerMain { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:applicationContext-server.xml"}, true); System.out.println("==============服务启动成功 =============="); } }
spring配置文件 applicationContext-server.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="chinaSayHelloService" class="com.xx.service.impl.ChinaSayHelloServiceImpl" /> <bean id="chinaSayHelloServiceRmi" class="org.springframework.remoting.rmi.RmiServiceExporter" > <property name="serviceName" value="chinaSayHelloService" /> <property name="service" ref="chinaSayHelloService"/> <property name="serviceInterface" value="com.xx.service.ISayHelloService"/> <property name="registryPort" value="9999"/> </bean> </beans>
二:客户端 远程方法调用
package com.xx.service; import java.net.UnknownHostException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 客户端 */ public class ClientMain { public static void main(String[] args) throws UnknownHostException { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext-client.xml"); ISayHelloService object = applicationContext.getBean("chinaSayHelloServiceRmi", ISayHelloService.class); System.out.println(object.doSayHello("张三")); } }
spring配置文件 applicationContext-client.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="chinaSayHelloServiceRmi" class="org.springframework.remoting.rmi.RmiProxyFactoryBean" > <property name="serviceUrl" value="rmi://192.168.3.104:9999/chinaSayHelloService" /> <property name="serviceInterface" value="com.xx.service.ISayHelloService"/> </bean> </beans>
Andy_能力越到责任越大