dev@glassfish.java.net

AMX MBeans in GlassFish V3 (info)

From: Lloyd Chambers <Lloyd.Chambers_at_Sun.COM>
Date: Fri, 19 Jun 2009 11:45:49 -0700

I thought it might be of interest to some to describe where AMX MBeans
stand in V3.

AMX means "Appserver Management Extensions", our JMX MBeans which
provide access to configuring, monitoring, JSR 77 and more.

An AMX MBean is a JMX MBean that conforms to the AMX V3 specification
(see below): completely JMX standard in every way, but with naming
requirements and idioms that make them consistent and more useful than
a "grab bag" of random MBeans.

The current AMX provides the "bones" as well as automated support for
all configuration, driven purely from annotations on @Configured and
even supporting @DuckTyped methods -- all automatically.

Monitoring MBeans are provided by their respective authors (CORBA,
Metro, etc). AMX MBeans can be implemented in any way you'd like,
with Gmbal being one choice and StandardMBean and DynamicMBean being
the conventional choices. At present all built-in AMX MBeans are
implemented as DynamicMBean, but CORBA and Metro and other code will
be using Gmbal.

Please see the following for background:
https://glassfish.dev.java.net/nonav/v3/admin/planning/V3Changes/V3_AMX_SPI.html
https://glassfish.dev.java.net/nonav/v3/admin/planning/V3Changes/V3_AMX.html
https://glassfish.dev.java.net/nonav/v3/admin/planning/V3Changes/GmbalFunctionalSpec.html
https://glassfish.dev.java.net/nonav/v3/admin/planning/V3Changes/V3_AdminCLI.html
  (speculative)


Shown below are the MBeans as you'd see in a basic server setup with a
few small apps deployed. The JMX Domain "v3" is reserved for AMX
MBeans, and all AMX MBeans live in a strict tree hierarchy where every
child has a parent MBean (except for domain-root).

You can see that the pathname is incorporated into the MBean
ObjectName: "pp" means "parent path".

The required properties in the ObjectName are:
type -- the MBean type
name -- the name (omitted for singletons)
pp -- parent path

