服務器端:
接口定義類
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 技術交流圈