本次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服务消费配置完毕
相关推荐
分布式SSM-Dubbo配置文件详解 SSM-Dubbo是一个基于Java的开源框架组合,由Spring、SpringMVC和Dubbo三部分组成,主要用于构建大型分布式应用程序。在微服务架构中,SSM-Dubbo扮演着至关重要的角色,它帮助开发者...
dubbo 官方配置指南 dubbo 官方配置指南是 dubbo 框架的核心组件之一,用于配置 dubbo 服务的各种参数。该指南涵盖了 dubbo 服务的配置关系、配置 override、配置类型等多方面的内容。 Configuration Reference ...
dubbo配置scheme文件
在Dubbo框架中,`loadbalance`配置是用来指定负载均衡策略的,允许用户自定义或者选择内置的策略,如Random、RoundRobin等,以决定如何在服务提供者之间分配消费者请求。然而,当用户报告`loadbalance`配置不生效时...
dubbo的配置文件
总的来说,理解并掌握Dubbo配置文件中的DTD使用对于优化服务的部署和维护至关重要。合理利用本地DTD可以提高系统性能,增强服务的可靠性,是每个Dubbo开发者应该掌握的一项技能。在实际操作中,结合XML的DTD和XSD...
dubbo.xsd, 这里是dubbo配置文件。其中dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。
Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,它的配置指南对于初学者和入门者来说是理解其工作原理的关键。本指南主要介绍 Dubbo 的配置元素及其在服务发现、治理和性能调优中的作用。 首先,我们要了解的是...
【Dubbo安装配置详解】 Dubbo是一款高性能、轻量级的Java开源服务框架,由阿里巴巴公司开发并维护,主要用于实现微服务之间的远程调用。它提供了服务治理、监控和服务发现等功能,是分布式系统架构中的重要组件。在...
总结来说,"springboot-dubbo 版本配置"涉及到Spring Boot与Dubbo的集成,包括依赖管理、服务配置、接口定义和注解使用。此外,还涵盖了多模块Maven项目的结构设计,通过合理的项目划分和依赖管理,提高代码的可维护...
首先,`dubbo.xsd`是Dubbo的XML配置文件的模式定义,它包含了所有合法的Dubbo配置元素和属性。当编辑器或者IDE(如IntelliJ IDEA或Eclipse)显示红叉提示时,意味着XML文件可能有以下几种常见问题: 1. **XML语法...
这些配置文件遵循特定的XML Schema(XSD),即`dubbo配置scheme文件.xsd`,它是验证和解析Dubbo配置文件的规则集。 1. **XML Schema(XSD)**:XSD是一种用于定义XML文档结构的规范,它规定了元素、属性、数据类型...
### Apache Dubbo:Dubbo配置与参数详解 #### 一、Dubbo概述 Apache Dubbo是一款高性能、轻量级的微服务框架,主要用于构建服务化的应用程序和服务治理平台。它提供了全面的服务治理解决方案,包括服务发布、发现...
《Dubbo示例与官方配置解析》 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,已经成为Java世界中分布式服务的重要选择。本文将深入探讨“dubbo示例”、“dubbo官方配置文档”以及相关的“dubbo培训...
#### 三、Dubbo监控系统的配置与使用 ##### 3.1 配置Dubbo Admin Dubbo Admin的配置主要涉及以下几个方面: 1. **服务注册中心**:Dubbo Admin需要连接到服务注册中心(如Zookeeper)来获取服务列表。这些配置...
解决springboot 中 dubbo配置的报错问题 dubbo XML Schema 文件
在本示例中,我们将探讨如何使用Dubbo进行基本的使用和配置。 首先,"dubbo使用例子"这个标题表明我们要讨论的是关于在实际项目中如何集成和使用Dubbo。Dubbo的核心功能包括服务注册与发现、远程调用、负载均衡、...
本文将深入探讨Dubbo配置scheme文件`.xsd`,以及它在Dubbo架构中的作用和使用方式。 首先,我们需要理解什么是`.xsd`文件。`.xsd`(XML Schema Definition)是一种用于定义XML文档结构的语言,用于验证XML文档是否...