Dubbo Main启动方式浅析

2023-10-27

服务容器是一个standalone的启动程序,因为后台服务不需要Tomcat或JBoss等Web容器的功能,如果硬要用Web容器去加载服务提供方,增加复杂性,也浪费资源。 
服务容器只是一个简单的Main方法,并加载一个简单的Spring容器,用于暴露服务。 
服务容器的加载内容可以扩展,内置了spring, jetty, log4j等加载,可通过Container扩展点进行扩展,参见:Container 
Spring Container 

    自动加载META-INF/spring目录下的所有Spring配置。 
    配置:(配在java命令-D参数或者dubbo.properties中) 
        dubbo.spring.config=classpath*:META-INF/spring/*.xml ----配置spring配置加载位置 

Jetty Container 

    启动一个内嵌Jetty,用于汇报状态。 
    配置:(配在java命令-D参数或者dubbo.properties中) 
        dubbo.jetty.port=8080 ----配置jetty启动端口 
        dubbo.jetty.directory=/foo/bar ----配置可通过jetty直接访问的目录,用于存放静态文件 
        dubbo.jetty.page=log,status,system ----配置显示的页面,缺省加载所有页面 

Log4j Container 

    自动配置log4j的配置,在多进程启动时,自动给日志文件按进程分目录。 
    配置:(配在java命令-D参数或者dubbo.properties中) 
        dubbo.log4j.file=/foo/bar.log ----配置日志文件路径 
        dubbo.log4j.level=WARN ----配置日志级别 
        dubbo.log4j.subdirectory=20880 ----配置日志子目录,用于多进程启动,避免冲突 

容器启动 

如:(缺省只加载spring) 
java com.alibaba.dubbo.container.Main 

或:(通过main函数参数传入要加载的容器) 
java com.alibaba.dubbo.container.Main spring jetty log4j 

或:(通过JVM启动参数传入要加载的容器) 
java com.alibaba.dubbo.container.Main -Ddubbo.container=spring,jetty,log4j 

或:(通过classpath下的dubbo.properties配置传入要加载的容器) 
dubbo.properties 
dubbo.container=spring,jetty,log4j 



public class SpringContainer implements Container { 

    private static final Logger logger = LoggerFactory.getLogger(SpringContainer.class); 

    public static final String SPRING_CONFIG = "dubbo.spring.config"; 
    
    public static final String DEFAULT_SPRING_CONFIG = "classpath*:spring/*.xml"; 

    static ClassPathXmlApplicationContext context; 
    
    public static ClassPathXmlApplicationContext getContext() { 
return context; 


public void start() { 
        String configPath = ConfigUtils.getProperty(SPRING_CONFIG); 
        if (configPath == null || configPath.length() == 0) { 
            configPath = DEFAULT_SPRING_CONFIG; 
        } 
        context = new ClassPathXmlApplicationContext(configPath.split("[,\\s]+")); 
        context.start(); 
    } 

    public void stop() { 
        try { 
            if (context != null) { 
                context.stop(); 
                context.close(); 
                context = null; 
            } 
        } catch (Throwable e) { 
            logger.error(e.getMessage(), e); 
        } 
    } 



测试: 
package cn.gooday.service.order.provider; 

import cn.gooday.framework.HelperLoader; 

/** 
* 主线程启动 
*/ 
public class TestMain { 

    public static void main(String[] args) throws Exception { 
        com.alibaba.dubbo.container.Main.main(args); 
    } 

 
http://zhaoshijie.iteye.com/blog/2214753

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dubbo Main启动方式浅析 的相关文章

  • I2C总结(单主机和多主机)

    I2C在使用过程中单个主机是不论是硬件I2C还是硬件I2C都不太难 理解好时序很容易实现 还有就是很多人认为硬件I2C有很多缺点 其实这是谬论吧 硬件I2C在稳定性上胜过软件I2C 而且不占用MCU时间 可以实现I2C中断 如果系统有硬件I
  • Java开发快速上手!3分钟就能完成的Redis主从复制搭建,完整PDF

    前言 高并发 几乎是每个程序员都想拥有的经验 原因很简单 随着流量变大 会遇到各种各样的技术问题 比如接口响应超时 CPU load升高 GC频繁 死锁 大数据量存储等等 这些问题能推动我们在技术深度上不断精进 我们知道 高并发代表着大流量
  • 【Flutter 3-1】Flutter手把手教程UI布局和Widget——底部导航栏BottomNavigationBar使用

    作者 弗拉德 来源 弗拉德 公众号 fulade me BottomNavigationBar BottomNavigationBar 和 BottomNavigationBarItem 配合来共同展示Flutter里面的底部状态栏 底部状
  • 敏捷开发之Scrum扫盲篇

    转载至 http www cnblogs com taven archive 2010 10 17 1853386 html 现在敏捷开发是越来越火了 人人都在谈敏捷 人人都在学习Scrum和XP 为了不落后他人 于是我也开始学习Scrum
  • kerberos 术语和认证流程介绍

