dubbo配置使用

本次dubbo搭建的项目,我将其分成三个项目框架

interfaced所有服务端暴露接口的项目

provider服务提供者

consumer服务使用者

 

首先通过eclipse建立三个maven项目,并将其项目的编译环境以及部分项目改成web项目调整好

结构如下



 

在interfaced项目的pom文件中,我们只要简单的配置一下单元测试依赖即可依赖即可

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

 

但是必须加上私服的推送配置,因为其他两个项目对其依赖时,需要的私服环境中下载其jar包

<distributionManagement>

<repository>

<id>interfaced-release</id>

<name>interfaced Project Release</name>

<url>http://192.168.1.222:8081/nexus/content/repositories/releases/</url>

</repository>

 

<snapshotRepository>

<id>interfaced-snapshots</id>

<name>interfaced Project SNAPSHOTS</name>

<url>http://192.168.1.222:8081/nexus/content/repositories/snapshots/</url>

</snapshotRepository>

</distributionManagement>

顺便说一下setting文件的配置

<servers>

<server>

<id>interfaced-release</id>

<username>admin</username>

<password>admin123</password>

</server>

 

<server>

<id>interfaced-snapshots</id>

<username>admin</username>

<password>admin123</password>

</server>

  </servers>

注意setting文件中的id属性值,必须和项目pom文件中的id值保持一致,要不然会发布不上去的

 

然后我们在interfaced项目中,新增一个简单userservice接口类,并提供一个简单的登录方法

public interface IUserService {

 

/**

* 测试方法

* @year 2017-10-16

* @author guiwenqing

* @param username

* @param password

* @return   

* @return boolean

*

*/

public boolean login(String username,String password);

}

这样,interfaced项目配置完毕

 

配置provider项目的pom文件

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<junit.version>3.8.1</junit.version>

<springframework.version>4.1.6.RELEASE</springframework.version>

<commonsLogging.version>1.2</commonsLogging.version>

</properties>

 

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

 

<dependency>

<groupId>com.101tec</groupId>

<artifactId>zkclient</artifactId>

<version>0.10</version>

</dependency>

<!-- **************************** Spring 依赖 **************************** -->

<!-- 添加Spring-core包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>${springframework.version}</version>

</dependency>

<!-- 添加spring-tx包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>${springframework.version}</version>

</dependency>

<!-- 添加spring-jdbc包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>${springframework.version}</version>

</dependency>

<!--添加spring-web包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>${springframework.version}</version>

</dependency>

<!-- 添加spring-context包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${springframework.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>${springframework.version}</version>

</dependency>

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>${commonsLogging.version}</version>

</dependency>

<!--添加aspectjweaver包 -->

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjweaver</artifactId>

<version>1.8.5</version>

</dependency>

<!-- **************************** /Spring 依赖 **************************** -->

 

<!-- **************************** Dubbo 依赖 **************************** -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>dubbo</artifactId>

<version>2.5.3</version>

<exclusions>

<exclusion>

<groupId>org.springframework</groupId>

<artifactId>spring</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>org.apache.zookeeper</groupId>

<artifactId>zookeeper</artifactId>

<version>3.3.3</version>

<exclusions>

<exclusion>

<groupId>com.sun.jmx</groupId>

<artifactId>jmxri</artifactId>

</exclusion>

<exclusion>

<groupId>com.sun.jdmk</groupId>

<artifactId>jmxtools</artifactId>

</exclusion>

<exclusion>

<groupId>javax.jms</groupId>

<artifactId>jms</artifactId>

</exclusion>

</exclusions>

</dependency>

 

                 <!-- 直接引入的interfaced依赖 -->

<dependency>

<groupId>com.dubbo.interfaced</groupId>

<artifactId>interfaced</artifactId>

<version>0.0.1-SNAPSHOT</version>

</dependency>

 

</dependencies>

 

建立spring总控配置文件spring-all.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"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<!-- **************************** 注解扫描 **************************** -->

<context:component-scan base-package="com.user.service.impl"/>

<!-- **************************** /注解扫描 **************************** -->

<!-- **************************** 导入其他XML文件 **************************** -->

<import resource="spring-provider.xml"/>

<!-- **************************** /导入其他XML文件 **************************** -->

</beans>

建立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/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="dubbodemo-provider"/>

    <!-- 连接到哪个注册中心 -->

    <dubbo:registry id="dubbodemo" address="zookeeper://192.168.1.222:2181"/>

    <!-- 用dubbo协议在20880端口暴露服务 -->

    <dubbo:protocol name="dubbo" port="28080"/>

    <!-- 声明需要暴露的服务接口 -->

    <dubbo:service registry="dubbodemo" timeout="3000" interface="com.user.service.IUserService" ref="userServiceImpl"/>

</beans>

注意

application 即应用名称

registry 以id为名称注册到注册中心

protocol 以什么协议暴露什么端口给使用方

service 将哪个服务中的哪个接口暴露出来,其中ref的引用一定要注意,我下面的服务类是以默认类名称为bean名的,不要写错

 

实现刚刚的userservice接口类

@Service

public class UserServiceImpl implements IUserService {

 

private Logger logger = Logger.getLogger(UserServiceImpl.class);

 

public boolean login(String username, String password) {

logger.info("提交信息" + username + password);

if (username != null && password != null && username.equals(password)) {

return true;

}

return false;

}

 

}

 

因为dubbo服务项目,官方有配套开启,这里直接利用spring容器启动,使用ClassPathXmlApplicationContext类来加载spring启动

建立基础启动类

public class BeanFactoryUtil {

 

private static ApplicationContext ctx_producer = null;

 

public final static String ApplicationContextRoot = "";

public final static String ApplicationContextPath = ApplicationContextRoot + "spring-all.xml";

 

public static void init() {

if (ctx_producer == null) {

synchronized (BeanFactoryUtil.class) {

if (ctx_producer == null) {

String[] configLocations = new String[] { ApplicationContextPath };

ctx_producer = new ClassPathXmlApplicationContext(configLocations);

}

}

}

}

}

建立启动测试类

public class Launcher {

 

private static Log logger = LogFactory.getLog(Launcher.class);

 

public static void main(String[] args) {

// 初始化spring

logger.info("开始初始化core服务");

BeanFactoryUtil.init();

}

 

}

直接用main方法跑该类即可启动dubbo的服务提供项目,服务提供者配置完毕

 

配置consumer项目pom文件

<!-- **************************** Properties 配置 **************************** -->

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<junit.version>3.8.1</junit.version>

<springframework.version>4.1.6.RELEASE</springframework.version>

<commonsLogging.version>1.2</commonsLogging.version>

</properties>

 

<!-- **************************** /Properties 配置 **************************** -->

 

<dependencies>

<!-- **************************** Spring 依赖 **************************** -->

<!-- 添加Spring-core包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>${springframework.version}</version>

</dependency>

<!-- 添加spring-tx包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-tx</artifactId>

<version>${springframework.version}</version>

</dependency>

<!--添加spring-web包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>${springframework.version}</version>

</dependency>

<!-- 添加spring-context包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${springframework.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>${springframework.version}</version>

</dependency>

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>${commonsLogging.version}</version>

</dependency>

<!--添加aspectjweaver包 -->

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjweaver</artifactId>

<version>1.8.5</version>

</dependency>

<!-- **************************** /Spring 依赖 **************************** -->

 

<!-- **************************** Dubbo 依赖 **************************** -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>dubbo</artifactId>

<version>2.5.3</version>

<exclusions>

<exclusion>

<groupId>org.springframework</groupId>

<artifactId>spring</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>org.apache.zookeeper</groupId>

<artifactId>zookeeper</artifactId>

<version>3.3.3</version>

<exclusions>

<exclusion>

<groupId>com.sun.jmx</groupId>

<artifactId>jmxri</artifactId>

</exclusion>

<exclusion>

<groupId>com.sun.jdmk</groupId>

<artifactId>jmxtools</artifactId>

</exclusion>

<exclusion>

<groupId>javax.jms</groupId>

<artifactId>jms</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>com.github.sgroschupf</groupId>

<artifactId>zkclient</artifactId>

<version>0.1</version>

</dependency>

<!-- **************************** /Dubbo 依赖 **************************** -->

 

<!-- **************************** interface 依赖 **************************** -->

<dependency>

<groupId>com.dubbo.interfaced</groupId>

<artifactId>interfaced</artifactId>

<version>0.0.1-SNAPSHOT</version>

</dependency>

<!-- **************************** /interface 依赖 **************************** -->

</dependencies>

 

继续配置spring总控文件applicationContext.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"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

    <!-- **************************** 导入其他XML文件 **************************** -->

    <import resource="spring-consumer.xml"/>

    <!-- **************************** /导入其他XML文件 **************************** -->

</beans>

配置dubbo消费者的spring配置文件spring-consumer.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- 添加 DUBBO SCHEMA -->

<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="dubbodemo-consumer"/>

    <!-- 连接到哪个注册中心(连接到本机的2181端口zookeeper) -->

    <dubbo:registry address="zookeeper://192.168.1.222:2181"/>

    <!-- 消费方用什么协议获取服务(用dubbo协议在20880端口暴露服务) -->

    <dubbo:protocol port="28080"/>

    <!-- 提供哪些接口给消费者调用 -->

    <dubbo:reference id="userService" interface="com.user.service.IUserService"/>

</beans>

application 服务名称

registry 链接到哪个注册中心

protocol 使用哪种协议和端口进行服务获取

reference 使用哪些接口

 

利用spring容器特性,建立测试类

public class UserServiceConsumer {

 

private static Logger logger = Logger.getLogger(UserServiceConsumer.class);

 

public static void main(String args[]) {

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

IUserService userService = (IUserService) ctx.getBean("userService");

logger.info("执行结果:" + userService.login("test", "test"));

}

}

 

简单的dubbo服务消费配置完毕

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值