项目测试
前后台分为了两个项目,分别会部署到两个tomcat中,那么他们之间是如何通信呢。
1. WebService,这是基于soap协议,效率不高。
2. 使用restful形式的服务:http+json。很多项目中应用。
3. 使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高
本项目使用dubbo + zookeeper。使用VMware构建虚拟机做为服务器。
先安装 jdk+zookeeper
后台项目
manger后台项目提供接口发布到zookeeper,
在service的配置中发布服务。
<!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="managerz"/>
<!-- 192.168.192.132为zookeeper所在服务器IP-->
<dubbo:registry protocol="zookeeper" address="192.168.192.132:2181"/>
<!-- dubbo集群配置方式:
<dubbo:registry protocol="zookeeper" address="192.168.192.132:2181,192.168.192.132:2182,192.168.192.132:2183" />
-->
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880"/>
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="cn.e3mall.service.UserService" ref="userServiceImpl" timeout="600000"/>
<dubbo:service interface="cn.e3mall.service.ItemService" ref="itemServiceImpl" timeout="600000"/>
项目部署到tomcat插件1。
六月 20, 2018 6:10:52 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8081"]
启动成功.
前台项目
前台从zookeeper订阅服务。
<!-- 引用dubbo服务 -->
<dubbo:application name="manager-webz"/>
<dubbo:registry protocol="zookeeper" address="192.168.192.132:2181"/>
<dubbo:reference interface="cn.e3mall.service.UserService" id="userService" />
<dubbo:reference interface="cn.e3mall.service.ItemService" id="itemService" />
创建Controller处理请求,返回json数据。
@RequestMapping("/findAll")
@ResponseBody
public List<User> findAll() {
logger.debug(userService==null);
return userService.selectAll();
}
结果:
再把用EASY-UI搭建的前端页面放到前台来,在controller写个映射方法。
//实现返回请求页面
@RequestMapping("/{page}")
public String itemList(@PathVariable String page){
return page;
}
搞定。