一、hessianserver
1.pom.xml添加hessian依赖
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
<version>4.0.38</version>
</dependency>
2.实现service接口,方便发布服务
@Service
public class ConfigService implements IConfigService {
private final ConcurrentSkipListMap<Long, Config> configs = new ConcurrentSkipListMap<Long, Config>();
private static final AtomicLong idSequence = new AtomicLong(1000L);
@Override
public ResultBean<Long> addConfig(Config config) {
System.out.println("addConfig:" + config);
long id = idSequence.incrementAndGet();
config.setId(id);
configs.put(id, config);
return new ResultBean<>(id);
}
@Override
public ResultBean<Collection<Config>> getAll() {
return new ResultBean<>(configs.values());
}
@Override
public ResultBean<Boolean> delete(long id) {
return new ResultBean<>(configs.remove(id) != null);
}
}
3.发布hessian服务
/**
* 发布Config的Hessian服务
*
*/
@Configuration
public class HessianConfig {
@Autowired
private IConfigService configService;
@Bean(name = "/ConfigService")
public HessianServiceExporter hessianServiceExporter() {
HessianServiceExporter exporter = new HessianServiceExporter();
exporter.setService(configService);
exporter.setServiceInterface(IConfigService.class);
return exporter;
}
}
二、hessianclient
1.pom.xml添加hessian依赖
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
<version>4.0.38</version>
</dependency>
2.HessianProxyFactoryBean 引入服务
@Configuration
public class HessianConfig {
@Bean
public HessianProxyFactoryBean helloClient() {
HessianProxyFactoryBean factory = new HessianProxyFactoryBean();
factory.setServiceUrl("http://localhost:8080/ConfigService");
factory.setServiceInterface(IConfigService.class);
return factory;
}
}
3.junit测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class HessianclientApplicationTests {
@Autowired
IConfigService configService;
@Test
public void configTest() {
ResultBean<Long> addResult = configService
.addConfig(Config.builder().name("配置项名称").value("配置项值").build());
System.out.println(addResult);
ResultBean<Collection<Config>> all = configService.getAll();
System.out.println(all);
// 把刚刚新建的删除掉
ResultBean<Boolean> deleteResult = configService.delete(addResult.getData());
System.out.println(deleteResult);
}
}```