my my my you're hot...
I can't even finish the mail and I blow a fuse :(
Let us know if you find a bug,
marcf
|-----Original Message-----
|From: [EMAIL PROTECTED]
|[mailto:[EMAIL PROTECTED]]On Behalf Of Jason Dillon
|Sent: Wednesday, June 20, 2001 8:59 PM
|To: [EMAIL PROTECTED]
|Cc: [EMAIL PROTECTED]
|Subject: [JBoss-user] Distributed MDB & JMS resouces inside of beans
|
|
|Hey, I have been trying to figure this out for a few days now and I keep
|running into walls. I have a distributed system that uses JMS for
|communication, using a centralized router (all running on JBoss with
|JBossMQ).
|
|I was able to get everything working using an ExternalContext, to
|map in the
|namespace of the remote router, but that is less than perfect. I
|started to
|change over to the JmsXA adapter, but I am running into some odd problems.
|
|An overly simplified view of the system looks like this, showing three
|seperate pyshical machines: web server, manager node and router. The
|current architecture assumes a hub-spoke model for using JMS resources, so
|that all machines that actually make use of the JMS resources are remote,
|there are not MDB's running on the router.
|
| RMI
| [ web server ] +-----------+ [ manager node ]
| | |
| (SessionBean) (MDB)
| | |
| JMS Queue Resource |
| \ /
| \ /
| [ router ]
| ||
| (real queues)
|
|I installed the resource adapter, which seems to like to be deployed rather
|than having a mbean entry added in jboss.jcml, which I basically
|copied from
|the main branch conf/default files.
|
|The manager has a JMSProviderLoader installed which is using a remote
|<hostname>:<port> url to the router, and has the default session
|pool stuff.
|I think that the MDB bits work fine. I do not *think* that I had to change
|anything to get that to work, the problem I am running into is with JMS
|resources.
|
|Per your change note, I changed the res-jndi-name to from the external
|context path to java:JmsXA. But I also had to use url's to get the
|destinations to work. So I ended up with something like this:
|
| <resource-managers>
| <resource-manager>
| <res-name>QueueConnectionFactory</res-name>
| <res-jndi-name>java:/JmsXA</res-jndi-name>
| </resource-manager>
|
| <resource-manager>
| <res-name>WorkRequestQueue</res-name>
| <res-url>jnp://router:5001/queue/WorkRequestQueue</res-url>
| </resource-manager>
|
| <resource-manager>
| <res-name>WorkResponseQueue</res-name>
| <res-url>jnp://router:5001/queue/WorkResponseQueue</res-url>
| </resource-manager>
| </resource-managers>
|
|I started up the application again, and got:
|
|<snip>
|javax.jms.JMSException: Invalid transaction id.
| at
|org.jbossmq.SpyXAResourceManager.addMessage(SpyXAResourceManager.java:80)
| at org.jbossmq.SpySession.sendMessage(SpySession.java:381)
| at org.jbossmq.SpyQueueSender.send(SpyQueueSender.java:103)
| at org.jbossmq.SpyQueueSender.send(SpyQueueSender.java:62)
| at
|com.boldfish.does.job.workflow.internal.RequestSpoolerEJB.send(Requ
|estSpoolerEJB.java:217)
| at
|com.boldfish.does.job.workflow.internal.RequestSpoolerEJB.sendNextR
|equest(RequestSpoolerEJB.java:249)
| at
|com.boldfish.does.job.workflow.internal.RequestSpoolerEJB.spool(Req
|uestSpoolerEJB.java:273)
| at java.lang.reflect.Method.invoke(Native Method)
| at
|org.jboss.ejb.StatefulSessionContainer$ContainerInterceptor.invoke(
StatefulSessionContainer.java:650)
| at
|org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityIntercepto
|r.java:127)
| at
|org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(Sta
tefulSessionInstanceInterceptor.java:209)
| at
|org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.
|java:159)
| at
|org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterc
|eptorCMT.java:280)
| at
|org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:107)
| at
|org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
| at
|org.jboss.ejb.StatefulSessionContainer.invoke(StatefulSessionContai
|ner.java:341)
| at
|org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPC
|ontainerInvoker.java:480)
| at
|org.jboss.ejb.plugins.jrmp.interfaces.GenericProxy.invokeContainer(
|GenericProxy.java:339)
| at
|org.jboss.ejb.plugins.jrmp.interfaces.StatefulSessionProxy.invoke(S
|tatefulSessionProxy.java:136)
| at $Proxy25.spool(Unknown Source)
| at
|com.boldfish.does.job.service.JobController$Runner.run(JobControlle
|r.java:216)
| at java.lang.Thread.run(Thread.java:484)
|</snip>
|
|So I thought that I should try a distributed TX manager, since that is what
|i really want. I changed over to Tyrex on all nodes and I still got the
|same results. I then tried to use a jnp:// url for the
|res-jndi-name, which
|looks like it got a little further, but throw a different TX related
|excepetion laiter.
|
|I have session beans that use JMS resources and I have MDB, all of which
|work off of a remote provider. What is the supported deployment descriptor
|syntax for JMS resources (both factories and desitations) and what needs to
|be done to make the distributed TX work.
|
|A while back someone (could be you) said that using res-url was a hack
|around the lack of support for JMS resources, is that still true? If not
|what is the correct way to reference a remote connection and destination
|inside of the descriptor?
|
|If you need more detail I can provide that for you, or really anyone who
|might have a clue as to why this is not working correctly.
|
|Thanks,
|
|--jason
|
|
|_______________________________________________
|JBoss-user mailing list
|[EMAIL PROTECTED]
|http://lists.sourceforge.net/lists/listinfo/jboss-user
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-user