I have 3 MDBs configures in a chain

BatchJobProcessor > TransactionProcessor > OutputProcessor

which I have deployed into a cluster. My aim is to maintain as much portability 
as possible in my code and defer the JNI configuration to the deployment 
descriptors:

I tried configuring the Qs using a services file but it seems to only deploy 
the Qs on the first node and fail on all other nodes. The error reported on the 
other nodes was that the DestinationManager was missing, but was a requirement 
for the Q. If there is a better way to do this please let me know.


  | <?xml version="1.0" encoding="UTF-8"?>
  | <server>
  |   <mbean code="org.jboss.mq.server.jmx.Queue"
  |      name="jboss.mq.destination:service=Queue,name=BatchJobProcessorMDB">
  |          <attribute name="JNDIName">queue/BatchJobProcessors</attribute> 
  |     <depends 
optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  |   </mbean>
  |   <mbean code="org.jboss.mq.server.jmx.Queue"
  |      
name="jboss.mq.destination:service=Queue,name=TransactionProcessorsMDB">
  |          <attribute name="JNDIName">queue/TransactionProcessors</attribute> 
  |     <depends 
optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  |   </mbean>
  |   <mbean code="org.jboss.mq.server.jmx.Queue"
  |      name="jboss.mq.destination:service=Queue,name=OutputProcessorsMDB">
  |          <attribute name="JNDIName">queue/OutputProcessors</attribute> 
  |     <depends 
optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  |   </mbean>
  | </server>
  | 

So I gave up on the option of using a services file and rely on the container 
to create teh queues for me.


In BatchJobProcessor :

  |     @Resource(name="jms/ConnectionFactory")
  |     private QueueConnectionFactory factory;
  | 
  |     @Resource(name="queue/TransactionProcessors")
  |     private Queue queue;
  | 

In TransactionProcessor :

  |     @Resource(name="jms/ConnectionFactory")
  |     private QueueConnectionFactory factory;
  |     
  |     @Resource(name="queue/OutputProcessors")
  |     private Queue queue;
  | 

Then I added the following to my ejb-jar.xml

  |       <message-driven>
  |             <ejb-name>BatchJobProcessor</ejb-name>
  |             <ejb-class>com.thunderhead.backend.BatchJobProcessor</ejb-class>
  |             <transaction-type>Bean</transaction-type>
  |             <resource-ref>
  |                 <description/>              
  |                 <res-ref-name>jms/ConnectionFactory</res-ref-name>
  |                 <res-type>javax.jms.QueueConnectionFactory</res-type>
  |                 <res-auth>Container</res-auth>
  |                 
<mapped-name>jnp://localhost:1100/ConnectionFactory</mapped-name>
  |             </resource-ref>
  |             <resource-ref>
  |                 <description/>                
  |                 <res-ref-name>queue/TransactionProcessors</res-ref-name>
  |                 <res-type>javax.jms.Queue</res-type>
  |                 <res-auth>Container</res-auth>
  |                 
<mapped-name>jnp://localhost:1100/queue/TransactionProcessors</mapped-name>
  |             </resource-ref>
  |         </message-driven>
  | 

I was hoping to do the final mapping to the real JNDI name in the jboss.xml 
file, however during deployment an error require me to add the mapped Name 
element.

It seems to me that message servers (factories and queue) only exist in the 
HAJNDI context and need to be looked up via jnp://localhost:1100/... My attempt 
to look up those services in the local JNDI context failed so far.


I do have the jboss.xml file configured, but it does not seem to have any 
effect. I wonder what I missed as I would prefer to keep the jboss specific 
binding to the real jndi name in a jboss specific configuration file.

  |       <message-driven>
  |          <ejb-name>BatchJobProcessor</ejb-name>        
  |          
<destination-jndi-name>queue/BatchJobProcessors</destination-jndi-name>
  |          <resource-ref>
  |              <res-ref-name>jms/ConnectionFactory</res-ref-name> 
  |              <jndi-name>jnp://localhost:1100/ConnectionFactory</jndi-name>  
           
  |          </resource-ref>
  |          <resource-ref>
  |              <res-ref-name>queue/TransactionProcessors</res-ref-name> 
  |              
<jndi-name>jnp://localhost:1100/queue/TransactionProcessors</jndi-name>         
    
  |          </resource-ref>
  |       </message-driven>
  | 

Thanks in advance
Alex

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4093031#4093031

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4093031
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to