クラス MBeanExporter

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

Spring 管理の Bean を JMX MBeanServerSE に公開できる JMX エクスポーター。Bean クラスで JMX 固有の情報を定義する必要はありません。

Bean が JMX 管理インターフェースの 1 つを実装している場合、MBeanExporter は自動検出プロセスを通じて MBean をサーバーに簡単に登録できます。

Bean が JMX 管理インターフェースの 1 つを実装しない場合、MBeanExporter は提供された MBeanInfoAssembler を使用して管理情報を作成します。

MBeanExporterListeners のリストは listeners プロパティを介して登録でき、アプリケーションコードに MBean の登録イベントと登録解除イベントを通知できます。

このエクスポーターは、MBean および MXBean と互換性があります。

導入:
1.2
作成者:
Rob Harrop, Juergen Hoeller, Rick Evans, Mark Fisher, Stephane Nicoll, Sam Brannen
関連事項:
  • フィールドの詳細

  • コンストラクターの詳細

    • MBeanExporter

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

    • setBeans

      public void setBeans(MapSE<StringSE,ObjectSE> beans)
      JMX MBeanServer に登録する Bean の Map を提供します。

      文字列キーは、JMX オブジェクト名を作成するための基礎です。デフォルトでは、JMX ObjectName は指定されたキーから直接作成されます。これは、カスタム NamingStrategy を指定することでカスタマイズできます。

      Bean インスタンスと Bean 名の両方を値として使用できます。Bean インスタンスは通常、Bean 参照を通じてリンクされます。Bean の名前は、lazy-init マーカー(つまり、そのような Bean の初期化をトリガーしない)に従って、現在のファクトリで Bean として解決されます。

      パラメーター:
      beans - JMX 名をキーとし、Bean インスタンスまたは Bean 名を値とするマップ
      関連事項:
    • setAutodetect

      public void setAutodetect(boolean autodetect)
      このエクスポーターが実行される Bean ファクトリで MBean を自動検出するかどうかを設定します。使用可能な場合は、AutodetectCapableMBeanInfoAssembler も要求します。

      この機能はデフォルトではオフになっています。自動検出を有効にするには、ここで true を明示的に指定します。

      関連事項:
    • setAutodetectModeName

      @DeprecatedSE(since="6.1") public void setAutodetectModeName(StringSE constantName)
      使用すべきではありません。
      6.1 以降、"autodetect" flag を優先
      名前で使用する自動検出モードを設定します。
      例外:
      IllegalArgumentExceptionSE - 指定された値が AUTODETECT_ 定数の 1 つに解決できない場合、または null である場合
      関連事項:
    • setAutodetectMode

      @DeprecatedSE(since="6.1") public void setAutodetectMode(int autodetectMode)
      使用すべきではありません。
      6.1 以降、"autodetect" flag を優先
      使用する自動検出モードを設定します。
      例外:
      IllegalArgumentExceptionSE - 指定された値が AUTODETECT_ 定数のいずれでもない場合
      関連事項:
    • setAllowEagerInit

      public void setAllowEagerInit(boolean allowEagerInit)
      Spring アプリケーションコンテキストで MBean を自動検出するときに、候補 Bean の積極的な初期化を許可するかどうかを指定します。

      デフォルトは "false" で、Bean 定義のレイジーイニットフラグを順守します。まだ初期化されていない FactoryBean で生成されたオブジェクトも含めて、lazy-init Bean も検索するには、これを "true" に切り替えます。

    • setAssembler

      public void setAssembler(MBeanInfoAssembler assembler)
      このエクスポーターで使用する MBeanInfoAssembler インターフェースの実装を設定します。デフォルトは SimpleReflectiveMBeanInfoAssembler です。

      渡されたアセンブラは、オプションで AutodetectCapableMBeanInfoAssembler インターフェースを実装できます。これにより、エクスポータの MBean 自動検出プロセスに参加できるようになります。

      関連事項:
    • setNamingStrategy

      public void setNamingStrategy(ObjectNamingStrategy namingStrategy)
      このエクスポーターで使用する ObjectNamingStrategy インターフェースの実装を設定します。デフォルトは KeyNamingStrategy です。
      関連事項:
    • setEnsureUniqueRuntimeObjectNames

      public void setEnsureUniqueRuntimeObjectNames(boolean ensureUniqueRuntimeObjectNames)
      実行時に登録された MBeans (registerManagedResource(java.lang.Object)) 用に設定された ObjectNamingStrategy によって生成された ObjectNamesSE が変更されることを Spring が保証するかどうかを示します。これにより、管理対象 Class のすべてのインスタンスの一意性が保証されます。

      デフォルト値は true です。

      関連事項:
    • setExposeManagedResourceClassLoader

      public void setExposeManagedResourceClassLoader(boolean exposeManagedResourceClassLoader)
      MBean での呼び出しを許可する前に、管理対象リソースを thread context ClassLoader で公開する必要があるかどうかを示します。

      デフォルト値は true で、スレッドコンテキスト ClassLoader 管理を実行する SpringModelMBean を公開します。このフラグをオフに切り替えて、標準の JMX RequiredModelMBeanSE を公開します。

    • setExcludedBeans

      public void setExcludedBeans(StringSE... excludedBeans)
      自動検出から除外する必要がある Bean の名前のリストを設定します。
    • addExcludedBean

      public void addExcludedBean(StringSE excludedBean)
      自動検出から除外する Bean の名前を追加します。
    • setListeners

      public void setListeners(MBeanExporterListener... listeners)
      MBean の登録および登録解除イベントを通知する MBeanExporterListener を設定します。
      関連事項:
    • setNotificationListeners

      public void setNotificationListeners(NotificationListenerBean... notificationListeners)
      MBeanServerSE に登録する NotificationListenersSE を含む NotificationListenerBeans を設定します。
      関連事項:
    • setNotificationListenerMappings

      public void setNotificationListenerMappings(MapSE<?,? extends NotificationListenerSE> listeners)
      NotificationListenersSEMBeanServerSE に登録するように設定します。

      Map の各エントリのキーは、ObjectNameSEStringSE 表現、またはリスナーを登録する必要がある MBean の Bean 名です。キーにアスタリスク(*)を指定すると、起動時にこのクラスによって登録されたすべての MBean にリスナーが関連付けられます。

      各エントリの値は、登録する NotificationListenerSE です。NotificationFiltersSE およびハンドバックオブジェクトの登録などのより高度なオプションについては、setNotificationListeners(NotificationListenerBean[]) を参照してください。

    • setBeanClassLoader

      public void setBeanClassLoader(ClassLoaderSE classLoader)
      インターフェースからコピーされた説明: BeanClassLoaderAware
      Bean class loaderSE を Bean インスタンスに提供するコールバック。

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

      次で指定:
      インターフェース BeanClassLoaderAwaresetBeanClassLoader 
      パラメーター:
      classLoader - 所有クラスローダー
    • setBeanFactory

      public void setBeanFactory(BeanFactory beanFactory)
      このコールバックは、"beans" MapSE 内の Bean 名の解決と MBean の自動検出の場合にのみ必要です (後者の場合、ListableBeanFactory が必要です)。
      次で指定:
      インターフェース BeanFactoryAwaresetBeanFactory 
      パラメーター:
      beanFactory - 所有 BeanFactory(非 null)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。
      関連事項:
    • afterPropertiesSet

      public void afterPropertiesSet()
      インターフェースからコピーされた説明: InitializingBean
      すべての Bean プロパティを設定し、BeanFactoryAwareApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。

      このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。

      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
    • afterSingletonsInstantiated

      public void afterSingletonsInstantiated()
      通常のシングルトンインスタンス化フェーズの後で、Bean 登録を自動的に開始します。
      次で指定:
      インターフェース SmartInitializingSingletonafterSingletonsInstantiated 
      関連事項:
    • destroy

      public void destroy()
      含まれている ApplicationContext が破棄されたときに、このエクスポートが JMX を介して公開したすべての Bean の登録を解除します。
      次で指定:
      インターフェース DisposableBeandestroy 
    • registerManagedResource

      public ObjectNameSE registerManagedResource(ObjectSE managedResource) throws MBeanExportException
      インターフェースからコピーされた説明: MBeanExportOperations
      提供されたリソースを JMX に登録します。リソースがまだ有効な MBean でない場合、Spring はそのリソースの管理インターフェースを生成します。生成される正確なインターフェースは、実装とその構成によって異なります。この呼び出しは、管理対象リソースの ObjectNameSE も生成し、これを呼び出し元に返します。
      次で指定:
      インターフェース MBeanExportOperationsregisterManagedResource 
      パラメーター:
      managedResource - JMX を介して公開するリソース
      戻り値:
      リソースが公開された ObjectNameSE
      例外:
      MBeanExportException - Spring が ObjectNameSE を生成できない、または MBean を登録できない場合
    • registerManagedResource

      public void registerManagedResource(ObjectSE managedResource, ObjectNameSE objectName) throws MBeanExportException
      インターフェースからコピーされた説明: MBeanExportOperations
      提供されたリソースを JMX に登録します。リソースがまだ有効な MBean でない場合、Spring はそのリソースの管理インターフェースを生成します。生成される正確なインターフェースは、実装とその構成によって異なります。
      次で指定:
      インターフェース MBeanExportOperationsregisterManagedResource 
      パラメーター:
      managedResource - JMX を介して公開するリソース
      objectName - リソースを公開する ObjectNameSE
      例外:
      MBeanExportException - Spring が MBean を登録できない場合
    • unregisterManagedResource

      public void unregisterManagedResource(ObjectNameSE objectName)
      インターフェースからコピーされた説明: MBeanExportOperations
      基になる MBeanServer レジストリから指定された MBean を削除します。
      次で指定:
      インターフェース MBeanExportOperationsunregisterManagedResource 
      パラメーター:
      objectName - 削除するリソースの ObjectNameSE
    • registerBeans

      protected void registerBeans()
      定義された Bean を MBeanServerSE に登録します。

      各 Bean は、ModelMBean を介して MBeanServer に公開されます。使用される ModelMBean インターフェースの実際の実装は、構成されている ModelMBeanProvider インターフェースの実装によって異なります。デフォルトでは、すべての JMX 実装で提供される RequiredModelMBean クラスが使用されます。

      各 Bean に対して生成される管理インターフェースは、使用されている MBeanInfoAssembler 実装に依存します。各 Bean に与えられる ObjectName は、使用される ObjectNamingStrategy インターフェースの実装に依存します。

    • isBeanDefinitionLazyInit

      protected boolean isBeanDefinitionLazyInit(ListableBeanFactory beanFactory, StringSE beanName)
      指定された Bean 定義を lazy-init と見なすべきかどうかを返します。
      パラメーター:
      beanFactory - Bean 定義を含むことになっている Bean ファクトリ
      beanName - チェックする Bean の名前
      関連事項:
    • registerBeanNameOrInstance

      protected ObjectNameSE registerBeanNameOrInstance(ObjectSE mapValue, StringSE beanKey) throws MBeanExportException
      個々の Bean を MBeanServer に登録します。

      このメソッドは、Bean を MBeanServer に公開する方法を決定する 責任があります。具体的には、提供された mapValue が遅延初期化用に構成された Bean の名前である場合、遅延ロード動作が尊重されるように、リソースへのプロキシが MBeanServer に登録されます。Bean がすでに MBean である場合は、介入することなく MBeanServer に直接登録されます。他のすべての Bean または Bean 名の場合、リソース自体は MBeanServer に直接登録されます。

      パラメーター:
      mapValue - Bean マップでこの Bean に構成された値。Bean の String 名、または Bean 自体のいずれかです。
      beanKey - Bean マップでこの Bean に関連付けられているキー
      戻り値:
      リソースが登録された ObjectName 
      例外:
      MBeanExportException - エクスポートが失敗した場合
      関連事項:
    • getObjectName

      protected ObjectNameSE getObjectName(ObjectSE bean, @Nullable StringSE beanKey) throws MalformedObjectNameExceptionSE
      Bean の ObjectName を取得します。

      Bean が SelfNaming インターフェースを実装している場合、ObjectName は SelfNaming.getObjectName() を使用して取得されます。それ以外の場合は、構成済みの ObjectNamingStrategy が使用されます。

      パラメーター:
      bean - BeanFactory 内の Bean の名前
      beanKey - Bean マップで Bean に関連付けられているキー
      戻り値:
      提供された Bean の ObjectName 
      例外:
      MalformedObjectNameExceptionSE - 取得した ObjectName が不正な形式である場合
    • isMBean

      protected boolean isMBean(@Nullable ClassSE<?> beanClass)
      指定された Bean クラスがそのまま MBean として適格かどうかを判断します。

      デフォルトの実装は JmxUtils.isMBean(java.lang.Class<?>) に委譲され、DynamicMBeanSE クラスと、対応する "* MBean" インターフェース(標準 MBean)または対応する "* MXBean" インターフェース(Java MXBeans)を持つクラスをチェックします。

      パラメーター:
      beanClass - 分析する Bean クラス
      戻り値:
      クラスが MBean として適格かどうか
      関連事項:
    • adaptMBeanIfPossible

      @Nullable protected DynamicMBeanSE adaptMBeanIfPossible(ObjectSE bean) throws JMExceptionSE
      可能であれば、指定された Bean インスタンスに適合した MBean を構築します。

      デフォルトの実装では、AOP プロキシの場合、ターゲットの MBean/MXBean インターフェースの JMX 1.2 StandardMBean を構築し、インターフェースの管理操作をプロキシに委譲します。

      パラメーター:
      bean - 元の Bean インスタンス
      戻り値:
      適合した MBean、または可能でない場合は null 
      例外:
      JMExceptionSE
    • createAndConfigureMBean

      protected ModelMBeanSE createAndConfigureMBean(ObjectSE managedResource, StringSE beanKey) throws MBeanExportException
      提供された管理対象リソースに適切な管理インターフェースで構成された MBean を作成します。
      パラメーター:
      managedResource - MBean としてエクスポートされるリソース
      beanKey - 管理された Bean に関連付けられたキー
      例外:
      MBeanExportException
      関連事項:
    • createModelMBean

      protected ModelMBeanSE createModelMBean() throws MBeanExceptionSE
      ModelMBean を実装するクラスのインスタンスを作成します。

      このメソッドは、Bean の登録時に使用する ModelMBean インスタンスを取得するために呼び出されます。このメソッドは、登録フェーズ中に Bean ごとに 1 回呼び出され、ModelMBean の新しいインスタンスを返す必要があります

      戻り値:
      ModelMBean を実装するクラスの新しいインスタンス
      例外:
      MBeanExceptionSE - ModelMBean の作成が失敗した場合
    • onRegister

      protected void onRegister(ObjectNameSE objectName)
      MBean が登録されるときに呼び出されます。登録されたすべての MBeanExporterListeners に登録イベントを通知します。

      通知時に MBeanExporterListener が(ランタイム)例外をスローした場合、これは通知プロセスを本質的に中断し、まだ通知されていない残りのリスナーは(明らかに)MBeanExporterListener.mbeanRegistered(javax.management.ObjectName) コールバックを受信しないことに注意してください。

      オーバーライド:
      クラス MBeanRegistrationSupportonRegister 
      パラメーター:
      objectName - 登録された MBean の ObjectName 
    • onUnregister

      protected void onUnregister(ObjectNameSE objectName)
      MBean が登録解除されると呼び出されます。すべての登録済み MBeanExporterListeners に登録解除イベントを通知します。

      通知時に MBeanExporterListener が(ランタイム)例外をスローした場合、これは通知プロセスを本質的に中断し、まだ通知されていない残りのリスナーは(明らかに)MBeanExporterListener.mbeanUnregistered(javax.management.ObjectName) コールバックを受信しないことに注意してください。

      オーバーライド:
      クラス MBeanRegistrationSupportonUnregister 
      パラメーター:
      objectName - 未登録の MBean の ObjectName