Hello,

My scenario is this:

I have a library with entities (as in @Entity objects) containing my domain 
model. I want to declare a container-managed persistence unit in a standalone 
WAR (not EAR), using that library (the persistence.xml must NOT be in the 
library, but the WAR). So, I proceed as follows (this is valid as far as I 
know, base on J2EE5 specs):

1) I have declared a data source in geronimo-web.xml and web.xml (see below for 
file contents).
2) I put my library (as a jar) in my WAR's WEB-INF/lib and added a 
WEB-INF/classes/META-INF/persistence.xml in the WAR (see below for file 
contents).

Deployment after performing step (1) worked and I could see the data source 
registered in the console.

Deployment after performing step (2) fails; from what I understand from the 
error (see below), geronimo claims the data-source from step (1) does not 
exist. I assume that geronimo tries to create the persistence context prior to 
registering the data source? (i.e. it processes persistence.xml prior to apply 
the configuration from web.xml and geronimo-web.xml).

What do I need to configure this properly. My deployment descriptors and the 
error trace follow:

persistence.xml
-------------------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<persistence
    xmlns="http://java.sun.com/xml/ns/persistence";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xsi:schemaLocation="
        http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";
    version="1.0">
    <persistence-unit name="appPersistenceUnit" transaction-type="JTA">
        <jta-data-source>jdbc/AppDataSource</jta-data-source>
        <jar-file>app-entities.jar</jar-file>
    </persistence-unit>
</persistence>


web.xml
-------------------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xsi:schemaLocation="
        http://java.sun.com/xml/ns/j2ee
        http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd";
    version="2.4">

    <display-name>App</display-name>

    <!-- Unrelated Spring contextListener and Wicket filter configuration here
    have been supresed -->

    <resource-ref>
        <res-ref-name>jdbc/AppDataSource</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
<!--
    Ultimately I want to do this, but I can't get persistence.xml to work...
    <persistence-unit-ref>
        
<persistence-unit-ref-name>persistence/appPersistenceUnit</persistence-unit-ref-name>
        <persistence-unit-name>appPersistenceUnit</persistence-unit-name>
    </persistence-unit-ref>
-->
</web-app>


geronimo-web.xml
-------------------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1";
    xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.2";
    xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0";
    xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2";>

    <sys:environment>
        <sys:moduleId>
            <sys:groupId>app</sys:groupId>
            <sys:artifactId>app-frontend</sys:artifactId>
            <sys:version>0.0.1</sys:version>
            <sys:type>car</sys:type>
        </sys:moduleId>
        <sys:dependencies>
            <!-- Need the embedded Derby -->
            <sys:dependency>
                <sys:groupId>org.apache.geronimo.configs</sys:groupId>
                <sys:artifactId>
                    system-database
                </sys:artifactId>
            </sys:dependency>
        </sys:dependencies>
    </sys:environment>

    <context-root>/app</context-root>

    <!-- Ultimately, I want to register the PU in JNDI,
    but persistence.xml does not work
    <naming:persistence-unit-ref>
        
<naming:persistence-unit-ref-name>persistence/appPersistenceUnit</naming:persistence-unit-ref-name>
        
<naming:persistence-unit-name>persistence/appPersistenceUnit</naming:persistence-unit-name>
    </naming:persistence-unit-ref>
    -->

    <naming:resource-ref>
        <naming:ref-name>jdbc/AppDataSource</naming:ref-name>
        <naming:resource-link>SystemDatasource</naming:resource-link>
    </naming:resource-ref>
</web-app>

__________________________________________________
Χρησιμοποιείτε Yahoo!;
Βαρεθήκατε τα ενοχλητικά μηνύματα (spam);   Το Yahoo! Mail διαθέτει την 
καλύτερη δυνατή προστασία κατά των ενοχλητικών μηνυμάτων  
http://mail.yahoo.gr

Reply via email to