# dubbo-demo-xml **Repository Path**: weh_coder/dubbo-demo-xml ## Basic Information - **Project Name**: dubbo-demo-xml - **Description**: spring+xml+dubbo实现服务远程调用 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-29 - **Last Updated**: 2026-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dubbo Demo (XML 配置版) 开发文档 ## 1. 项目概述 本项目是一个基于 Apache Dubbo 的高性能 RPC 服务框架演示示例。该项目采用 **XML 配置文件** 的方式来进行 Dubbo 服务的注册、暴露和引用配置,展示了如何在 Maven 多模块项目中构建标准的服务提供者与消费者模型。 * **项目名称**: `dubbo-demo-xml` * **组织 ID**: `com.weh` * **当前版本**: `1.0-SNAPSHOT` * **语言版本**: Java 17 ## 2. 系统架构与技术栈 ### 2.1 核心技术依赖 根据根工程的 `pom.xml` 分析,项目使用了以下关键组件: | 组件 | 版本/库名称 | 说明 | | :--- | :--- | :--- | | **RPC 框架** | `org.apache.dubbo:dubbo:3.2.8` | 核心 Dubbo 包 | | **序列化** | `dubbo-serialization-hessian2` | 高效二进制序列化方案 | | **通信框架** | `dubbo-remoting-netty4` | 使用 Netty 4.x 作为底层通讯引擎 | | **注册中心** | `dubbo-registry-zookeeper` / `nacos` | 同时引入了 Zookeeper 和 Nacos 适配包 | | **配置中心** | `dubbo-config-spring` | Spring 集成支持 | | **QoS** | `dubbo-qos-api` | 命令行运维工具支持 | | **日志体系** | `slf4j-api` (1.7.5) + `log4j` (1.2.16) | SLF4J 门面 + Log4j 实现 | | **JSON 处理** | `fastjson` (1.2.62) | 用于对象转换(可选) | ## 3. 模块结构设计 项目采用 Maven 多模块管理,包含三个核心子模块: ### 3.1 模块列表text ```dubbo-demo-xml/ ├── service-api # 【共享层】接口定义、DTO 对象定义 ├── service-provider # 【服务端】具体业务逻辑实现,对外发布 Dubbo 服务 └── service-consumer # 【客户端】调用远程 Dubbo 服务的应用 ``` ### 3.2 模块职责详解 1. **service-api** * **作用**:存放接口 Interface 和数据传输对象 (DTO)。 * **特点**:通常不包含具体实现代码,仅定义契约。它是 Provider 和 Consumer 共同依赖的基础。 * **父工程**:继承自 `com.weh:dubbo-demo-xml:1.0-SNAPSHOT`。 2. **service-provider** * **作用**:微服务的提供方。 * **依赖**:依赖 `service-api`。 * **主要功能**:读取 Dubbo XML 配置文件,启动后监听端口,等待消费者调用。 3. **service-consumer** * **作用**:微服务的消费方(调用方)。 * **依赖**:依赖 `service-api`。 * **主要功能**:读取 Dubbo XML 配置文件,通过代理对象调用远程接口。 ## 4. 快速开始 ### 4.1 环境准备 * JDK 17 或以上版本 * Maven 3.6+ * 注册中心(需选择其中一个启动): * Zookeeper 集群或单节点 * Nacos Server ### 4.2 编译与打包 由于是 Maven 多模块项目,请在根目录执行以下命令进行全局构建 ```bash mvn clean install -D ``` > **注意**:如果不想运行测试,建议添加 `-DskipTests` 参数以加速构建过程。 ### 4.3 运行方式 通常遵循 **“先启动提供者,再启动消费者”** 的原则(或者两者并行启动均可,只要注册中心就绪)。 1. **启动 Provider**: 找到 `service-provider` 模块中的 `main` 方法类并运行。 2. **启动 Consumer**: 找到 `service-consumer` 模块中的 `main` 方法类并运行。 ## 5. 开发与扩展指南 ### 5.1 新增接口流程 若要在项目中新增一个服务接口: 1. 在 **`service-api`** 中定义接口和对应的 Request/Response DTO。 2. 确保新添加的 DTO 实现了 `Serializable` 接口(如果使用 Hessian 序列化)。 3. 在 **`service-provider`** 中实现该接口。 4. 在 Provider 的 XML 配置文件中 `` 声明该接口。 5. 在 **`service-consumer`** 中注入该接口,并在 Consumer 的 XML 中使用 `` 引用。 ### 5.2 注册中心配置说明 本项目依赖了多种注册中心的 Jar 包。在实际运行时,你需要通过修改 XML 配置文件来决定连接哪一个注册中心: * **Zookeeper**: 配置 `` * **Nacos**: 配置 `` (通用工程经验提示:生产环境中,建议只保留一种注册中心的依赖,以减少不必要的包体积。) ## 6. 常见问题排查 * **依赖冲突**:如果报 `ClassNotFoundException`,检查 `mvn dependency:tree` 确认是否引入了不兼容的旧版本 Dubbo 库。 * **端口占用**:默认情况下,Dubbo 协议可能会使用特定端口(通常是 20880),请确保服务器防火墙已放行相应端口。