服务器端:
接口定义类
public interface ITestRMI { public String sayHelloWorld(String name); }
接口实现类定义
public class TestRMI implements ITestRMI { public String sayHelloWorld(String name) { String string = name + " Welcome to walkerjava 技术交流圈"; return string; }
服务器端spring配置文件
<!-- 定义实现类bean --> <bean id="testRMI" class="com.walkerjava.service.TestRMI"></bean> <!-- 服务器端配置 --> <bean id="rmiServiceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter"> <!-- 定义提供服务的服务名称 value随便起,客户端使用 --> <property name="serviceName" value="test_rmi"></property> <!-- 定义提供服务的实现类,在客户端不用定义,value可以把bean的ID替换为com.walkerjava.serviceTestRMI --> <property name="service" value="testRMI" /> <!-- 定义提供服务的接口类,在客户端必须定义,value可以定义bean然后替换为bean的ID --> <property name="serviceInterface" value="com.walkerjava.service.ITestRMI" /> <!-- 定义提供服务的端口号,客户端使用 --> <property name="registryPort" value="11580"/> </bean>
客户端配置方式一
客户端接口与服务器端接口保持一致
public interface ITestRMI { public String sayHelloWorld(String name); }
客户端服务层
public class TestService { public void test(String name) { String a = test_rmi.sayHelloWorld(name); System.out.println(a); } /* spring 注入的名称 */ private ITestRMI client_rmi; public void setClient_rmi(ITestRMI client_rmi) { this.client_rmi= client_rmi; } }
客户端action控制
public class TestAction { /* spring注入的service */ private TestService testService = null; public String test() { testService.test("xphaier"); return null; } public void setTestService(TestService testService) { this.testService = testService; } }
客户端spring配置文件
<!-- 客户端配置 --> <bean id="ref_client_rmi" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> <!-- 定义服务器端提供的接口类,value可以定义ref=bean然后替换为bean的ID --> <property name="serviceInterface" value="com.walkerjava.service.ITestRMI" /> <!-- 定义服务器端提供的URL 端口号和服务器端的 registryPort配置的端口号一致-->
Struts.xml 配置
<package name="aa" extends="struts-default" namespace="/"> <action name="test" method="test" class="testAction"></action> </package>
客户端执行 http://localhost:8080/rmi_client/test.action
控制台输出 xphaier Welcome to walkerjava 技术交流圈