This is my first attempt to use JBoss Clustering, and aside from the singletons it appears to be simple to setup and run a JBoss cluster. The only article on how this works for singletons, http://www.onjava.com/pub/a/onjava/2003/08/20/jboss_clustering.html, which outlines creating a MBean to run as a singleton using the HASingletonController, isn't complete (no code for the MBean interface, no real direction on which cluster-service.xml to include the singleton and controller entries -- is it cluster-service.xml or cluster-examples-service.xml ?, do you package the SingletonMBean with other Mbeans in a SAR or in the EAR file ?, etc.), and I am having troubles not mentioned in the article.

The JBoss Clustering documentation I have shows that there are no clustering features available for Message-Drive EJBs -- so does this mean that running a singleton MDB, which runs fine in single JVM, as a singleton in the cluster is impossible ? If not then what else is required other than marking the MDB as <clustered> in the joss.xml ?

I am running JBoss 3.2.5. Any suggestions or information will be appreciated. Thanks in advance.

At first you need to be completly sure about the needs to use a singleton. It should *NOT* be used on a multi-classloader enviroment since it's unique gaim (a single instance of a class on whole application) it's not garanteed on a multi-VM (multi-classloader) enviroment. The only approach that can be used to emulate a singleton on a App. Server is exposing it on the JNDI context(wich can be done or not by JMX Mbeans). This way, your app has a unique point for acquiring a reference to a object(even across clustered app servers) in transparent way, and you can garantee that you factory exposed in JNDI context will only let one object copy exist.

So is it really not possible to have true singletons in a multi-VM (clustered) environment ? It seems that this is in fact possible, even though I have yet to get it to work for my application. There is a JBOSS/server/all/deploy-hasingleton directory for deploying singleton MBeans, and the previously mentioned article explains (though not completely) that it can be done. As far as using the cluster-wide HANamingService, I am doing this (I think) by removing the

from the InitialContext properties, and this makes the Context use port 1100, which is the HANamingService (cluster-wide JNDI). Is this not the case, or are there other things I should do as well ?

Thanks in advacnce for any further suggestions, as I am right near stumped on this.