On 6/27/07, Shiva Kumar H R <[EMAIL PROTECTED]> wrote:
On 6/27/07, Vamsavardhana Reddy <[EMAIL PROTECTED]> wrote: > > I see the following constructor: > > public RealMBeanServerReference(String mbeanServerId) throws > MBeanServerNotFound { > ArrayList servers = MBeanServerFactory.findMBeanServer > (mbeanServerId); > if ( servers.size() == 0) { > mbeanServer = MBeanServerFactory.createMBeanServer > ("geronimo"); > } else if (servers.size() > 1) { > throw new MBeanServerNotFound(servers.size() + " > MBeanServers were found with the agent id " + mbeanServerId); > } else { > mbeanServer = (MBeanServer) servers.get(0); > } > } > > I guess the intention of this code is to use a single MBeanServer for > all geronimo MBeans and the default domain for that MBeanServer be > "geronimo". MBeanServerFactory.createMBeanServer() takes domain as > parameter. Whereas MBeanServerFactory.findMBeanServer() takes AgentId. > There is no (easy) way to create an MBeanServer with a predefined agentId. > Does this mean mbeanServerId parameter is redundant? Should this code be > searching for an MBeanServer with default domain "geronimo" and creating one > if there is none? In this case, the code should look something like... > > public RealMBeanServerReference(String mbeanServerId) throws > MBeanServerNotFound { > ArrayList servers = MBeanServerFactory.findMBeanServer(null); > for(int i = 0; i < servers.size(); ++i) { > if("geronimo".equals(((MBeanServer) servers.get > (i)).getDefaultDomain())) > mbeanServer = (MBeanServer) servers.get(i); you may break or return from here ;)
You are right ;) }
> if(mbeanServer == null) mbeanServer = > MBeanServerFactory.createMBeanServer("geronimo"); > } > > I am also noticing that if I create a new JMX agent by specifiying the > system property com.sun.management.jmxremote.port, geronimo hooks up to > the MBeanServer created with default domain name "DefaultDomain" instead of > creating a new one for itself with default domain "geronimo". > > Vamsi >