dubbox配置

dubbox配置步骤:
1:https://github.com/alibaba/dubbo 下载dubbox源码

   2:使用mvn 编译:
将下载的源码包解压,在解压的文件夹上Shift+鼠标右键,选择“在此处打开命令窗口”,在cmd中执行:mvn install -Dmaven.test.skip=true
等待编译完成,时间有点长,编译完成后将要用到的jar包放入maven仓库

   3:配置dubbo-admin管理界面
   从编译的dubbo文件夹中拿到dubbo-admin-2.8.4.war包,放在tomcat的webapps/ROOT下,然后进行解压,然后到webapps/ROOT/WEB-INF下,有一个dubbo.properties文件,修改配置文件 ,将zookeeper集群地址写入。
   然后启动tomcat服务,用户名和密码:root,并访问服务,显示登陆页面,说明dubbo-admin部署成功
   
   4:dubbox与Spring的整合
   父工程:parent.pom
   (1)在pom文件中加入以下依赖:
   

<dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.15.0-GA</version>
  </dependency>

   Ps:没有该依赖会报以下错误
   这里写图片描述

 <!--zookeeper-->
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.8</version>
    </dependency>
    <dependency>
        <groupId>com.github.sgroschupf</groupId>
        <artifactId>zkclient</artifactId>
        <version>0.1</version>
   </dependency>
   
    <!--dubbox Rest调用核心jar包-->
    <dependency>
            <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
            <version>3.0.7.Final</version>
    </dependency>
    <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-client</artifactId>
            <version>3.0.7.Final</version>
    </dependency>
   
   <!--数据校验,2个依赖是一起的,没有容器起不来-->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.1.3.Final</version>
    </dependency>   

   Ps:没有该依赖会报以下错误
   这里写图片描述

Rest风格实现远程调用的序列化JAR包
    <!-- 如果要使用json序列化 -->
    <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>3.0.7.Final</version>
    </dependency>

    <!-- 如果要使用xml序列化 -->
    <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxb-provider</artifactId>
            <version>3.0.7.Final</version>
   </dependency>

(2)在dubbox服务接口中加入以下依赖: dubbox.pom
  <dependencies>
        <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>2.8.4</version>
        </dependency>
        <!-- dubbox的servlet,相当于springmvc -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
   Ps: <scope>provided</scope>必须加,没有该依赖会报以下错误:

   这里写图片描述

 <!-- javax注解包,如@Consumes,@Produces,@Path,@GET -->
          <dependency>
                <groupId>javax.ws.rs</groupId>
                <artifactId>javax.ws.rs-api</artifactId>
                <version>2.0</version>
          </dependency>
          <dependency>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>1.2</version>
          </dependency>
   <!-- java对象与json 相互转化jar包-->
        <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>1.9.12</version>
        </dependency>
 </dependencies>

(3)dubbox服务提供者Provider和消费者Consumer都继承parent,依赖dubbox接口
(4)提供者Provider的xml配置文件:
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="dubbo-provider" />

<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.228.141:2181?backup=192.168.228.141:2182,192.168.228.141:2183" />

<!-- 启用rest协议 -->
<dubbo:protocol name="rest" threads="500" port="8074" contextpath="/" server="servlet" accepts="500"
        extension="com.alibaba.dubbo.rpc.protocol.rest.support.LoggingFilter" />

<!-- 声明需要暴露的服务接口 --> 
<dubbo:service interface="com.dubbo.service.DemoService" ref="demo" protocol="rest" timeout="10000"/>

<!-- 具体的实现bean -->  
<bean id="demo" class="com.dubbo.service.DemoServiceImpl"/>
(5)消费者consumer的xml配置文件:
    <!--消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="dubbo-consumer"/>

    <!--zookeeper注册中心 -->
    <dubbo:registry address="zookeeper://192.168.228.141:2181?backup=192.168.228.141:2182,192.168.228.141:2183" />

    <!-- 是否检查,如果true,当容器起来时,去zk中检查提供者必须正常。如果服务不在,退出。容器启动失败 -->
  <dubbo:reference check="false" id="demoService" interface="com.dubbo.service.DemoService" timeout="10000"/>


(6)启动provider和consumer:
    到dubbo-admin管理页面,不出意外应该可以看到服务都有了

PS如果测试调用方法时出现以下错误:

这里写图片描述

异常原因未知
解决方法:将Provider.xml文件中
<!-- 声明需要暴露的服务接口 --> 
<dubbo:service interface="com.dubbo.service.DemoService" ref="demo" protocol="rest" timeout="10000"/>
   的protocol="rest" 改为protocol="dubbo" 
   

5.扩展dubboxJAR包:(根据需求自行导入)
<!-- 如果要使用netty server -->
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-netty</artifactId>
    <version>3.0.7.Final</version>
</dependency>
<!-- 如果要使用Sun HTTP server -->
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jdk-http</artifactId>
    <version>3.0.7.Final</version>
</dependency>
<!-- 如果要使用tomcat server -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>8.0.11</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-logging-juli</artifactId>
    <version>8.0.11</version>
</dependency>

Kyro序列化
<dependency>
    <groupId>com.esotericsoftware.kryo</groupId>
    <artifactId>kryo</artifactId>
    <version>2.24.0</version>
</dependency>
<dependency>
    <groupId>de.javakaffee</groupId>
    <artifactId>kryo-serializers</artifactId>
    <version>0.26</version>
</dependency>

FST序列化
<dependency>
    <groupId>de.ruedigermoeller</groupId>
    <artifactId>fst</artifactId>
    <version>1.55</version>
</dependency>

Jackson序列化
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.3.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.3.3</version>
</dependency>

Dubbox其他远程调用方式依赖jar包
<dependency>
        <groupId>org.apache.mina</groupId>
            <artifactId>mina-core</artifactId>
            <version>1.1.7</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.grizzly</groupId>
            <artifactId>grizzly-core</artifactId>
            <version>2.1.4</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.39</version>
        </dependency>
        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.bsf</groupId>
            <artifactId>bsf-api</artifactId>
            <version>3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.8</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.xmemcached</groupId>
            <artifactId>xmemcached</artifactId>
            <version>1.3.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-simple</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>2.6.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.thrift</groupId>
            <artifactId>libthrift</artifactId>
            <version>0.8.0</version>
        </dependency>
        <dependency>
            <groupId>com.caucho</groupId>
            <artifactId>hessian</artifactId>
            <version>4.0.7</version>
        </dependency>

猜你喜欢

转载自blog.csdn.net/zhangningkid/article/details/75258697