dubbo 初体验

news/2024/7/5 2:38:00

DubboSOA的基础框架,并在其上做集成,由于之前环境都是架构师搭建的,所以我还不是很了解,只是会用,前几天心血来潮自己搭建了一个helloworld版,这里记录一下搭建过程。

 

第一步,要选择dubbo的中间件,之前用的是zookeeper来做注册中心的,所以我这边也使用它来搭建注册中心,下载地址去apache的官网下载,可以戳我直接去到官网下载稳定版本。而后解压到本地文件夹,解压出来的结构如下



 

打开conf文件夹,copy zoo_sample.cfg副本,重命名为zoo.cfg,然后可以修改里面的内容,也可以不修改。



 

打开bin目录下的zkServer.cmd文件,如果报错,请设置好环境变量。



 正常启动如下

 

注册中心就弄好了,

         第二步,创建service工程与其中的服务,本案例使用maven构建系统,怎么创建maven系统这边就不做赘述了,主要上下其中的代码

pom.xml

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" 
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
         <modelVersion>4.0.0</modelVersion>
  
         <groupId>com.inspires</groupId>
         <artifactId>dubbo-service</artifactId>
         <version>0.0.1-SNAPSHOT</version>
         <packaging>jar</packaging>
  
         <name>dubbo-service</name>
         <url>http://maven.apache.org</url>
  
         <properties>
                   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         </properties>
         <dependencies>
         
                   <dependency>
                            <groupId>junit</groupId>
                            <artifactId>junit</artifactId>
                            <version>4.12</version>
                   </dependency>
  
                   <dependency>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-context</artifactId>
                            <version>3.2.5.RELEASE</version>
                   </dependency>
  
                   <dependency>
                            <groupId>com.alibaba</groupId>
                            <artifactId>dubbo</artifactId>
                            <version>2.4.9</version>
                   </dependency>
  
                   <dependency>
                            <groupId>org.apache.zookeeper</groupId>
                            <artifactId>zookeeper</artifactId>
                            <version>3.4.6</version>
                   </dependency>
                   <dependency>
                            <groupId>com.101tec</groupId>
                            <artifactId>zkclient</artifactId>
                            <version>0.4</version>
                   </dependency>
         </dependencies>
</project>

 然后创建一个spring的配置文件命名为service-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/beans
        http://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="service-test-dubbo"/>
         <!-- 使用multicast广播注册中心暴露服务地址 -->
         <dubbo:registry address="zookeeper://127.0.0.1:2181" />
         <!-- 用dubbo协议在20880端口暴露服务 -->
         <dubbo:protocol name="dubbo" port="20880" />
         <!-- 声明需要暴露的服务接口 -->
         <dubbo:service interface="com.inspires.dubbo.service.IDemoService" ref="demoService" />
         <!-- 和本地bean一样实现服务 -->
         <bean id="demoService" class="com.inspires.dubbo.service.impl.DemoService" />
</beans>

 

 

接下来创建一个接口与实现类IDemoServiceDemoService,只创建一个sayHello方法以做校验

IDemoService.java

 

/**
 *
 */
package com.inspires.dubbo.service;
  
/**
 * @author Jon Chiang
 * @project dubbo-service
 * @create_date 2014-12-30 下午5:06:52
 */
public interface IDemoService {
  
         /**
           * @author Jon Chiang
           * @create_date 2014-12-30 下午5:09:27
           * @param name
           * @return
           */
         String sayHello(String name);
}

 DemoService.java 不多说

 

 

/**
 *
 */
package com.inspires.dubbo.service.impl;
  
import com.inspires.dubbo.service.IDemoService;
  
/**
 * @author Jon Chiang
 * @project dubbo-service
 * @create_date 2014-12-30 下午5:07:29
 */
public class DemoService implements IDemoService {
         static int sayHelloCount = 0;
         @Override
         public String sayHello(String name) {
                   String hello = "Hello " + name;
                   System.out.println(++sayHelloCount);
                   System.out.println(hello);
                   return hello;
         }
}

 

 

还有web.xml里面要做spring配置文件和监听的配置,这里不做赘述(附件里面有,不会的同事可以参考附件)这里service工程基本弄好了

第三步,创建maven的访问者或者客户端工程。

pom.xml 注意要引用service工程,不然没法访问IDemoService

 

<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.inspires</groupId>
         <artifactId>dubbo-client</artifactId>
         <packaging>war</packaging>
         <version>0.0.1-SNAPSHOT</version>
         <name>dubbo-client Maven Webapp</name>
         <url>http://maven.apache.org</url>
  
         <build>
                   <finalName>dubbo-client</finalName>
         </build>
         <dependencies>
                   <dependency>
                            <groupId>junit</groupId>
                            <artifactId>junit</artifactId>
                            <version>4.12</version>
                   </dependency>
  
                   <dependency>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-context</artifactId>
                            <version>3.2.5.RELEASE</version>
                   </dependency>
  
                   <dependency>
                            <groupId>com.alibaba</groupId>
                            <artifactId>dubbo</artifactId>
                            <version>2.4.9</version>
                   </dependency>
  
                   <dependency>
                            <groupId>org.apache.zookeeper</groupId>
                            <artifactId>zookeeper</artifactId>
                            <version>3.4.6</version>
                   </dependency>
                   <dependency>
                            <groupId>com.101tec</groupId>
                            <artifactId>zkclient</artifactId>
                            <version>0.4</version>
                   </dependency>
                   <dependency>
                            <groupId>com.inspires</groupId>
                            <artifactId>dubbo-service</artifactId>
                            <version>0.0.1-SNAPSHOT</version>
                   </dependency>
         </dependencies>
