public class MBeanExporter extends MBeanRegistrationSupport implements MBeanExportOperations, BeanClassLoaderAware, BeanFactoryAware, InitializingBean, SmartInitializingSingleton, DisposableBean
MBeanServer
に公開できる JMX エクスポーター。Bean クラスで JMX 固有の情報を定義する必要はありません。Bean が JMX 管理インターフェースの 1 つを実装している場合、MBeanExporter は、自動検出プロセスを介して MBean をサーバーに登録するだけです。
Bean が JMX 管理インターフェースの 1 つを実装しない場合、MBeanExporter は提供された MBeanInfoAssembler
を使用して管理情報を作成します。
MBeanExporterListeners
のリストは listeners
プロパティを介して登録でき、アプリケーションコードに MBean の登録イベントと登録解除イベントを通知できます。
このエクスポーターは、MBean および MXBean と互換性があります。
setBeans(java.util.Map<java.lang.String, java.lang.Object>)
, setAutodetect(boolean)
, setAssembler(org.springframework.jmx.export.assembler.MBeanInfoAssembler)
, setListeners(org.springframework.jmx.export.MBeanExporterListener...)
, MBeanInfoAssembler
, MBeanExporterListener
修飾子と型 | フィールドと説明 |
---|---|
static int | AUTODETECT_ALL すべての自動検出メカニズムを使用する必要があることを示す自動検出モード。 |
static int | AUTODETECT_ASSEMBLER MBeanInfoAssembler だけが Bean を自動検出できることを示す自動検出モード。 |
static int | AUTODETECT_MBEAN 有効な MBean のみを自動検出する必要があることを示す自動検出モード。 |
static int | AUTODETECT_NONE 自動検出を使用しないことを示す自動検出モード。 |
logger, server
コンストラクターと説明 |
---|
MBeanExporter() |
修飾子と型 | メソッドと説明 |
---|---|
protected javax.management.DynamicMBean | adaptMBeanIfPossible(java.lang.Object bean) 可能であれば、指定された Bean インスタンスに適合した MBean を構築します。 |
void | addExcludedBean(java.lang.String excludedBean) 自動検出から除外する Bean の名前を追加します。 |
void | afterPropertiesSet() |
void | afterSingletonsInstantiated() 通常のシングルトンインスタンス化フェーズの後で、Bean 登録を自動的に開始します。 |
protected javax.management.modelmbean.ModelMBean | createAndConfigureMBean(java.lang.Object managedResource, java.lang.String beanKey) 提供された管理対象リソースに適切な管理インターフェースで構成された MBean を作成します。 |
protected javax.management.modelmbean.ModelMBean | createModelMBean() ModelMBean を実装するクラスのインスタンスを作成します。 |
void | destroy() 含まれている ApplicationContext が破棄されたときに、このエクスポートが JMX を介して公開したすべての Bean の登録を解除します。 |
protected javax.management.ObjectName | getObjectName(java.lang.Object bean, java.lang.String beanKey) Bean の ObjectName を取得します。 |
protected boolean | isBeanDefinitionLazyInit(ListableBeanFactory beanFactory, java.lang.String beanName) 指定された Bean 定義を lazy-init と見なすべきかどうかを返します。 |
protected boolean | isMBean(java.lang.Class<?> beanClass) 指定された Bean クラスがそのまま MBean として適格かどうかを判断します。 |
protected void | onRegister(javax.management.ObjectName objectName) MBean が登録されるときに呼び出されます。 |
protected void | onUnregister(javax.management.ObjectName objectName) MBean が登録解除されると呼び出されます。 |
protected javax.management.ObjectName | registerBeanNameOrInstance(java.lang.Object mapValue, java.lang.String beanKey) 個々の Bean を MBeanServer に登録します。 |
protected void | registerBeans() 定義された Bean を MBeanServer に登録します。 |
javax.management.ObjectName | registerManagedResource(java.lang.Object managedResource) 提供されたリソースを JMX に登録します。 |
void | registerManagedResource(java.lang.Object managedResource, javax.management.ObjectName objectName) 提供されたリソースを JMX に登録します。 |
void | setAllowEagerInit(boolean allowEagerInit) Spring アプリケーションコンテキストで MBean を自動検出するときに、候補 Bean の積極的な初期化を許可するかどうかを指定します。 |
void | setAssembler(MBeanInfoAssembler assembler) このエクスポーターで使用する MBeanInfoAssembler インターフェースの実装を設定します。 |
void | setAutodetect(boolean autodetect) このエクスポーターが実行される Bean ファクトリで MBean を自動検出するかどうかを設定します。 |
void | setAutodetectMode(int autodetectMode) 使用する自動検出モードを設定します。 |
void | setAutodetectModeName(java.lang.String constantName) 名前で使用する自動検出モードを設定します。 |
void | setBeanClassLoader(java.lang.ClassLoader classLoader) Bean class loader を Bean インスタンスに提供するコールバック。 |
void | setBeanFactory(BeanFactory beanFactory) |
void | setBeans(java.util.Map<java.lang.String,java.lang.Object> beans) JMX MBeanServer に登録する Bean の Map を提供します。 |
void | setEnsureUniqueRuntimeObjectNames(boolean ensureUniqueRuntimeObjectNames) 実行時登録済み MBean( registerManagedResource(java.lang.Object) )の構成済み ObjectNamingStrategy によって生成された ObjectNames が確実に変更されるように Spring が変更する必要があるかどうかを示します: 管理対象 Class のすべてのインスタンスの一意性を確保します。 |
void | setExcludedBeans(java.lang.String... excludedBeans) 自動検出から除外する Bean の名前のリストを設定します。 |
void | setExposeManagedResourceClassLoader(boolean exposeManagedResourceClassLoader) MBean の呼び出しを許可する前に、管理対象リソースを thread context ClassLoader で公開するかどうかを示します。 |
void | setListeners(MBeanExporterListener... listeners) MBean の登録および登録解除イベントを通知する MBeanExporterListener を設定します。 |
void | setNamingStrategy(ObjectNamingStrategy namingStrategy) このエクスポーターで使用する ObjectNamingStrategy インターフェースの実装を設定します。 |
void | setNotificationListenerMappings(java.util.Map<?,? extends javax.management.NotificationListener> listeners) MBeanServer に登録するように NotificationListeners を設定します。 |
void | setNotificationListeners(NotificationListenerBean... notificationListeners) |
void | unregisterManagedResource(javax.management.ObjectName objectName) 基になる MBeanServer レジストリから指定された MBean を削除します。 |
doRegister, doUnregister, getRegisteredObjectNames, getServer, onRegister, setRegistrationPolicy, setServer, unregisterBeans
public static final int AUTODETECT_NONE
public static final int AUTODETECT_MBEAN
public static final int AUTODETECT_ASSEMBLER
MBeanInfoAssembler
だけが Bean を自動検出できることを示す自動検出モード。public static final int AUTODETECT_ALL
public void setBeans(java.util.Map<java.lang.String,java.lang.Object> beans)
MBeanServer
に登録する Bean の Map
を提供します。 文字列キーは、JMX オブジェクト名を作成するための基礎です。デフォルトでは、JMX ObjectName
は指定されたキーから直接作成されます。これは、カスタム NamingStrategy
を指定することでカスタマイズできます。
Bean インスタンスと Bean 名の両方を値として使用できます。Bean インスタンスは通常、Bean 参照を通じてリンクされます。Bean の名前は、lazy-init マーカー(つまり、そのような Bean の初期化をトリガーしない)に従って、現在のファクトリで Bean として解決されます。
beans
- JMX 名をキーとし、Bean インスタンスまたは Bean 名を値とするマップ setNamingStrategy(org.springframework.jmx.export.naming.ObjectNamingStrategy)
, KeyNamingStrategy
, ObjectName.ObjectName(String)
public void setAutodetect(boolean autodetect)
AutodetectCapableMBeanInfoAssembler
も要求します。 この機能はデフォルトでオフになっています。自動検出を有効にするには、ここで true
を明示的に指定します。
public void setAutodetectMode(int autodetectMode)
java.lang.IllegalArgumentException
- 指定された値が AUTODETECT_
定数のいずれでもない場合 setAutodetectModeName(String)
, AUTODETECT_ALL
, AUTODETECT_ASSEMBLER
, AUTODETECT_MBEAN
, AUTODETECT_NONE
public void setAutodetectModeName(java.lang.String constantName)
java.lang.IllegalArgumentException
- 指定された値が AUTODETECT_
定数の 1 つに解決できない場合、または null
である場合 setAutodetectMode(int)
, AUTODETECT_ALL
, AUTODETECT_ASSEMBLER
, AUTODETECT_MBEAN
, AUTODETECT_NONE
public void setAllowEagerInit(boolean allowEagerInit)
デフォルトは "false" で、Bean 定義のレイジーイニットフラグを順守します。まだ初期化されていない FactoryBean で生成されたオブジェクトも含めて、lazy-init Bean も検索するには、これを "true" に切り替えます。
public void setAssembler(MBeanInfoAssembler assembler)
MBeanInfoAssembler
インターフェースの実装を設定します。デフォルトは SimpleReflectiveMBeanInfoAssembler
です。 渡されたアセンブラは、オプションで AutodetectCapableMBeanInfoAssembler
インターフェースを実装できます。これにより、エクスポーターの MBean 自動検出プロセスに参加できます。
public void setNamingStrategy(ObjectNamingStrategy namingStrategy)
ObjectNamingStrategy
インターフェースの実装を設定します。デフォルトは KeyNamingStrategy
です。public void setEnsureUniqueRuntimeObjectNames(boolean ensureUniqueRuntimeObjectNames)
registerManagedResource(java.lang.Object)
)の構成済み ObjectNamingStrategy
によって生成された ObjectNames
が確実に変更されるように Spring が変更する必要があるかどうかを示します: 管理対象 Class
のすべてのインスタンスの一意性を確保します。 デフォルト値は true
です。
public void setExposeManagedResourceClassLoader(boolean exposeManagedResourceClassLoader)
thread context ClassLoader
で公開するかどうかを示します。 デフォルト値は true
で、スレッドコンテキスト ClassLoader 管理を実行する SpringModelMBean
を公開します。このフラグをオフに切り替えて、標準の JMX RequiredModelMBean
を公開します。
public void setExcludedBeans(java.lang.String... excludedBeans)
public void addExcludedBean(java.lang.String excludedBean)
public void setListeners(MBeanExporterListener... listeners)
MBeanExporterListener
を設定します。public void setNotificationListeners(NotificationListenerBean... notificationListeners)
public void setNotificationListenerMappings(java.util.Map<?,? extends javax.management.NotificationListener> listeners)
MBeanServer
に登録するように NotificationListeners
を設定します。Map
の各エントリのキーは、ObjectName
の String
表現、またはリスナーを登録する必要がある MBean の Bean 名です。キーにアスタリスク(*
)を指定すると、起動時にこのクラスによって登録されたすべての MBean にリスナーが関連付けられます。
各エントリの値は、登録する NotificationListener
です。NotificationFilters
やハンドバックオブジェクトの登録などのより高度なオプションについては、setNotificationListeners(NotificationListenerBean[])
を参照してください。
public void setBeanClassLoader(java.lang.ClassLoader classLoader)
BeanClassLoaderAware
class loader
を Bean インスタンスに提供するコールバック。 通常の Bean プロパティの設定後、ただし InitializingBean's
InitializingBean.afterPropertiesSet()
メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanClassLoaderAware
の setBeanClassLoader
classLoader
- 所有クラスローダー public void setBeanFactory(BeanFactory beanFactory)
BeanFactoryAware
の setBeanFactory
beanFactory
- 所有 BeanFactory(非 null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。setBeans(java.util.Map<java.lang.String, java.lang.Object>)
, setAutodetect(boolean)
public void afterPropertiesSet()
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
public void afterSingletonsInstantiated()
SmartInitializingSingleton
の afterSingletonsInstantiated
registerBeans()
public void destroy()
ApplicationContext
が破棄されたときに、このエクスポートが JMX を介して公開したすべての Bean の登録を解除します。DisposableBean
の destroy
public javax.management.ObjectName registerManagedResource(java.lang.Object managedResource) throws MBeanExportException
MBeanExportOperations
ObjectName
も生成し、これを呼び出し元に返します。MBeanExportOperations
の registerManagedResource
managedResource
- JMX を介して公開するリソース ObjectName
MBeanExportException
- Spring が ObjectName
を生成できない、または MBean を登録できない場合 public void registerManagedResource(java.lang.Object managedResource, javax.management.ObjectName objectName) throws MBeanExportException
MBeanExportOperations
MBeanExportOperations
の registerManagedResource
managedResource
- JMX を介して公開するリソース objectName
- リソースを公開する ObjectName
MBeanExportException
- Spring が MBean を登録できない場合 public void unregisterManagedResource(javax.management.ObjectName objectName)
MBeanExportOperations
MBeanExportOperations
の unregisterManagedResource
objectName
- 削除するリソースの ObjectName
protected void registerBeans()
MBeanServer
に登録します。 各 Bean は、ModelMBean
を介して MBeanServer
に公開されます。使用される ModelMBean
インターフェースの実際の実装は、構成されている ModelMBeanProvider
インターフェースの実装によって異なります。デフォルトでは、すべての JMX 実装で提供される RequiredModelMBean
クラスが使用されます。
各 Bean に対して生成される管理インターフェースは、使用されている MBeanInfoAssembler
実装に依存します。各 Bean に与えられる ObjectName
は、使用される ObjectNamingStrategy
インターフェースの実装に依存します。
protected boolean isBeanDefinitionLazyInit(ListableBeanFactory beanFactory, java.lang.String beanName)
beanFactory
- Bean 定義を含むことになっている Bean ファクトリ beanName
- チェックする Bean の名前 ConfigurableListableBeanFactory.getBeanDefinition(java.lang.String)
, BeanDefinition.isLazyInit()
protected javax.management.ObjectName registerBeanNameOrInstance(java.lang.Object mapValue, java.lang.String beanKey) throws MBeanExportException
MBeanServer
に登録します。 このメソッドは、Bean を MBeanServer
に公開する方法を決定する 責任があります。具体的には、提供された mapValue
が遅延初期化用に構成された Bean の名前である場合、遅延ロード動作が尊重されるように、リソースへのプロキシが MBeanServer
に登録されます。Bean がすでに MBean である場合は、介入することなく MBeanServer
に直接登録されます。他のすべての Bean または Bean 名の場合、リソース自体は MBeanServer
に直接登録されます。
mapValue
- Bean マップでこの Bean に構成された値。Bean の String
名、または Bean 自体のいずれかです。beanKey
- Bean マップでこの Bean に関連付けられているキー ObjectName
MBeanExportException
- エクスポートが失敗した場合 setBeans(java.util.Map<java.lang.String, java.lang.Object>)
, registerBeanInstance(java.lang.Object, java.lang.String)
, registerLazyInit(java.lang.String, java.lang.String)
protected javax.management.ObjectName getObjectName(java.lang.Object bean, @Nullable java.lang.String beanKey) throws javax.management.MalformedObjectNameException
ObjectName
を取得します。Bean が SelfNaming
インターフェースを実装している場合、ObjectName
は SelfNaming.getObjectName()
を使用して取得されます。それ以外の場合は、構成済みの ObjectNamingStrategy
が使用されます。
bean
- BeanFactory
内の Bean の名前 beanKey
- Bean マップで Bean に関連付けられているキー ObjectName
javax.management.MalformedObjectNameException
- 取得した ObjectName
が不正な形式である場合 protected boolean isMBean(@Nullable java.lang.Class<?> beanClass)
デフォルトの実装は JmxUtils.isMBean(java.lang.Class<?>)
に委譲します。これは、DynamicMBean
クラスと、対応する "* MBean" インターフェース(標準 MBean)または対応する "* MXBean" インターフェース(Java 6 MXBean)を持つクラスをチェックします。
beanClass
- 分析する Bean クラス JmxUtils.isMBean(Class)
@Nullable protected javax.management.DynamicMBean adaptMBeanIfPossible(java.lang.Object bean) throws javax.management.JMException
デフォルトの実装では、AOP プロキシの場合、ターゲットの MBean/MXBean インターフェースの JMX 1.2 StandardMBean を構築し、インターフェースの管理操作をプロキシに委譲します。
bean
- 元の Bean インスタンス null
javax.management.JMException
protected javax.management.modelmbean.ModelMBean createAndConfigureMBean(java.lang.Object managedResource, java.lang.String beanKey) throws MBeanExportException
managedResource
- MBean としてエクスポートされるリソース beanKey
- 管理された Bean に関連付けられたキー MBeanExportException
createModelMBean()
, getMBeanInfo(Object, String)
protected javax.management.modelmbean.ModelMBean createModelMBean() throws javax.management.MBeanException
ModelMBean
を実装するクラスのインスタンスを作成します。 このメソッドは、Bean の登録時に使用する ModelMBean
インスタンスを取得するために呼び出されます。このメソッドは、登録フェーズ中に Bean ごとに 1 回呼び出され、ModelMBean
の新しいインスタンスを返す必要があります
ModelMBean
を実装するクラスの新しいインスタンス javax.management.MBeanException
- ModelMBean の作成が失敗した場合 protected void onRegister(javax.management.ObjectName objectName)
MBeanExporterListeners
に登録イベントを通知します。 通知時に MBeanExporterListener
が(ランタイム)例外をスローした場合、これは通知プロセスを本質的に中断し、まだ通知されていない残りのリスナーは(明らかに)MBeanExporterListener.mbeanRegistered(javax.management.ObjectName)
コールバックを受信しないことに注意してください。
MBeanRegistrationSupport
の onRegister
objectName
- 登録された MBean の ObjectName
protected void onUnregister(javax.management.ObjectName objectName)
MBeanExporterListeners
に登録解除イベントを通知します。 通知時に MBeanExporterListener
が(ランタイム)例外をスローした場合、これは通知プロセスを本質的に中断し、まだ通知されていない残りのリスナーは(明らかに)MBeanExporterListener.mbeanUnregistered(javax.management.ObjectName)
コールバックを受信しないことに注意してください。
MBeanRegistrationSupport
の onUnregister
objectName
- 未登録の MBean の ObjectName