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 ##列出服务的开 ...
随机推荐
- Python学习日记之读取中文目录
unicode # -*- coding:utf-8 -*- import os import shutil ins="E:\\学习资料" dir=unicode(ins,'utf ...
- 人人都能读懂的css3 3d小demo
css3 3d案例总结 最近入坑 Web 动画,所以把自己的学习过程记录一下分享给大家.就把最近做的比较好的给大家分享下 1.旋转拼图 首先看下效果 代码主要由HTML和CSS3组成,应该说还是比较简 ...
- 鼠标拖拽移动Java界面组件
默认的,Frame或者JFrame自身已经实现了鼠标拖拽标题栏移动窗口的功能. 只是,当你不满意java的JFrame样式,隐藏了标题栏和边框,又或者干脆直接使用JWindow,那你又该怎么实现鼠标拖 ...
- CodeFrist基础_迁移更新数据
一丶自动迁移 第一次启用迁移:NeGet-->Enable-Migrations public DemoDbContext() : base("name=ConncodeFirst&q ...
- jQuery图片延迟加载插件jQuery.lazyload 的使用
使用方法 引用jquery和jquery.lazyload.js到你的页面 1 2 <script src="jquery-1.11.0.min.js"></sc ...
- 利用gsoap库封装易用的rest框架
c++缺少web开发的框架,web框架分为异步和同步,异步的业务逻辑控制需要较强功底,同步代码实现起来容易,利于阅读理解 1.gsoap是c++写的webservice库,webservice应用层也 ...
- BZOJ 3916 [Baltic2014]friends
[题解] 暴力枚举添加字符的位置,然后判断去掉这个位置的字符串是否有由两个相同的串拼接而成.本题的n的范围为200W,暴力判断会TLE,所以要使用哈希. #include<cstdio> ...
- L2-012. 关于堆的判断(STL中heap)
L2-012. 关于堆的判断 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x and y ...
- FJoi2017 1月21日模拟赛 comparison(平衡树+thita重构)
题目大意: 经黄学长指出,此题原题出自2014湖北省队互测 没有人的算术 规定集合由二元组(A,B)构成,A.B同时也是两个这样的集合,即A.B本身也是二元组 规定二元组S为严格最小集合,S=(S,S ...
- HDU 1081 DP找最大和的矩阵
题目大意: 在一个给定的大矩阵中找一个小型的矩阵,使这个矩阵中的元素和最大 可以先来看下面这个问题: 原来有做过在一个给定的数字序列中找一个最大和子序列,核心代码如下: ]; ]; ; ; int r ...