クラス AbstractJmsListeningContainer

実装されたすべてのインターフェース:
AwareBeanNameAwareDisposableBeanInitializingBeanLifecyclePhasedSmartLifecycle
既知の直属サブクラス
AbstractMessageListenerContainer

public abstract class AbstractJmsListeningContainer extends JmsDestinationAccessor implements BeanNameAware, DisposableBean, SmartLifecycle
JMS 接続に基づいてリッスンを実装する必要のあるすべてのコンテナーの共通基本クラス(共有または各試行で新たに取得)。基本的な接続およびセッション構成の処理を JmsAccessor 基本クラスから継承します。

このクラスは、基本的なライフサイクル管理、特に共有 JMS 接続の管理を提供します。サブクラスはこのライフサイクルにプラグインされ、sharedConnectionEnabled() および doInitialize() および doShutdown() テンプレートメソッドを実装することになっています。

この基本クラスは、特定のリスナープログラミングモデルまたはリスナー呼び出しメカニズムを想定していません。JMS 接続 / セッションで動作するあらゆる種類の JMS ベースのリスニングメカニズムに必要な一般的なランタイムライフサイクル管理を提供するだけです。

具体的なリスナープログラミングモデルについては、AbstractMessageListenerContainer サブクラスを確認してください。具体的なリスナー呼び出しメカニズムについては、DefaultMessageListenerContainer クラスを確認してください。

