Comment configurer une source de données JTA dans EclipseLink/JPA 2.0 dans une application Java EE 6 pour le derby de base de données intégré?

Je ne suis pas en mesure de trouver ecbDB source de données JTA dans l'unité de test.

Pour RESOURCE_LOCAL la même persistence.xml des œuvres. Seulement à l'intérieur d'un conteneur d'EJB, il ne parvient pas à trouver une source de données JTA.

- Je obtenir de l'exception suivante lorsque l'unité de test est exécuté..

SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
java.lang.RuntimeException: javax.naming.NamingException: Lookup failed for 'ecbDB' in SerialContext  [Root exception is javax.naming.NameNotFoundException: ecbDB not found]
 at org.glassfish.persistence.jpa.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:111)

Est ici 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_2_0.xsd"
    version="2.0">

    <persistence-unit name="ecbPU" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>ecbDB</jta-data-source>
        <mapping-file>META-INF/orm.xml</mapping-file>

        <properties>
            <property
              name="javax.persistence.jdbc.driver"
              value="org.apache.derby.jdbc.EmbeddedDriver" />
            <property
              name="javax.persistence.jdbc.url"
              value="jdbc:derby:target/ecbDB;create=true" />

            <!-- EclipseLink 2.0 properties -->
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
            <property name="eclipselink.ddl-generation.output-mode"
                      value="sql-script" />
            <!-- <property name="eclipselink.ddl-generation.output-mode" value="database"
             /> -->
            <property name="eclipselink.application-location" value="./target/ddl" />
            <property name="eclipselink.create-ddl-jdbc-file-name"
                      value="create.sql" />
            <property name="eclipselink.drop-ddl-jdbc-file-name" value="drop.sql" />
            <property name="eclipselink.logging.level" value="ALL" />
            <property name="eclipselink.logging.file" value="./target/eclipselink.logs" />
        </properties>
    </persistence-unit>
</persistence>
De cette façon, ce code a été de travailler avec jpa1.0 avec openjpa. mais avec eclipselink et jpa2.0; je pense qu'avec le code ci-dessus la desource n'est pas définie et enregistrée.

OriginalL'auteur | 2011-01-21