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
Vous devez vous connecter pour publier un commentaire.
Ici est une étape-par-étape de la description que j'ai utilisé pour configurer JTA en fonction de la connexion avec EclipseLink.
D'abord, assurez-vous que:
Serveur GlassFish est en place et en cours d'exécution
asadmin list-domains
Apache Derby serveur est opérationnel
NetworkServerControl.bat sysinfo -h localhost -p 1527
Ensuite, créez le Pool de connexions JDBC JDBC et des Ressources
org.apache.derby.jdbc.EmbeddedDataSource
Si vous jetez un oeil à la Console d'Administration de GlassFish (localhost:4848), vous remarquerez de nouveaux nœuds:
Comme vous pouvez le voir
jdbc/EmbeddedResource
a été attribué àEmbeddedPool
.Ensuite, créez une version minimale de persistence.xml:
Utilisation stateless/stateful session beans comme composants pour gérer les opérations de persistance (autant que je sache, c'est la stratégie privilégiée pour les applications Java EE):
Utiliser l'injection par mutateur d'affecter l'environnement contexte de nommage de la dépendance dans un champ (utile en cas de tests unitaires):
Enfin, le déploiement du produit est le suivant:
J'espère que cela aide.
OriginalL'auteur wypieprz
D'abord assurez-vous que votre derby de configuration de ressource JDBC (avec la commande shell "asadmin liste-jdbc-ressources"). Sinon, faire un avec "asadmin créez-jdbc-ressource". Pour obtenir de l'aide du type "asadmin liste-commandes".
Je reçoit exception.. Internal Exception: java.sql.SQLException: Erreur dans l'attribution d'une connexion. Cause: la Connexion ne peut pas être attribué parce que: java.net.ConnectException : Erreur de connexion au serveur localhost sur le port 1527 avec le message Connection refused: connect. Code d'erreur: 0 org.eclipse.la persistance.des exceptions.DatabaseException.sqlException(DatabaseException.java:309)
Si vous obtenez un message à propos de l'échec de se connecter au serveur sur le port 1527, alors vous n'êtes pas à l'aide intégrée Derby, vous êtes à l'aide de Client/Serveur Derby, et votre Serveur de Réseau n'est pas en place.
OriginalL'auteur Kaster
Vous êtes l'exécution de ce sous Glassfish embarqué? Si oui, le problème, c'est de voir, car il est une source de données JTA ecbDB n'est pas défini dans votre domain.xml. Dans ce cas Kaster la réponse est sur la bonne voie et que vous devez créer votre connexion intégrée de la piscine et associées à la ressource JDBC. Vous pouvez utiliser la commande asadmin ou Glassfish web de l'interface d'administration. À ce point, vous devez également supprimer les deux javax.la persistance.jdbc propriétés à partir de votre persistence.xml parce que ces paramètres seront converties par votre pool de connexion paramètres de la ressource.
OriginalL'auteur NBW