JBoss AS6 的服务状态说明
(本文源码版本号为JBoss-AS-Final 6.1.0)
JBoss 的服务状态定义在 LifecycleState 类中。
一共同拥有八个状态:INSTANCIATED, PRE_INIT, INITIALIZED, IDLE, STARTING, STARTED, STOPPING, STOPPED
以下分别解释:
一、INSTANCIATED
一个服务最原始的状态,仅仅有一次。
进入其它状态后,再也不会回到这个状态。
这个状态是在 AbstractServer的构造方法的最后一行被设置的。
this.state = LifecycleState.INSTANCIATED;
在构造方法之后,运行的是initialize()方法,因此,这个状态下,服务还没有初始化。
在非常多JBoss的错误中,常常看到这个状态。
这个词的字面意思非常easy让人理解为:实例化的,事实上他的意思是:你的服务还在 最原始 的状态,没有被启动!
二、PRE_INIT
初始化之前的准备状态: pre-initialize。在AbstractServer运行 initialize()方法时,设置状态为 PRE_INIT。这样的状态仅仅有一次。
这个状态设置完后。開始调用doInitialize()方法。
在 INSTANCIATED ------> PRE_INIT 之间,完毕了 configuration是否为空的推断,此时的configuration是一个刚刚实例化的 BasicJBossASServerConfig 对象。
与 INSTANCIATED 不同的是,设置PRE_INIT状态使用了
this.setState(LifecycleState.PRE_INIT);
里面除了设置state状态,还触发了生命周期变化事件:
this.state = state; final Set<LifecycleEventHandler> handlers = this.getHandlersForEvent(state);
for (final LifecycleEventHandler handler : handlers)
{
handler.handleEvent(state);
}
在AbstractJBossASServerBase的 doInitialize()方法中。注冊了START 和 STOP 事件:
final LifecycleEventHandler startHandler = new KernelStartEventLifecycleEventHandler(this);
final LifecycleEventHandler stopHandler = new KernelStopEventLifecycleEventHandler(this);
this.registerEventHandler(startHandler, LifecycleState.STARTED);
this.registerEventHandler(stopHandler, LifecycleState.STOPPING);
三、INITIALIZED
初始化完毕,AbstractServer及其子类的doInitialize()方法所有运行完毕。回到initialize()后将 PRE_INIT 状态变为 INITIALIZED。这样的状态仅仅有一次。
也是使用
this.setState(LifecycleState.INITIALIZED);
四、IDLE
空暇状态,表示还没有启动或者正在等待启动。
最初这个状态是紧跟着INITIALIZED状态设置的:
this.setState(LifecycleState.INITIALIZED);
this.setState(LifecycleState.IDLE);
另外一个状态转变为IDLE就是 STOPED:
this.setState(LifecycleState.STOPPED);
this.setState(LifecycleState.IDLE);
五、STARTING
正在启动过程中。还没有启动完毕。
在 AbstractServer的 StartServerTask 中设置了STARTING状态:
setState(LifecycleState.STARTING);
六、STARTED
启动完毕,处于服务的状态。
这个状态是在 AbstractServer的 StartServerTask完毕了 doStart()等方法之后。在最后设置的。
同一时候。也触发了 KernelStartEventLifecycleEventHandler 事件处理!
这是一个并行的处理机制。
STARTED能够转换为 STOPPING。
七、STOPPING
正在停止。还没有完毕。
同一时候,也触发了 KernelStopEventLifecycleEventHandler 事件处理!
这个状态会转换到 STOPPED。
八、STOPPED
停止完毕。然后转换到IDLE状态。
以上状态仅仅有 INSTANCIATED ,IDLE ,STARTED和 STOPPED状态是稳定的,我们常常看到的仅仅有这个4个稳定的状态。
其它状态在程序运行过程中会转变为稳定状态,因此这些不稳定状态我们是无法获取到的。
JBoss AS6 的服务状态说明的更多相关文章
- linux 查看各服务状态chkconfig
使用chkconfig 查看服务状态启动状态chkconfig --list 查看服务状态chkconfig --del <service name> 删除掉某项服务.在Fedora14中 ...
- C#检查服务状态和启动关闭服务
WinForm 判断服务状态,显示服务名称和状态 https://blog.csdn.net/u013063880/article/details/78626200 C#获得服务,判断服务状态,启动服 ...
- linux查看各服务状态以及开启和关闭
1.......................................... 友好的显示所有服务的运行状态: service --status-all chkconfig --list 2. ...
- WAS 查看服务状态
进入目录下/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin 查看服务状态命令# ./serverStatus.sh 服务名 例如: [root@lo ...
- Linux 查看服务状态(服务与进程)
原文地址:http://blog.csdn.net/weixin_37979944/article/details/79029188 指令(instruction): 计算机实际上可以做的事情实质上非 ...
- 使用vsftp与shell实现对进程与服务状态的监控
先说一下需求吧,公司开发了一款新的产品,新产品嘛,有着不得不出问题的理由,四个云机房,总共三百余台机器,需要实时的监控进程状态,虽然有zabbix来实现,但领导需求是脚本和zabbix一起做,zabb ...
- 通过Centreon监控apache、MySQL、Hadoop服务状态
在上面的章节中,只是简单介绍了Centreon的几个基础监控项,例如添加主机.服务等,这些对于一个监控系统来说是远远不够的,本节将重点介绍对一些扩展服务的监控,也就是对一些常见应用的监控. 一. Na ...
- telegraf 学习三 telegra inputs.net_response + smtp2http+ grafana 进行tcp服务状态监控
以下演示一个简单的使用telegra inputs.net_response 进行tcp 服务状态的监控,统计集成grafana 的alert 为了方便使用了一个smtp2http 的服务,对于htt ...
- systemctl命令的使用及服务状态的查看
二.systemctl命令 systemctl list-units ##列出当前系统服务的状态 systemctl list-unit-files ##列出服务的开 ...
随机推荐
- [ Luogu 3935 ] Calculating
\(\\\) \(Description\) 若\(x\)分解质因数结果为\(x=p_1^{k_1}p_2^{k_2}\cdots p_n^{k_n}\),令\(f(x)=(k_1+1)(k_2+1) ...
- sublime 设置浏览器
方法一: 1.安装sidebarenhancements插件 ctrl+shift+p —> Install Package —> 找到SideBarEnhancements 2.配置预览 ...
- 北大ACM(POJ1016-Numbers That Count)
Question:http://poj.org/problem?id=1016 问题点:水题. Memory: 232K Time: 125MS Language: C++ Result: Accep ...
- Oracl常用e函数整理
最近学Oracle数据库,常常遇到Oracle数据库函数问题,经过默默地琢磨处理,总结了一些Oracle数据库常用函数. ------------------------------------ -- ...
- Qt 5.8.3 部署/添加 Crypto++第三方库(5.6.5版本)
首先,Qt没有封装加解密算法库(其实有个哈希函数的函数).介于OpenSSL函数封装不友好,以及先前爆发的心脏滴血漏洞广受诟病,我们考虑在C++上使用一种新的,并且封装友好的,OOAD程度更高的加解密 ...
- Filesystem Hierarchy Standard (Unix, Linux etc)
http://www.pathname.com/fhs/ /boot -- Static files of the boot loader Purpose: contains everything r ...
- 如何安装Ant,配置环境变量??
Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发. Ant是一个基于Java,并且主要用于Java工程的构建工具.Ant本意是A ...
- 梦想CAD控件打印相关
一.打印设置 在顶部快速访问工具栏单击打印按钮或者直接输入PLOT命令或者点击打印控制的打印设置按钮打开打印对话框.c#代码实现如下: //打印设置 private void Print1() { ...
- Linux系统安装,组成及开关机
Linux系统安装,组成及开关机 系统安装 swap分区用于实现虚拟内存,文件系统类型是swap. /分区用于存放包括系统程序和用户数据在内的所有数据,文件系统类型是ext4. 系统组成 Linux内 ...
- C#服务端通过Socket推送数据到Android端App中
需求: 描述:实时在客户端上获取到哪些款需要补货. 要求: 后台需要使用c#,并且哪些需要补货的逻辑写在公司框架内,客户端采用PDA(即Android客户端 版本4.4) . 用户打开了补货通知页面时 ...