I am trying to get a simple MDB to work using annotations. However, when I deploy it into Geronimo 2.0, I get the following error. This is with the ConnectionFactory and Queue set up in Geronimo already:

Error: Unable to distribute order-ear-2.0-SNAPSHOT.ear: Unable to
resolve resource reference 'jms/CommonConnectionFactory' (Could not
auto-map to resource.  Try adding a resource-ref mapping to your
Geronimo deployment plan.

My deployment plan for the ConnectionFactory and Queues looks like this:

<connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.1";>
<dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2";>
       <dep:moduleId>
           <dep:groupId>org.apache.geronimo.samples</dep:groupId>
           <dep:artifactId>jms-resources</dep:artifactId>
           <dep:version>1.2</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>
   <resourceadapter>
       <resourceadapter-instance>
<resourceadapter-name>CommonConnectionFactory</resourceadapter-name> <config-property-setting name="Password">geronimo</config-property-setting> <config-property-setting name="UserName">geronimo</config-property-setting> <nam:workmanager xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1";>
               <nam:gbean-link>DefaultWorkManager</nam:gbean-link>
           </nam:workmanager>
       </resourceadapter-instance>
       <outbound-resourceadapter>
           <connection-definition>
<connectionfactory-interface>javax.jms.QueueConnectionFactory</connectionfactory-interface>
               <connectiondefinition-instance>
                   <name>CommonConnectionFactory</name>
                   <connectionmanager>
                       <xa-transaction>
                           <transaction-caching/>
                       </xa-transaction>
                       <single-pool>
                           <match-one/>
                       </single-pool>
                   </connectionmanager>
               </connectiondefinition-instance>
           </connection-definition>
       </outbound-resourceadapter>
   </resourceadapter>
   <adminobject>
       <adminobject-interface>javax.jms.Queue</adminobject-interface>
<adminobject-class>org.activemq.message.ActiveMQQueue</adminobject-class>
       <adminobject-instance>
           <message-destination-name>OrderQueue</message-destination-name>
<config-property-setting name="PhysicalName">OrderQueue</config-property-setting>
       </adminobject-instance>
       <adminobject-instance>
<message-destination-name>ConsignmentQueue</message-destination-name> <config-property-setting name="PhysicalName">ConsignmentQueue</config-property-setting>
       </adminobject-instance>
   </adminobject>
   <adminobject>
       <adminobject-interface>javax.jms.Topic</adminobject-interface>
<adminobject-class>org.activemq.message.ActiveMQTopic</adminobject-class>
   </adminobject>
</connector>

I have the MDB with the following annotation

@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"), @ActivationConfigProperty(propertyName="destination", propertyValue="jms/OrderQueue")
})

I have a Servlet with the following annotated Queue and ConnectionFactory:

   @Resource(mappedName="jms/OrderQueue")
   private static Queue receivingQueue;
   @Resource(mappedName="jms/CommonConnectionFactory")
   private static QueueConnectionFactory factory;

I have the geronimo-web.xml file which has the following:

 <resource-ref>
   <ref-name>jms/CommonConnectionFactory</ref-name>
   <resource-link>CommonConnectionFactory</resource-link>
 </resource-ref>

 <resource-env-ref>
      <ref-name>jms/OrderQueue</ref-name>
      <admin-object-link>OrderQueue</admin-object-link>
 </resource-env-ref>

However, I think that these references are unnecessary when the annotations are present. But I am new to EJBs in general so I am not sure.

And I also have a web.xml with the following references too

   <resource-ref>
       <res-ref-name>jms/CommonConnectionFactory</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-destination-ref> <message-destination-ref-name>jms/OrderQueue</message-destination-ref-name>
       <message-destination-type>javax.jms.Queue</message-destination-type>
       <message-destination-usage>Produces</message-destination-usage>
       <message-destination-link>OrderQueue</message-destination-link>
   </message-destination-ref>

Am I missing something? I would appreciate any type of feedback.

Thanks,
Viet Nguyen

Reply via email to