zoukankan      html  css  js  c++  java
  • 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个稳定的状态。

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





  • 相关阅读:
    PCL点云
    unity碰撞,刚体笔记
    动画剪辑 状态配置 脚本编写2
    unity中动画剪辑,状态机关系配置,脚本编写方式1
    unity给物体着色加纹理图 material(材质)
    C++/Java小白解Leetcode题,发现了知识盲区……
    NLP之统计句法分析(PCFG+CYK算法)
    Java:基于TCP协议网络socket编程(实现C/S通信)
    Java实现:抛开jieba等工具,写HMM+维特比算法进行词性标注
    Java多线程技术:实现多用户服务端Socket通信
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7126732.html
Copyright © 2011-2022 走看看