- 
        30. Re: MQSeries/JBoss MDB/3rd Party Messagingpcallies Apr 26, 2002 4:55 PM (in response to franktv)As I was saving the file to my local drive, I looked at the package you had the class in. Seeing the word poll made we look through the code. 
 MQSeries has a ConnectionConsumer so I'm not sure why you used a polling mechanism. Maybe this ContainerInvoker predates the MQSeries ConnectionConsumer. Or maybe this was written to work with some other JMS provider that didn't support ConnectionConsumer and it happened to work with MQSeries.
 In either case, if I get time I'll probably try to figure out why the standard MDB doesn't work instead of trying this container. One of the things I'm try to get away from is having a bunch of threads doing blocking reads.
 Thanks again for posting the code.
 -Peter
- 
        31. Re: MQSeries/JBoss MDB/3rd Party Messagingpcallies May 8, 2002 3:38 PM (in response to franktv)I'm ba-aack. 
 First of all, I'd like to give my compliments to the chef (Peter). The standard MDB container works as advertised once I finished stumbling through the configuration (doh!).
 Using 3.0.0RC2, the final piece to the puzzle was configuring the JMS service to use the MQSeries connection factory instead of the Spy connection factory.
 Here is the configuration I ended up with.
 -I removed jbossmq-destinations-service.xml and jbossmq-service.xml from the deploy directory to reduce the possibility of unintended conflicts.
 -I added the following to the jms-service.xml file to enable me to point to the MQSeries connection factories:
 <!-- The MQSeries JMS provider loader -->
 MQSeriesJMSProvider
 org.jboss.jms.jndi.JBossMQProvider
 qcf
 tcf
 -I modified Standard Message Driven Bean Container configuration in standardjboss.xml to use the MQSeriesJMSProvider:
 MQSeriesJMSProvider
 -In jboss-service.xml I added the following ExternalContext configuration:
 external/fs/mqjndi
 local.props
 javax.naming.InitialContext
 -In jboss-service.xml I added the following NamingAlias for my connection factory which satisfies the resource-ref for my EJB as well as the MQSeriesJMSProvider:
 external/fs/mqjndi/pcallies
 qcf
 external/fs/mqjndi/pcalliestcf
 tcf
 -In jboss-service.xml I added the following NamingAlias for my connection factory which satisfies the DLQ configuration:
 external/fs/mqjndi/pcallies
 java:/ConnectionFactory
 -I added the following NamingAliases for the queues my MDB references:
 external/fs/mqjndi/Router1Input
 queue/Router1Input
 external/fs/mqjndi/HQResponses
 queue/HQResponses
 -I added the following NamingAlias for the DLQ:
 external/fs/mqjndi/DLQ
 queue/DLQ
 I still get the exception below if the queue is populated with more than a few messages (I'm using 100 in my test case) before I start the MDB. In this situation, I also get DEBUG output stating "The Pool for com.mckhboc.realtime.common.edi.mdb.HelloMDB has been overloaded. You should change pool parameters." I'm beginning to investigate this, but if you know of a configuration tweak I can make, please let me know.
 2002-05-08 14:29:00,028 ERROR [STDERR] java.lang.NullPointerException
 2002-05-08 14:29:00,028 ERROR [STDERR] at com.ibm.mq.jms.MQSession.run(MQSession.java:980)
 2002-05-08 14:29:00,028 ERROR [STDERR] at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:175)
 2002-05-08 14:29:00,028 ERROR [STDERR] at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:655)
 2002-05-08 14:29:00,028 ERROR [STDERR] at java.lang.Thread.run(Thread.java:484)
