dubbox配置

来源:互联网 发布:恋爱的双马尾 知乎 编辑:程序博客网 时间:2024/06/06 16:47

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>