    重要术语 1 KDC 全称 key distributed center 作用 整个安全认证过程的票据生成管理服务 其中包含两个服务 AS和TGS 2 AS 全称 authentication service 作用 为client生成TGT
  • 操作系统的文件结构

    文件的 逻辑结构 主要有 1 连续结构 2 多重结构 3 转置结构 4 顺序结构 文件的 物理存储 主要有 1 顺序结构 2 链接结构 3 索引结构 文件的 目录结构 主要有 1 一级目录结构 2 二级目录结构 3 树形结构 4 无环图
  • Springboot定时任务

    下文为 Scheduled的使用方法 1 简介 Scheduled支持三种部署方式 fixedRate fixedRateString 上一次执行开始后 n秒后再次执 fixedDelay fixedDelayString 上一次执行完毕后
  • 舵机的三条线分别代表什么

    橙色信号线 红色正极 棕褐色负极
  • @RequestParam和@PathVariable的用法与区别

    SpringBoot PathVariable URL变量 Web应用中的URL通常不是一成不变的 例如微博两个不同用户的个人主页对应两个不同的URL http weibo com user1和http weibo com user2 我们
  • 工厂(factory)模式

    转自 http www cnblogs com hegezhou hot archive 2010 11 30 1892227 html 一 开篇 一个多月没有写文章了 一方面是由于家庭的原因 还有一方面是因为工作上的原因 所以在这里给大家
  • 使用hutool库,对excel进行一些导出、导入操作

    所用到的各种类 依赖的话百度一下吧 最后再给上全部代码 import cn hutool core collection CollUtil import cn hutool core io IoUtil import cn hutool p
  • Struts 2 标签

    原文 https www mkyong com struts2 struts 2 shidden hidden value example 在struts2中可以使用
  • 调gensim库,word2vec模型的保存和加载

    一 模型的保存 模型保存可以有很多种格式 根据格式的不同可以分为2种 一种是保存为 model的文件 一种是非 model文件的保存 我常用的保存格式是 model和 vector直接上代码和结果 1 保存为model文件 数据的读入 fi
  • PCIe中断之MSI和MSI-X的区别(详细)总结附图文快速掌握

    目录 一 整体介绍 二 MSI和MSI X对比 2 1 中断向量连续 2 2 映射区域区别 2 3 MSI X配置空间 2 3 1 MSI X Capbility介绍 2 3 2 Capbility ID介绍 2 3 3 Message C
  • tree树做过滤

    代码如下 递归tree关键词搜索 param key 需要递归的key名 param keyword 需要搜索查询的关键字 param treeList 遍历tree列表 param first 是否是首次传入 默认true functio
  • Thymeleaf (select、checkbox)数据绑定和数据回回显

    第一种情况 select 数据绑定 前端页面 div class col sm 10 div
  • 放大电路中的自激震荡及相位补偿方法

    自激震荡 产生原因 1 电容对信号的超前和滞后作用 要分析自激震荡 首先得了解电路中的相移 放大电路中使信号发生相移的罪魁祸首主要在于电容 如果电容串接在电路中 则构成高通滤波电路 在截止频率之前相位超前90 2 之后相移为0 如图1所示
  • 2023年数学建模:种群竞争模型及其MATLAB实现

    订阅专栏后9月比赛期间会分享思路及Matlab代码 目录 种群竞争模型 MATLAB实现 实战案例 两种昆虫的竞争
  • Typora常用快捷键(详细)

    1 typora常用快捷键 ctrl 切换编辑语法模式 预览模式 ctrl 1 6 标题1 6 等同于 一级标题 空格 标题内容 二级标题 空格 标题内容 三级标题 空格 标题内容 最多六级标题 ctrl B 粗体 ctrl I 斜体 ct
  • Unity编译Android的原理解析和apk打包分析

    作者 张坤 最近由于想在Scene的脚本组件中 调用Android的Activity的相关接口 就需要弄明白Scene和Activity的实际对应关系 并对Unity调用Android的部分原理进行了研究 本文主要探讨Scene和Activ

随机推荐

  • [机器学习] 代价函数(cost function)

    前言 代价函数也叫做损失函数 loss function 机器学习中训练模型的过程就是优化代价函数的过程 代价函数对每个参数的偏导数就是梯度下降中的梯度 1 代价函数的定义 假设有训练样本 x y 模型为f 参数为w f w wTx w T
  • Android项目构建之build.gradle配置与打包

    一 build gradle配置 Google推荐使用的Android Studio是采用Gradle来构建项目的 Gradle是用了一种基于Groovy的领域特定语言 DSL Domain Specific Language 来声明项目设
  • 数据库系统实现课程设计:图书管理系统

    图书管理系统 项目简介 开发环境 数据层 控制层 表示层 项目简介 围绕中小学 注 无图书馆 图书管理需求 如采购入库 图书编码 借书还书 图书出库 设计合理的系统功能模块和数据库结构 构建一个较为实用的图书管理系统 任务要求 按照软件工程
  • Electron-vue环境配置,打包报错问题解决

