基于dubbo的SOA项目改造
工程改造:
1.原来工程删除掉表现层的模块,将表现层独立出来。
2.将原来的工程改造。将service的打包方式改为改为war。
3.在service模块中添加web.xml文件
4.在web.xml中只需要配置Spring容器就可以了。
服务层改造
5.在service的maven中加入dubbo依赖。
注如果会加载Spring和netty的jar包可以排除。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
6.在Spring中加入dubbo的约束。
然后发布dubbo服务:
<!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<!--服务名要与工程名保持一致-->
<dubbo:application name="xxxx" />
<!--address这种格式为集群,如果是单击可以只写一个即可-->
<dubbo:registry protocol="zookeeper"
address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="cn.e3mall.service.ItemService" ref="itemServiceImpl" />
表现层改造:
删除非表现层的配置文件,删除服务层依赖。添加dubbo依赖。
添加对接口模块的依赖。在SpringMVC的配置文件中添加服务的引用
<!-- 引用dubbo服务 --> <dubbo:application name="e3-manager-web"/> <dubbo:registry protocol="zookeeper" address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"/> <dubbo:reference interface="cn.e3mall.service.ItemService" id="itemService" />
注Spring中如果使用将类加入Spring容器,如果不默认修改的话id值为类名首字母小写后的名称。
可以在maven中加入Tomcat插件然后启动web服务(通过maven命令)进行测试:
<build> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <path>/</path> <port>8081</port> </configuration> </plugin> </plugins> </build>