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.測試
依次啓動服務端和客戶端