    Electron vue 项目构建过程 1 搭建Electron vue框架 参照网址 https electron org cn 2 执行npm install npm 在国内比较慢 所以采用淘宝镜像代理 执行以下命令 安装cnpm np
  • Android初级到高级视频教程全套 百度网盘下载

    百度网盘视频资源下载 https pan baidu com s 1MVYKj4L8 1nU7Er3z5UGRA https pan baidu com s 1ewu5bDpuggEu9y KCZC bg 入门级 中级 高级 进阶级 更多资
  • shell脚本——正则表达式,grep,awk

    目录 正则表达式 1 元字符 字符匹配 2 表示次数 3 位置锚定 4 分组或其他 grep awk的用法 1 基础用法 2 awk常见的内置变量 FS 指定输出的每行文本的字段分隔符 OFS 输出时的分隔符 NF 当前处理的行的字段个数
  • chromeOS介绍

    目录 概述 支持程序 功能 概述 chromeOS 是由Google设计基于Linux核心的作业系统 并使用Google Chrome浏览器作为其主要使用者介面 因此 Chrome OS主要支持Web应用程式 2016年起开始陆续相容And
  • 每日一题系列:不要二

    二货小易现有一个W H的网格盒子 网格的行编号为0 H 1 网格的列编号为0 W 1 每个格子可放1块蛋糕 任意两块蛋糕的欧几里得距离不能等于2 对于两个格子坐标 x1 y1 x2 y2 的欧几里得距离为 x1 x2 x1 x2 y1 y2
  • ModuleNotFoundError: No module named ‘scipy.misc.pilutil‘

    python 3 8 pillow 6 0 0 scipy 1 7 3 报错后 有老哥说 pip scipy 1 1 0 原理是scipy中没有imread了 原语句 from scipy misc pilutil import imrea
  • [人工智能-深度学习-41]:开发环境 - GPU进行训练安装与搭建(Pytroch、TensorFlow、Nvidia CUDA)详细过程

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121241620 目录 第1章 英伟达
  • wireshark抓包筛选固定流并转发

    wireshark抓包筛选固定流并转发 1 筛选固定ip或端口 2 复制数据 在弹框中选择原始数据 全选数据并粘贴保存成txt 3 发送数据 打开网络调试助手 点击发送文件 选择保存的文件并发送 即可实现数据转发
  • Windows 10中的Docker实践

    题记 微软在人们的心目中就是商业化的代名词 操作系统 Office 数据库 Azure等可能是我们耳熟能详的 当然微软也在布局更多的技术王国 开源界对微软一直嗤之以鼻 指责其闭源行为影响技术的发展 不过微软现在也在积极改变以往的傲慢态度 慢
  • 若依系统基于nacos注册中心搭建

    目录 nacos问题 项目内部问题 MySQL的问题 redis的问题 操作流程https blog csdn net maitian 2008 article details 118579638 ops request misc 257B
  • Quartus II 13.0波形仿真

    先放结论 Quartus II 13 0有自带的仿真工具 能实现波形仿真 之前一直找不到关于Quartus II 13 0的波形仿真 然后百度的都是说quartus ii 9 0之后的版本就没有这个功能了 只能再下一个modelsim之类的
  • unity 第四期

    1 在Unity里3个update FixedUpdate Update LateUpdate 的用法和区别 9ria游戏开发社区的黄祖祥的文章 关于Unity3D中的Update LateUpdate FiexdUpdate http b
  • 《Python数据分析基础教程:NumPy学习指南:第二版》读书笔记

    内容 主要介绍了NumPy库中的函数 组成方式 用非常零散的知识点串联成章节 内容摘要 极简地展示了章节中所运用的函数 第一章 arrange函数创建NumPy数组 第二章 NumPy特性 在NumPy中 复数的虚部是用j表示的 如果数组中
  • go基础详解2-go run & test

    一 go run 编译运行一个main 包 package 常用的运行方式如下 go run go run hello go run 后面接路径 该路径 不含子路径 下所有的go源文件都属于main包 go run filename1 fi
  • Jmeter性能综合实战 —— 签到及批量签到

    提取性能测试的三个方面 核心 高频 基础功能 签 到 请 求 步 骤 1 准备工作 签到线程组n HTTP请求默认值n HTTP cookie 管理器n 首页访问请求n 登录请求n 查看结果树n 调试取样器l HTTP代理服务器 1 创建线
  • docker查看日志方式

    docker查看日志方式 docker logs tail 1000 lt 容器id 名称 gt 查看容器前多少行的日志 docker compose f docker compose app yml logs f 查看所有容器的运行日志
  • Dubbo Main启动方式浅析

    服务容器是一个standalone的启动程序 因为后台服务不需要Tomcat或JBoss等Web容器的功能 如果硬要用Web容器去加载服务提供方 增加复杂性 也浪费资源 服务容器只是一个简单的Main方法 并加载一个简单的Spring容器