用Spring的RMI支持,你可以通过RMI基础设施透明的暴露你的服务。设置好Spring的RMI支持后,你会看到一个和远程EJB接口类似的配置,只是没有对安全上下文传递和远程事务传递的标准支持。这可大大简化rmi的使用
1.使用RmiServiceExporter暴露服务
使用RmiServiceExporter,我们可以把对象的接口暴露成RMI对象。可以使用 RmiProxyFactoryBean 或者在传统RMI服务中使用普通RMI来访问该接口。RmiServiceExporter 显式地支持使用RMI调用器暴露任何非RMI的服务。当然,我们首先需要在Spring容器中设置我们的服务:
新建一个userDao的接口 及userDaoImpl实现类
userDao
package com.soyen.dao;
public interface UserDao {
public String login(String username,String password);
}
UserDaoImpl
package com.soyen.dao.impl;
import com.soyen.dao.UserDao;
public class UserDaoImpl implements UserDao {
public String login(String username, String password) {
return "你好" + username + "你的密码为:" + password;
}
}
现将服务端配置代码贴上
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans ">
<bean></bean>
<!-- 将类暴露成为一个RMI服务 -->
<bean>
<!-- 服务类 -->
<property ref="userDao" />
<!-- 服务名 -->
<property value="UserService" />
<!-- 服务接口 -->
<property value="com.soyen.dao.UserDao" />
<!-- 服务端口默认为1199-->
<property value="1091" />
</bean>
</beans>
客户端采用java控制台程序测试,须将服务端接口提供给客户端
import org.springframework.remoting.rmi.RmiProxyFactoryBean;
import com.soyen.dao.UserDao;
public class TestRmi {
public static void main(String[] args) {
RmiProxyFactoryBean factory = new RmiProxyFactoryBean();
factory.setServiceInterface(UserDao.class);
factory.setServiceUrl("rmi://localhost:1091/UserService");
factory.afterPropertiesSet();
UserDao userService = (UserDao)factory.getObject();
String msg=userService.login("zhangsan", "12344");
System.out.println(msg);
}
}
执行完毕则可调用
若客户端采用配置方式则可使用一下配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans ">
<bean>
<property value="com.soyen.dao.UserDao" ></property>
<property value="rmi://localhost:1091/UserService"></property>
</bean>
</beans>
Spring 的详细介绍:请点这里
Spring 的下载地址:请点这里
相关阅读:
基于 Spring 设计并实现 RESTful Web Services