JBoss AS6 的服务状态说明

来源:互联网 发布:手机淘宝申请售后 编辑:程序博客网 时间:2024/05/29 07:48

(本文源代码版本为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的错误中,经常看到这个状态。

这个词的字面意思很容易让人理解为:实例化的,其实他的意思是:你的服务还在 最原始 的状态,没有被启动!


二、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个稳定的状态。

其他状态在程序执行过程中会转变为稳定状态,因此这些不稳定状态我们是无法获取到的。





0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 学业与志愿活动冲突时你会怎么办 往宅正门前面有半园幕墙玻璃怎么办 模拟城市5石油抽干了怎么办 一户一宅我父亲没有宅基怎么办? 在日本坐新干线期间车票丢了怎么办 街电共享充电宝丢了怎么办 征兵体检时做过疝气手术怎么办 百度网盘手机储存空间不足怎么办 在家带孩子老公不给生活费怎么办 手机蚂蚁浏览器先锋资源没了怎么办 当你发现你的爱人和别人暧昧怎么办 当你的爱人不再爱的时候该怎么办 基督徒的婚姻不是上帝的旨意怎么办 音乐酒吧客人老是要上台唱歌怎么办 高一孩子学习没有动力家长怎么办 我不想当公司监事法人不同意怎么办 领导让我当组长我不想当怎么办 如果你是班委你不想当了怎么办 孩子读初一爱和同学打架怎么办 陌陌情感连线部分功能被限制怎么办 华为荣耀7x密码忘了怎么办 华为荣耀7x应用锁密码忘了怎么办 同学群里有人发低俗信息怎么办 小孩读英语绘本大人不会翻译怎么办 东西掉到手刹缝里面了怎么办 泰拉瑞亚猩红之地蔓延到家里怎么办 三星r.467玩dnf闪退怎么办 美团外卖不小心撞到汽车怎么办 如果你在战场上遇到华裔美军怎么办 衣服洗完了干了后发黄怎么办 毛衣起球怎么办学会这几个小妙招 小车没电了打不着火怎么办 老婆花钱大手大脚又要我给钱怎么办 住酒店手机id被劫持了怎么办 孩子老是送玩具给别的小朋友怎么办 老板总想和我谈人生怎么办gl 导师让用师姐的数据写论文怎么办 签了平面模特协议想违约怎么办 福州96年以前社保手册丢了怎么办 被老师缴的手机弄没了怎么办 户口在成都医保在德阳生孩子怎么办