pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>io.guangsoft</groupId>
6 <artifactId>dubbo</artifactId>
7 <version>0.1</version>
8 <packaging>war</packaging>
9 <properties>
10 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
11 <org.springframework.version>4.0.0.RELEASE</org.springframework.version>
12 </properties>
13 <dependencies>
14 <dependency>
15 <groupId>junit</groupId>
16 <artifactId>junit</artifactId>
17 <version>3.8.1</version>
18 <scope>test</scope>
19 </dependency>
20 <dependency>
21 <groupId>javax.servlet</groupId>
22 <artifactId>servlet-api</artifactId>
23 <version>2.5</version>
24 <scope>provided</scope>
25 </dependency>
26 <dependency>
27 <groupId>javax.servlet</groupId>
28 <artifactId>jstl</artifactId>
29 <version>1.2</version>
30 </dependency>
31 <dependency>
32 <groupId>org.springframework</groupId>
33 <artifactId>spring-context</artifactId>
34 <version>${org.springframework.version}</version>
35 </dependency>
36 <dependency>
37 <groupId>org.springframework</groupId>
38 <artifactId>spring-context-support</artifactId>
39 <version>${org.springframework.version}</version>
40 </dependency>
41 <dependency>
42 <groupId>org.springframework</groupId>
43 <artifactId>spring-web</artifactId>
44 <version>${org.springframework.version}</version>
45 </dependency>
46 <dependency>
47 <groupId>org.springframework</groupId>
48 <artifactId>spring-webmvc</artifactId>
49 <version>${org.springframework.version}</version>
50 </dependency>
51
52 <dependency>
53 <groupId>org.codehaus.jackson</groupId>
54 <artifactId>jackson-core-asl</artifactId>
55 <version>1.9.2</version>
56 </dependency>
57 <dependency>
58 <groupId>org.codehaus.jackson</groupId>
59 <artifactId>jackson-mapper-asl</artifactId>
60 <version>1.9.13</version>
61 </dependency>
62 <dependency>
63 <groupId>net.sf.json-lib</groupId>
64 <artifactId>json-lib</artifactId>
65 <version>2.4</version>
66 <classifier>jdk15</classifier>
67 </dependency>
68 <dependency>
69 <groupId>com.alibaba</groupId>
70 <artifactId>dubbo</artifactId>
71 <version>2.5.3</version>
72 <exclusions>
73 <exclusion>
74 <artifactId>spring</artifactId>
75 <groupId>org.springframework</groupId>
76 </exclusion>
77 </exclusions>
78 </dependency>
79 <dependency>
80 <groupId>org.apache.zookeeper</groupId>
81 <artifactId>zookeeper</artifactId>
82 <version>3.3.6</version>
83 <exclusions>
84 <exclusion>
85 <groupId>log4j</groupId>
86 <artifactId>log4j</artifactId>
87 </exclusion>
88 </exclusions>
89 </dependency>
90 <dependency>
91 <groupId>log4j</groupId>
92 <artifactId>log4j</artifactId>
93 <version>1.2.16</version>
94 </dependency>
95 <dependency>
96 <groupId>com.github.sgroschupf</groupId>
97 <artifactId>zkclient</artifactId>
98 <version>0.1</version>
99 </dependency>
100 </dependencies>
101 <build>
102 <plugins>
103 <plugin>
104 <groupId>org.apache.maven.plugins</groupId>
105 <artifactId>maven-compiler-plugin</artifactId>
106 <configuration>
107 <source>1.8</source>
108 <target>1.8</target>
109 </configuration>
110 </plugin>
111 </plugins>
112 </build>
113 </project>
dubbo-provider目录结构
web.xm;
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
3 <display-name>dubbo-provider</display-name>
4 <listener>
5 <listener-class>
6 org.springframework.web.context.ContextLoaderListener
7 </listener-class>
8 </listener>
9 <context-param>
10 <param-name>contextConfigLocation</param-name>
11 <param-value>classpath:applicationContext.xml</param-value>
12 </context-param>
13 <servlet>
14 <servlet-name>provider</servlet-name>
15 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
16 <init-param>
17 <param-name>contextConfigLocation</param-name>
18 <param-value>
19 classpath:applicationContext.xml,classpath:applicationContext-servlet.xml
20 </param-value>
21 </init-param>
22 <load-on-startup>1</load-on-startup>
23 </servlet>
24 <servlet-mapping>
25 <servlet-name>provider</servlet-name>
26 <url-pattern>*.do</url-pattern>
27 </servlet-mapping>
28 <filter>
29 <filter-name>CharacterEncoding</filter-name>
30 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
31 <init-param>
32 <param-name>encoding</param-name>
33 <param-value>UTF-8</param-value>
34 </init-param>
35 </filter>
36 <filter-mapping>
37 <filter-name>CharacterEncoding</filter-name>
38 <url-pattern>/*</url-pattern>
39 </filter-mapping>
40 <welcome-file-list>
41 <welcome-file>index.jsp</welcome-file>
42 </welcome-file-list>
43 </web-app>
applicationContext.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:aop="http://www.springframework.org/schema/aop"
5 xmlns:tx="http://www.springframework.org/schema/tx"
6 xmlns:jdbc="http://www.springframework.org/schema/jdbc"
7 xmlns:context="http://www.springframework.org/schema/context"
8 xsi:schemaLocation="
9 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
10 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
11 http://www.springframework.org/schema/tx
12 http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
13 http://www.springframework.org/schema/aop
14 http://www.springframework.org/schema/aop/spring-aop-3.1.xsd" >
15 <context:component-scan base-package="io.guangsoft.dubbo.**"></context:component-scan>
16 <!-- 引入服务提供者配置文件 -->
17 <import resource="dubbo-provider.xml"/>
18 </beans>
applicationContext-servlet.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:aop="http://www.springframework.org/schema/aop"
5 xmlns:tx="http://www.springframework.org/schema/tx"
6 xmlns:jdbc="http://www.springframework.org/schema/jdbc"
7 xmlns:mvc="http://www.springframework.org/schema/mvc"
8 xmlns:context="http://www.springframework.org/schema/context"
9 xsi:schemaLocation="
10 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
11 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
12 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
13 http://www.springframewor.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
14 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"
15 default-autowire="byName">
16 <!-- 默认的注解映射的支持 -->
17 <mvc:annotation-driven>
18 <mvc:message-converters register-defaults="true">
19 <bean class ="org.springframework.http.converter.StringHttpMessageConverter">
20 <property name ="supportedMediaTypes">
21 <list>
22 <value>text/plain;charset=UTF-8</value>
23 </list>
24 </property>
25 </bean>
26 </mvc:message-converters>
27 </mvc:annotation-driven>
28 <!-- 视图解释类 -->
29 <bean id="viewResolver"
30 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
31 <property name="prefix" value="/WEB-INF/jsp/" />
32 <property name="suffix" value=".jsp" />
33 <property name="viewClass"
34 value="org.springframework.web.servlet.view.JstlView" />
35 </bean>
36 <!-- 加载静态资源 -->
37 <mvc:resources mapping="/css/**" location="/css/" />
38 <mvc:resources mapping="/js/**" location="/js/" />
39 <mvc:resources mapping="/images/**" location="/images/" />
40 </beans>
dubbo-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
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://code.alibabatech.com/schema/dubbo
8 http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
9 <!-- 提供方应用信息,用于计算依赖关系 -->
10 <dubbo:application name="provider" />
11 <!-- 使用multicast广播注册中心暴露服务地址 -->
12 <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
13 <!-- 使用zookeeper注册中心暴露服务地址 -->
14 <dubbo:registry address="zookeeper://127.0.0.1:2181" />
15 <!-- 用dubbo协议在20880端口暴露服务 -->
16 <dubbo:protocol name="dubbo" port="20880" />
17 <!-- 声明需要暴露的服务接口 -->
18 <dubbo:service interface="io.guangsoft.dubbo.provider.ProviderService" ref="providerService" />
19 </beans>
ProviderService.java
1 package io.guangsoft.dubbo.provider;
2
3 public interface ProviderService {
4 String transmit(String str);
5 }
ProviderServiceImpl.java
1 package io.guangsoft.dubbo.provider;
2
3 import org.springframework.stereotype.Service;
4
5 @Service(value = "providerService")
6 public class ProviderServiceImpl implements ProviderService {
7 @Override
8 public String transmit(String str) {
9 return "GuangSoft dubbo-provider : " + str;
10 }
11 }
dubbo-consumer目录结构
dubbo-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
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://code.alibabatech.com/schema/dubbo
8 http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
9 <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
10 <dubbo:application name="customer" />
11 <!-- 使用multicast广播注册中心暴露发现服务地址 -->
12 <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
13 <dubbo:registry address="zookeeper://127.0.0.1:2181" check="false" />
14 <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
15 <dubbo:reference id="providerService" interface="io.guangsoft.dubbo.provider.ProviderService" check="false" />
16 </beans>
ConsumerController.java
1 package io.guangsoft.dubbo.consumer;
2
3 import javax.annotation.Resource;
4 import javax.servlet.http.HttpServletRequest;
5 import javax.servlet.http.HttpServletResponse;
6
7 import io.guangsoft.dubbo.provider.ProviderService;
8 import org.springframework.stereotype.Controller;
9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.servlet.ModelAndView;
11
12 @Controller
13 @RequestMapping(value = "/consumer")
14 public class ConsumerController {
15
16 @Resource(name = "providerService")
17 private ProviderService providerService;
18
19 @RequestMapping(value = "/consume.do")
20 public ModelAndView consume(HttpServletRequest request, HttpServletResponse response) {
21 String result = providerService.transmit("dubbo-consumer");
22 System.out.println(result);
23 ModelAndView mv = new ModelAndView();
24 mv.setViewName("result");
25 mv.addObject("result", result);
26 return mv;
27 }
28 }
result.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html>
4 <html>
5 <head>
6 <meta charset="UTF-8">
7 <title>dubbo</title>
8 </head>
9 <body>
10 <h1>${result}</h1>
11 </body>
12 </html>
测试结果: