This service lets you bind your MBean or any object you wish to JNDI.
Note: You can change objectToBind to whatever you want. By default, it
binds the MBean itself to JNDI.
import javax.naming.InitialContext; import javax.naming.Name; import javax.naming.NamingException; import org.jboss.system.ServiceMBeanSupport; import org.jboss.util.naming.NonSerializableFactory; public abstract class JndiService extends ServiceMBeanSupport implements JndiServiceMBean { private String jndiName; public void setJndiName(String jndiName) { if (getState() == STARTED) throw new IllegalStateException(); this.jndiName = jndiName; } public String getJndiName() { return jndiName; } public void startService() throws Exception { rebind(); } public void stopService() throws Exception { unbind(jndiName); } private void rebind() throws NamingException { InitialContext rootCtx = new InitialContext(); try { Name fullName = rootCtx.getNameParser("").parse(jndiName); NonSerializableFactory.rebind(fullName, getObjectToBind(), true); } finally { rootCtx.close(); } } private void unbind(String jndiName) throws NamingException { InitialContext rootCtx = new InitialContext(); try { rootCtx.unbind(jndiName); NonSerializableFactory.unbind(jndiName); } finally { rootCtx.close(); } } /** * @return the "this".objectToBind */ abstract protected Object getObjectToBind(); }
import org.jboss.system.ServiceMBean; public interface JndiServiceMBean extends ServiceMBean { String getJndiName(); void setJndiName(String jndiName); void startService() throws Exception; void stopService() throws Exception; }
This is a simpler version of the example in the JBoss 3.0 documentation.
http://docs.huihoo.com/jboss/online_manual/3.0/ch13s26.html
Comments