Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,
本项目代码,根据官方提供的dubbo-ws-demo-master例子,改造而来。
官网例子源码: https://github.com/dubbo/dubbo-ws-demo
官方的例子,都放在1个项目中,接口、实现类、Java应用测试例子。
自己给改造了下,方便在项目中直接使用。
虽说是HelloWorld,也还是要向实际情况靠拢。
3个项目
1.web-service接口项目, 定义接口和供调用放引入的dubbo配置。
- package com.dubbo.demo;
- blic interface HelloService {
- String hello(String name);
接口定义的dubbo配置
spring-dubbo.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
- http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
- ">
- <dubbo:application name="ws-demo" />
- <dubbo:registry address="N/A" />
- <dubbo:reference id="helloService" interface="com.dubbo.demo.HelloService" version="1.0.0"
- url="webservice://127.0.0.1:9000/com.dubbo.demo.HelloService"/>
- </beans>
maven配置
pom.xml
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.shop</groupId>
- <version>1.0.0-SNAPSHOT</version>
- <name>web-service</name>
- <url>http://maven.apache.org</url>;
- <dependencies>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo</artifactId>
- <version>2.4.10</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>
- </dependencies>
- <build>
- <finalName>web-service</finalName>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.6</source>
- <target>1.6</target>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <artifactId>web-service</artifactId>
- </project>
2.web-service-impl接口实现项目
接口实现类 HelloServiceImpl
- package com.dubbo.demo.impl;
- import com.dubbo.demo.HelloService;
- public class HelloServiceImpl implements HelloService {
- @Override
- public String hello(String name) {
- return "Hello, " + name + "!";
- }
- }
接口实现dubbo配置
spring-provider.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
- http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
- ">
- <dubbo:application name="ws-demo" />
- <dubbo:registry address="N/A" />
- <dubbo:protocol name="webservice" port="9000" server="servlet" />
- <bean id="helloService" class="com.dubbo.demo.impl.HelloServiceImpl"/>
- <dubbo:service interface="com.dubbo.demo.HelloService" version="1.0.0"
- protocol="webservice" ref="helloService"/>
- </beans>
Maven配置
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.shop</groupId>
- <artifactId>web-service-impl</artifactId>
- <packaging>war</packaging>
- <version>1.0.0-SNAPSHOT</version>
- <name>dubbo-ws Maven Webapp</name>
- <url>http://maven.apache.org</url>;
- <dependencies>
- <dependency>
- <groupId>com.shop</groupId>
- <artifactId>web-service</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>web-service-impl</finalName>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.6</source>
- <target>1.6</target>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
- <?xml version="1.0" encoding="UTF-8"?>
- <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_3_0.xsd"
- id="WebApp_ID" version="3.0">
- <display-name>web-service</display-name>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath*:spring-context.xml
- </param-value>
- </context-param>
- <servlet>
- <servlet-name>dubbo</servlet-name>
- <servlet-class>
- com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet
- </servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>dubbo</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app>
3.接口测试(调用方)项目
- import com.dubbo.demo.HelloService;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class ConsumerMain {
- public static void main(String[] args) {
- ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("spring-dubbo.xml");
- classPathXmlApplicationContext.start();
- HelloService helloService = (HelloService) classPathXmlApplicationContext.getBean("helloService");
- String world = helloService.hello("World");
- System.out.println("=====================================");
- System.out.println(world);
- System.out.println("=====================================");
- }
- }
maven配置
类似上面的
Web程序访问
ConsumerMain是通过应用程序的方式,访问Dubbo包装的服务。
而
- @Controller
- @RequestMapping("")
- public class HelloWorldController {
- @Autowired
- private HelloService helloService;
- @ResponseBody
- @RequestMapping("hello")
- public String hello(){
- return helloService.hello("hi dubbo");
- }
- }
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <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_3_0.xsd"
- id="WebApp_ID" version="3.0">
- <display-name>web-service-test</display-name>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath*:spring-context.xml
- </param-value>
- </context-param>
- <servlet>
- <servlet-name>springMvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring-mvc-servlet.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>springMvc</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- </web-app>
4.项目测试
a.启动服务项目
web-service-imp
b.启动Java应用程序 ConsumerMain,打印结果。
c.启动Web应用程序web-service-test,访问http://localhost:9080/hello
文章转自:http://blog.csdn.net/FansUnion/article/details/51211364?locationNum=3&fps=1