Class MBeanServerFactoryBean

java.lang.Object
org.springframework.jmx.support.MBeanServerFactoryBean
All Implemented Interfaces:
org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.FactoryBean<MBeanServer>, org.springframework.beans.factory.InitializingBean

public class MBeanServerFactoryBean extends Object implements org.springframework.beans.factory.FactoryBean<MBeanServer>, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
FactoryBean that obtains a MBeanServer reference through the standard JMX 1.2 MBeanServerFactory API.

Exposes the MBeanServer for bean references.

By default, MBeanServerFactoryBean will always create a new MBeanServer even if one is already running. To have the MBeanServerFactoryBean attempt to locate a running MBeanServer first, set the value of the "locateExistingServerIfPossible" property to "true".

Since:
1.2
Author:
Rob Harrop, Juergen Hoeller
See Also:
  • Field Details

    • logger

      protected final org.apache.commons.logging.Log logger
  • Constructor Details

    • MBeanServerFactoryBean

      public MBeanServerFactoryBean()
  • Method Details

    • setLocateExistingServerIfPossible

      public void setLocateExistingServerIfPossible(boolean locateExistingServerIfPossible)
      Set whether the MBeanServerFactoryBean should attempt to locate a running MBeanServer before creating one.

      Default is false.

    • 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 automatic attempt being made to locate the attendant MBeanServer, and (importantly) if said MBeanServer cannot be located no attempt will be made to create a new MBeanServer (and an MBeanServerNotFoundException will be thrown at resolution time).

      Specifying the empty String indicates the platform MBeanServer.

      See Also:
    • setDefaultDomain

      public void setDefaultDomain(String defaultDomain)
      Set the default domain to be used by the MBeanServer, to be passed to MBeanServerFactory.createMBeanServer() or MBeanServerFactory.findMBeanServer().

      Default is none.

      See Also:
    • setRegisterWithFactory

      public void setRegisterWithFactory(boolean registerWithFactory)
      Set whether to register the MBeanServer with the MBeanServerFactory, making it available through MBeanServerFactory.findMBeanServer().

      Default is true.

      See Also:
    • afterPropertiesSet

      public void afterPropertiesSet() throws MBeanServerNotFoundException
      Creates the MBeanServer instance.
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      MBeanServerNotFoundException
    • locateMBeanServer

      protected MBeanServer locateMBeanServer(@Nullable String agentId) throws MBeanServerNotFoundException
      Attempt to locate an existing MBeanServer. Called if locateExistingServerIfPossible is set to true.

      The default implementation attempts to find an MBeanServer using a standard lookup. Subclasses may override to add additional location logic.

      Parameters:
      agentId - the agent identifier of the MBeanServer to retrieve. If this parameter is null, all registered MBeanServers are considered.
      Returns:
      the MBeanServer if found
      Throws:
      MBeanServerNotFoundException - if no MBeanServer could be found
      See Also:
    • createMBeanServer

      protected MBeanServer createMBeanServer(@Nullable String defaultDomain, boolean registerWithFactory)
      Create a new MBeanServer instance and register it with the MBeanServerFactory, if desired.
      Parameters:
      defaultDomain - the default domain, or null if none
      registerWithFactory - whether to register the MBeanServer with the MBeanServerFactory
      See Also:
    • getObject

      @Nullable public MBeanServer getObject()
      Specified by:
      getObject in interface org.springframework.beans.factory.FactoryBean<MBeanServer>
    • getObjectType

      public Class<? extends MBeanServer> getObjectType()
      Specified by:
      getObjectType in interface org.springframework.beans.factory.FactoryBean<MBeanServer>
    • isSingleton

      public boolean isSingleton()
      Specified by:
      isSingleton in interface org.springframework.beans.factory.FactoryBean<MBeanServer>
    • destroy

      public void destroy()
      Unregisters the MBeanServer instance, if necessary.
      Specified by:
      destroy in interface org.springframework.beans.factory.DisposableBean