The same post on stackoverflow but with better code layout http://stackoverflow.com/questions/1612960/geronimo-2-1-add-a-queue-jndi-ref-in-ejb-jar-xml-sending-jms-msg-in-a-ejb-mdb
---- hi, I have an EAR application which contains an MDB and a WAR. In this EAR application I would send a message into an another Queue from other EAR application. Say jms/anotherQueue If the message sending happens in web context, it works. I have such setup in web.xml <message-destination-ref> <message-destination-ref-name>jms/anotherQueue</message-destination-ref-name> <message-destination-type>javax.jms.Queue</message-destination-type> <message-destination-usage>Produces</message-destination-usage> <message-destination-link>jms/anotherQueue</message-destination-link> </message-destination-ref> But if the message sending occurs in EJB (MDB here) context, I will get a JNDI name lookup failure. javax.naming.NameNotFoundException: anotherQueue my ejb-jar.xml <?xml version="1.0" encoding="UTF-8"?> <ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"> <enterprise-beans> <message-driven> <ejb-name>jms/myMDB</ejb-name> <ejb-class>com.my.MDBImplement</ejb-class> <messaging-type>javax.jms.MessageListener</messaging-type> <transaction-type>Container</transaction-type> <activation-config> <activation-config-property> <activation-config-property-name>destination</activation-config-property-name> <activation-config-property-value>jms/myQueue</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>destinationType</activation-config-property-name> <activation-config-property-value>javax.jms.Queue</activation-config-property-value> </activation-config-property> </activation-config> <resource-ref> <res-ref-name>jms/myCF</res-ref-name> <res-type>javax.jms.QueueConnectionFactory</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> </message-driven> </enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>jms/myMDB</ejb-name> <method-name>onMessage</method-name> <method-params> <method-param>javax.jms.Message</method-param> </method-params> </method> <trans-attribute>NotSupported</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar> the openejb.jar is <?xml version="1.0" encoding="UTF-8" standalone="no"?> <ejb:openejb-jar xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" xmlns:client="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0" xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2" xmlns:ejb="http://openejb.apache.org/xml/ns/openejb-jar-2.2" xmlns:name="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pers="http://java.sun.com/xml/ns/persistence" xmlns:pkgen="http://openejb.apache.org/xml/ns/pkgen-2.1" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"> <dep:environment> <dep:moduleId> <dep:groupId>myGroup</dep:groupId> <dep:artifactId>imyMDB</dep:artifactId> <dep:version>1.0</dep:version> <dep:type>ejb</dep:type> </dep:moduleId> <dep:dependencies> <dep:dependency> <dep:groupId>org.apache.geronimo.configs</dep:groupId> <dep:artifactId>activemq-broker</dep:artifactId> <dep:type>car</dep:type> </dep:dependency> </dep:dependencies> </dep:environment> <ejb:enterprise-beans> <ejb:message-driven> <ejb:ejb-name>jms/myMDB</ejb:ejb-name> <ejb:resource-adapter> <ejb:resource-link>myJmsResource</ejb:resource-link> </ejb:resource-adapter> </ejb:message-driven> </ejb:enterprise-beans> </ejb:openejb-jar> I define myJmsResource in geronimo-application.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> <app:application xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" xmlns:client="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0" xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2" xmlns:ejb="http://openejb.apache.org/xml/ns/openejb-jar-2.2" xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pers="http://java.sun.com/xml/ns/persistence" xmlns:pkgen="http://openejb.apache.org/xml/ns/pkgen-2.1" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"> <dep:environment> <dep:moduleId> <dep:groupId>myGroup</dep:groupId> <dep:artifactId>myEAR</dep:artifactId> <dep:version>1.0</dep:version> <dep:type>ear</dep:type> </dep:moduleId> </dep:environment> <app:module> <app:connector>geronimo-activemq-ra-2.1.4.rar</app:connector> <conn:connector> <dep:environment> <dep:moduleId> <dep:groupId>myGroup</dep:groupId> <dep:artifactId>myJmsResource</dep:artifactId> <dep:version>1.0</dep:version> <dep:type>rar</dep:type> </dep:moduleId> <dep:dependencies> <dep:dependency> <dep:groupId>org.apache.geronimo.configs</dep:groupId> <dep:artifactId>activemq-broker</dep:artifactId> <dep:type>car</dep:type> </dep:dependency> </dep:dependencies> </dep:environment> <conn:resourceadapter> <conn:resourceadapter-instance> <conn:resourceadapter-name>myJmsResource</conn:resourceadapter-name> <nam:workmanager> <nam:gbean-link>DefaultWorkManager</nam:gbean-link> </nam:workmanager> </conn:resourceadapter-instance> <conn:outbound-resourceadapter> <conn:connection-definition> <conn:connectionfactory-interface>javax.jms.ConnectionFactory</conn:connectionfactory-interface> <conn:connectiondefinition-instance> <conn:name>jms/myCF</conn:name> <conn:implemented-interface>javax.jms.QueueConnectionFactory</conn:implemented-interface> <conn:implemented-interface>javax.jms.TopicConnectionFactory</conn:implemented-interface> <conn:connectionmanager> <conn:xa-transaction> <conn:transaction-caching /> </conn:xa-transaction> <conn:single-pool> <conn:match-all /> </conn:single-pool> </conn:connectionmanager> </conn:connectiondefinition-instance> </conn:connection-definition> </conn:outbound-resourceadapter> </conn:resourceadapter> <conn:adminobject> <conn:adminobject-interface>javax.jms.Queue</conn:adminobject-interface> <conn:adminobject-class>org.apache.activemq.command.ActiveMQQueue</conn:adminobject-class> <conn:adminobject-instance> <conn:message-destination-name>jms/myQueue</conn:message-destination-name> <conn:config-property-setting name="PhysicalName">jms/myQueue</conn:config-property-setting> </conn:adminobject-instance> <!-- ******************************************************************** --> <!-- define referred message destination ??? --> <conn:adminobject-instance> <conn:message-destination-name>jms/anotherQueue</conn:message-destination-name> <conn:config-property-setting name="PhysicalName">jms/anotherQueue</conn:config-property-setting> </conn:adminobject-instance> </conn:adminobject> <conn:adminobject> <conn:adminobject-interface>javax.jms.Topic</conn:adminobject-interface> <conn:adminobject-class>org.apache.activemq.command.ActiveMQTopic</conn:adminobject-class> </conn:adminobject> </conn:connector> </app:module> </app:application> It seems that myMDB cannot understand what jms/anotherQueue is!!! How can I fix it? -- View this message in context: http://www.nabble.com/-Geronimo-2.1--add-a-Queue-JNDI-ref-in-ejb-jar.xml--sending-JMS-from-an-EJB-MDB-tp26025166s134p26025166.html Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.
