Problem with MBean JBoss3.2.3 -> JBoss4.0.0
michael.maurer Dec 1, 2004 9:39 AMWe have writen a MBEAN such as posted in the JBoss3.x docu: A Standard MBean Example page 118. (see code below)
This worked wounderfull in JBoss3.2.3.
After adapting the jboss-service.xml I was able to deploy it in JBoss4.0.0.
Using the jmx-Console I am able to view all the properties stored in the MBean. But when I try to connect to the MBean using JDNI
Context ctx = new InitialContext(); serverSettings = (ServerSettings)ctx.lookup("java:/MARSServerSettings");
from my application (inside Jboss) I am able to invoke the bean and its methods, but the returned properties are null.
Has anyone an idea whats the problem ?
It seems to me that the MBean is not a singleton anymore!
Cheers Michael
public interface ServerSettingsMBean extends java.io.Serializable { public static final int STOPPED = 0; public static final int STARTED = 1; public void setProperty(String key, String value); public void removeProperty(String key); public String getProperty(String key); public String listProperties(); public String[] getKeys(); public void setJNDIName(String jndiName); public String getJNDIName(); public String getStatusString(); public int getStatus(); public void start(); public void stop(); }
public class ServerSettings implements ServerSettingsMBean { private static final String TABLENAME = "MARSSERVERPROPERTIES"; private String JNDIName_ = "not set"; private int status_ = STOPPED; private java.util.Hashtable properties_ = new java.util.Hashtable(); private transient Connection con_ = null; public void setProperty(String key, String value) { setPropertyDB(key.trim(),value.trim()); properties_.put(key.trim(), value.trim()); } public String getProperty(String key) { System.out.println("ServerSettings-getProperty "+key); String retValue = (String)properties_.get(key.trim()); System.out.println("ServerSettings-getProperty returns "+retValue); return retValue; } ....... }
<server> <mbean code="at.tugraz.genome.marsservice.ServerSettings" name="at.tugraz.genome.marsservice:service=ServerSettings"> <attribute name="JNDIName">java:/MARSServerSettings</attribute> <depends>jboss.jca:service=DataSourceBinding,name=jdbc/DefaultDS</depends> <!--depends>jboss.jca:service=XATxCM,name=jdbc/DefaultDS</depends> <depends>jboss.jca:service=ManagedConnectionFactory,name=jdbc/DefaultDS</depends> <depends>jboss.jca:service=ManagedConnectionPool,name=jdbc/DefaultDS</depends--> </mbean> </server>