1 Reply Latest reply on Jan 27, 2005 12:52 PM by Sean Boltman

    NameNotFound on JMS ConnectionFactory. May be clustering con

    Sean Boltman Newbie

      My name is Sean Boltman. I came across your posting while trying to work through issues on a JBOSS 4.0.1 deployment. I am a newbie to JBOSS, somewhat, so I suspect my problems are due to a misunderstanding or missed detail.

      Background: I have an enterprise application that has within is stateless session beans that are clusterable. This application also makes use of JBOSS?s JMS services.

      My EJBs: Since the EJBs are clusterable, I am finding I am *required* to use a layout similar to the server/all layout JBOSS provides? specifically the cluster-service.xml aspect of configuration. Without this XML, starting up the JBOSS server which in turn deploys my EAR file would result in many errors such as ?HAPartition not found?. By having the cluster-service.xml, these errors go away, things deploy nicely.

      My JMS usage: I went thru the docs to configure the JMS to use MySQL. In code, I do InitialContext() lookups using ?jnp://localhost:1099?, and AM successful in looking up both ?java:ConnectionFactory? plus my own ?epok/JMSQueue? custom queue object. No problem right.

      Well, all this worked fine when just one cluster was used. My next goal was to create a second server instance (a second cluster, right) that had the same EAR deployed within it. Ultimate goal was to be able to split the services my EAR provides between the two clusters, and when outside service requests come in, that these requests would be routed one place or another. Furthermore, implementations of some of my services in turn call out to other services, so the net effect is I would also see traffic between the two clusters as well. BUT FOR NOW, I am at the starting point of making this work, so I am starting by setting up a complete replica on a second box.

      Details: I have stuck with the name ?DefaultPartition? in both instances. Furthermore, the UDP MCAST address and port are the same for both configurations. I ASSUME that these values need to be the same in order for HA-JNDI to work? As you may tell, I start to get a bit foggy here. I?ll tell you why? remember I mentioned that I could do a JNDI lookup for ?java:ConnectionFactory? in a standalone configuration? Well, when two are started up, ONLY THE FIRST configuration can successfully lookup the JMS connection factory? the second instance, the one that starts up AFTER the first, gets a NameNotFound. I can verify that ?ConnectionFactory? is not in the local JNDI for the second server (using the JNDI JMX control in jmx-console). So I said okay, this is where I have the second instance instead use it?s HA-JNDI instance to lookup ?java:ConnectionFactory? which is registered over on instance number one. On #2, I try ProviderURLS: machineNumberTwo:1100 and http://machineNumberTwo:1100 with no luck. I then see in JBOSS docsa how you can specify multiple URLS comma separated, so I then try: machineNumberOne:1100,machineNumberTwo:1100 and http://machineNumberOne:1100,http://machineNumberTwo:1100 with no luck. I then tried just explicitly using jnp://machineNumberOne:1099 from the second instance and still no luck.

      Can you shed any light on this fro your recent experiences? It seems to me JBOSS is a little light on documentation surrounding this.

      Lets say I have an enterprise application that returns a stock quote. Lets say you have to authenticate to it. So two services: Login and GetQuote. Lets say if you call GetQuote and you are NOT authenticated, GetQuote issues a Login on your behalf. Finally, lets say two servers, one has Login (EJB) one has GetQuote (EJB). External client calls GetQuote? and GetQuote detects user not logged in a calls the Login on the other server.

      Okay, when I configure this example above, would I use the same partition on both machines? Would that include using the same UDP MCAST values? Does having same-name partitions on different machines ONLY come into play when you have the SAME EJB deployed to multiple instances (clustered concept right?)? And what about HA-JNDI? HA-JNDI is like the layer of Naming Service above the local JNDIs that have the ability to discover and talk to each other right? In my setup, both servers had same HA-JNDI AutoDiscovery settings, so I am really confused why my lookup of ?java:ConnectionFactory? failed?

      Anyways? I really really appreciate any enlightment you can shed on my mess J

        • 1. Re: NameNotFound on JMS ConnectionFactory. May be clustering
          Sean Boltman Newbie

          More information:

          Again, I am working on a two server scenario...

          Again the partion on both servers is "DefaultPartition" with matching UPD MCAST address and port values...

          Again, the problem I am/was initially facing was my JMS Connection Factory could ONLY be successfully looked up in the FIRST server instance, but not the Second server instance (instead would get NameNotFounbd, not matter what ProviderURL stradegy I used..)

          UPDATE: On server two's DefaultPartition, I changed the UDP MCAST address... Now, when server two starts up, I CAN do a JNDI lookup for "java:ConnectionFactory" using the ProviderURL of "jnp://localhost:1099"

          But... What is the effect on clustering the same EJB on these two server instances if the the partion configurations are different?

          And... in my orignal post, why did this JNDI lookup using the HA-JNDI NOT WORK?

          In summary, I am still confuised on configuration and would like some clarification if anyone can offer it up.. Thanks!!! Sean