</project>

 

 

然后就是spring文件

client-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/beans
        http://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="client-test-dubbo"/>       <!-- 使用zookeeper广播注册中心暴露发现服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />         <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="demoService" interface="com.inspires.dubbo.service.IDemoService" />
</beans>

 client-common.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:context="http://www.springframework.org/schema/context"
         xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
         http://www.springframework.org/schema/util
         http://www.springframework.org/schema/util/spring-util-3.2.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
                   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"
         default-lazy-init="false">
         <context:annotation-config />
         <context:component-scan base-package="com.inspires.dubbo.service" />  <!-- 自动扫描所有注解该路径 -->
</beans>

 

让后我们在service里面写一个测试调用远程接口的方法。因为我这边只是测试接口是否通,所以使用@PostConstruct注解,让工程一启动就调用init方法访问接口,达到我测试的目的。

TestService.java

/**
 *
 */
package com.inspires.dubbo.service.impl;
  
import javax.annotation.PostConstruct;
  
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
  
import com.inspires.dubbo.service.IDemoService;
import com.inspires.dubbo.service.ITestService;
  
/**
 * @author Jon Chiang
 * @project dubbo-client
 * @create_date 2014-12-30 下午6:54:12
 */
@Service
public class TestService implements ITestService{
  
         @Autowired
         IDemoService demoService;
         
         @PostConstruct
         @Override
         public void init(){
                   for (int i = 0; i < 20; i++) {
                            demoService.sayHello("Jon Chiang ");
                   }
                   
         }
}

 

然后可以开测了

启动service工程控制台无异常,然后启动client工程,系统调用远程方法。控制台答应hello Jon  Chiang 大功告成也!

 


http://www.niftyadmin.cn/n/4413338.html

相关文章

ExtJs 备忘录—— GirdPanl表格(一) [ 基本用法 ]

前言 文章内容几经变动&#xff0c;由于相关文章实在是很多而有打退堂鼓之心&#xff0c;倒是忘了备忘之意&#xff0c;于是尽量收集总结多一些资料。 系列 1.  ExtJs 备忘录&#xff08;1&#xff09;—— Form表单&#xff08;一&#xff09; [ 控件使用 ]  2.  ExtJs …

ExtJs 备忘录—— GirdPanl表格(二) [ 搜索分页 ]

前言 写文章分两种情况&#xff1a;一种情况 是已经积累了许多经验&#xff0c;写起来轻松且得心应手&#xff0c;内容和系列文章容易把握&#xff0c;最典型的就是视频监控的那系列文章&#xff0c;得以写完是因为已经从事近半年相关的开发工 作;另一种情况则是有方向但积累不…

CXF实现webService服务

对于CXF是干什么用的&#xff0c;我不想多说&#xff0c;大家都知道这是我们在java编程中webService技术的一种实现工具。我们说说为什么用CXF来实现webService&#xff1a; 1. Java的webService实现本身就是一个很耗性能的实现方案&#xff08;xml与java对象之间在服务端…

spring集成实现webService

1、 配置web.xml 见文件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" xmlns:web"http://java.sun.com…

The constructor Service(URL, QName, WebServiceFeature[]) is undefined

Service(URL, QName, WebServiceFeature[]) is undefined 原因是CXF自带的javax.xml.service 版本高过 jdk的javax.xml.service。 一个解决办法是&#xff1a; 在使用wsdl2java时&#xff0c;加入参数 -frontend jaxws21 这个问题的消息解释可以在这里看到 &#xff1a; http:/…

wsdl2java用法

wsdl2java用法&#xff1a;wsdl2java -p com -d src -all aa.wsdl-p 指定其wsdl的命名空间&#xff0c;也就是要生成代码的包名:-d 指定要产生代码所在目录-client 生成客户端测试web service的代码-server 生成服务器启动web service的代码-impl 生成web service的实现代码…

StringBuffer内容清空效率比较

在开发程序的时候&#xff0c;经常使用StringBuffer来进行字符串的拼接。如果在循环中来反复的做字符串拼接时&#xff0c;会清空Stringbuffer中的内容&#xff0c;然后再拼接新的字符串信息。 例如&#xff1a; StringBuffer sb new StringBuffer(""); for (UserIn…

MAXIMO与oracle字段对应

FLOATbinary_float浮点数BLOBBLOB二进制大字段CLOBCLOB字符型大字段LONGALNCLOB长描述DATEDate日期&#xff0c;格式&#xff1a;YYYY-MM-DDDATETIMEDate时间&#xff0c;格式&#xff1a;YYYY-MM-DD HH24:MI:SSTIMEDate时间&#xff0c;格式&#xff1a;HH24:MI:SSDECIMALNumb…