- 
        32. Re: MQSeries/JBoss MDB/3rd Party Messagingpcallies May 8, 2002 5:28 PM (in response to franktv)I'm ba-aack. 
 First of all, I'd like to give my compliments to the chef (Peter). The standard MDB container works as advertised once I finished stumbling through the configuration (doh!).
 Using 3.0.0RC2, the final piece to the puzzle was configuring the JMS service to use the MQSeries connection factory instead of the Spy connection factory.
 Here is the configuration I ended up with.
 -I removed jbossmq-destinations-service.xml and jbossmq-service.xml from the deploy directory to reduce the possibility of unintended conflicts.
 -I added the following to the jms-service.xml file to enable me to point to the MQSeries connection factories:
 <!-- The MQSeries JMS provider loader -->
 MQSeriesJMSProvider
 org.jboss.jms.jndi.JBossMQProvider
 qcf
 tcf
 -I modified Standard Message Driven Bean Container configuration in standardjboss.xml to use the MQSeriesJMSProvider:
 MQSeriesJMSProvider ;
 -In jboss-service.xml I added the following ExternalContext configuration:
 external/fs/mqjndi
 local.props
 javax.naming.InitialContext
 -In jboss-service.xml I added the following NamingAlias for my connection factory which satisfies the resource-ref for my EJB as well as the MQSeriesJMSProvider:
 external/fs/mqjndi/pcallies
 qcf
 external/fs/mqjndi/pcalliestcf
 tcf
 -In jboss-service.xml I added the following NamingAlias for my connection factory which satisfies the DLQ configuration:
 external/fs/mqjndi/pcallies
 java:/ConnectionFactory
 -I added the following NamingAliases for the queues my MDB references:
 external/fs/mqjndi/Router1Input
 queue/Router1Input
 external/fs/mqjndi/HQResponses
 queue/HQResponses
 -I added the following NamingAlias for the DLQ:
 external/fs/mqjndi/DLQ
 queue/DLQ
 I still get the exception below if the queue is populated with more than a few messages (I'm using 100 in my test case) before I start the MDB. In this situation, I also get DEBUG output stating "The Pool for com.mckhboc.realtime.common.edi.mdb.HelloMDB has been overloaded. You should change pool parameters." I'm beginning to investigate this, but if you know of a configuration tweak I can make, please let me know.
 2002-05-08 14:29:00,028 ERROR [STDERR] java.lang.NullPointerException
 2002-05-08 14:29:00,028 ERROR [STDERR] at com.ibm.mq.jms.MQSession.run(MQSession.java:980)
 2002-05-08 14:29:00,028 ERROR [STDERR] at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:175)
 2002-05-08 14:29:00,028 ERROR [STDERR] at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java: 655)
 2002-05-08 14:29:00,028 ERROR [STDERR] at java.lang.Thread.run(Thread.java:484)
- 
        33. Re: MQSeries/JBoss MDB/3rd Party Messagingcholliday May 9, 2002 8:56 AM (in response to franktv)I have Jboss-2.4.5.RC3 installed and working on a Red Hat 7.1 machine. Our company is starting to implement IBM MQSeries everywhere and I am going to have it installed on our DEC Alpha. I want to use MQSeries as my main communication link between our linux machine and our Alpha. The Alpha we be in charge of reporting to our IBM mainframe business system. The client for MQSeries does not queue up messages if it cannot contact the server so I would have to develop some way to queue up messages from our linux machine. If I integrate MQSeries into Jboss will I have queueing if the MQSeries server is down? We currently use DEC MessageQ everywhere in our Alpha environment, so I looked into BEA MessageQ but it's Java front end was entirely too expensive. But another department uses BEA MessageQ on their linux machine using C, is something available for me to integrate BEA MessageQ? 
- 
        34. Re: MQSeries/JBoss MDB/3rd Party Messagingaanchalm Jun 24, 2002 3:51 AM (in response to franktv)Hi, 
 I am working on configuring Jboss 2.2 with Mqseries 5.2 . What i need to know is do i have to upgrade to Jboss 2.4 inorder to work with Mqseries or can i work with Jboss 2.2. Since a week i have been struggling on gettin Mqseries to work with Jboss 2.2 but not been able to do so. I need some help urgently and when i did as per details done by Peter and you i still had no luc with the configuration. Please help me i have posted my problem on the forums and need help !!! Please let me know if I should work on Jboss 3.0 or it is possible to keep struggling on Jboss 2.2 .
