zecas zecas [http://community.jboss.org/people/zecas] created the discussion
"Re: Using JNDI to connect to Websphere MQ, without hardcoded info" To view the discussion, visit: http://community.jboss.org/message/631664#631664 -------------------------------------------------------------- Hi, I have tried another solution that I believe will getting me closer to no dependencies on project code. As I said, I'm posting my findings here. Instead of connecting to MQ Series using the resource adapter wmq.jmsra.rar, as described in this document: +Using WebSphere MQ Series with JBossAS Part IV - Integration using the IBM WebSphere JMS Resource Adapter (RECOMMENDED WAY!!)+ http://community.jboss.org/docs/DOC-12535 I followed the document: +Using WebSphere MQ Series with JBossAS Part III - Integration using an external context+ http://community.jboss.org/docs/DOC-12534 http://community.jboss.org/docs/DOC-12534 I have copied the following libs: Directory of C:\...\jboss-5.1.0.GA\server\default\lib 30-03-2011 10:21 698.737 commonservices-2.3.jar 30-03-2011 10:21 446.549 defaultconfig-2.3.jar 30-03-2011 10:21 2.011.835 dhbcore-1.0.jar 30-03-2011 10:21 356.293 headers-2.3.jar 30-03-2011 10:21 1.904.071 jmqi-2.3.jar 30-03-2011 10:21 438.016 mq-2.3.jar 30-03-2011 10:21 17.657 mqcontext-2.3.jar 30-03-2011 10:21 3.229.664 mqjms-1.1.jar 30-03-2011 10:21 13.968 Nojndi-2.3.jar 30-03-2011 10:21 103.980 pcf-1.4.2.jar 30-03-2011 10:21 124.522 pcf-6.1-6.1.jar 30-03-2011 10:21 7.758.362 postcard-2.3.jar 30-03-2011 10:21 893.796 rmm-1.0.jar 30-03-2011 10:21 101.628 soap-1.4.2.jar 30-03-2011 10:21 31.996 tools.ras-1.4.2.jar These dependencies were copied from my MQ Series java lib folder, the names are a bit different (with versions), maven style :) . I created a provider definition for Websphere MQ in +C:\...\jboss-5.1.0.GA\server\default\conf\jboss-service.xml+: <?xml version="1.0" encoding="UTF-8"?> <!-- $Id: jboss-service.xml 88695 2009-05-12 03:32:03Z [email protected] (mailto:[email protected]) $ --> <!-- ===================================================================== --> <!-- JBoss Server Configuration --> <!-- ===================================================================== --> <server> <!-- ... --> <!-- WebSphere MQ context JNDI --> <mbean code="org.jboss.naming.ExternalContext" name="DefaultDomain:service=ExternalContext,jndiName=wsmq"> <attribute name="JndiName">wsmq</attribute> <attribute name="Properties"> java.naming.factory.initial=com.ibm.mq.jms.context.WMQInitialContextFactory java.naming.provider.url=192.168.1.30:1414/SYSTEM.DEF.SVRCONN java.naming.security.authentication=none </attribute> <attribute name="InitialContext">javax.naming.InitialContext</attribute> </mbean> </server> Then I defined my connection factories on +C:\...\jboss-5.1.0.GA\server\default\deploy\wsmq-ds.xml+: <?xml version="1.0" encoding="UTF-8"?> <connection-factories> <!-- ==================================================================== --> <!-- WSMQ connection factories --> <!-- ==================================================================== --> <!-- The WSMQ JMS provider loader --> <mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="jboss.mq:service=JMSProviderLoader,name=WSMQJMSProvider"> <attribute name="ProviderName">WSMQJMSProvider</attribute> <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute> <attribute name="QueueFactoryRef">wsmq/QM_server01</attribute> <attribute name="TopicFactoryRef">wsmq/QM_server01</attribute> </mbean> <!-- The WSMQ JMS connection factory --> <no-tx-connection-factory> <jndi-name>WSMQJms</jndi-name> <rar-name>jms-ra.rar</rar-name> <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition> <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property> <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/WSMQJMSProvider</config-property> <max-pool-size>20</max-pool-size> </no-tx-connection-factory> </connection-factories> Last but not least, my Message Driven Bean: @MessageDriven( activationConfig = { @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"), @ActivationConfigProperty(propertyName="destination", propertyValue="wsmq/TestQ"), @ActivationConfigProperty(propertyName="providerAdapterJNDI", propertyValue="java:/WSMQJMSProvider") }) public class TestMQ implements MessageListener { public void onMessage(Message message) { System.out.println(message.toString()); } } At this time, any message that falls into TestQ on MQ Series will be delivered to my Message Driven Bean. I'm yet to try to send a message to the queue, that should use the "no-tx-connection-factory" defined in the "wsmq-ds.xml" file (correct me if I'm wrong), but at least, I have a startup point without many dependencies to JBoss nor MQ Series on my project. The only dependency I have now is: @ActivationConfigProperty(propertyName="providerAdapterJNDI", propertyValue="java:/WSMQJMSProvider") Since I want to blindly deploy the project on a Websphere Application Server (latter on), I don't believe that property will go unnoticed there without some obscure deployment error :). So I was trying to inject the annotation in JBoss only, and using AOP whould seem a good feature ... inject on JBoss side. For that, I tried deploying the aop on +C:\...\jboss-5.1.0.GA\server\default\deploy\wsmq-aop.xml+: <?xml version="1.0" encoding="UTF-8"?> <aop xmlns="urn:jboss:aop-beans:1.0"> <domain name="TestQ" extends="Message Driven Bean" inheritBindings="true"> <annotation expr="!class(@org.jboss.ejb3.annotation.DefaultActivationSpecs)"> @org.jboss.ejb3.annotation.DefaultActivationSpecs ({@javax.ejb.ActivationConfigProperty(propertyName = providerAdapterJNDI, propertyValue = java:/WSMQJMSProvider)}) </annotation> </domain> </aop> And after removing the refered annotation, I'm not able to deliver messages to my MDB. So at this time, I need some opinions on this subject, any tip on what can I do to inject that annotation with JBoss AOP features (or something else on JBoss side). How am I supposed to inject that annotation? (At the same time, I'm trying to create an alternative bridge between my local JBoss queues and remote MQ Series queues. That can give me some more knowledge about JBoss features and may help save the day, latter on ... in this project or on any future one) Any help is welcomed. Thanks -------------------------------------------------------------- Reply to this message by going to Community [http://community.jboss.org/message/631664#631664] Start a new discussion in JNDI and Naming at Community [http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2083]
_______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
