my dog learned polymorphism*
The moose likes JBoss/WildFly and the fly likes Singletons with Clustering Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Products » JBoss/WildFly
Bookmark "Singletons with Clustering" Watch "Singletons with Clustering" New topic
Author

Singletons with Clustering

James Adams
Ranch Hand

Joined: Sep 12, 2003
Posts: 188
Am I the only one trying to use singletons with clustering ? It seems to be something which should have been done many times before, but detailed information on how it works does not seem to be readily available. I have posted two messages to the JBoss/Clustering forum (see http://www.jboss.org/index.html?module=bb&op=viewtopic&t=52358 and http://www.jboss.org/index.html?module=bb&op=viewtopic&t=52330) but I have yet to receive any more information on how to get this to work. Does anyone have any experience with this ?

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.


--James
Frederico Melo
Greenhorn

Joined: Mar 15, 2004
Posts: 24
James,

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.

best regards,

Fred


Frederico Melo<br />--------------<br />Software Architect<br />Sun Certified Enterprise Architect for J2EE<br />IBM Rational Unified Process Specialist
James Adams
Ranch Hand

Joined: Sep 12, 2003
Posts: 188
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.


--James
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Singletons with Clustering
 
Similar Threads
how to change port 8080 for jboss 4.0
JBoss4 Problem using JAAS
PLEASE HELP java.lang.LinkageError
php-like content mgmt system
problem in setting mySql as default database server