public class MBeanExporter extends MBeanRegistrationSupport implements MBeanExportOperations, BeanClassLoaderAware, BeanFactoryAware, InitializingBean, SmartInitializingSingleton, DisposableBean
MBeanServer
SE に公開できる 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 DynamicMBeanSE | adaptMBeanIfPossible(ObjectSE bean) 可能であれば、指定された Bean インスタンスに適合した MBean を構築します。 |
void | addExcludedBean(StringSE excludedBean) 自動検出から除外する Bean の名前を追加します。 |
void | afterPropertiesSet() |
void | afterSingletonsInstantiated() 通常のシングルトンインスタンス化フェーズの後で、Bean 登録を自動的に開始します。 |
protected ModelMBeanSE | createAndConfigureMBean(ObjectSE managedResource, StringSE beanKey) 提供された管理対象リソースに適切な管理インターフェースで構成された MBean を作成します。 |
protected ModelMBeanSE | createModelMBean() ModelMBean を実装するクラスのインスタンスを作成します。 |
void | destroy() 含まれている ApplicationContext が破棄されたときに、このエクスポートが JMX を介して公開したすべての Bean の登録を解除します。 |
protected ObjectNameSE | getObjectName(ObjectSE bean, StringSE beanKey) Bean の ObjectName を取得します。 |
protected boolean | isBeanDefinitionLazyInit(ListableBeanFactory beanFactory, StringSE beanName) 指定された Bean 定義を lazy-init と見なすべきかどうかを返します。 |
protected boolean | isMBean(ClassSE<?> beanClass) 指定された Bean クラスがそのまま MBean として適格かどうかを判断します。 |
protected void | onRegister(ObjectNameSE objectName) MBean が登録されるときに呼び出されます。 |
protected void | onUnregister(ObjectNameSE objectName) MBean が登録解除されると呼び出されます。 |
protected ObjectNameSE | registerBeanNameOrInstance(ObjectSE mapValue, StringSE beanKey) 個々の Bean を MBeanServer に登録します。 |
protected void | registerBeans() 定義された Bean を MBeanServer SE に登録します。 |
ObjectNameSE | registerManagedResource(ObjectSE managedResource) 提供されたリソースを JMX に登録します。 |
void | registerManagedResource(ObjectSE managedResource, ObjectNameSE 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(StringSE constantName) 名前で使用する自動検出モードを設定します。 |
void | setBeanClassLoader(ClassLoaderSE classLoader) Bean class loader SE を Bean インスタンスに提供するコールバック。 |
void | setBeanFactory(BeanFactory beanFactory) |
void | setBeans(MapSE<StringSE, ObjectSE> beans) JMX MBeanServer に登録する Bean の Map を提供します。 |
void | setEnsureUniqueRuntimeObjectNames(boolean ensureUniqueRuntimeObjectNames) 実行時に登録された MBeans ( registerManagedResource(java.lang.Object) ) 用に設定された ObjectNamingStrategy によって生成された ObjectNames SE が変更されることを Spring が保証するかどうかを示します。これにより、管理対象 Class のすべてのインスタンスの一意性が保証されます。 |
void | setExcludedBeans(StringSE... excludedBeans) 自動検出から除外する Bean の名前のリストを設定します。 |
void | setExposeManagedResourceClassLoader(boolean exposeManagedResourceClassLoader) MBean の呼び出しを許可する前に、管理対象リソースを thread context ClassLoader SE で公開するかどうかを示します。 |
void | setListeners(MBeanExporterListener... listeners) MBean の登録および登録解除イベントを通知する MBeanExporterListener を設定します。 |
void | setNamingStrategy(ObjectNamingStrategy namingStrategy) このエクスポーターで使用する ObjectNamingStrategy インターフェースの実装を設定します。 |
void | setNotificationListenerMappings(MapSE<?,? extends NotificationListenerSE> listeners) NotificationListeners SE を MBeanServer SE に登録するように設定します。 |
void | setNotificationListeners(NotificationListenerBean... notificationListeners) |
void | unregisterManagedResource(ObjectNameSE objectName) 基になる MBeanServer レジストリから指定された MBean を削除します。 |
doRegister, doUnregister, getRegisteredObjectNames, getServer, onRegister, setRegistrationPolicy, setServer, unregisterBeans
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
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(MapSE<StringSE,ObjectSE> 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)
SEpublic void setAutodetect(boolean autodetect)
AutodetectCapableMBeanInfoAssembler
も要求します。 この機能はデフォルトでオフになっています。自動検出を有効にするには、ここで true
を明示的に指定します。
public void setAutodetectMode(int autodetectMode)
IllegalArgumentExceptionSE
- 指定された値が AUTODETECT_
定数のいずれでもない場合 setAutodetectModeName(String)
, AUTODETECT_ALL
, AUTODETECT_ASSEMBLER
, AUTODETECT_MBEAN
, AUTODETECT_NONE
public void setAutodetectModeName(StringSE constantName)
IllegalArgumentExceptionSE
- 指定された値が 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
SE が変更されることを Spring が保証するかどうかを示します。これにより、管理対象 Class
のすべてのインスタンスの一意性が保証されます。 デフォルト値は true
です。
public void setExposeManagedResourceClassLoader(boolean exposeManagedResourceClassLoader)
thread context ClassLoader
SE で公開するかどうかを示します。 デフォルト値は true
で、スレッドコンテキスト ClassLoader 管理を実行する SpringModelMBean
を公開します。このフラグをオフに切り替えて、標準の JMX RequiredModelMBean
SE を公開します。
public void setExcludedBeans(StringSE... excludedBeans)
public void addExcludedBean(StringSE excludedBean)
public void setListeners(MBeanExporterListener... listeners)
MBeanExporterListener
を設定します。public void setNotificationListeners(NotificationListenerBean... notificationListeners)
public void setNotificationListenerMappings(MapSE<?,? extends NotificationListenerSE> listeners)
NotificationListeners
SE を MBeanServer
SE に登録するように設定します。Map
の各エントリのキーは、ObjectName
SE の String
SE 表現、またはリスナーを登録する必要がある MBean の Bean 名です。キーにアスタリスク(*
)を指定すると、起動時にこのクラスによって登録されたすべての MBean にリスナーが関連付けられます。
各エントリの値は、登録する NotificationListener
SE です。NotificationFilters
SE およびハンドバックオブジェクトの登録などのより高度なオプションについては、setNotificationListeners(NotificationListenerBean[])
を参照してください。
public void setBeanClassLoader(ClassLoaderSE classLoader)
BeanClassLoaderAware
class loader
SE を 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 ObjectNameSE registerManagedResource(ObjectSE managedResource) throws MBeanExportException
MBeanExportOperations
ObjectName
SE も生成し、これを呼び出し元に返します。MBeanExportOperations
の registerManagedResource
managedResource
- JMX を介して公開するリソース ObjectName
SEMBeanExportException
- Spring が ObjectName
SE を生成できない、または MBean を登録できない場合 public void registerManagedResource(ObjectSE managedResource, ObjectNameSE objectName) throws MBeanExportException
MBeanExportOperations
MBeanExportOperations
の registerManagedResource
managedResource
- JMX を介して公開するリソース objectName
- リソースを公開する ObjectName
SEMBeanExportException
- Spring が MBean を登録できない場合 public void unregisterManagedResource(ObjectNameSE objectName)
MBeanExportOperations
MBeanExportOperations
の unregisterManagedResource
objectName
- 削除するリソースの ObjectName
SEprotected void registerBeans()
MBeanServer
SE に登録します。 各 Bean は、ModelMBean
を介して MBeanServer
に公開されます。使用される ModelMBean
インターフェースの実際の実装は、構成されている ModelMBeanProvider
インターフェースの実装によって異なります。デフォルトでは、すべての JMX 実装で提供される RequiredModelMBean
クラスが使用されます。
各 Bean に対して生成される管理インターフェースは、使用されている MBeanInfoAssembler
実装に依存します。各 Bean に与えられる ObjectName
は、使用される ObjectNamingStrategy
インターフェースの実装に依存します。
protected boolean isBeanDefinitionLazyInit(ListableBeanFactory beanFactory, StringSE beanName)
beanFactory
- Bean 定義を含むことになっている Bean ファクトリ beanName
- チェックする Bean の名前 ConfigurableListableBeanFactory.getBeanDefinition(java.lang.String)
, BeanDefinition.isLazyInit()
protected ObjectNameSE registerBeanNameOrInstance(ObjectSE mapValue, StringSE 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 ObjectNameSE getObjectName(ObjectSE bean, @Nullable StringSE beanKey) throws MalformedObjectNameExceptionSE
ObjectName
を取得します。Bean が SelfNaming
インターフェースを実装している場合、ObjectName
は SelfNaming.getObjectName()
を使用して取得されます。それ以外の場合は、構成済みの ObjectNamingStrategy
が使用されます。
bean
- BeanFactory
内の Bean の名前 beanKey
- Bean マップで Bean に関連付けられているキー ObjectName
MalformedObjectNameExceptionSE
- 取得した ObjectName
が不正な形式である場合 protected boolean isMBean(@Nullable ClassSE<?> beanClass)
デフォルトの実装は JmxUtils.isMBean(java.lang.Class<?>)
に委譲し、DynamicMBean
SE クラスと、対応する "* MBean" インターフェース(標準 MBean)または対応する "* MXBean" インターフェース(Java 6 MXBean)を持つクラスをチェックします。
beanClass
- 分析する Bean クラス JmxUtils.isMBean(Class)
@Nullable protected DynamicMBeanSE adaptMBeanIfPossible(ObjectSE bean) throws JMExceptionSE
デフォルトの実装では、AOP プロキシの場合、ターゲットの MBean/MXBean インターフェースの JMX 1.2 StandardMBean を構築し、インターフェースの管理操作をプロキシに委譲します。
bean
- 元の Bean インスタンス null
JMExceptionSE
protected ModelMBeanSE createAndConfigureMBean(ObjectSE managedResource, StringSE beanKey) throws MBeanExportException
managedResource
- MBean としてエクスポートされるリソース beanKey
- 管理された Bean に関連付けられたキー MBeanExportException
createModelMBean()
, getMBeanInfo(Object, String)
protected ModelMBeanSE createModelMBean() throws MBeanExceptionSE
ModelMBean
を実装するクラスのインスタンスを作成します。 このメソッドは、Bean の登録時に使用する ModelMBean
インスタンスを取得するために呼び出されます。このメソッドは、登録フェーズ中に Bean ごとに 1 回呼び出され、ModelMBean
の新しいインスタンスを返す必要があります
ModelMBean
を実装するクラスの新しいインスタンス MBeanExceptionSE
- ModelMBean の作成が失敗した場合 protected void onRegister(ObjectNameSE objectName)
MBeanExporterListeners
に登録イベントを通知します。 通知時に MBeanExporterListener
が(ランタイム)例外をスローした場合、これは通知プロセスを本質的に中断し、まだ通知されていない残りのリスナーは(明らかに)MBeanExporterListener.mbeanRegistered(javax.management.ObjectName)
コールバックを受信しないことに注意してください。
MBeanRegistrationSupport
の onRegister
objectName
- 登録された MBean の ObjectName
protected void onUnregister(ObjectNameSE objectName)
MBeanExporterListeners
に登録解除イベントを通知します。 通知時に MBeanExporterListener
が(ランタイム)例外をスローした場合、これは通知プロセスを本質的に中断し、まだ通知されていない残りのリスナーは(明らかに)MBeanExporterListener.mbeanUnregistered(javax.management.ObjectName)
コールバックを受信しないことに注意してください。
MBeanRegistrationSupport
の onUnregister
objectName
- 未登録の MBean の ObjectName