- 
        35. Re: MQSeries/JBoss MDB/3rd Party Messagingbenoitx Aug 14, 2002 2:09 PM (in response to franktv)Has anyone managed to solve this issue? 
 2002-05-08 14:29:00,028 ERROR [STDERR] java.lang.NullPointerException
 2002-05-08 14:29:00,028 ERROR [STDERR] at com.ibm.mq.jms.MQSession.run(MQSession.java:980)
 2002-05-08 14:29:00,028 ERROR [STDERR] at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:175)
 2002-05-08 14:29:00,028 ERROR [STDERR] at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:655)
 2002-05-08 14:29:00,028 ERROR [STDERR] at java.lang.Thread.run(Thread.java:484)
 We are facing the same problem when we start Jboss 2.4.x with a "pre-loaded" MQSeries queue.
 Many thanks
 Benoit.
- 
        36. Re: MQSeries/JBoss MDB/3rd Party Messagingjeromino Sep 18, 2002 9:00 PM (in response to franktv)Very interesting thread you guys have going here and as someone about to begin using JBoss with MQSeries I appreciate the effort you have all gone to in explaining your experiences. :) 
 I have read through all the postings and are about to embark on connecting JBoss 3.0 and MQSeries 5.2. Does the posting above from Peter still stand as the configuration standard that I should follow?
 thanks,
 Jerôme
- 
        37. Re: MQSeries/JBoss MDB/3rd Party Messagingmarcosoda Sep 20, 2002 1:56 PM (in response to franktv)Hi all, 
 I configure everything, but I´m having problems to configure the JMSProviderLoader. I have to use a custom class and use a ProviderUrl like this example:
 DefaultJMSProvider
 org.jboss.jms.jndi.JBossMQSeriesProvider
 file:///jndiRoot
 QueueConnectionFactory
 QueueConnectionFactory
 Someone can show me the custom class. And what do I have to put in ProviderUrl?
 Thank´s
 Marcos Oda
- 
        38. Re: MQSeries/JBoss MDB/3rd Party Messagingloshsu Oct 2, 2002 4:21 AM (in response to franktv)Dear All, 
 Just want to share a successful story here as a starting point when you try to integrate MQSeries(5.2) as a JMS Provier in JBoss(3.0.0)
 I have been trying to look up key words like "JBoss and MQSeries", "MQSeries and JMX" and "JBoss and JMS Provider" from search engine, Google. It really helps!
 First of all, JMSAdmin can use JBossNS service directly. Try this JMSAdmin.config:
 INITIAL_CONTEXT_FACTORY=org.jnp.interfaces.NamingContextFactory
 PROVIDER_URL=jnp://localhost/
 Secondly, create a new class MQSeriesProvider that extends AbstractJMSProviderAdapter in package org.jboss.jms.jndi. This class just mimics JBossMQProvider. Rebuild JBoss and get a new jboss.jar that contains MQSeriesProvider.
 Thirdly, modify standardjboss.xml:
 Replace this
 DefaultJMSProvider
 with this
 MQSeriesProvider
 Also, modify jms-service.xml:
 Replace this
 <!-- The JMS provider loader
 DefaultJMSProvider
 org.jboss.jms.jndi.JBossMQProvider
 java:/XAConnectionFactory
 java:/XAConnectionFactory
 with this
 <!-- The MQSeries JMS provider loader -->
 MQSeriesProvider
 org.jboss.jms.jndi.MQSeriesProvider
 MQQueueCF
 MQTopicCF
 Now, you are ready to run this new JBoss with MQSeries as JMS Provider
 Back to JMSAdmin. Create following objects.
 InitCtx> def qcf(MQQueueCF) qmanager(MGW.QM) host(192.168.7.102) port(1416) channel(SMS.PLUGINI.CHL) transport(client)
 InitCtx> change ctx(queue)
 InitCtx/queue> def q(plugini) queue(SMS.PLUGINI.PLY.Q) qmanager(MGW.QM)
 Finally, create a standard MDB (with a destination points to 'plugini', in my case). No additinal setting required. And then deploy it and see how it works.
 In my case, I can see my legacy system put a message to SMS.PLUGINI.PLY.Q and the MDB got the message nicely.
 Cheers,
 Allen Hsu
