在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

Dubbox入门示例(注册服务器使用zookeeper)

2017-2-7 13:39| 发布者: zhangjf| 查看: 562| 评论: 0

摘要: 前言:Dubbox now means Dubbo eXtensions, and it adds features like RESTful remoting, Kyro/FST serialization, etc to the Dubbo service framework. http://dangdangdotcom.github.io/dubbox 本文将在Dubbox ...

前言:Dubbox now means Dubbo eXtensions, and it adds features like RESTful remoting, Kyro/FST serialization, etc to the Dubbo service framework. http://dangdangdotcom.github.io/dubbox

本文将在Dubbox的基础上进行演示

github地址:https://github.com/dangdangdotcom/dubbox

准备工作:

1,安装好 zookeeper (可参考前一篇文章)

2,安装好maven

3,安装git(也可以不安装,直接下载源码)

下面进入正式步骤

1,在 git 命令行下,下载项目源码

  1. git clone https://github.com/dangdangdotcom/dubbox
复制代码

2,对下载下来的源码进行编译

  1. mvn install -Dmaven.test.skip=true
复制代码

3,下载下来的有一个文件夹 dubbo-demo ,这里包含了官方demo,可以参考。

官方demo里包含了3个文件夹 dubbo-demo-api(服务接口及传输对象)、dubbo-demo-provider(服务生产者)、dubbo-demo-consumer(服务消费方)

4,下载下来的有一个文件夹 dubbo-admin,这个是dubbo的后台管理,其配置文件在webappWEB-INF底下,名为 dubbo.properties

  1. dubbo.registry.address=zookeeper://127.0.0.1:2181
  2. dubbo.admin.root.password=root
  3. dubbo.admin.guest.password=guest
复制代码

将 dubbo-admin 打成war包,放在tomcat底下,即可以在浏览器进入dubo的后台,进行管理。

注意:zookeeper启动之后会占用8080端口。

5,dubbo-monitor项目用于性能监控

6,模拟官方demo,编写小demo

6.1,新建api项目

pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>org.viking</groupId>
  5. <artifactId>dubbo-hello-api</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <name>dubbo-hello-api</name>
  8. <dependencies>
  9. <dependency>
  10. <groupId>com.alibaba</groupId>
  11. <artifactId>dubbo</artifactId>
  12. <version>2.8.4</version>
  13. </dependency>
  14. <dependency>
  15. <groupId>javax.validation</groupId>
  16. <artifactId>validation-api</artifactId>
  17. <version>1.0.0.GA</version>
  18. </dependency>
  19. <dependency>
  20. <groupId>javax.annotation</groupId>
  21. <artifactId>javax.annotation-api</artifactId>
  22. <version>1.2</version>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.codehaus.jackson</groupId>
  26. <artifactId>jackson-mapper-asl</artifactId>
  27. <version>1.9.12</version>
  28. </dependency>
  29. </dependencies>
  30. <build>
  31. <finalName>dubbo-hello-api</finalName>
  32. </build>
  33. </project>
复制代码

SerializationOptimizerImpl.java

  1. /**
  2. * Copyright 1999-2014 dangdang.com.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package viking.dubbo.demo.api;
  17. import com.alibaba.dubbo.common.serialize.support.SerializationOptimizer;
  18. import java.util.Collection;
  19. import java.util.LinkedList;
  20. import java.util.List;
  21. /**
  22. * This class must be accessible from both the provider and consumer
  23. *
  24. * @author lishen
  25. */
  26. public class SerializationOptimizerImpl implements SerializationOptimizer {
  27. public Collection<Class> getSerializableClasses() {
  28. List<Class> classes = new LinkedList<Class>();
  29. classes.add(User.class);
  30. return classes;
  31. }
  32. }
复制代码

