JBoss启动过程
2011-01-10 17:10
435 查看
From:http://blog.csdn.net/chuan122345/archive/2007/06/06/1641366.aspx
1. org.jboss.Main.main(String[]) 为入口.
2. main 函数创建一个名叫”jboss”的线程组, 然后创建一个属于该组的线程, 在线程中执行boot方法.
3. boot 方法首先处理main函数中的参数(及一些其它的系统环境设置), 接着就用系统的属性创建了org.jboss.system.server.ServerLoader实例[new ServerLoader(props)].
4. ServerLoader 注册Jboss相关的类路径, 包括XML解析器, jboss-jmx.jar, concurrent.jar及其它的一些额外的类路径.
5. ServerLoader 通过load(ClassLoader)方法创建Jboss Server实例. 参数ClassLoader是ClassLoader parentCL = Thread.currentThread(). getContextClassLoader( )得到的当前线程的类加载器. 创建的Server实例是org.jboss.system.server.Server接口的实现. load(ClassLoader)方法的细节:
Ø 用jar包及在ServerLoader中注册的类路径创建一个URLClassLoader的实例, 把传入的ClassLoader作为该URLClassLoader的parent.
Ø Server 接口的实现类由系统属性 jboss.server.type决定, 默认是 org.jboss.system.server.ServerImpl.
Ø URLClassLoader 通过无参构造函数加载Server接口实现的实例. 在加载前把当前线程的类加载器置为该URLClassLoader, 在加载完成后再置回之前传入的ClassLoader.
6. Server 实例用系统属性进行初始化[server.init(props)].
7. 服务起动[server.start()]. 起动过程的默认实现如下:
Ø 把当前线程类型加载器置为加载该Server接口实现实例的ClassLoader.
Ø 在jboss域内, 通过MBeanServerFactory的createMBeanServer(String)方法创建MbeanServer实例.
Ø 在MBean Server上注册ServerImpl和ServerConfigImpl两个MBean.
Ø 初始化统一的类加载仓库(unified class loader repository), 用来装载服务器配置目录及其它可选目录下的jar文件. 对于每一个jar文件和类目录都会创建一个相应的org.jboss.jmx.loading.UnifiedClassLoader实例, 并且注册到统一的仓库中. 其中一个UnifiedClassLoader实例会被设置为当前线程上下文的ClassLoader. [?: This effectively makes allUnifiedClassLoaders available through the thread context class loader.]
Ø 接下来创建org.jboss.system.ServiceController的MBean实例. ServiceController管理JBoss MBean服务的生命周期.
Ø org.jboss.deployment.MainDeployer 实例被创建并起动. MainDeployer管理部署的依赖和部署的定向.
Ø org.jboss.deployment. JARDeployer 实例被创建并起动. JARDeployer处理jar包的部署.
Ø org.jboss.deployment. SARDeployer 实例被创建并起动. SARDeployer处理JBoss MBean服务的部署.
Ø MainDeployer 对当前服务器文件环境里conf/jboss-service.xml定义的服务进行部署.
启动过程结束. 把当前线程上下文类加载器置回为起动前的ClassLoader.
8、Jboss的启动参数
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /usr/java/jboss4
JAVA: /usr/java/j2sdk/bin/java
JAVA_OPTS: -Dprogram.name=run.sh -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
CLASSPATH: /usr/java/jboss4/bin/run.jar:/usr/java/j2sdk/lib/tools.jar
=========================================================================
usage: run.sh [options]
options:
-h, –help Show this help message
-V, –version Show version information
– Stop processing options
-D<name>[=<value>] Set a system property
-d, –bootdir=<dir> Set the boot patch directory; Must be absolute or url
-p, –patchdir=<dir> Set the patch directory; Must be absolute or url
-n, –netboot=<url> Boot from net with the given url as base
-c, –configuration=<name> Set the server configuration name
-B, –bootlib=<filename> Add an extra library to the front bootclasspath
-L, –library=<filename> Add an extra library to the loaders classpath
-C, –classpath=<url> Add an extra url to the loaders classpath
-P, –properties=<url> Load system properties from the given url
-b, –host=<host or ip> Bind address for all JBoss services
-g, –partition=<name> HA Partition name (default=DefaultDomain)
-u, –udp=<ip> UDP multicast address
-l, –log=<log4j|jdk> Specify the logger plugin type
其中有几个常用的参数
-c 服务配置名,指定JBoss启动哪个服务配置,默认是default,常用有 -c all
-b 绑定JBoss服务的IP,特别在部署EJB服务,只能通过绑定的IP查找EJB,在Linux下,不绑定IP将找不到EJB服务.对于单纯的Web应用,不绑定IP可以实现全地址绑定,对双网卡或者多个IP的环境都能通过不同IP访问.
-g 绑定HA分区名,用于EJB集群分组.
-u UDP多播地址,用于集群JBoss环境,默认为230.0.0.4,如果在局域网在有多个启动all配置(有集群配置)的JBoss服务,那在 JBoss日志中能看到不时的有组播信息出现,可以设置为不同的组播地址,避免这些干扰.合法值是IP协议中说到的广播段.
1. org.jboss.Main.main(String[]) 为入口.
2. main 函数创建一个名叫”jboss”的线程组, 然后创建一个属于该组的线程, 在线程中执行boot方法.
3. boot 方法首先处理main函数中的参数(及一些其它的系统环境设置), 接着就用系统的属性创建了org.jboss.system.server.ServerLoader实例[new ServerLoader(props)].
4. ServerLoader 注册Jboss相关的类路径, 包括XML解析器, jboss-jmx.jar, concurrent.jar及其它的一些额外的类路径.
5. ServerLoader 通过load(ClassLoader)方法创建Jboss Server实例. 参数ClassLoader是ClassLoader parentCL = Thread.currentThread(). getContextClassLoader( )得到的当前线程的类加载器. 创建的Server实例是org.jboss.system.server.Server接口的实现. load(ClassLoader)方法的细节:
Ø 用jar包及在ServerLoader中注册的类路径创建一个URLClassLoader的实例, 把传入的ClassLoader作为该URLClassLoader的parent.
Ø Server 接口的实现类由系统属性 jboss.server.type决定, 默认是 org.jboss.system.server.ServerImpl.
Ø URLClassLoader 通过无参构造函数加载Server接口实现的实例. 在加载前把当前线程的类加载器置为该URLClassLoader, 在加载完成后再置回之前传入的ClassLoader.
6. Server 实例用系统属性进行初始化[server.init(props)].
7. 服务起动[server.start()]. 起动过程的默认实现如下:
Ø 把当前线程类型加载器置为加载该Server接口实现实例的ClassLoader.
Ø 在jboss域内, 通过MBeanServerFactory的createMBeanServer(String)方法创建MbeanServer实例.
Ø 在MBean Server上注册ServerImpl和ServerConfigImpl两个MBean.
Ø 初始化统一的类加载仓库(unified class loader repository), 用来装载服务器配置目录及其它可选目录下的jar文件. 对于每一个jar文件和类目录都会创建一个相应的org.jboss.jmx.loading.UnifiedClassLoader实例, 并且注册到统一的仓库中. 其中一个UnifiedClassLoader实例会被设置为当前线程上下文的ClassLoader. [?: This effectively makes allUnifiedClassLoaders available through the thread context class loader.]
Ø 接下来创建org.jboss.system.ServiceController的MBean实例. ServiceController管理JBoss MBean服务的生命周期.
Ø org.jboss.deployment.MainDeployer 实例被创建并起动. MainDeployer管理部署的依赖和部署的定向.
Ø org.jboss.deployment. JARDeployer 实例被创建并起动. JARDeployer处理jar包的部署.
Ø org.jboss.deployment. SARDeployer 实例被创建并起动. SARDeployer处理JBoss MBean服务的部署.
Ø MainDeployer 对当前服务器文件环境里conf/jboss-service.xml定义的服务进行部署.
启动过程结束. 把当前线程上下文类加载器置回为起动前的ClassLoader.
8、Jboss的启动参数
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /usr/java/jboss4
JAVA: /usr/java/j2sdk/bin/java
JAVA_OPTS: -Dprogram.name=run.sh -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
CLASSPATH: /usr/java/jboss4/bin/run.jar:/usr/java/j2sdk/lib/tools.jar
=========================================================================
usage: run.sh [options]
options:
-h, –help Show this help message
-V, –version Show version information
– Stop processing options
-D<name>[=<value>] Set a system property
-d, –bootdir=<dir> Set the boot patch directory; Must be absolute or url
-p, –patchdir=<dir> Set the patch directory; Must be absolute or url
-n, –netboot=<url> Boot from net with the given url as base
-c, –configuration=<name> Set the server configuration name
-B, –bootlib=<filename> Add an extra library to the front bootclasspath
-L, –library=<filename> Add an extra library to the loaders classpath
-C, –classpath=<url> Add an extra url to the loaders classpath
-P, –properties=<url> Load system properties from the given url
-b, –host=<host or ip> Bind address for all JBoss services
-g, –partition=<name> HA Partition name (default=DefaultDomain)
-u, –udp=<ip> UDP multicast address
-l, –log=<log4j|jdk> Specify the logger plugin type
其中有几个常用的参数
-c 服务配置名,指定JBoss启动哪个服务配置,默认是default,常用有 -c all
-b 绑定JBoss服务的IP,特别在部署EJB服务,只能通过绑定的IP查找EJB,在Linux下,不绑定IP将找不到EJB服务.对于单纯的Web应用,不绑定IP可以实现全地址绑定,对双网卡或者多个IP的环境都能通过不同IP访问.
-g 绑定HA分区名,用于EJB集群分组.
-u UDP多播地址,用于集群JBoss环境,默认为230.0.0.4,如果在局域网在有多个启动all配置(有集群配置)的JBoss服务,那在 JBoss日志中能看到不时的有组播信息出现,可以设置为不同的组播地址,避免这些干扰.合法值是IP协议中说到的广播段.
相关文章推荐
- jboss之启动加载过程详解(二)
- jboss启动过程
- jboss之启动加载过程详解(三)
- jboss之启动加载过程详解(四)
- jboss的启动过程
- JBoss启动过程详解
- jboss之启动加载过程详解
- JBoss AS 6.1.0 Final 启动过程分析-Main
- 深入理解 JBoss 7/WildFly Standalone 模式启动过程
- Solaris10系统下普通用户无法启动jboss解决过程
- JBoss启动过程
- JBOSS启动过程
- JBoss Application Server的启动过程
- JBOSS 启动 加载 过程
- 深入理解 JBoss 7/WildFly Domain 模式启动过程
- JBoss启动过程
- JBOSS 启动 加载 过程
- JBOSS 启动过程
- centos 6.5 系统中jboss4.2.3启动过程异常缓慢的问题处理一则
- 深入理解 JBoss 7/WildFly Domain 模式启动过程