You need to include the resource plan as a parent of your web-app in
the geronimo-web environment element. If this doesn't help please
show your entire geroniimo-web.xml.
You can eliminate the resource-ref type stuff from your geronimo-
web.xml if you make the names exactly the same .... e.g. naming the
connection factory "jms/CommonConnectionFactory"
There's some support for automatically mapping "common prefixes" but
I don't think I got to jms yet :-)
hope this helps
david jencks
On Jun 13, 2007, at 10:21 AM, Viet Hung Nguyen wrote:
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