The Spring Framework

## org.springframework.jmx.access
Class MBeanClientInterceptor

    java.lang.Object
      org.springframework.jmx.access.MBeanClientInterceptor

All Implemented Interfaces:
  Advice, Interceptor, MethodInterceptor, BeanClassLoaderAware, DisposableBean, InitializingBean

Direct Known Subclasses:
  MBeanProxyFactoryBean

    public class MBeanClientInterceptor

extends Object
implements MethodInterceptor, BeanClassLoaderAware, InitializingBean, DisposableBean

`MethodInterceptor` that routes calls to an MBean running on the supplied `MBeanServerConnection`. Works for both local and remote `MBeanServerConnection`s.

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.

Requires JMX 1.2's `MBeanServerConnection` feature. As a consequence, this class will not work on JMX 1.0.

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

Since:
  1.2
Author:
  Rob Harrop, Juergen Hoeller
See Also:
  `MBeanProxyFactoryBean`, `setConnectOnStartup(boolean)`

Field Summary
`protected Log` `logger` Logger available to subclasses

Constructor Summary
`MBeanClientInterceptor()`

Method Summary
`void` `afterPropertiesSet()` Prepares the `MBeanServerConnection` if the "connectOnStartup" is turned on (which it is by default).
`protected Object` `convertResultValueIfNecessary(Object result, Class targetClass)` Convert the given result object (from attribute access or operation invocation) to the specified target class for returning from the proxy method.
`void` `destroy()` Invoked by a BeanFactory on destruction of a singleton.
`protected Class` `getManagementInterface()` Return the management interface of the target MBean, or `null` if none specified.
`Object` `invoke(MethodInvocation invocation)` Route the invocation to the configured managed resource.
`protected boolean` `isPrepared()` Return whether this client interceptor has already been prepared, i.e. has already looked up the server and cached all metadata.
`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` `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` `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.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### logger

    protected final Log logger

  Logger available to subclasses

Constructor Detail

### MBeanClientInterceptor

    public MBeanClientInterceptor()

Method Detail

### setServer

    public void setServer(MBeanServerConnection server)

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

### setServiceUrl

    public void setServiceUrl(String url)
                       throws MalformedURLException

  Set the service URL of the remote `MBeanServer`.

  Throws:
    `MalformedURLException`

### setAgentId

    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.

  See Also:
    `MBeanServerFactory.findMBeanServer(String)`

### setConnectOnStartup

    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".

### setObjectName

    public void setObjectName(Object objectName)
                       throws MalformedObjectNameException

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

  Throws:
    `MalformedObjectNameException`

### setUseStrictCasing

    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`.

### setManagementInterface

    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.

### getManagementInterface

    protected final Class getManagementInterface()

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

### setBeanClassLoader

    public void setBeanClassLoader(ClassLoader beanClassLoader)

  Description copied from interface: `BeanClassLoaderAware`
  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` `InitializingBean.afterPropertiesSet()` method or a custom init-method.

  Specified by:
    `setBeanClassLoader` in interface `BeanClassLoaderAware`
  Parameters:
    `beanClassLoader` - the owning class loader; may be `null` in which case a default `ClassLoader` must be used, for example the `ClassLoader` obtained via `ClassUtils.getDefaultClassLoader()`

### afterPropertiesSet

    public void afterPropertiesSet()

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

  Specified by:
    `afterPropertiesSet` in interface `InitializingBean`

### prepare

    public void prepare()

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

### isPrepared

    protected boolean isPrepared()

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

### invoke

    public Object invoke(MethodInvocation invocation)
                  throws Throwable

  Route the invocation to the configured managed resource. Correctly routes JavaBean property access to `MBeanServerConnection.get/setAttribute` and method invocation to `MBeanServerConnection.invoke`. Any attempt to invoke a method that does not correspond to an attribute or operation defined in the management interface of the managed resource results in an `InvalidInvocationException`.

  Specified by:
    `invoke` in interface `MethodInterceptor`
  Parameters:
    `invocation` - the `MethodInvocation` to re-route.
  Returns:
    the value returned as a result of the re-routed invocation.
  Throws:
    `InvocationFailureException` - if the invocation does not match an attribute or operation on the management interface of the resource.
    `Throwable` - typically as the result of an error during invocation

### convertResultValueIfNecessary

    protected Object convertResultValueIfNecessary(Object result,
                                                   Class targetClass)

  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`
    `targetClass` - the result type of the proxy method that's been invoked
  Returns:
    the converted result object, or the passed-in object if no conversion is necessary

### destroy

    public void destroy()

  Description copied from interface: `DisposableBean`
  Invoked by a BeanFactory on destruction of a singleton.

  Specified by:
    `destroy` in interface `DisposableBean`

The Spring Framework

Copyright © 2002-2008 The Spring Framework.