- 
        39. Re: MQSeries/JBoss MDB/3rd Party Messagingbentins Mar 5, 2003 3:19 AM (in response to franktv)to Allen Hsu, 
 I'm a little puzzelled. If you got it to work with the regular initial context factory, why did you have to create a new MQSeriesProvider?
- 
        40. Re: MQSeries/JBoss MDB/3rd Party Messagingbentins Mar 15, 2003 6:14 PM (in response to franktv)I tried this last strategy... 
 I populated the MQQueuefactory and an MQ Queue objects into the jndi. I edited the jms-service.xml accordinly. However, I get a classCastException from the JMSContainerInvoker (and I don't know which class it's not able to cast because the info is not there) any ideas?
- 
        41. Re: MQSeries/JBoss MDB/3rd Party Messagingdtauzell Mar 17, 2003 9:28 AM (in response to franktv)There is one other issue. MQSeries client (all java) drivers are not XA compliant. JBoss assumes that your MBeans want an XAQueueConnectionFactory which cannot be case to MQQueueConnectionFactory. 
 I added the following to my jboss.xml descriptor file to tell it to not use XA transactions:
 <xa-connection>false</xa-connection>
 For example:
 <message-driven>
 <ejb-name>MyMdb</ejb-name>
 <destination-jndi name>queue/my_queue</destination-jndi-name>
 <xa-connection>false</xa-connection>
 </message-driven>
 If this doesn't help can you post your stack trace?
 -dave
