基于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>
原文地址:https://www.cnblogs.com/lilinzhiyu/p/8227496.html