User.java

  1. package viking.dubbo.demo.api;
  2. import org.codehaus.jackson.annotate.JsonProperty;
  3. import javax.validation.constraints.Min;
  4. import javax.validation.constraints.NotNull;
  5. import javax.validation.constraints.Size;
  6. import javax.xml.bind.annotation.XmlAccessType;
  7. import javax.xml.bind.annotation.XmlAccessorType;
  8. import javax.xml.bind.annotation.XmlElement;
  9. import javax.xml.bind.annotation.XmlRootElement;
  10. import java.io.Serializable;
  11. @XmlRootElement
  12. @XmlAccessorType(XmlAccessType.FIELD)
  13. public class User implements Serializable {
  14. @NotNull
  15. @Min(1L)
  16. private Long id;
  17. @JsonProperty("username")
  18. @XmlElement(name = "username")
  19. @NotNull
  20. @Size(min = 6, max = 50)
  21. private String name;
  22. public User() {
  23. }
  24. public User(Long id, String name) {
  25. this.id = id;
  26. this.name = name;
  27. }
  28. public Long getId() {
  29. return id;
  30. }
  31. public void setId(Long id) {
  32. this.id = id;
  33. }
  34. public String getName() {
  35. return name;
  36. }
  37. public void setName(String name) {
  38. this.name = name;
  39. }
  40. @Override
  41. public String toString() {
  42. return "User (" +
  43. "id=" + id +
  44. ", name='" + name + ''' +
  45. ')';
  46. }
  47. }
复制代码

UserRestService.java

  1. package viking.dubbo.demo.api;
  2. import javax.validation.constraints.Min;
  3. public interface UserRestService {
  4. User getUser(@Min(value = 1L, message = "User ID must be greater than 1") Long id);
  5. }
复制代码

UserService.java

  1. package viking.dubbo.demo.api;
  2. public interface UserService {
  3. User getUser(Long id);
  4. }
复制代码

6.2,新建provider

pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>org.viking</groupId>
  5. <artifactId>dubbo-hello-provider</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <name>dubbo-hello-provider</name>
  8. <dependencies>
  9. <!--公用的服务接口 -->
  10. <dependency>
  11. <groupId>org.viking</groupId>
  12. <artifactId>dubbo-hello-api</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. </dependency>
  15. <dependency>
  16. <groupId>com.alibaba</groupId>
  17. <artifactId>dubbo</artifactId>
  18. <version>2.8.4</version>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.javassist</groupId>
  22. <artifactId>javassist</artifactId>
  23. <version>3.15.0-GA</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.apache.mina</groupId>
  27. <artifactId>mina-core</artifactId>
  28. <version>1.1.7</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.glassfish.grizzly</groupId>
  32. <artifactId>grizzly-core</artifactId>
  33. <version>2.1.4</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.apache.httpcomponents</groupId>
  37. <artifactId>httpclient</artifactId>
  38. <version>4.2.1</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>com.alibaba</groupId>
  42. <artifactId>fastjson</artifactId>
  43. <version>1.1.39</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>com.thoughtworks.xstream</groupId>
  47. <artifactId>xstream</artifactId>
  48. <version>1.4.1</version>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.apache.bsf</groupId>
  52. <artifactId>bsf-api</artifactId>
  53. <version>3.1</version>
  54. </dependency>
  55. <dependency>
  56. <groupId>org.apache.zookeeper</groupId>
  57. <artifactId>zookeeper</artifactId>
  58. <version>3.4.6</version>
  59. </dependency>
  60. <dependency>
  61. <groupId>com.github.sgroschupf</groupId>
  62. <artifactId>zkclient</artifactId>
  63. <version>0.1</version>
  64. </dependency>
  65. <dependency>
  66. <groupId>org.apache.curator</groupId>
  67. <artifactId>curator-framework</artifactId>
  68. <version>2.5.0</version>
  69. </dependency>
  70. <dependency>
  71. <groupId>com.googlecode.xmemcached</groupId>
  72. <artifactId>xmemcached</artifactId>
  73. <version>1.3.6</version>
  74. </dependency>
  75. <dependency>
  76. <groupId>org.apache.cxf</groupId>
  77. <artifactId>cxf-rt-frontend-simple</artifactId>
  78. <version>2.6.1</version>
  79. </dependency>
  80. <dependency>
  81. <groupId>org.apache.cxf</groupId>
  82. <artifactId>cxf-rt-transports-http</artifactId>
  83. <version>2.6.1</version>
  84. </dependency>
  85. <dependency>
  86. <groupId>org.apache.thrift</groupId>
  87. <artifactId>libthrift</artifactId>
  88. <version>0.8.0</version>
  89. </dependency>
  90. <dependency>
  91. <groupId>com.caucho</groupId>
  92. <artifactId>hessian</artifactId>
  93. <version>4.0.7</version>
  94. </dependency>
  95. <dependency>
  96. <groupId>javax.servlet</groupId>
  97. <artifactId>javax.servlet-api</artifactId>
  98. <version>3.1.0</version>
  99. </dependency>
  100. <dependency>
  101. <groupId>org.mortbay.jetty</groupId>
  102. <artifactId>jetty</artifactId>
  103. <version>6.1.26</version>
  104. <exclusions>
  105. <exclusion>
  106. <groupId>org.mortbay.jetty</groupId>
  107. <artifactId>servlet-api</artifactId>
  108. </exclusion>
  109. </exclusions>
  110. </dependency>
  111. <dependency>
  112. <groupId>log4j</groupId>
  113. <artifactId>log4j</artifactId>
  114. <version>1.2.16</version>
  115. </dependency>
  116. <dependency>
  117. <groupId>org.slf4j</groupId>
  118. <artifactId>slf4j-api</artifactId>
  119. <version>1.6.2</version>
  120. </dependency>
  121. <dependency>
  122. <groupId>redis.clients</groupId>
  123. <artifactId>jedis</artifactId>
  124. <version>2.1.0</version>
  125. </dependency>
  126. <dependency>
  127. <groupId>javax.validation</groupId>
  128. <artifactId>validation-api</artifactId>
  129. <version>1.0.0.GA</version>
  130. </dependency>
  131. <dependency>
  132. <groupId>org.hibernate</groupId>
  133. <artifactId>hibernate-validator</artifactId>
  134. <version>4.2.0.Final</version>
  135. </dependency>
  136. <dependency>
  137. <groupId>javax.cache</groupId>
  138. <artifactId>cache-api</artifactId>
  139. <version>0.4</version>
  140. </dependency>
  141. <dependency>
  142. <groupId>org.jboss.resteasy</groupId>
  143. <artifactId>resteasy-jaxrs</artifactId>
  144. <version>3.0.7.Final</version>
  145. </dependency>
  146. <dependency>
  147. <groupId>org.jboss.resteasy</groupId>
  148. <artifactId>resteasy-client</artifactId>
  149. <version>3.0.7.Final</version>
  150. </dependency>
  151. <dependency>
  152. <groupId>org.jboss.resteasy</groupId>
  153. <artifactId>resteasy-netty</artifactId>
  154. <version>3.0.7.Final</version>
  155. </dependency>
  156. <dependency>
  157. <groupId>org.jboss.resteasy</groupId>
  158. <artifactId>resteasy-jdk-http</artifactId>
  159. <version>3.0.7.Final</version>
  160. </dependency>
  161. <dependency>
  162. <groupId>org.jboss.resteasy</groupId>
  163. <artifactId>resteasy-jackson-provider</artifactId>
  164. <version>3.0.7.Final</version>
  165. </dependency>
  166. <dependency>
  167. <groupId>org.jboss.resteasy</groupId>
  168. <artifactId>resteasy-jaxb-provider</artifactId>
  169. <version>3.0.7.Final</version>
  170. </dependency>
  171. <dependency>
  172. <groupId>org.apache.tomcat.embed</groupId>
  173. <artifactId>tomcat-embed-core</artifactId>
  174. <version>8.0.11</version>
  175. </dependency>
  176. <dependency>
  177. <groupId>org.apache.tomcat.embed</groupId>
  178. <artifactId>tomcat-embed-logging-juli</artifactId>
  179. <version>8.0.11</version>
  180. </dependency>
  181. <dependency>
  182. <groupId>com.esotericsoftware.kryo</groupId>
  183. <artifactId>kryo</artifactId>
  184. <version>2.24.0</version>
  185. </dependency>
  186. <dependency>
  187. <groupId>de.javakaffee</groupId>
  188. <artifactId>kryo-serializers</artifactId>
  189. <version>0.26</version>
  190. </dependency>
  191. <dependency>
  192. <groupId>de.ruedigermoeller</groupId>
  193. <artifactId>fst</artifactId>
  194. <version>1.55</version>
  195. </dependency>
  196. </dependencies>
  197. <build>
  198. <finalName>dubbo-hello-provider</finalName>
  199. </build>
  200. </project>
复制代码

DemoProvider.java

  1. package viking.dubbo.demo.provider;
  2. import java.io.IOException;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class DemoProvider {
  5. public static void main(String[] args) throws IOException {
  6. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:META-INF/spring/*.xml");
  7. context.start();
  8. System.out.println("服务已经启动...");
  9. System.in.read();
  10. }
  11. }
复制代码

UserRestServiceImpl.java

  1. package viking.dubbo.demo.provider;
  2. import com.alibaba.dubbo.rpc.RpcContext;
  3. import com.alibaba.dubbo.rpc.protocol.rest.support.ContentType;
  4. import viking.dubbo.demo.api.User;
  5. import viking.dubbo.demo.api.UserRestService;
  6. import viking.dubbo.demo.api.UserService;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import javax.ws.rs.*;
  10. import javax.ws.rs.core.MediaType;
  11. @Path("users")
  12. @Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
  13. @Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})
  14. public class UserRestServiceImpl implements UserRestService {
  15. private UserService userService;
  16. public void setUserService(UserService userService) {
  17. this.userService = userService;
  18. }
  19. @GET
  20. @Path("{id : \d+}")
  21. public User getUser(@PathParam("id") Long id) {
  22. if (RpcContext.getContext().getRequest(HttpServletRequest.class) != null) {
  23. System.out.println("Client IP address from RpcContext: " + RpcContext.getContext().getRequest(HttpServletRequest.class).getRemoteAddr());
  24. }
  25. if (RpcContext.getContext().getResponse(HttpServletResponse.class) != null) {
  26. System.out.println("Response object from RpcContext: " + RpcContext.getContext().getResponse(HttpServletResponse.class));
  27. }
  28. return userService.getUser(id);
  29. }
  30. }
复制代码

UserServiceImpl.java

  1. package viking.dubbo.demo.provider;
  2. import viking.dubbo.demo.api.User;
  3. import viking.dubbo.demo.api.UserService;
  4. public class UserServiceImpl implements UserService {
  5. public User getUser(Long id) {
  6. return new User(id, "username" + id);
  7. }
  8. }
复制代码

dubbo-demo-provider.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  6. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  7. <dubbo:application name="demo-provider" owner="programmer" organization="dubbox"/>
  8. <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
  9. <dubbo:protocol name="dubbo" serialization="kryo" optimizer="viking.dubbo.demo.api.SerializationOptimizerImpl"/>
  10. <!-- use tomcat server -->
  11. <dubbo:protocol name="rest" port="8888" threads="500" contextpath="services" server="tomcat" accepts="500"
  12. extension="com.alibaba.dubbo.rpc.protocol.rest.support.LoggingFilter"/>
  13. <dubbo:service interface="viking.dubbo.demo.api.UserService" ref="userService" protocol="dubbo" />
  14. <dubbo:service interface="viking.dubbo.demo.api.UserRestService" ref="userRestService" protocol="rest" validation="true"/>
  15. <bean id="userService" class="viking.dubbo.demo.provider.UserServiceImpl"/>
  16. <bean id="userRestService" class="viking.dubbo.demo.provider.UserRestServiceImpl">
  17. <property name="userService" ref="userService"/>
  18. </bean>
  19. </beans>
复制代码

6.3,新建 consumer

pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>org.viking</groupId>
  5. <artifactId>dubbo-hello-consumer</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <name>dubbo-hello-consumer</name>
  8. <dependencies>
  9. <!--公用的服务接口 -->
  10. <dependency>
  11. <groupId>org.viking</groupId>
  12. <artifactId>dubbo-hello-api</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. </dependency>
  15. <dependency>
  16. <groupId>com.alibaba</groupId>
  17. <artifactId>dubbo</artifactId>
  18. <version>2.8.4</version>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.javassist</groupId>
  22. <artifactId>javassist</artifactId>
  23. <version>3.15.0-GA</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.apache.mina</groupId>
  27. <artifactId>mina-core</artifactId>
  28. <version>1.1.7</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.glassfish.grizzly</groupId>
  32. <artifactId>grizzly-core</artifactId>
  33. <version>2.1.4</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.apache.httpcomponents</groupId>
  37. <artifactId>httpclient</artifactId>
  38. <version>4.2.1</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>com.alibaba</groupId>
  42. <artifactId>fastjson</artifactId>
  43. <version>1.1.39</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>com.thoughtworks.xstream</groupId>
  47. <artifactId>xstream</artifactId>
  48. <version>1.4.1</version>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.apache.bsf</groupId>
  52. <artifactId>bsf-api</artifactId>
  53. <version>3.1</version>
  54. </dependency>
  55. <dependency>
  56. <groupId>org.apache.zookeeper</groupId>
  57. <artifactId>zookeeper</artifactId>
  58. <version>3.4.6</version>
  59. </dependency>
  60. <dependency>
  61. <groupId>com.github.sgroschupf</groupId>
  62. <artifactId>zkclient</artifactId>
  63. <version>0.1</version>
  64. </dependency>
  65. <dependency>
  66. <groupId>org.apache.curator</groupId>
  67. <artifactId>curator-framework</artifactId>
  68. <version>2.5.0</version>
  69. </dependency>
  70. <dependency>
  71. <groupId>com.googlecode.xmemcached</groupId>
  72. <artifactId>xmemcached</artifactId>
  73. <version>1.3.6</version>
  74. </dependency>
  75. <dependency>
  76. <groupId>org.apache.cxf</groupId>
  77. <artifactId>cxf-rt-frontend-simple</artifactId>
  78. <version>2.6.1</version>
  79. </dependency>
  80. <dependency>
  81. <groupId>org.apache.cxf</groupId>
  82. <artifactId>cxf-rt-transports-http</artifactId>
  83. <version>2.6.1</version>
  84. </dependency>
  85. <dependency>
  86. <groupId>org.apache.thrift</groupId>
  87. <artifactId>libthrift</artifactId>
  88. <version>0.8.0</version>
  89. </dependency>
  90. <dependency>
  91. <groupId>com.caucho</groupId>
  92. <artifactId>hessian</artifactId>
  93. <version>4.0.7</version>
  94. </dependency>
  95. <dependency>
  96. <groupId>javax.servlet</groupId>
  97. <artifactId>javax.servlet-api</artifactId>
  98. <version>3.1.0</version>
  99. </dependency>
  100. <dependency>
  101. <groupId>org.mortbay.jetty</groupId>
  102. <artifactId>jetty</artifactId>
  103. <version>6.1.26</version>
  104. <exclusions>
  105. <exclusion>
  106. <groupId>org.mortbay.jetty</groupId>
  107. <artifactId>servlet-api</artifactId>
  108. </exclusion>
  109. </exclusions>
  110. </dependency>
  111. <dependency>
  112. <groupId>log4j</groupId>
  113. <artifactId>log4j</artifactId>
  114. <version>1.2.16</version>
  115. </dependency>
  116. <dependency>
  117. <groupId>org.slf4j</groupId>
  118. <artifactId>slf4j-api</artifactId>
  119. <version>1.6.2</version>
  120. </dependency>
  121. <dependency>
  122. <groupId>redis.clients</groupId>
  123. <artifactId>jedis</artifactId>
  124. <version>2.1.0</version>
  125. </dependency>
  126. <dependency>
  127. <groupId>javax.validation</groupId>
  128. <artifactId>validation-api</artifactId>
  129. <version>1.0.0.GA</version>
  130. </dependency>
  131. <dependency>
  132. <groupId>org.hibernate</groupId>
  133. <artifactId>hibernate-validator</artifactId>
  134. <version>4.2.0.Final</version>
  135. </dependency>
  136. <dependency>
  137. <groupId>javax.cache</groupId>
  138. <artifactId>cache-api</artifactId>
  139. <version>0.4</version>
  140. </dependency>
  141. <dependency>
  142. <groupId>org.jboss.resteasy</groupId>
  143. <artifactId>resteasy-jaxrs</artifactId>
  144. <version>3.0.7.Final</version>
  145. </dependency>
  146. <dependency>
  147. <groupId>org.jboss.resteasy</groupId>
  148. <artifactId>resteasy-client</artifactId>
  149. <version>3.0.7.Final</version>
  150. </dependency>
  151. <dependency>
  152. <groupId>org.jboss.resteasy</groupId>
  153. <artifactId>resteasy-netty</artifactId>
  154. <version>3.0.7.Final</version>
  155. </dependency>
  156. <dependency>
  157. <groupId>org.jboss.resteasy</groupId>
  158. <artifactId>resteasy-jdk-http</artifactId>
  159. <version>3.0.7.Final</version>
  160. </dependency>
  161. <dependency>
  162. <groupId>org.jboss.resteasy</groupId>
  163. <artifactId>resteasy-jackson-provider</artifactId>
  164. <version>3.0.7.Final</version>
  165. </dependency>
  166. <dependency>
  167. <groupId>org.jboss.resteasy</groupId>
  168. <artifactId>resteasy-jaxb-provider</artifactId>
  169. <version>3.0.7.Final</version>
  170. </dependency>
  171. <dependency>
  172. <groupId>org.apache.tomcat.embed</groupId>
  173. <artifactId>tomcat-embed-core</artifactId>
  174. <version>8.0.11</version>
  175. </dependency>
  176. <dependency>
  177. <groupId>org.apache.tomcat.embed</groupId>
  178. <artifactId>tomcat-embed-logging-juli</artifactId>
  179. <version>8.0.11</version>
  180. </dependency>
  181. <dependency>
  182. <groupId>com.esotericsoftware.kryo</groupId>
  183. <artifactId>kryo</artifactId>
  184. <version>2.24.0</version>
  185. </dependency>
  186. <dependency>
  187. <groupId>de.javakaffee</groupId>
  188. <artifactId>kryo-serializers</artifactId>
  189. <version>0.26</version>
  190. </dependency>
  191. <dependency>
  192. <groupId>de.ruedigermoeller</groupId>
  193. <artifactId>fst</artifactId>
  194. <version>1.55</version>
  195. </dependency>
  196. </dependencies>
  197. <build>
  198. <finalName>dubbo-hello-consumer</finalName>
  199. </build>
  200. </project>
复制代码

DemoConsumer.java

  1. package viking.dubbo.demo.consumer;
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;
  3. import viking.dubbo.demo.api.UserService;
  4. import javax.ws.rs.client.Client;
  5. import javax.ws.rs.client.ClientBuilder;
  6. import javax.ws.rs.client.WebTarget;
  7. import javax.ws.rs.core.Response;
  8. public class DemoConsumer {
  9. public static void main(String[] args) {
  10. final String port = "8888";
  11. //测试Rest服务
  12. getUser("http://localhost:" + port + "/services/users/1.json");
  13. getUser("http://localhost:" + port + "/services/users/1.xml");
  14. //测试常规服务
  15. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:META-INF/spring/*.xml");
  16. context.start();
  17. UserService userService = context.getBean(UserService.class);
  18. System.out.println(userService.getUser(1L));
  19. }
  20. private static void getUser(String url) {
  21. System.out.println("Getting user via " + url);
  22. Client client = ClientBuilder.newClient();
  23. WebTarget target = client.target(url);
  24. Response response = target.request().get();
  25. try {
  26. if (response.getStatus() != 200) {
  27. throw new RuntimeException("Failed with HTTP error code : " + response.getStatus());
  28. }
  29. System.out.println("Successfully got result: " + response.readEntity(String.class));
  30. } finally {
  31. response.close();
  32. client.close();
  33. }
  34. }
  35. }
复制代码

dubbo-hello-consumer.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  6. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  7. <dubbo:application name="demo-consumer" owner="programmer" organization="dubbox"/>
  8. <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
  9. <dubbo:reference id="userRestService" interface="viking.dubbo.demo.api.UserRestService"/>
  10. <dubbo:reference id="userService" interface="viking.dubbo.demo.api.UserService"/>
  11. </beans>
复制代码

7,运行查看结果

首先运行 provider,然后运行 consumer,同时也可以在dubbo的后台管理查看结果

  1. Getting user via http://localhost:8888/services/users/1.json
  2. log4j:WARN No appenders could be found for logger (org.jboss.resteasy.plugins.providers.DocumentProvider).
  3. log4j:WARN Please initialize the log4j system properly.
  4. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
  5. Successfully got result: {"id":1,"username":"username1"}
  6. Getting user via http://localhost:8888/services/users/1.xml
  7. Successfully got result: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><user><id>1</id><username>username1</username></user>
  8. User (id=1, name='username1')
复制代码

来自: http://my.oschina.net/u/238296/blog/602446

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-9 07:13

Copyright 2015-2025 djqfx

返回顶部