- 
        42. Re: MQSeries/JBoss MDB/3rd Party Messagingthethunderking Apr 14, 2003 8:26 AM (in response to franktv)Hi Everybody, 
 We have been trying to connect MQSeries with JBoss with quite some time now. We have been able to refer the JNDI service running on JBoss through JMSAdmin and have created the reqd. objects QueueConnectionFactory and have also bound a Queue named testQueue under QueueManager named myQueueManager. And have also made the corresponding objects on the WebSphere MQ.
 Our setup exist of a WebSphereMQ 5.3 running on a machine and JBoss 3.0.6 running on a different machine.
 We have done the following using the wonderful case studies being provided on this thread.
 1. Updated the JMSAdmin.config in the MQSeries
 INITIAL_CONTEXT_FACTORY=org.jnp.interfaces.NamingContextFactory
 PROVIDER_URL=jnp://10.*.*.*:1099/
 2. Created a new class MQSeriesProvider that extends AbstractJMSProviderAdapter in package org.jboss.jms.jndi. This class mimics JBossMQProvider. Rebuild JBoss and get a new jboss.jar that contains MQSeriesProvider. And updated the jboss.jar in the lib directory of the default server.
 3.Updated the standardjboss.xml replacing the DefaultJMSProvider
 with this
 MQSeriesProvider
 4.Also, modified the jms-service.xml:
 Replacing :
 <!-- The JMS provider loader
 DefaultJMSProvider
 org.jboss.jms.jndi.JBossMQProvider
 java:/XAConnectionFactory
 java:/XAConnectionFactory
 with this
 <!-- The MQSeries JMS provider loader -->
 MQSeriesProvider
 org.jboss.jms.jndi.MQSeriesProvider
 MQQueueCF
 MQTopicCF
 5. We also updated the jboss-service.xml so as to use the MQSeriesProvider class as JMS provider.
 Now we tried setting up a small test environment using the test code provided in the QuickStart.pdf
 ----------------- PrintBean.java ---------------------
 package example.beans;
 import javax.ejb.MessageDrivenBean;
 import javax.ejb.MessageDrivenContext;
 import javax.ejb.EJBException;
 import javax.jms.MessageListener;
 import javax.jms.Message;
 public class PrintBean implements MessageDrivenBean,
 MessageListener {
 public void setMessageDrivenContext(MessageDrivenContext c)
 throws EJBException {}
 public void ejbCreate() {}
 public void ejbRemove() {}
 public void onMessage(Message message) {
 System.err.println("Got Message: " + message.toString());
 }
 }
 ---------------------------------------------------------
 -------------------- jboss.xml ------------------------
 <?xml version="1.0"?>
 <enterprise-beans>
 <message-driven>
 <ejb-name>PrintBean</ejb-name>
 <configuration-name>Standard Message Driven Bean</configuration-name>
 <destination-jndi-name>queue/testQueue1</destination-jndi-name>
 <xa-connection>false</xa-connection>
 </message-driven>
 </enterprise-beans>
 --------------------------------------------------------
 ------------------ ejb-jar.xml -------------------------<?xml version="1.0"?>
 <!DOCTYPE ejb-jar>
 <ejb-jar>
 <enterprise-beans>
 <message-driven>
 <ejb-name>PrintBean</ejb-name>
 <ejb-class>example.beans.PrintBean</ejb-class>
 <message-selector></message-selector>
 <transaction-type>Bean</transaction-type>
 <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
 <message-driven-destination>
 <destination-type>javax.jms.Queue</destination-type>
 </message-driven-destination>
 </message-driven>
 </enterprise-beans>
 </ejb-jar>
 ---------------------------------------------------------
 On deploying this setup. We get the following error.
 17:17:53,069 INFO [DLQHandler] Creating
 17:17:53,079 ERROR [DLQHandler] Initialization failed
 java.lang.ClassCastException: javax.naming.Reference
 at org.jboss.ejb.plugins.jms.DLQHandler.createService(DLQHandler.java:12
 1)
 at org.jboss.system.ServiceMBeanSupport.create(ServiceMBeanSupport.java:
 136)
 at org.jboss.ejb.plugins.jms.JMSContainerInvoker.innerCreate(JMSContaine
 rInvoker.java:608)
 at org.jboss.ejb.plugins.jms.JMSContainerInvoker.startService(JMSContain
 erInvoker.java:824)
 at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:1
 65)
 at org.jboss.ejb.MessageDrivenContainer.start(MessageDrivenContainer.jav
 a:200)
 at org.jboss.ejb.Container.invoke(Container.java:756)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
 Any help regarding this would be highly appreciated by me.
 Best Regards
 Thunder.
