基于springboot的rmi远程调用
基于springboot的rmi远程调用
1.创建父工程
创建一个springboot的工程架构,并设置依赖,子模块继承父依赖。
2.创建rmi-api
rmi-api作为公共模块,包含用户实体类,用户接口。
-
用户实体类代码:
package com.demo.entity; import java.io.Serializable; public class User implements Serializable { private Integer id; private String name; //省略get、set、toString方法 }
-
接口方法和截图如下:
3.创建rmi-server
在rmi-demo父工程的基础上创建一个springboot的web模块,其具体操作如下:
-
pom文件引入rmi-api公共模块
-
编写服务类方法
-
编写配置类暴露服务方法
package com.demo.config; import com.demo.service.IUserService; import com.demo.service.UserServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.remoting.rmi.RmiServiceExporter; @Configuration public class RmiConfig { @Autowired private UserServiceImpl userService; //将服务暴露 @Bean public RmiServiceExporter rmiServiceExporter(){ RmiServiceExporter rmiServiceExporter = new RmiServiceExporter(); rmiServiceExporter.setServiceInterface(IUserService.class); //服务接口 rmiServiceExporter.setService(userService); //服务实例 rmiServiceExporter.setServiceName("userService"); //服务名称 rmiServiceExporter.setRegistryPort(2002);//服务端口 return rmiServiceExporter; } }
4.创建rmi-client
在rmi-demo父工程的基础上创建一个springboot的web模块,其具体操作如下:
-
在pom文件引入公共的api模块
-
编写配置类进行服务发现
package com.demo.config; import com.demo.service.IUserService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.remoting.rmi.RmiProxyFactoryBean; @Configuration public class RmiConfig { //获取rmi-server暴露的服务 @Bean("userService") public RmiProxyFactoryBean rmiProxyFactoryBean(){ RmiProxyFactoryBean rmiProxyFactoryBean = new RmiProxyFactoryBean(); //设置服务地址 rmiProxyFactoryBean.setServiceUrl("rmi://localhost:2002/userService"); //设置服务接口 rmiProxyFactoryBean.setServiceInterface(IUserService.class); return rmiProxyFactoryBean; } }
5.测试
防止端口冲突,需要更改application里面的服务启动端口。
- 先启动rmi-server服务
- 然后启动rmi-client服务(启动的时候,就进行服务调用。)
-
结果输出如下: