前面实现RMS系统时,我们让其直接访问底层数据库。后面我们在idlewow-game模块实现游戏逻辑时,将不再直接访问底层数据,而是通过hessian服务暴露接口给表现层。
本章,我们先把hessian服务搭好,并做一个简单的测试,这里以用户注册接口为例。
先简单介绍下,实现hessian接口,只需要在facade模块暴露接口,然后在core模块实现接口,最后在hessain模块配置好接口路由,将其启动即可。
实现步骤
idlewow-facade
新建包com.idlewow.user.model,在此包下添加模型类:
UserAccount.java
新建包com.idlewow.user.service,在此包下添加接口类:
UserService.java
idlewow-core
新建包com.idlewow.user.mapper,添加mapper文件:
UserAccountMapper.java
UserAccountMapper.xml
新建com.idlewow.user.manager包,添加manager类:
UserAccountManager.java
新建com.idlewow.user.service.impl包,添加接口的实现类:
UserServiceImpl.java
注意,这里ServiceImple类上面有个注解 @Service("userService")。后面我们再添加这种对外的服务类时,都要加这个注解。
idlewow-hessian
hessian用于服务(器)间通信,实际上也是由一个DispatherServlet接收请求,并转发到各个Service中处理,和springmvc差不多,只不过返回的是二进制数据,而不是视图。我们在pom下添加下列依赖,可以发现依赖的包和mvc差不多。另外,作为启动项目,在plugins节点下,我们配置了启动插件tomcat7以及启动端口20000。
pom.xml
然后,我们需要在web.xml中配置hessian的servlet,以及添加一个字符编码的filter等等,如下:
web.xml
在/resource/spring目录下,新建hessian服务的配置文件hessian-servlet.xml。这个xml主要配置对外暴露的hessian服务。现在我们只配置了UserService,后面每次添加对外的服务接口时,都需要在这里添加配置。
hessian-servlet.xml
除了这3个配置外,还需要配置applicationContext.xml, jdbc.propetries, dataSource.xml, log4j2.xml,和RMS系统大体一致,这里就不再重复了。具体可在源码中查看。
全部搞定后,只要把hessian项目启动,即可调用hessian接口了。启动步骤和rms一样,maven命令也是tomcat7:run,工作目录切换到hessian目录下即可。
运行效果
在game模块中调用hessian时,也是通过在xml中配置注入的方式调用。这里我们还没开始写game模块,为了测试,先简单写一个入口类(即带main函数的类)调用。类似于C#中写控制台程序调用。
在/src/test/java包下新建一个类HessianTest.java如下:
HessianTest.java
在这个类中,我们指定hessian服务地址,并利用代理工厂创建一个服务代理。然后调用用户注册方法。测试的时候,先把hessian项目启动。然后执行这个main方法即可。
运行效果如下图,可以看到,接口调用成功,并把执行结果在日志中打印了出来。
小结
本节把hessian服务搭建运行起来,并实现了用户注册登录的接口。后面game模块凡是访问底层数据,均需调用hessian服务。