導入:
2.0.3
作成者:
Juergen Hoeller
関連事項:
  • フィールドの詳細

    • sharedConnectionMonitor

      protected final ObjectSE sharedConnectionMonitor
    • lifecycleMonitor

      protected final ObjectSE lifecycleMonitor
  • コンストラクターの詳細

    • AbstractJmsListeningContainer

      public AbstractJmsListeningContainer()
  • メソッドの詳細

    • setClientId

      public void setClientId(@Nullable StringSE clientId)
      このコンテナーによって作成および使用される共有接続の JMS クライアント ID を指定します。

      クライアント ID は、基盤となる JMS プロバイダーのすべてのアクティブな接続間で一意である必要があることに注意してください。さらに、クライアント ID は、元の ConnectionFactory がまだ割り当てていない場合にのみ割り当てることができます。

      関連事項:
    • getClientId

      @Nullable public StringSE getClientId()
      このコンテナーによって作成および使用される共有接続の JMS クライアント ID を返します(ある場合)。
    • setAutoStartup

      public void setAutoStartup(boolean autoStartup)
      初期化後にコンテナーを自動的に起動するかどうかを設定します。

      デフォルトは "true" です。これを "false" に設定すると、start() メソッドによる手動起動が可能になります。

    • isAutoStartup

      public boolean isAutoStartup()
      インターフェースからコピーされた説明: SmartLifecycle
      true が含まれる ApplicationContext がリフレッシュされるときに、この Lifecycle コンポーネントがコンテナーによって自動的に開始される場合、true を返します。

      false の値は、プレーン Lifecycle 実装に類似した、明示的な Lifecycle.start() 呼び出しを介してコンポーネントが開始されることを意図していることを示します。

      デフォルトの実装は true を返します。

      次で指定:
      インターフェース SmartLifecycleisAutoStartup 
      関連事項:
    • setPhase

      public void setPhase(int phase)
      このコンテナーを開始および停止するライフサイクルフェーズを指定します。

      起動順序は最低位から最高位へ進み、シャットダウン順序はその逆になります。デフォルトは SmartLifecycle.DEFAULT_PHASE で、このコンテナーはできるだけ遅く開始され、できるだけ早く停止することを意味します。

      関連事項:
    • getPhase

      public int getPhase()
      このコンテナーが開始および停止されるライフサイクルフェーズを返します。
      次で指定:
      インターフェース PhasedgetPhase 
      次で指定:
      インターフェース SmartLifecyclegetPhase 
      関連事項:
    • setBeanName

      public void setBeanName(@Nullable StringSE beanName)
      インターフェースからコピーされた説明: BeanNameAware
      この Bean を作成した Bean ファクトリで Bean の名前を設定します。

      通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet() またはカスタム init メソッドなどの init コールバックの前に呼び出されます。

      次で指定:
      インターフェース BeanNameAwaresetBeanName 
      パラメーター:
      beanName - ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String) メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
    • getBeanName

      @Nullable protected final StringSE getBeanName()
      このリスナーコンテナーが含まれている Bean ファクトリで割り当てられている Bean 名を返します(存在する場合)。
    • afterPropertiesSet

      public void afterPropertiesSet()
      validateConfiguration() および initialize() へのデリゲート。
      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
      オーバーライド:
      クラス JmsAccessorafterPropertiesSet 
    • validateConfiguration

      protected void validateConfiguration()
      このコンテナーの構成を検証します。

      デフォルトの実装は空です。サブクラスでオーバーライドされます。

    • destroy

      public void destroy()
      BeanFactory がコンテナーインスタンスを破棄するときに shutdown() を呼び出します。
      次で指定:
      インターフェース DisposableBeandestroy 
      関連事項:
    • initialize

      public void initialize() throws JmsException
      このコンテナーを初期化します。

      JMS 接続を作成し、ConnectionEE を開始し("autoStartup" がオフになっていない場合)、doInitialize() を呼び出します。

      例外:
      JmsException - 起動に失敗した場合
    • shutdown

      public void shutdown() throws JmsException
      共有接続を停止し、doShutdown() を呼び出して、このコンテナーを閉じます。
      例外:
      JmsException - シャットダウンに失敗した場合
    • isActive

      public final boolean isActive()
      このコンテナーが現在アクティブであるかどうか、つまり、セットアップされているがまだシャットダウンされていないかどうかを返します。
    • start

      public void start() throws JmsException
      このコンテナーを起動します。
      次で指定:
      インターフェース Lifecyclestart 
      例外:
      JmsException - 起動に失敗した場合
      関連事項:
    • doStart

      protected void doStart() throws JMSExceptionEE
      共有接続があれば開始し、すべての呼び出し元タスクに通知します。
      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
      関連事項:
    • stop

      public void stop() throws JmsException
      このコンテナーを停止します。
      次で指定:
      インターフェース Lifecyclestop 
      例外:
      JmsException - 停止に失敗した場合
      関連事項:
    • doStop

      protected void doStop() throws JMSExceptionEE
      すべての呼び出し元タスクに通知し、共有接続があれば停止します。
      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
      関連事項:
    • isRunning

      public final boolean isRunning()
      このコンテナーが現在実行中かどうか、つまり、コンテナーが開始されていて、まだ停止されていないかどうかを判別してください。
      次で指定:
      インターフェース LifecycleisRunning 
      戻り値:
      コンポーネントが現在実行中かどうか
      関連事項:
    • runningAllowed

      protected boolean runningAllowed()
      このコンテナーのリスナーが一般に実行を許可されているかどうかを確認します。

      この実装は常に true を返します。デフォルトの「実行中」の状態は、純粋に start()/stop() によって決定されます。

      サブクラスはこのメソッドをオーバーライドして、リスナーが実際に実行されないようにする一時的な条件をチェックする場合があります。言い換えると、「実行中」状態にさらに制限を適用し、そのような制限によりリスナーの実行が妨げられた場合に false を返す場合があります。

    • establishSharedConnection

      protected void establishSharedConnection() throws JMSExceptionEE
      このコンテナーの共有接続を確立します。

      デフォルトの実装は createSharedConnection() に委譲します。createSharedConnection() はすぐに 1 回試行し、失敗すると例外をスローします。接続を正常に確立できるまで再試行して、回復プロセスを実行するようにオーバーライドできます。

      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
    • refreshSharedConnection

      protected final void refreshSharedConnection() throws JMSExceptionEE
      このコンテナーが保持している共有接続をリフレッシュします。

      起動時、および呼び出し元のセットアップや実行中に発生したインフラストラクチャ例外の後に呼び出されます。

      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
    • createSharedConnection

      protected ConnectionEE createSharedConnection() throws JMSExceptionEE
      このコンテナーの共有接続を作成します。

      デフォルトの実装では、標準接続が作成され、prepareSharedConnection(jakarta.jms.Connection) を介して準備されます。

      戻り値:
      準備された接続
      例外:
      JMSExceptionEE - 作成に失敗した場合
    • prepareSharedConnection

      protected void prepareSharedConnection(ConnectionEE connection) throws JMSExceptionEE
      このコンテナーの共有接続として登録される、指定された接続を準備します。

      デフォルトの実装では、指定されたクライアント ID があれば設定されます。サブクラスはこれをオーバーライドして、さらに設定を適用できます。

      パラメーター:
      connection - 準備する接続
      例外:
      JMSExceptionEE - 準備作業が失敗した場合
      関連事項:
    • startSharedConnection

      protected void startSharedConnection() throws JMSExceptionEE
      共有接続を開始します。
      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
      関連事項:
    • stopSharedConnection

      protected void stopSharedConnection() throws JMSExceptionEE
      共有接続を停止します。
      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
      関連事項:
    • releaseSharedConnection

      protected final void releaseSharedConnection()
      共有接続がある場合は、それを解放します。
      導入:
      6.1
      関連事項:
    • getSharedConnection

      protected final ConnectionEE getSharedConnection()
      このコンテナーによって維持されている共有 JMS 接続を返します。初期化後に使用できます。
      戻り値:
      共有接続 (非 null)
      例外:
      IllegalStateExceptionSE - このコンテナーが共有接続を維持していない場合、または接続がまだ初期化されていない場合
      関連事項:
    • rescheduleTaskIfNecessary

      protected final boolean rescheduleTaskIfNecessary(ObjectSE task)
      このコンテナーが現在実行されている場合はすぐに、または後でこのコンテナーが再起動されたら、指定されたタスクオブジェクトを取得して再スケジュールします。

      このコンテナーがすでにシャットダウンされている場合、タスクは再スケジュールされません。

      パラメーター:
      task - 再スケジュールするタスクオブジェクト
      戻り値:
      タスクが再スケジュールされたかどうか (すぐに、またはこのコンテナーの再起動用)
      関連事項:
    • resumePausedTasks

      protected void resumePausedTasks()
      一時停止したすべてのタスクを再開してください。再スケジュールが失敗したタスクは、単に一時停止モードのままになります。
    • getPausedTaskCount

      public int getPausedTaskCount()
      現在一時停止しているタスクがある場合は、その数を確認します。
    • doRescheduleTask

      protected void doRescheduleTask(ObjectSE task)
      指定されたタスクオブジェクトをすぐに再スケジュールします。

      rescheduleTaskIfNecessary を呼び出した場合にサブクラスによって実装されます。この実装は UnsupportedOperationException をスローします。

      パラメーター:
      task - 再スケジュールするタスクオブジェクト
      関連事項:
    • logRejectedTask

      protected void logRejectedTask(ObjectSE task, RuntimeExceptionSE ex)
      doRescheduleTask(java.lang.Object) によって拒否されたタスクをログに記録します。

      デフォルトの実装では、対応するメッセージを警告レベルでログに記録するだけです。

      パラメーター:
      task - 拒否されたタスクオブジェクト
      ex - doRescheduleTask(java.lang.Object) からスローされた例外
    • sharedConnectionEnabled

      protected abstract boolean sharedConnectionEnabled()
      共有 JMS 接続をこのコンテナー基本クラスで維持する必要があるかどうかを返します。
      関連事項:
    • doInitialize

      protected abstract void doInitialize() throws JMSExceptionEE
      このコンテナー内の呼び出し元を登録します。

      サブクラスは、特定の呼び出し元管理プロセスのためにこのメソッドを実装する必要があります。

      共有 JMS 接続がある場合は、この時点ですでに開始されています。

      例外:
      JMSExceptionEE - 登録に失敗した場合
      関連事項:
    • doShutdown

      protected abstract void doShutdown() throws JMSExceptionEE
      登録された呼び出し元を閉じます。

      サブクラスは、特定の呼び出し元管理プロセスのためにこのメソッドを実装する必要があります。

      共有 JMS 接続がある場合は、 その後自動的に閉じられます。

      例外:
      JMSExceptionEE - シャットダウンに失敗した場合
      関連事項: