1.创建两个maven工程,pom.xml配置公共部分如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
<version>4.0.38</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.服务端代码实现
(1)创建实体类:
ublic class UserInfo implements Serializable{
private static final long serialVersionUID = 1L;
private String userName;
private String pwd;
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public UserInfo(String userName, String pwd) {
this.userName = userName;
this.pwd = pwd;
}
}
(2)创建服务端服务接口:
public interface HessianService {
List<UserInfo> getUsers();
}
(3)创建服务接口实现类:
@Service("hessianService")
public class HessianServiceImpl implements HessianService {
@Override
public List<UserInfo> getUsers() {
UserInfo userInfo = new UserInfo("客户1","111");
UserInfo userInfo2 = new UserInfo("客户2","222");
UserInfo userInfo3 = new UserInfo("客户3","333");
List<UserInfo> users = new ArrayList<UserInfo>();
users.add(userInfo);
users.add(userInfo3);
users.add(userInfo2);
return users;
}
}
(4)创建启动类并使用hessian向外暴露服务:
@SpringBootApplication
public class HessianServerApplication {
@Autowired
private HessianService hessianService;
@Bean(name = "/hessian")
public HessianServiceExporter accountService() {
HessianServiceExporter exporter = new HessianServiceExporter();
exporter.setService(hessianService);
exporter.setServiceInterface(HessianService.class);
return exporter;
}
public static void main(String[] args) {
SpringApplication.run(HessianServerApplication.class, args);
}
}
(5)服务端端口配置:
server.port=9999
(6)服务端目录如下:
3.客户端代码实现如下:
(1)实体类和服务接口与服务端一致,可以查考服务端代码:
(2)创建客户端接口:
@RestController
public class HessianController {
@Autowired
HessianService hessianService;
@RequestMapping("/getUsers")
public List<UserInfo> test(){
return hessianService.getUsers();
}
}
(3)创建启动类,并关联服务:
@SpringBootApplication
public class HessianClientApplication {
@Bean
public HessianProxyFactoryBean helloClient() {
HessianProxyFactoryBean factory = new HessianProxyFactoryBean();
factory.setServiceUrl("http://localhost:9999/hessian");
factory.setServiceInterface(HessianService.class);
return factory;
}
public static void main(String[] args) {
SpringApplication.run(HessianClientApplication.class, args);
}
}
(4)客户端端口配置:
server.port=9998
(5)客户端目录结构如下:
4.测试
依次启动服务端和客户端