`
zhaoshijie
  • 浏览: 2261588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Dubbo Main启动方式浅析

 
阅读更多
关键字:Dubbo Main启动方式浅析

服务容器是一个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);
    }

}
分享到:
评论

相关推荐

    dubbo快速启动案例

    **Dubbo快速启动案例** ...以上就是基于阿里巴巴Dubbo框架快速启动服务端和消费端的基本步骤,通过这个案例,你可以了解Dubbo的核心功能和基本使用方式。在实际开发中,还需要结合具体业务场景进行更深入的配置和优化。

    dubbo应用启动与停止脚本

    在实际开发和运维过程中,正确地启动和停止Dubbo应用是必不可少的环节。本文将详细解析Dubbo应用的启动与停止脚本,帮助开发者更好地理解和操作。 一、启动脚本 Dubbo应用的启动脚本通常是一个shell脚本(如`start...

    Dubbo服务启动依赖检查.docx

    Dubbo服务启动依赖检查

    Dubbo服务提供者几种启动方式

    Dubbo服务提供者的启动方式是分布式系统开发中的关键一环,它涉及到服务的注册、发现、配置管理等多个方面。在本文中,我们将深入探讨Dubbo服务提供者常见的启动方法,并结合源码分析其工作原理。 首先,Dubbo服务...

    dubbo启动和停止脚本

    本篇将详细讲解如何使用经过修改的阿里官方脚本来启动和停止Dubbo服务,以及相关知识点。 首先,`start.sh`和`stop.sh`是两个关键的脚本文件,它们分别用于启动和停止Dubbo服务。在Linux环境中,这些脚本通常是bash...

    Dubbo应用启动解析.doc

    - 最终通过执行Java命令来启动应用,命令格式为`java -server $JAVA_OPTS $JAVA_DEBUG_OPTS -classpath $LIB_JARS org.apache.dubbo.container.Main start`。其中`-server`表示使用服务器级别的JVM,`$JAVA_OPTS`...

    两种配置dubbo-admin的启动方式(亲测有效)

    两种配置dubbo-admin的启动方式(亲测有效),分别适用于dubbo-admin-2.6.0及以下版本,dubbo-2.6.x以上版本。一种是要自己下载tomcat-8.5以上版本启动,一种是通过springboot内嵌的tomcat启动

    dubbo.xsd 文件下载 ,dubbo 服务启动报异常,本地加载xsd文件

    dubbo 启动服务远程找不到dubbo.xsd文件,不能够启动,本地直接加载xsd文件

    最简单的Dubbo案例之二:SpringBoot + dubbo 无zookeeper方式点对点直连

    本项目只适合dubbo入门学习者,高手请不要浪费金钱; 本项目技术栈 springboot, dubbo ,无 zookeeper 本项目旨在提供最单纯的 dubbo 服务提供者 和消费者的点对点直连,而摒弃任何多余技术对dubbo直连的理解

    dubbo demo maven方式

    1. **启动Zookeeper**:Dubbo通常使用Zookeeper作为注册中心,启动Zookeeper服务器是运行Dubbo应用的前提。 2. **运行服务提供者**:编译并运行服务提供者模块,服务将注册到Zookeeper上。 3. **运行服务消费者**:...

    解决dubbo启动报错的问题

    解决dubbo启动报错,加载失败问题。

    dubbo-admin-2.6.0及启动文档说明

    Dubbo Admin 2.6.0作为一款强大的管理工具,极大地提高了开发者对Dubbo服务的管理效率,通过其丰富的功能和灵活的启动方式,使得运维工作更加便捷。掌握正确的启动方法和充分利用其功能,是提升Dubbo应用运维水平的...

    dubbo启动生成的自适应类.rar

    综上所述,`dubbo启动生成的自适应类.rar`可能包含了一些示例代码或文档,帮助我们理解Dubbo自适应类的生成和工作原理,这对于深入理解和使用Dubbo服务框架至关重要。通过学习这部分内容,开发者可以更好地掌握Dubbo...

    dubbo2.0-源码阅读

    - **Spring可扩展Schema**:允许用户自定义Bean的定义方式。 - **Spring加载bean流程**: - 解析XML中的Bean定义:Spring会读取配置文件中的Bean定义,并将其解析成BeanDefinition对象。 - `onApplicationEvent`...

    dubbo 2.6.1编译版

    【Dubbo 2.6.1 编译版】是一个重要的开源项目,它是中国阿里巴巴公司贡献的高性能、轻量级的Java服务治理框架。这个版本是2.6.2的编译版本,意味着它包含了从2.6.1到2.6.2的所有更新和改进。对于开发者来说,尤其是...

    解决dubbo-admin在jdk1.8下启动报错

    解决dubbo-admin在jdk1.8下启动报错问题,需要下载dubbo源码修改问题重新编译打包发布,这里已经和重新编译。

    dubbo启动关闭脚本

    在 Dubbo 的环境中,通常会通过打包成 JAR 文件的方式来运行服务,因为这种方式便于部署和管理。`start.sh` 和 `shutdown.sh` 是两个常见的脚本文件,它们分别用于启动和关闭基于 JAR 包的 Dubbo 服务。 **启动脚本...

    解决dubbo启动的时候报错,无法读取方案文档 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'

    解决启动dubbo项目的时候出现,无法读取方案文档 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd',其实在你本地把dubbo.jar文件解压,然后在META-INF下边就有个dubbo.xsd,就是他

    基于Spring Boot的dubbo服务启动与filter快速定义设计源码

    该项目为基于Spring Boot框架的dubbo服务实现,旨在高效启动dubbo服务(包括消费者和生产者),并提供了快速定义dubbo filter的解决方案。项目源码共计36个文件,涵盖20个Java源文件、7个XML配置文件、4个Idea项目...

    Spring Boot集成dubbo+zookeeper

    安装部署Dubbo Admin,通常需要下载源码,根据项目环境进行配置,然后通过Maven或Gradle构建并启动。确保配置文件中指定了与你的Dubbo服务相同的注册中心地址。 在实际操作中,我们还需要关注一些关键点:如服务的...

Global site tag (gtag.js) - Google Analytics