初识dubbo之暴露和引用服务(三)
前面已经介绍了dubbo是什么,用来做什么,以及监控中心zookeeper的安装,接下来讲讲将其应用到tomcat工程项目中……
(一)项目结构展示
1、 两个maven同级项目,一个发布服务,一个使用……
(二)准备工作,添加依赖、约束文件
1、分别对两个工程添加依赖,
这里注意,因为加入dubbo依赖,会传递其依赖的spring2.x的版本依赖,而本maven工程已经添加spring4.x的依赖,所以这里要除去……
2、约束
(三)开启zookeeper监控中心服务
(四)配置文件以暴露和引用服务
1、service服务层发布服务
第一项是所起的名字,接着是注册中心服务的主机地址及端口,第三项是暴露服务的端口,
如果还有其他工程同时发布服务,那么要另外使用别的端口号,最后是发布的服务的接口规范,要提供实现类以引用对象。。。
2、web表现层引用服务
第一项名字,接着zookeeper注册中心地址,最后是要引用的服务。。。
(五)进行网络传输的pojo要实现序列化接口
implements Serializable
(六)重新将maven工程安装到本地仓库
maven install
(七)tomcat插件的测试使用
将表现层工程pom文件改造,端口不要同服务层的8080,运行时,先运行服务层再运行表现层,tomcat7:run。。。
运行结果:
(八)可能出现的异常
控制台打印:com.alibaba.dubbo.remoting.TimeoutException
页面打印: Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getItemById in the service cn.e3mall.service.ItemService. Tried 3 times of the providers [192.168.244.1:20880] (1/1) from the registry 192.168.244.128:2181 on the consumer 192.168.244.1 using the dubbo version 2.5.3. Last error is: Invoke remote method timeout.
解决: 在服务和表现层的spring配置文件中加入如下:
其实同个问题可能导致的原因有千百种,这里我只是利用此种方法而又刚好解决了而已……
最后,
由于使用不多,接触少,如有错漏的地方欢迎指出、批评,多谢!