- 
        43. Re: MQSeries/JBoss MDB/3rd Party Messagingthethunderking Apr 14, 2003 8:29 AM (in response to franktv)Hi Everybody, 
 We have been trying to connect MQSeries with JBoss with quite some time now. We have been able to refer the JNDI service running on JBoss through JMSAdmin and have created the reqd. objects QueueConnectionFactory and have also bound a Queue named testQueue under QueueManager named myQueueManager. And have also made the corresponding objects on the WebSphere MQ.
 Our setup exist of a WebSphereMQ 5.3 running on a machine and JBoss 3.0.6 running on a different machine.
 We have done the following using the wonderful case studies being provided on this thread.
 1. Updated the JMSAdmin.config in the MQSeries
 INITIAL_CONTEXT_FACTORY=org.jnp.interfaces.NamingContextFactory
 PROVIDER_URL=jnp://10.*.*.*:1099/
 2. Created a new class MQSeriesProvider that extends AbstractJMSProviderAdapter in package org.jboss.jms.jndi. This class mimics JBossMQProvider. Rebuild JBoss and get a new jboss.jar that contains MQSeriesProvider. And updated the jboss.jar in the lib directory of the default server.
 3.Updated the standardjboss.xml replacing the DefaultJMSProvider
 with this
 MQSeriesProvider
 4.Also, modified the jms-service.xml:
 Replacing :
 <!-- The JMS provider loader
 DefaultJMSProvider
 org.jboss.jms.jndi.JBossMQProvider
 java:/XAConnectionFactory
 java:/XAConnectionFactory
 with this
 <!-- The MQSeries JMS provider loader -->
 MQSeriesProvider
 org.jboss.jms.jndi.MQSeriesProvider
 MQQueueCF
 MQTopicCF
 5. We also updated the jboss-service.xml so as to use the MQSeriesProvider class as JMS provider.
 Now we tried setting up a small test environment using the test code provided in the QuickStart.pdf
 ----------------- PrintBean.java ---------------------
 package example.beans;
 import javax.ejb.MessageDrivenBean;
 import javax.ejb.MessageDrivenContext;
 import javax.ejb.EJBException;
 import javax.jms.MessageListener;
 import javax.jms.Message;
 public class PrintBean implements MessageDrivenBean,
 MessageListener {
 public void setMessageDrivenContext(MessageDrivenContext c)
 throws EJBException {}
 public void ejbCreate() {}
 public void ejbRemove() {}
 public void onMessage(Message message) {
 System.err.println("Got Message: " + message.toString());
 }
 }
 ---------------------------------------------------------
 -------------------- jboss.xml ------------------------
 <?xml version="1.0"?>
 <enterprise-beans>
 <message-driven>
 <ejb-name>PrintBean</ejb-name>
 <configuration-name>Standard Message Driven Bean</configuration-name>
 <destination-jndi-name>queue/testQueue1</destination-jndi-name>
 <xa-connection>false</xa-connection>
 </message-driven>
 </enterprise-beans>
 --------------------------------------------------------
 ------------------ ejb-jar.xml -------------------------<?xml version="1.0"?>
 <!DOCTYPE ejb-jar>
 <ejb-jar>
 <enterprise-beans>
 <message-driven>
 <ejb-name>PrintBean</ejb-name>
 <ejb-class>example.beans.PrintBean</ejb-class>
 <message-selector></message-selector>
 <transaction-type>Bean</transaction-type>
 <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
 <message-driven-destination>
 <destination-type>javax.jms.Queue</destination-type>
 </message-driven-destination>
 </message-driven>
 </enterprise-beans>
 </ejb-jar>
 ---------------------------------------------------------
 On deploying this setup. We get the following error.
 17:17:53,069 INFO [DLQHandler] Creating
 17:17:53,079 ERROR [DLQHandler] Initialization failed
 java.lang.ClassCastException: javax.naming.Reference
 at org.jboss.ejb.plugins.jms.DLQHandler.createService(DLQHandler.java:12
 1)
 at org.jboss.system.ServiceMBeanSupport.create(ServiceMBeanSupport.java:
 136)
 at org.jboss.ejb.plugins.jms.JMSContainerInvoker.innerCreate(JMSContaine
 rInvoker.java:608)
 at org.jboss.ejb.plugins.jms.JMSContainerInvoker.startService(JMSContain
 erInvoker.java:824)
 at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:1
 65)
 at org.jboss.ejb.MessageDrivenContainer.start(MessageDrivenContainer.jav
 a:200)
 at org.jboss.ejb.Container.invoke(Container.java:756)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
 Any help regarding this would be highly appreciated by me.
 Best Regards
 Thunder.
- 
        44. Re: MQSeries/JBoss MDB/3rd Party Messagingchaloupka Apr 14, 2003 11:04 AM (in response to franktv)is there any way to call JBoss-MQ from another source (call JBossMQ from Oracle procedure written in Pl/SQL and call put or get from MQ series) ? I need to start this process from Oracle DB and I cannot communicate with MQSeries directly (some problem with OS versions ...) and I don t want to run Java inside the db ... 
 
     
     
     
     
     
     
     
     
     
    