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.
分享到:
相关推荐
在本文中,我们将深入探讨JBoss的启动过程及其相关知识点。 1. **JBoss目录结构**: JBoss的安装目录包含多个子目录,如`bin`、`server`、`deploy`等。`bin`目录下有启动和停止服务器的脚本,`server`目录则包含了...
**JBoss启动顺序** JBoss的启动过程大致分为以下几个阶段: 1. **环境准备**:首先,JBoss会检查运行环境,包括Java环境(JDK)是否安装正确,版本是否兼容,以及相关的系统变量如JAVA_HOME是否设置。 2. **配置...
JBoss启动与运行过程的研究,JBoss启动与运行过程的研究
总结起来,解决JBoss启动优先级问题主要是通过配置文件明确应用之间的依赖关系,利用如`jboss-web.xml`中的`<depends>`元素来控制启动顺序。这确保了系统按照预设的逻辑运行,避免了因启动顺序不正确导致的错误或...
JBoss启动的入口 一旦启动脚本成功执行,将调用`C:\Java\bin\java`命令,启动Java虚拟机并加载`org.jboss.Main`类中的`main`方法作为启动入口。`Main.main`方法会创建一个名为“jboss”的线程组,并在该线程组中...
### 如何在JBoss上同时启动两个实例 在企业级应用服务器JBoss中,有时我们需要在同一台物理机器上运行多个独立的JBoss实例。这在测试环境或开发环境中非常常见,尤其是在进行集成测试或者需要模拟多节点集群环境时...
对于Windows用户来说,将JBoss配置为系统服务可以实现自动启动,避免每次开机时手动开启,从而提高工作效率。本文将详细介绍如何在Windows系统中将JBoss设置为一个系统服务。 首先,我们需要准备以下工具: 1. ...
### Linux下安装JBoss并设置自启动服务 在Linux环境下安装JBoss并配置其...通过以上步骤,我们完成了在Linux环境下JBoss的安装及配置自启动服务的过程。这不仅方便了日常的运维工作,还提高了系统的稳定性和可用性。
### Linux下配置JBoss自动启动(JBoss V4.0) #### 概述 在Linux环境中,JBoss作为一款广泛使用的应用服务器,在企业级开发中扮演着重要角色。为了提高系统的稳定性和可用性,通常会将JBoss配置为开机自启动服务。...
Linux 启动 JBoss 服务器详解 Linux 作为一种流行的开源操作系统,在企业应用中广泛应用,其中 JBoss 服务器作为 Java EE 企业级应用服务器,在 Linux 平台上运行非常常见。因此,本篇文章将详细介绍如何在 Linux ...
本教程将详细介绍如何使用JavaService.exe工具将JBoss启动注册为Windows系统服务。 首先,JavaService.exe是Apache Commons Daemon项目的一部分,它允许Java应用程序以Windows服务的形式运行。这个工具能够把任何可...
Jboss启动报Failed to parse WEB-INF/web.xml; - nested throwable错误解决方案 在Jboss应用服务器中,启动报错Failed to parse WEB-INF/web.xml; - nested throwable是一种常见的错误,本文将对此错误进行深入分析...
在JBoss启动过程中,JDK环境的正确配置至关重要。如果JDK版本不兼容或路径设置有误,很可能导致JBoss启动失败,表现为“一闪而过”的现象。具体而言,以下几点需注意: - **JDK版本**:确保安装的JDK版本与JBoss...
### JBoss 4.2 自定义服务器(在同一 IP 启动多个实例)配置方法详解 在企业级应用开发中,为了提高服务器资源利用率以及更好地进行应用程序的隔离与管理,经常需要在同一台物理服务器上部署多个独立的应用服务器...
本篇文章将详细解析JBoss的配置过程,旨在帮助初学者更好地理解和操作JBoss服务器。 一、JBoss安装与环境准备 在开始配置前,确保已安装了Java Development Kit (JDK)。JBoss需要JDK来运行,因此请先下载并安装适合...
在IT领域,特别是Java应用服务器环境下,JBoss与MySQL数据库的集成是常见需求之一,而JNDI(Java Naming and Directory Interface)在此过程中扮演着关键角色。本文将深入解析如何在JBoss中配置MySQL的JNDI数据源,...
执行脚本后,控制台会显示JBoss的启动过程。 6. **测试JBoss**: 启动成功后,可以通过浏览器访问`http://localhost:8080`,如果看到JBoss的欢迎页面,说明安装和启动均成功。默认情况下,JBoss使用8080端口提供...
### Linux下JDK与JBoss的安装及JBoss自启动设置 #### JDK的安装步骤 在Linux环境下安装JDK是部署Java应用的基础。本部分将详细介绍如何在Linux系统上安装JDK。 1. **下载JDK安装包**: - 通常推荐从Oracle官网...