Hi, I've been experimenting with remote access to Geronimo resources. I can't understand why there are so many different ways to get the same information - JMX Remote and MEJB seem to be pretty similar and there's also DeploymentManager that lets retrieve information about resources too. Should JMX Remote be preffered over MEJB? Which one is the recommended solution to retrieve information about Geronimo resources (webapps, ejbs, appclients, etc.).
Another issue I'm struggling with is to get at the information that are displayed in the Geronimo Console. In JMX Viewer, there's contextPath attribute for WebModule. Whenever a query for the attribute is issued from a JMX Remote or MEJB client the following exception is thrown: Exception in thread "main" javax.management.AttributeNotFoundException: Cannot find attribute contextPath for StandardEngine[Geronimo].StandardHost[0.0.0.0].StandardContext[/console] at org.apache.tomcat.util.modeler.ManagedBean.getGetter(ManagedBean.java:490) at org.apache.tomcat.util.modeler.BaseModelMBean.getAttribute(BaseModelMBean.java:180) The MEJB client code looks as follows: Properties props = new Properties(); props.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory"); props.put("java.naming.provider.url", "127.0.0.1:4201"); Context initialCtx = new InitialContext(props); Object mejbObj = initialCtx.lookup("MEJBGBean/MEJB/javax.management.j2ee.Management"); ManagementHome mejbHome = (ManagementHome) mejbObj; Management mejb = mejbHome.create(); ObjectName searchpattern = new ObjectName("*:j2eeType=WebModule,*"); Set<ObjectName> managed_object_set = (Set<ObjectName>) mejb.queryNames(searchpattern, null); System.out.println("found " + managed_object_set.size() + " matching objects."); Iterator<ObjectName> it = (Iterator<ObjectName>) managed_object_set.iterator(); while (it.hasNext()) { System.out.println(it.next()); ObjectName webModule = it.next(); mejb.getAttribute(webModule, "contextPath"); } whereas the JMX Remote client is as follows: Map<String, String[]> environment = new HashMap<String, String[]>(); String[] credentials = new String[] { "system", "manager" }; environment.put(JMXConnector.CREDENTIALS, credentials); JMXServiceURL address = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost/JMXConnector"); JMXConnector jmxConnector = JMXConnectorFactory.connect(address, environment); MBeanServerConnection mbServerConn = jmxConnector.getMBeanServerConnection(); System.out.println("DefaultDomain: " + mbServerConn.getDefaultDomain()); ObjectName searchpattern = new ObjectName("*:j2eeType=WebModule,*"); Set<ObjectName> webModules = (Set<ObjectName>) mbServerConn.queryNames(searchpattern, null); for (ObjectName webModule : webModules) { System.out.println(webModule); System.out.println(mbServerConn.getAttribute(webModule, "contextPath")); } Why is the exception thrown? How does the console get the value of the contextPath attribute? Jacek -- Jacek Laskowski http://www.JacekLaskowski.pl