On Jun 8, 2007, at 8:12 AM, Erik B. Craig wrote:
I'm having a good amount of troubles trying to get an EAR deployed
from a relatively small Geronimo application on geronimo 1.1.1
Here is the output I'm getting
C:\geronimo-1.1.1\bin>deploy --user system --password manager
deploy c:\j2g-demo
-app\bin\geronimo-application.xml c:\j2g-demo-app\bin\TravelApp.ear
Using GERONIMO_BASE: C:\geronimo-1.1.1
Using GERONIMO_HOME: C:\geronimo-1.1.1
Using GERONIMO_TMPDIR: C:\geronimo-1.1.1\var\temp
Using JRE_HOME: C:\Program Files\Java\jdk1.5.0_11
Error: Unable to distribute TravelApp.ear: Unable to resolve
resource reference 'jdbc/DefaultDS' (Could not auto-map to
resource.
Try adding a resource-ref mapping to your Geronimo deployment
plan.)
I'm relatively sure this issue is coming from the openejb-jar.xml
file, and in the cmp-connection-factory resource-link tag at that.
Here is that segment of that particular XML
<naming:cmp-connection-factory>
<naming:resource-link>DefaultDS</naming:resource-link>
</naming:cmp-connection-factory>
This isn't a jndi based resource-ref, so it's not the source of the
problem. In 1.1.1 we also never try to add "standard prefixes" like
jdbc/ for datasources.
(The reason I believe it to be here is due to the fact that
changing defaultds in that tag changes the defaultds in the
deployment error)
Are you sure?
I think the problem might be that in the spec dd one of your resource-
refs is for jdbc/DefaultDS whereas in the plan below you map jdbc/
TravelDB
just a guess...
Personally I usually set up a database pool with the same name as in
the resource-ref itself so I don't have to do the mapping since it is
such a pain to set up.
thanks
david jencks
I've tried to do as it recommends, with adding a resource-ref
mapping, but can't quite figure out the proper location/syntax for it
I'm GUESSING there is something that I'm just missing due to
inexperience, and am hoping one of you guys that's a good deal more
seasoned might be able to point it out ot me.
Thanks!
For reference here is a copy of the entire openejb-jar.xml file.
-------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar xmlns=" http://www.openejb.org/xml/ns/openejb-jar-2.1"
xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1 "
xmlns:security="http://geronimo.apache.org/xml/ns/security-1.1"
xmlns:sys=" http://geronimo.apache.org/xml/ns/deployment-1.1">
<sys:environment>
<sys:moduleId>
<sys:groupId>j2g.java</sys:groupId>
<sys:artifactId>ejb-module</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>jar</sys:type>
</sys:moduleId>
<sys:dependencies>
<sys:dependency>
<sys:groupId>j2g</sys:groupId>
<sys:artifactId>jms</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>rar</sys:type>
</sys:dependency>
<sys:dependency>
<sys:groupId> j2g.java</sys:groupId>
<sys:artifactId>DefaultDS</sys:artifactId>
</sys:dependency>
<sys:dependency>
<sys:groupId>j2g</sys:groupId>
<sys:artifactId>security</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>rar</sys:type>
</sys:dependency>
</sys:dependencies>
</sys:environment>
<naming:cmp-connection-factory>
<naming:resource-link>DefaultDS</naming:resource-link>
</naming:cmp-connection-factory>
<enforce-foreign-key-constraints/>
<enterprise-beans>
<entity>
<ejb-name>CustomerEJB</ejb-name>
<table-name>Customer</table-name>
<cmp-field-mapping>
<cmp-field-name>id</cmp-field-name>
<table-column>ID</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>lastName</cmp-field-name>
<table-column>LAST_NAME</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>firstName</cmp-field-name>
<table-column>FIRST_NAME</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>email</cmp-field-name>
<table-column>EMAIL</table-column>
</cmp-field-mapping>
<resource-ref>
<ref-name>jdbc/TravelDB</ref-name>
<pattern>
<groupId> j2g.java</groupId>
<artifactId>DefaultDS</artifactId>
<name>DefaultDS</name>
</pattern>
</resource-ref>
</entity>
<entity>
<ejb-name>AgentEJB</ejb-name>
<table-name>Agent</table-name>
<cmp-field-mapping>
<cmp-field-name>id</cmp-field-name>
<table-column>ID</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>firstName</cmp-field-name>
<table-column>FIRST_NAME</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>lastName</cmp-field-name>
<table-column>LAST_NAME</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>organization</cmp-field-name>
<table-column>ORGANIZATION</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>login</cmp-field-name>
<table-column>LOGIN</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>passwordHash</cmp-field-name>
<table-column>PASSWORDHASH</table-column>
</cmp-field-mapping>
</entity>
<entity>
<ejb-name>CruiseEJB</ejb-name>
<table-name>Cruise</table-name>
<cmp-field-mapping>
<cmp-field-name>id</cmp-field-name>
<table-column>ID</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>destination</cmp-field-name>
<table-column>DESTINATION</table-column>
</cmp-field-mapping>
</entity>
<entity>
<ejb-name>CabinEJB</ejb-name>
<table-name>Cabin</table-name>
<cmp-field-mapping>
<cmp-field-name>id</cmp-field-name>
<table-column>ID</table-column>
</cmp-field-mapping>
<cmp-field-mapping>
<cmp-field-name>number</cmp-field-name>
<table-column>NUMBER</table-column>
</cmp-field-mapping>
</entity>
<entity>
<ejb-name>ReservationEJB</ejb-name>
<table-name>Reservation</table-name>
<cmp-field-mapping>
<cmp-field-name>id</cmp-field-name>
<table-column>ID</table-column>
</cmp-field-mapping>
<resource-ref>
<ref-name>jdbc/TravelDB</ref-name>
<pattern>
<groupId>j2g.java</groupId>
<artifactId>DefaultDS</artifactId>
<name>DefaultDS</name>
</pattern>
</resource-ref>
</entity>
<entity>
<ejb-name>TicketEJB</ejb-name>
<table-name>Ticket</table-name>
<cmp-field-mapping>
<cmp-field-name>id</cmp-field-name>
<table-column>ID</table-column>
</cmp-field-mapping>
<resource-ref>
<ref-name>jdbc/TravelDB</ref-name>
<pattern>
<groupId>j2g.java</groupId>
<artifactId>DefaultDS</artifactId>
<name>DefaultDS</name>
</pattern>
</resource-ref>
</entity>
<message-driven>
<ejb-name>ReservationProcessorEJB</ejb-name>
<resource-adapter>
<resource-link>j2g.queues</resource-link>
</resource-adapter>
<activation-config>
<activation-config-property>
<activation-config-property-name>destination</activation-
config-property-name>
<activation-config-property-value>CabinReservationQueue</
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>
<ref-name>mail/JavaMailSession</ref-name>
<resource-link>mailSession</resource-link>
</resource-ref>
</message-driven>
</enterprise-beans>
<relationships>
<ejb-relation>
<ejb-relation-name>Cruise-Cabin</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Cruise-has-many-Cabins</ejb-
relationship-role-name>
<relationship-role-source>
<ejb-name>CruiseEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>cabins</cmr-field-name>
</cmr-field>
<role-mapping>
<cmr-field-mapping>
<key-column>ID</key-column>
<foreign-key-column>cruise</foreign-key-column>
</cmr-field-mapping>
</role-mapping>
</ejb-relationship-role>
</ejb-relation>
<ejb-relation>
<ejb-relation-name>Customer-Reservation</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Customer-has-many-reservations</
ejb-relationship-role-name>
<relationship-role-source>
<ejb-name>CustomerEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>reservations</cmr-field-name>
</cmr-field>
<role-mapping>
<cmr-field-mapping>
<key-column>ID</key-column>
<foreign-key-column>customer</foreign-key-column>
</cmr-field-mapping>
</role-mapping>
</ejb-relationship-role>
</ejb-relation>
<ejb-relation>
<ejb-relation-name>Customer-Ticket</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Customer-has-many-tickets</ejb-
relationship-role-name>
<relationship-role-source>
<ejb-name>CustomerEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>tickets</cmr-field-name>
</cmr-field>
<role-mapping>
<cmr-field-mapping>
<key-column>ID</key-column>
<foreign-key-column>customer</foreign-key-column>
</cmr-field-mapping>
</role-mapping>
</ejb-relationship-role>
</ejb-relation>
<ejb-relation>
<ejb-relation-name>Ticket-Agent</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Ticket-sells-by-agent</ejb-
relationship-role-name>
<relationship-role-source>
<ejb-name>TicketEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>agent</cmr-field-name>
</cmr-field>
<foreign-key-column-on-source/>
<role-mapping>
<cmr-field-mapping>
<key-column>ID</key-column>
<foreign-key-column>agent</foreign-key-column>
</cmr-field-mapping>
</role-mapping>
</ejb-relationship-role>
</ejb-relation>
<ejb-relation>
<ejb-relation-name>Ticket-Cruise</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Cruise-has-many-tickets</ejb-
relationship-role-name>
<relationship-role-source>
<ejb-name>TicketEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>cruise</cmr-field-name>
</cmr-field>
<foreign-key-column-on-source/>
<role-mapping>
<cmr-field-mapping>
<key-column>ID</key-column>
<foreign-key-column>cruise</foreign-key-column>
</cmr-field-mapping>
</role-mapping>
</ejb-relationship-role>
</ejb-relation>
<ejb-relation>
<ejb-relation-name>Ticket-Cabin</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Ticket-for-one-cabin</ejb-
relationship-role-name>
<relationship-role-source>
<ejb-name>CabinEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>ticket</cmr-field-name>
</cmr-field>
<role-mapping>
<cmr-field-mapping>
<key-column>ID</key-column>
<foreign-key-column>cabin</foreign-key-column>
</cmr-field-mapping>
</role-mapping>
</ejb-relationship-role>
</ejb-relation>
<ejb-relation>
<ejb-relation-name>Reservation-Cruise</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Cruise-has-many-reservations</
ejb-relationship-role-name>
<relationship-role-source>
<ejb-name>ReservationEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>cruise</cmr-field-name>
</cmr-field>
<foreign-key-column-on-source/>
<role-mapping>
<cmr-field-mapping>
<key-column>ID</key-column>
<foreign-key-column>cruise</foreign-key-column>
</cmr-field-mapping>
</role-mapping>
</ejb-relationship-role>
</ejb-relation>
<ejb-relation>
<ejb-relation-name>Reservation-Cabin</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Cabin-has-Reservation</ejb-
relationship-role-name>
<relationship-role-source>
<ejb-name>CabinEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>reservation</cmr-field-name>
</cmr-field>
<role-mapping>
<cmr-field-mapping>
<key-column>ID</key-column>
<foreign-key-column>cabin</foreign-key-column>
</cmr-field-mapping>
</role-mapping>
</ejb-relationship-role>
</ejb-relation>
</relationships>
</openejb-jar>
--
Erik B. Craig