Class MBeanClientInterceptor
- All Implemented Interfaces:
- Advice,- Interceptor,- MethodInterceptor,- Aware,- BeanClassLoaderAware,- DisposableBean,- InitializingBean
- Direct Known Subclasses:
- MBeanProxyFactoryBean
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.
- Since:
- 1.2
- Author:
- Rob Harrop, Juergen Hoeller
- See Also:
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final org.apache.commons.logging.LogLogger available to subclasses.
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidPrepares theMBeanServerConnectionif the "connectOnStartup" is turned on (which it is by default).convertResultValueIfNecessary(@Nullable 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.voiddestroy()Invoked by the containingBeanFactoryon destruction of a bean.doInvoke(MethodInvocation invocation) Route the invocation to the configured managed resource.AllowMapaccess to the environment to be set for the connector, with the option to add or override specific entries.Return the management interface of the target MBean, ornullif none specified.handleConnectFailure(MethodInvocation invocation, Exception ex) Refresh the connection and retry the MBean invocation if possible.invoke(MethodInvocation invocation) Route the invocation to the configured managed resource.protected booleanReturn whether this client interceptor has already been prepared, i.e.voidprepare()Ensures that anMBeanServerConnectionis configured and attempts to detect a local connection if one is not supplied.voidsetAgentId(String agentId) Set the agent id of theMBeanServerto locate.voidsetBeanClassLoader(ClassLoader beanClassLoader) Callback that supplies the beanclass loaderto a bean instance.voidsetConnectOnStartup(boolean connectOnStartup) Set whether the proxy should connect to theMBeanServerat creation time (true) or the first time it is invoked (false).voidsetEnvironment(@Nullable Map<String, ?> environment) Specify the environment for the JMX connector.voidsetManagementInterface(@Nullable 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.voidsetObjectName(Object objectName) Set theObjectNameof the MBean which calls are routed to, asObjectNameinstance or asString.voidsetRefreshOnConnectFailure(boolean refreshOnConnectFailure) Set whether to refresh the MBeanServer connection on connect failure.voidsetServer(MBeanServerConnection server) Set theMBeanServerConnectionused to connect to the MBean which all invocations are routed to.voidsetServiceUrl(String url) Set the service URL of the remoteMBeanServer.voidsetUseStrictCasing(boolean useStrictCasing) Set whether to use strict casing for attributes.
- 
Field Details- 
loggerprotected final org.apache.commons.logging.Log loggerLogger available to subclasses.
 
- 
- 
Constructor Details- 
MBeanClientInterceptorpublic MBeanClientInterceptor()
 
- 
- 
Method Details- 
setServerSet theMBeanServerConnectionused to connect to the MBean which all invocations are routed to.
- 
setServiceUrlSet the service URL of the remoteMBeanServer.- Throws:
- MalformedURLException
 
- 
setEnvironmentSpecify the environment for the JMX connector.
- 
getEnvironmentAllowMapaccess 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.
- 
setAgentIdSet the agent id of theMBeanServerto 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.
- 
setConnectOnStartuppublic void setConnectOnStartup(boolean connectOnStartup) Set whether the proxy should connect to theMBeanServerat creation time (true) or the first time it is invoked (false). Default istrue.
- 
setRefreshOnConnectFailurepublic void setRefreshOnConnectFailure(boolean refreshOnConnectFailure) Set whether to refresh the MBeanServer connection on connect failure. Default isfalse.Can be turned on to allow for hot restart of the JMX server, automatically reconnecting and retrying in case of an IOException. 
- 
setObjectNameSet theObjectNameof the MBean which calls are routed to, asObjectNameinstance or asString.- Throws:
- MalformedObjectNameException
 
- 
setUseStrictCasingpublic 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 calledFoo. With strict casing disabled,getFoo()would translate to justfoo.
- 
setManagementInterfaceSet the management interface of the target MBean, exposing bean property setters and getters for MBean attributes and conventional Java methods for MBean operations.
- 
getManagementInterfaceReturn the management interface of the target MBean, ornullif none specified.
- 
setBeanClassLoaderDescription copied from interface:BeanClassLoaderAwareCallback that supplies the beanclass loaderto a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean'sInitializingBean.afterPropertiesSet()method or a custom init-method.- Specified by:
- setBeanClassLoaderin interface- BeanClassLoaderAware
- Parameters:
- beanClassLoader- the owning class loader
 
- 
afterPropertiesSetpublic void afterPropertiesSet()Prepares theMBeanServerConnectionif the "connectOnStartup" is turned on (which it is by default).- Specified by:
- afterPropertiesSetin interface- InitializingBean
 
- 
preparepublic void prepare()Ensures that anMBeanServerConnectionis configured and attempts to detect a local connection if one is not supplied.
- 
isPreparedprotected boolean isPrepared()Return whether this client interceptor has already been prepared, i.e. has already looked up the server and cached all metadata.
- 
invokeRoute the invocation to the configured managed resource.- Specified by:
- invokein interface- MethodInterceptor
- Parameters:
- invocation- the- MethodInvocationto re-route
- Returns:
- the value returned as a result of the re-routed invocation
- Throws:
- Throwable- an invocation error propagated to the user
- See Also:
 
- 
handleConnectFailureprotected @Nullable Object handleConnectFailure(MethodInvocation invocation, Exception ex) throws Throwable 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
- See Also:
 
- 
doInvokeRoute the invocation to the configured managed resource. Correctly routes JavaBean property access toMBeanServerConnection.get/setAttributeand method invocation toMBeanServerConnection.invoke.- Parameters:
- invocation- the- MethodInvocationto re-route
- Returns:
- the value returned as a result of the re-routed invocation
- Throws:
- Throwable- an invocation error propagated to the user
 
- 
convertResultValueIfNecessaryprotected @Nullable Object convertResultValueIfNecessary(@Nullable 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
- parameter- the method parameter of the proxy method that's been invoked
- Returns:
- the converted result object, or the passed-in object if no conversion is necessary
 
- 
destroypublic void destroy()Description copied from interface:DisposableBeanInvoked by the containingBeanFactoryon destruction of a bean.- Specified by:
- destroyin interface- DisposableBean
 
 
-