分布式服务框架Dubbo入门案例和项目源码

               

  


Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,

是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
   官方网站:  http://dubbo.io/

    本项目代码,根据官方提供的dubbo-ws-demo-master例子,改造而来。
    官网例子源码: https://github.com/dubbo/dubbo-ws-demo

    官方的例子,都放在1个项目中,接口、实现类、Java应用测试例子。
   
    自己给改造了下,方便在项目中直接使用。
    虽说是HelloWorld,也还是要向实际情况靠拢。


   3个项目




1.web-service接口项目, 定义接口和供调用放引入的dubbo配置。


 接口HelloService 
 
  package com.dubbo.demo;public 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>

 
   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</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
   


           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值