jmxcmd> f3
{HOST=localhost, PORT=8686, JNDI_NAME=/jmxrmi, cache-mbean-info=false,
PROTOCOL=rmi}
Warning: trusting all server certificates (no trust-store specified).
Established connection to test using rmi
v3:pp=,type=domain-root,name=v3
v3:pp=/,type=J2EEDomain,j2eeType=J2EEDomain,name=v3
v3:pp=/,type=bulk
v3:pp=/,type=domain
v3:pp=/,type=ext
v3:pp=/,type=logging
v3:pp=/,type=mon
v3:pp=/,type=paths
v3:pp=/,type=query
v3:pp=/,type=sample
v3:pp=/,type=system-info
v3:pp=/,type=tools
v3:pp=/,type=updown
v3:pp=/J2EEDomain,type=J2EEServer,name=server,j2eeType=J2EEServer
v3:pp=/J2EEDomain/
J2EEServer
,type
=
AppClientModule
,name
=
showArgs,j2eeType=AppClientModule,J2EEServer=server,J2EEApplication=null
v3:pp=/J2EEDomain/
J2EEServer
,type
=
J2EEApplication
,name=HelloWorld,j2eeType=J2EEApplication,J2EEServer=server
v3:pp=/J2EEDomain/J2EEServer,type=JDBCResource,name=jdbc/
__TimerPool,j2eeType=JDBCResource,J2EEServer=server
v3:pp=/J2EEDomain/J2EEServer,type=JDBCResource,name=jdbc/
__default,j2eeType=JDBCResource,J2EEServer=server
v3:pp=/J2EEDomain/J2EEServer,type=JVM,j2eeType=JVM,J2EEServer=server
v3:pp=/J2EEDomain/J2EEServer,type=ResourceAdapterModule,name=generic-
ra,j2eeType=ResourceAdapterModule,J2EEServer=server,J2EEApplication=null
v3:pp=/J2EEDomain/
J2EEServer
,type
=
WebModule
,name=hello1,j2eeType=WebModule,J2EEServer=server,J2EEApplication=null
v3:pp=/J2EEDomain/J2EEServer/
J2EEApplication[HelloWorld],type=EJBModule,name=stateless-
simpleEjb
.jar,j2eeType=EJBModule,J2EEServer=server,J2EEApplication=HelloWorld
v3:pp=/J2EEDomain/J2EEServer/
J2EEApplication
[HelloWorld
],type
=
StatelessSessionBean
,name
=
TheGreeter
,j2eeType
=StatelessSessionBean,J2EEServer=server,J2EEApplication=HelloWorld
v3:pp=/J2EEDomain/J2EEServer/
J2EEApplication[HelloWorld],type=WebModule,name=stateless-
simple
.war,j2eeType=WebModule,J2EEServer=server,J2EEApplication=HelloWorld
v3:pp=/J2EEDomain/J2EEServer/J2EEApplication[HelloWorld]/
WebModule[stateless-
simple
.war
],type
=
Servlet
,name
=
GreeterServlet
,j2eeType
=
Servlet
,J2EEServer=server,J2EEApplication=HelloWorld,WebModule=stateless-
simple.war
v3:pp=/J2EEDomain/J2EEServer/J2EEApplication[HelloWorld]/
WebModule[stateless-
simple
.war
],type
=
Servlet
,name
=
default
,j2eeType
=
Servlet
,J2EEServer=server,J2EEApplication=HelloWorld,WebModule=stateless-
simple.war
v3:pp=/J2EEDomain/J2EEServer/J2EEApplication[HelloWorld]/
WebModule[stateless-
simple
.war
],type
=
Servlet
,name
=
jsp
,j2eeType
=
Servlet
,J2EEServer=server,J2EEApplication=HelloWorld,WebModule=stateless-
simple.war
v3:pp=/J2EEDomain/J2EEServer/ResourceAdapterModule[generic-
ra],type=ResourceAdapter,name=generic-
ra
,j2eeType
=ResourceAdapter,J2EEServer=server,ResourceAdapterModule=generic-
ra,J2EEApplication=null
v3:pp=/J2EEDomain/J2EEServer/
WebModule
[hello1
],type
=
Servlet
,name
=
default
,j2eeType
=Servlet,J2EEServer=server,WebModule=hello1,J2EEApplication=null
v3:pp=/J2EEDomain/J2EEServer/
WebModule
[hello1
],type
=
Servlet
,name
=
index
,j2eeType
=Servlet,J2EEServer=server,WebModule=hello1,J2EEApplication=null
v3:pp=/J2EEDomain/J2EEServer/
WebModule
[hello1
],type
=
Servlet
,name
=
jsp
,j2eeType
=Servlet,J2EEServer=server,WebModule=hello1,J2EEApplication=null
v3:pp=/domain,type=applications
v3:pp=/domain,type=configs
v3:pp=/domain,type=property,name=administrative.domain.name
v3:pp=/domain,type=resources
v3:pp=/domain,type=servers
v3:pp=/domain,type=system-applications
v3:pp=/domain/applications,type=application,name=generic-ra
v3:pp=/domain/applications,type=application,name=hello1
v3:pp=/domain/applications,type=application,name=showArgs
v3:pp=/domain/applications,type=application,name=stateless-simple
v3:pp=/domain/applications/application[generic-
ra],type=module,name=generic-ra
v3:pp=/domain/applications/application[generic-
ra],type=property,name=default-EE6-app-name
v3:pp=/domain/applications/application[generic-ra]/module[generic-
ra],type=engine,name=connector
v3:pp=/domain/applications/application[generic-ra]/module[generic-
ra],type=property,name=default-EE6-app-name
v3:pp=/domain/applications/application[hello1],type=module,name=hello1
v3:pp=/domain/applications/
application[hello1],type=property,name=default-EE6-app-name
v3:pp=/domain/applications/application[hello1]/
module[hello1],type=engine,name=security
v3:pp=/domain/applications/application[hello1]/
module[hello1],type=engine,name=web
v3:pp=/domain/applications/application[hello1]/
module[hello1],type=property,name=default-EE6-app-name
v3:pp=/domain/applications/
application[showArgs],type=module,name=showArgs
v3:pp=/domain/applications/
application[showArgs],type=property,name=default-EE6-app-name
v3:pp=/domain/applications/application[showArgs]/
module[showArgs],type=engine,name=appclient
v3:pp=/domain/applications/application[showArgs]/
module[showArgs],type=property,name=default-EE6-app-name
v3:pp=/domain/applications/application[stateless-
simple],type=engine,name=ear
v3:pp=/domain/applications/application[stateless-
simple],type=module,name=stateless-simple.war
v3:pp=/domain/applications/application[stateless-
simple],type=module,name=stateless-simpleEjb.jar
v3:pp=/domain/applications/application[stateless-
simple],type=property,name=default-EE6-app-name
v3:pp=/domain/applications/application[stateless-
simple],type=property,name=isComposite
v3:pp=/domain/applications/application[stateless-
simple
],type=property,name=org.glassfish.ejb.container.application_unique_id
v3:pp=/domain/applications/application[stateless-simple]/
module[stateless-simple.war],type=engine,name=security
v3:pp=/domain/applications/application[stateless-simple]/
module[stateless-simple.war],type=engine,name=web
v3:pp=/domain/applications/application[stateless-simple]/
module[stateless-simpleEjb.jar],type=engine,name=ejb
v3:pp=/domain/applications/application[stateless-simple]/
module[stateless-simpleEjb.jar],type=engine,name=security
v3:pp=/domain/configs,type=config,name=server-config
v3:pp=/domain/configs/config[server-config],type=admin-service
v3:pp=/domain/configs/config[server-config],type=ejb-container
v3:pp=/domain/configs/config[server-config],type=http-service
v3:pp=/domain/configs/config[server-config],type=iiop-service
v3:pp=/domain/configs/config[server-config],type=java-config
v3:pp=/domain/configs/config[server-config],type=jms-service
v3:pp=/domain/configs/config[server-config],type=mdb-container
v3:pp=/domain/configs/config[server-config],type=monitoring-service
v3:pp=/domain/configs/config[server-config],type=network-config
v3:pp=/domain/configs/config[server-config],type=security-service
v3:pp=/domain/configs/config[server-config],type=thread-pools
v3:pp=/domain/configs/config[server-config],type=transaction-service
v3:pp=/domain/configs/config[server-config],type=web-container
v3:pp=/domain/configs/config[server-config]/admin-service,type=das-
config
v3:pp=/domain/configs/config[server-config]/admin-service,type=jmx-
connector,name=system
v3:pp=/domain/configs/config[server-config]/admin-
service,type=property,name=adminConsoleContextRoot
v3:pp=/domain/configs/config[server-config]/admin-
service,type=property,name=adminConsoleDownloadLocation
v3:pp=/domain/configs/config[server-config]/admin-
service,type=property,name=adminConsoleVersion
v3:pp=/domain/configs/config[server-config]/admin-
service,type=property,name=ipsRoot
v3:pp=/domain/configs/config[server-config]/ejb-container,type=ejb-
timer-service
v3:pp=/domain/configs/config[server-config]/http-service,type=access-log
v3:pp=/domain/configs/config[server-config]/http-
service,type=property,name=accessLoggingEnabled
v3:pp=/domain/configs/config[server-config]/http-service,type=virtual-
server,name=__asadmin
v3:pp=/domain/configs/config[server-config]/http-service,type=virtual-
server,name=server
v3:pp=/domain/configs/config[server-config]/iiop-service,type=iiop-
listener,name=SSL
v3:pp=/domain/configs/config[server-config]/iiop-service,type=iiop-
listener,name=SSL_MUTUALAUTH
v3:pp=/domain/configs/config[server-config]/iiop-service,type=iiop-
listener,name=orb-listener-1
v3:pp=/domain/configs/config[server-config]/iiop-service,type=orb
v3:pp=/domain/configs/config[server-config]/iiop-service/iiop-
listener[SSL],type=ssl
v3:pp=/domain/configs/config[server-config]/iiop-service/iiop-
listener[SSL_MUTUALAUTH],type=ssl
v3:pp=/domain/configs/config[server-config]/jms-service,type=jms-
host,name=default_JMS_host
v3:pp=/domain/configs/config[server-config]/monitoring-
service,type=module-monitoring-levels
v3:pp=/domain/configs/config[server-config]/network-
config,type=network-listeners
v3:pp=/domain/configs/config[server-config]/network-
config,type=protocols
v3:pp=/domain/configs/config[server-config]/network-
config,type=transports
v3:pp=/domain/configs/config[server-config]/network-config/network-
listeners,type=network-listener,name=admin-listener
v3:pp=/domain/configs/config[server-config]/network-config/network-
listeners,type=network-listener,name=http-listener-1
v3:pp=/domain/configs/config[server-config]/network-config/network-
listeners,type=network-listener,name=http-listener-2
v3:pp=/domain/configs/config[server-config]/network-config/
protocols,type=protocol,name=admin-listener
v3:pp=/domain/configs/config[server-config]/network-config/
protocols,type=protocol,name=http-listener-1
v3:pp=/domain/configs/config[server-config]/network-config/
protocols,type=protocol,name=http-listener-2
v3:pp=/domain/configs/config[server-config]/network-config/protocols/
protocol[admin-listener],type=http
v3:pp=/domain/configs/config[server-config]/network-config/protocols/
protocol[admin-listener]/http,type=file-cache
v3:pp=/domain/configs/config[server-config]/network-config/protocols/
protocol[http-listener-1],type=http
v3:pp=/domain/configs/config[server-config]/network-config/protocols/
protocol[http-listener-1]/http,type=file-cache
v3:pp=/domain/configs/config[server-config]/network-config/protocols/
protocol[http-listener-2],type=http
v3:pp=/domain/configs/config[server-config]/network-config/protocols/
protocol[http-listener-2],type=ssl
v3:pp=/domain/configs/config[server-config]/network-config/protocols/
protocol[http-listener-2]/http,type=file-cache
v3:pp=/domain/configs/config[server-config]/network-config/
transports,type=transport,name=tcp
v3:pp=/domain/configs/config[server-config]/security-
service,type=audit-module,name=default
v3:pp=/domain/configs/config[server-config]/security-service,type=auth-
realm,name=admin-realm
v3:pp=/domain/configs/config[server-config]/security-service,type=auth-
realm,name=certificate
v3:pp=/domain/configs/config[server-config]/security-service,type=auth-
realm,name=file
v3:pp=/domain/configs/config[server-config]/security-service,type=jacc-
provider,name=default
v3:pp=/domain/configs/config[server-config]/security-service,type=jacc-
provider,name=simple
v3:pp=/domain/configs/config[server-config]/security-
service,type=message-security-config,name=SOAP
v3:pp=/domain/configs/config[server-config]/security-service/audit-
module[default],type=property,name=auditOn
v3:pp=/domain/configs/config[server-config]/security-service/auth-
realm[admin-realm],type=property,name=file
v3:pp=/domain/configs/config[server-config]/security-service/auth-
realm[admin-realm],type=property,name=jaas-context
v3:pp=/domain/configs/config[server-config]/security-service/auth-
realm[file],type=property,name=file
v3:pp=/domain/configs/config[server-config]/security-service/auth-
realm[file],type=property,name=jaas-context
v3:pp=/domain/configs/config[server-config]/security-service/jacc-
provider[default],type=property,name=repository
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP],type=provider-config,name=ClientProvider
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP],type=provider-config,name=ServerProvider
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP],type=provider-config,name=XWS_ClientProvider
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP],type=provider-config,name=XWS_ServerProvider
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[ClientProvider],type=property,name=debug
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[ClientProvider],type=property,name=dynamic.username.password
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[ClientProvider],type=property,name=encryption.key.alias
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[ClientProvider],type=property,name=security.config
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[ClientProvider],type=property,name=signature.key.alias
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-config[ClientProvider],type=request-
policy
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-config[ClientProvider],type=response-
policy
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[ServerProvider],type=property,name=debug
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[ServerProvider],type=property,name=encryption.key.alias
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[ServerProvider],type=property,name=security.config
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[ServerProvider],type=property,name=signature.key.alias
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-config[ServerProvider],type=request-
policy
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-config[ServerProvider],type=response-
policy
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[XWS_ClientProvider],type=property,name=debug
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[XWS_ClientProvider],type=property,name=dynamic.username.password
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[XWS_ClientProvider],type=property,name=encryption.key.alias
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[XWS_ClientProvider],type=property,name=signature.key.alias
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-config[XWS_ClientProvider],type=request-
policy
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[XWS_ClientProvider],type=response-policy
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[XWS_ServerProvider],type=property,name=debug
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[XWS_ServerProvider],type=property,name=encryption.key.alias
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[XWS_ServerProvider],type=property,name=signature.key.alias
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-config[XWS_ServerProvider],type=request-
policy
v3:pp=/domain/configs/config[server-config]/security-service/message-
security-config[SOAP]/provider-
config[XWS_ServerProvider],type=response-policy
v3:pp=/domain/configs/config[server-config]/thread-pools,type=thread-
pool,name=http-thread-pool
v3:pp=/domain/configs/config[server-config]/thread-pools,type=thread-
pool,name=thread-pool-1
v3:pp=/domain/configs/config[server-config]/web-container,type=session-
config
v3:pp=/domain/configs/config[server-config]/web-container/session-
config,type=session-manager
v3:pp=/domain/configs/config[server-config]/web-container/session-
config,type=session-properties
v3:pp=/domain/configs/config[server-config]/web-container/session-
config/session-manager,type=manager-properties
v3:pp=/domain/configs/config[server-config]/web-container/session-
config/session-manager,type=store-properties
v3:pp=/domain/resources,type=jdbc-connection-pool,name=DerbyPool
v3:pp=/domain/resources,type=jdbc-connection-pool,name=__TimerPool
v3:pp=/domain/resources,type=jdbc-resource,name=jdbc/__TimerPool
v3:pp=/domain/resources,type=jdbc-resource,name=jdbc/__default
v3:pp=/domain/resources/jdbc-connection-
pool[DerbyPool],type=property,name=DatabaseName
v3:pp=/domain/resources/jdbc-connection-
pool[DerbyPool],type=property,name=Password
v3:pp=/domain/resources/jdbc-connection-
pool[DerbyPool],type=property,name=PortNumber
v3:pp=/domain/resources/jdbc-connection-
pool[DerbyPool],type=property,name=User
v3:pp=/domain/resources/jdbc-connection-
pool[DerbyPool],type=property,name=connectionAttributes
v3:pp=/domain/resources/jdbc-connection-
pool[DerbyPool],type=property,name=serverName
v3:pp=/domain/resources/jdbc-connection-
pool[__TimerPool],type=property,name=connectionAttributes
v3:pp=/domain/resources/jdbc-connection-
pool[__TimerPool],type=property,name=databaseName
v3:pp=/domain/servers,type=server,name=server
v3:pp=/domain/servers/server[server],type=application-
ref,name=__admingui
v3:pp=/domain/servers/server[server],type=application-ref,name=generic-
ra
v3:pp=/domain/servers/server[server],type=application-ref,name=hello1
v3:pp=/domain/servers/server[server],type=application-ref,name=showArgs
v3:pp=/domain/servers/server[server],type=application-
ref,name=stateless-simple
v3:pp=/domain/servers/server[server],type=resource-ref,name=jdbc/
__TimerPool
v3:pp=/domain/servers/server[server],type=resource-ref,name=jdbc/
__default
v3:pp=/domain/system-applications,type=application,name=__admingui
v3:pp=/domain/system-applications/
application[__admingui],type=module,name=__admingui
v3:pp=/domain/system-applications/application[__admingui]/
module[__admingui],type=engine,name=security
v3:pp=/domain/system-applications/application[__admingui]/
module[__admingui],type=engine,name=web
v3:pp=/ext,type=config-tools
v3:pp=/ext,type=logging-props
v3:pp=/ext,type=realms
v3:pp=/ext,type=runtime
v3:pp=/ext,type=system-status
v3:pp=/mon,type=server-mon,name=das


Lloyd Chambers
lloyd.chambers_at_sun.com
GlassFish Team