<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.8.RELEASE</version>
</dependency>
</dependencies>
public class User implements Serializable {
private static final long serialVersionUID = -999055038502751118L;
private Integer id;
private String username;
private String password;
public User() {
}
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
//...省略getter setter方法
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
public interface UserService{
public String sayHello(String msg);
public List<User> getAllUsers();
}
@Service
public class UserServiceImpl implements UserService{
@Override
public String sayHello(String msg) {
System.out.println("服务端收到的消息是:"+msg);
return "答复如下:您的消息【"+ msg +"】已收到";
}
@Override
public List<User> getAllUsers() {
List<User> users = new ArrayList<User>();
User san = new User(1, "张三", "123");
User si = new User(2, "李四", "456");
users.add(san);
users.add(si);
return users;
}
}
<?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"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/s ... ing-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
<!-- 配置 扫描 @Service -->
<context:component-scan base-package="com.itheima.rmi.service"/>
<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName" value="userServer"/><!-- 暴露的服务名 -->
<property name="service" ref="userServiceImpl"/><!-- 服务类 -->
<property name="serviceInterface" value="com.itheima.rmi.service.UserService"/><!-- 暴露出去的接口 -->
<property name="registryPort" value="9001"/><!-- 暴露发布到网络的端口,供客户端访问 -->
</bean>
</beans>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class RmiServer {
@Test
public void runServer() {
while(true) {
}
}
}
信息: Looking for RMI registry at port '9001'
信息: Binding service 'userServer' to RMI registry: RegistryImpl[UnicastServerRef [liveRef: [endpoint:[192.168.111.1:9001](local),objID:[0:0:0, 0]]]]
<?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"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/s ... ing-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
<!-- RmiProxyFactoryBean代理配置中的接口并通过远程访问服务端公布的服务地址调用接口中的方法 -->
<bean id="userServer" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl">
<!-- ip为服务端提供的ip。端口对应服务端的registryPort -->
<value>rmi://192.168.111.1:9001/userServer</value>
</property>
<!-- 配置要代理的接口 -->
<property name="serviceInterface" value="com.itheima.rmi.service.UserService">
</property>
</bean>
</beans>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class RmiClientTest {
//直接注入UserService类型的bean 即可使用
@Autowired
@Qualifier("userServer")
private UserService user;
@Test
public void testRmi1() {
String sayHello = user.sayHello("你好");
System.out.println("[客户端接收到的回复消息]||" + sayHello);
List<User> getAllUsers = user.getAllUsers();
System.out.println(getAllUsers);
}
}
[客户端接收到的回复消息]||答复如下:您的消息【你好】已收到
[User [id=1, username=张三, password=123], User [id=2, username=李四, password=456]]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |