RMI(Remote Method Invocation) 远程方法调用,实现JAVA应用之间的远程通信。下面介绍使用Spring如何使用RMI。
包的结构如下:
定义调用接口
public interface UserDao {
public String getUser(String username)throws Exception;
}
接口实现类
public class UserDaoImplimplements UserDao {
public String getUser(Stringusername)throws Exception {
return"test:"+username;
}
}
(1)配置RMI服务:
applicationContext-rmi-server.xml
<beanid="userDaoImpl"class="com.rmi.UserDaoImpl"/>
<beanid="userDaoImpl_Exporter"class="org.springframework.remoting.rmi.RmiServiceExporter">
<propertyname="service"ref="userDaoImpl"/>
<propertyname="serviceName"value="rmi/userDaoImpl"/>
<propertyname="serviceInterface"value="com.rmi.UserDao"/>
<propertyname="registryPort"value="8819"/>
</bean>
(2)启动RMI服务:
public class RmiServer {
publicstaticfinal ApplicationContextcontext =new ClassPathXmlApplicationContext("applicationContext-rmi-server.xml");
publicstaticvoid main(String[] args) {
}
}
(4)访问RMI服务
applicationContext-rmi-client.xml
<beanid="userDaoImpl_client"class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<propertyname="serviceUrl"value="rmi://localhost:8819/rmi/userDaoImpl"/>
<propertyname="serviceInterface"value="com.rmi.UserDao"/>
<propertyname="refreshStubOnConnectFailure"value="true"/>
<propertyname="lookupStubOnStartup"value="false"/>
</bean>
public class RmiClient {
publicstaticvoid main(String[] args) {
ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext-rmi-client.xml");
UserDao userDao = (UserDao)context.getBean("userDaoImpl_client");
if(userDao !=null){
try {
System.out.println(userDao.getUser("li"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}