org.springframework.jmx.access

## 类 MBeanClientInterceptor

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

- 所有已实现的接口:
    org.aopalliance.aop.Advice, org.aopalliance.intercept.Interceptor, org.aopalliance.intercept.MethodInterceptor, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean
  直接已知子类:
    MBeanProxyFactoryBean

      public class MBeanClientInterceptor
      extends Object
      implements org.aopalliance.intercept.MethodInterceptor, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.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.

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

  从以下版本开始:
    1.2
  作者:
    Rob Harrop, Juergen Hoeller
  另请参阅:
    `MBeanProxyFactoryBean`, `setConnectOnStartup(boolean)`

- - ### 字段概要

    字段
    限定符和类型 | 字段和说明
    --- | ---
    `protected Log` | `logger` Logger available to subclasses

  - ### 构造器概要

    构造器
    构造器和说明
    `MBeanClientInterceptor()`

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `void` | `afterPropertiesSet()` Prepares the `MBeanServerConnection` if the "connectOnStartup" is turned on (which it is by default).
    `protected Object` | `convertResultValueIfNecessary(Object result, org.springframework.core.MethodParameter parameter)` Convert the given result object (from attribute access or operation invocation) to the specified target class for returning from the proxy method.
    `void` | `destroy()`
    `protected Object` | `doInvoke(org.aopalliance.intercept.MethodInvocation invocation)` Route the invocation to the configured managed resource.
    `Map<String,?>` | `getEnvironment()` Allow Map access to the environment to be set for the connector, with the option to add or override specific entries.
    `protected Class<?>` | `getManagementInterface()` Return the management interface of the target MBean, or `null` if none specified.
    `protected Object` | `handleConnectFailure(org.aopalliance.intercept.MethodInvocation invocation, Exception ex)` Refresh the connection and retry the MBean invocation if possible.
    `Object` | `invoke(org.aopalliance.intercept.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)`
    `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.

    - ### 从类继承的方法 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 字段详细资料

    - #### logger

          protected final Log logger

      Logger available to subclasses

  - ### 构造器详细资料

    - #### MBeanClientInterceptor

          public MBeanClientInterceptor()

  - ### 方法详细资料

    - #### 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`.
      抛出:
        `MalformedURLException`

    - #### setEnvironment

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

      Specify the environment for the JMX connector.
      另请参阅:
        `JMXConnectorFactory.connect(javax.management.remote.JMXServiceURL, java.util.Map)`

    - #### getEnvironment

          @Nullable
          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.

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

      另请参阅:
        `

        Specifying the empty String indicates the platform MBeanServer.

        `

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

    - #### setRefreshOnConnectFailure

          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.

    - #### 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`.
      抛出:
        `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(@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.

    - #### getManagementInterface

          @Nullable
          protected final Class<?> getManagementInterface()

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

    - #### setBeanClassLoader

          public void setBeanClassLoader(ClassLoader beanClassLoader)

      指定者:
        `setBeanClassLoader` 在接口中 `org.springframework.beans.factory.BeanClassLoaderAware`

    - #### afterPropertiesSet

          public void afterPropertiesSet()

      Prepares the `MBeanServerConnection` if the "connectOnStartup" is turned on (which it is by default).
      指定者:
        `afterPropertiesSet` 在接口中 `org.springframework.beans.factory.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

          @Nullable
          public Object invoke(org.aopalliance.intercept.MethodInvocation invocation)
                                   throws Throwable

      Route the invocation to the configured managed resource..
      指定者:
        `invoke` 在接口中 `org.aopalliance.intercept.MethodInterceptor`
      参数:
        `invocation` - the `MethodInvocation` to re-route
      返回:
        the value returned as a result of the re-routed invocation
      抛出:
        `Throwable` - an invocation error propagated to the user
      另请参阅:
        `doInvoke(org.aopalliance.intercept.MethodInvocation)`, `handleConnectFailure(org.aopalliance.intercept.MethodInvocation, java.lang.Exception)`

    - #### handleConnectFailure

          @Nullable
          protected Object handleConnectFailure(org.aopalliance.intercept.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.

      参数:
        `invocation` - the invocation that failed
        `ex` - the exception raised on remote invocation
      返回:
        the result value of the new invocation, if succeeded
      抛出:
        `Throwable` - an exception raised by the new invocation, if it failed as well
      另请参阅:
        `setRefreshOnConnectFailure(boolean)`, `doInvoke(org.aopalliance.intercept.MethodInvocation)`

    - #### doInvoke

          @Nullable
          protected Object doInvoke(org.aopalliance.intercept.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`.
      参数:
        `invocation` - the `MethodInvocation` to re-route
      返回:
        the value returned as a result of the re-routed invocation
      抛出:
        `Throwable` - an invocation error propagated to the user

    - #### convertResultValueIfNecessary

          @Nullable
          protected Object convertResultValueIfNecessary(@Nullable
                                                                    Object result,
                                                                    org.springframework.core.MethodParameter parameter)

      Convert the given result object (from attribute access or operation invocation) to the specified target class for returning from the proxy method.
      参数:
        `result` - the result object as returned by the `MBeanServer`
        `parameter` - the method parameter of the proxy method that's been invoked
      返回:
        the converted result object, or the passed-in object if no conversion is necessary

    - #### destroy

          public void destroy()

      指定者:
        `destroy` 在接口中 `org.springframework.beans.factory.DisposableBean`