public class

MBeanClientInterceptor

extends Object
implements BeanClassLoaderAware DisposableBean InitializingBean
java.lang.Object
   ↳ org.springframework.jmx.access.MBeanClientInterceptor
Known Direct Subclasses

Class Overview

org.aopalliance.intercept.MethodInterceptor that routes calls to an MBean running on the supplied MBeanServerConnection. Works for both local and remote MBeanServerConnections.

By default, the MBeanClientInterceptor will connect to the MBeanServer and cache MBean metadata at startup. This can be undesirable when running against a remote MBeanServer that may not be running when the application starts. Through setting the connectOnStartup property to "false", you can defer this process until the first invocation against the proxy.

This functionality is usually used through MBeanProxyFactoryBean. See the javadoc of that class for more information.

Summary

Fields
protected final Log logger Logger available to subclasses
Public Constructors
MBeanClientInterceptor()
Public Methods
void afterPropertiesSet()
Prepares the MBeanServerConnection if the "connectOnStartup" is turned on (which it is by default).
void destroy()
Invoked by a BeanFactory on destruction of a singleton.
Map<String, ?> getEnvironment()
Allow Map access to the environment to be set for the connector, with the option to add or override specific entries.
Object invoke(MethodInvocation invocation)
Route the invocation to the configured managed resource..
void prepare()
Ensures that an MBeanServerConnection is configured and attempts to detect a local connection if one is not supplied.
void setAgentId(String agentId)
Set the agent id of the MBeanServer to locate.
void setBeanClassLoader(ClassLoader beanClassLoader)
Callback that supplies the bean class loader to a bean instance.
void setConnectOnStartup(boolean connectOnStartup)
Set whether or not the proxy should connect to the MBeanServer at creation time ("true") or the first time it is invoked ("false").
void setEnvironment(Map<String, ?> environment)
Specify the environment for the JMX connector.
void setManagementInterface(Class managementInterface)
Set the management interface of the target MBean, exposing bean property setters and getters for MBean attributes and conventional Java methods for MBean operations.
void setObjectName(Object objectName)
Set the ObjectName of the MBean which calls are routed to, as ObjectName instance or as String.
void setRefreshOnConnectFailure(boolean refreshOnConnectFailure)
Set whether to refresh the MBeanServer connection on connect failure.
void setServer(MBeanServerConnection server)
Set the MBeanServerConnection used to connect to the MBean which all invocations are routed to.
void setServiceUrl(String url)
Set the service URL of the remote MBeanServer.
void setUseStrictCasing(boolean useStrictCasing)
Set whether to use strict casing for attributes.
Protected Methods
Object convertResultValueIfNecessary(Object result, MethodParameter parameter)
Convert the given result object (from attribute access or operation invocation) to the specified target class for returning from the proxy method.
Object doInvoke(MethodInvocation invocation)
Route the invocation to the configured managed resource.
final Class getManagementInterface()
Return the management interface of the target MBean, or null if none specified.
Object handleConnectFailure(MethodInvocation invocation, Exception ex)
Refresh the connection and retry the MBean invocation if possible.
boolean isPrepared()
Return whether this client interceptor has already been prepared, i.e.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.beans.factory.BeanClassLoaderAware
From interface org.springframework.beans.factory.DisposableBean
From interface org.springframework.beans.factory.InitializingBean

Fields

protected final Log logger

Logger available to subclasses

Public Constructors

public MBeanClientInterceptor ()

Public Methods

public void afterPropertiesSet ()

Prepares the MBeanServerConnection if the "connectOnStartup" is turned on (which it is by default).

public void destroy ()

Invoked by a BeanFactory on destruction of a singleton.

public Map<String, ?> getEnvironment ()

Allow Map access to the environment to be set for the connector, with the option to add or override specific entries.

Useful for specifying entries directly, for example via "environment[myKey]". This is particularly useful for adding or overriding entries in child bean definitions.

public Object invoke (MethodInvocation invocation)

Route the invocation to the configured managed resource..

Parameters
invocation the MethodInvocation to re-route
Returns
  • the value returned as a result of the re-routed invocation
Throws
Throwable an invocation error propagated to the user

public void prepare ()

Ensures that an MBeanServerConnection is configured and attempts to detect a local connection if one is not supplied.

public void setAgentId (String agentId)

Set the agent id of the MBeanServer to locate.

Default is none. If specified, this will result in an attempt being made to locate the attendant MBeanServer, unless the "serviceUrl" property has been set.

public void setBeanClassLoader (ClassLoader beanClassLoader)

Callback that supplies the bean class loader to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean's afterPropertiesSet() method or a custom init-method.

Parameters
beanClassLoader the owning class loader; may be null in which case a default ClassLoader must be used, for example the ClassLoader obtained via getDefaultClassLoader()

public void setConnectOnStartup (boolean connectOnStartup)

Set whether or not the proxy should connect to the MBeanServer at creation time ("true") or the first time it is invoked ("false"). Default is "true".

public void setEnvironment (Map<String, ?> environment)

Specify the environment for the JMX connector.

public void setManagementInterface (Class managementInterface)

Set the management interface of the target MBean, exposing bean property setters and getters for MBean attributes and conventional Java methods for MBean operations.

public void setObjectName (Object objectName)

Set the ObjectName of the MBean which calls are routed to, as ObjectName instance or as String.

public void setRefreshOnConnectFailure (boolean refreshOnConnectFailure)

Set whether to refresh the MBeanServer connection on connect failure. Default is "false".

Can be turned on to allow for hot restart of the JMX server, automatically reconnecting and retrying in case of an IOException.

public void setServer (MBeanServerConnection server)

Set the MBeanServerConnection used to connect to the MBean which all invocations are routed to.

public void setServiceUrl (String url)

Set the service URL of the remote MBeanServer.

public void setUseStrictCasing (boolean useStrictCasing)

Set whether to use strict casing for attributes. Enabled by default.

When using strict casing, a JavaBean property with a getter such as getFoo() translates to an attribute called Foo. With strict casing disabled, getFoo() would translate to just foo.

Protected Methods

protected Object convertResultValueIfNecessary (Object result, MethodParameter parameter)

Convert the given result object (from attribute access or operation invocation) to the specified target class for returning from the proxy method.

Parameters
result the result object as returned by the MBeanServer
Returns
  • the converted result object, or the passed-in object if no conversion is necessary

protected Object doInvoke (MethodInvocation invocation)

Route the invocation to the configured managed resource. Correctly routes JavaBean property access to MBeanServerConnection.get/setAttribute and method invocation to MBeanServerConnection.invoke.

Parameters
invocation the MethodInvocation to re-route
Returns
  • the value returned as a result of the re-routed invocation
Throws
Throwable an invocation error propagated to the user

protected final Class getManagementInterface ()

Return the management interface of the target MBean, or null if none specified.

protected Object handleConnectFailure (MethodInvocation invocation, Exception ex)

Refresh the connection and retry the MBean invocation if possible.

If not configured to refresh on connect failure, this method simply rethrows the original exception.

Parameters
invocation the invocation that failed
ex the exception raised on remote invocation
Returns
  • the result value of the new invocation, if succeeded
Throws
Throwable an exception raised by the new invocation, if it failed as well

protected boolean isPrepared ()

Return whether this client interceptor has already been prepared, i.e. has already looked up the server and cached all metadata.