Package org.springframework.jmx.support

# 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:
  - `setLocateExistingServerIfPossible(boolean)`
  - `locateMBeanServer(java.lang.String)`
  - `MBeanServer`
  - `MBeanServerFactory.findMBeanServer(java.lang.String)`
  - `MBeanServerFactory.createMBeanServer()`
  - `MBeanServerFactory.newMBeanServer()`
  - `MBeanServerConnectionFactoryBean`
  - `ConnectorServerFactoryBean`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`

### Fields inherited from interface org.springframework.beans.factory.FactoryBean

`OBJECT_TYPE_ATTRIBUTE`

## Constructor Summary

Constructors
Constructor
Description
`MBeanServerFactoryBean()`

## Method Summary

Modifier and Type
Method
Description
`void`
`afterPropertiesSet()`
Creates the `MBeanServer` instance.
`protected MBeanServer`
`createMBeanServer(String defaultDomain, boolean registerWithFactory)`
Create a new `MBeanServer` instance and register it with the `MBeanServerFactory`, if desired.
`void`
`destroy()`
Unregisters the `MBeanServer` instance, if necessary.
`MBeanServer`
`getObject()`
`Class<? extends MBeanServer>`
`getObjectType()`
`boolean`
`isSingleton()`
`protected MBeanServer`
`locateMBeanServer(String agentId)`
Attempt to locate an existing `MBeanServer`.
`void`
`setAgentId(String agentId)`
Set the agent id of the `MBeanServer` to locate.
`void`
`setDefaultDomain(String defaultDomain)`
Set the default domain to be used by the `MBeanServer`, to be passed to `MBeanServerFactory.createMBeanServer()` or `MBeanServerFactory.findMBeanServer()`.
`void`
`setLocateExistingServerIfPossible(boolean locateExistingServerIfPossible)`
Set whether the `MBeanServerFactoryBean` should attempt to locate a running `MBeanServer` before creating one.
`void`
`setRegisterWithFactory(boolean registerWithFactory)`
Set whether to register the `MBeanServer` with the `MBeanServerFactory`, making it available through `MBeanServerFactory.findMBeanServer()`.

### Methods inherited from class java.lang.Object

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

## 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:
  - `MBeanServerFactory.findMBeanServer(String)`

### 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:
  - `MBeanServerFactory.createMBeanServer(String)`
  - `MBeanServerFactory.findMBeanServer(String)`

### 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:
  - `MBeanServerFactory.createMBeanServer()`
  - `MBeanServerFactory.findMBeanServer(java.lang.String)`

### 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:
  - `setLocateExistingServerIfPossible(boolean)`
  - `JmxUtils.locateMBeanServer(String)`
  - `MBeanServerFactory.findMBeanServer(String)`

### 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:
  - `MBeanServerFactory.createMBeanServer()`
  - `MBeanServerFactory.newMBeanServer()`

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