Le partage d'une unité de persistance à travers des composants dans un .fichier ear
Dans une application Java EE 6 où je suis en utilisant .l'oreille de l'emballage, j'aimerais créer une unité de persistance qui peut être consulté à partir de composants différents .les fichiers jar.
Cependant, je ne suis pas sûr de savoir comment définir cette unité de persistance. Avec le @PersistenceContext annotation de la recherche ne réussit si le nom correspond à une unité de persistance définis dans le local persistence.xml fichier.
Est-il possible de se référer à l'externe des unités de persistance?
Vous devez vous connecter pour publier un commentaire.
Voici les articles pertinents de la JPA 2.0 spécification:
Et plus tard:
Pour résumer, vous devriez être en mesure de définir vos entités et de l'unité de persistance au plus haut niveau de l'OREILLE et de les utiliser à partir d'autres modules.
Je ne suis pas sûr de comprendre ce que vous avez essayé et ce problème(s) que vous avez relevés.
/lib
, et annotéentityManager
avec@PersistenceContext(unitName = "lib/myPersistence.jar#PU-name")
et il s'est injecté correctement. Merci pour l'astuce!Le problème pourrait être résolu en plaçant un persistence.xml dans un fichier jar qui est situé dans l'oreille le répertoire lib.
L'persistence.xml doit contenir les fichiers jar qui comprend les Entités.
J'ai dû donner le chemin relatif vers le fichier jar.
Mon oreille irectory structure
Mon persistence.xml pour jboss 7.1.1
Espère que cette aide
Tout ce que vous devez
Exemple de travail de l'OREILLE de mise en page pour Glassfish:
Modules EJB peuvent être soit des archives jar ou explosé répertoires.
Dans ce cas, votre
persistence.xml
peut-être comme:Vous devez mettre à jour
<jar-file>
références si vous utilisez le module de contrôle de version (par exempleejb1-module-1.0-SNAPSHOT.jar
).Abstraite des objets avec
@MappedSuperclass
d'annotation et deEntityManager
injection peut être placé dans n'importe quel externes jar. Ce pot n'a pas besoin d'être mentionné danspersistence.xml
. Par exemple, vous pouvez créercore-module.jar
avecPersistableEntity.java
:Et
PersistableEntityManager.java
:Ce
core-module.jar
pourrait être utilisé par tous vos projets avec les différentes unités de persistance.Vous venez d'hériter de vos Entités et les Ejb et d'éviter les passe-partout.
Découvrez exemple bilionix-core sur github.
PersistableEntityManager
? Il sera celui par défaut? E. g. celle qui est définie dansstandalone.xml
(dans le cas de WildFly) comme ceci:<subsystem xmlns="urn:jboss:domain:ee:4.0"> ... <default-bindings datasource="java:jboss/datasources/ExampleDS" .../> ... </subsystem>
?Essayer avec ceci:
Configurer l'OREILLE application.xml fichier de cette façon:
http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"
version="7">
YourEEApplication
Dans votre EJB projets YourEJBModule1, YourEJBModule2... et YourEJBModuleX:
Injecter Contexte de Persistance sans le nombloc propriété:
YourEJBModule1:
YourEJBModule2:
YourEJBModuleX:
Dans la base de données existe différents schémas, l'un par module EJB, accès par jta-data-source
(Déployé dans Glassfish 4)
Voici ce que j'ai fait.
1) la persistance des fichiers de configuration dans un fichier jar. Le fichier jar contiendra:
2) Paquet de l'entité associée à des classes dans un autre bol:
La Contexte de Persistance doit maintenant être accessible à tous les EJB et les Applications Web inclus dans votre Application d'Entreprise.
Que je voulais réaliser partagé persistance EJB module sans OREILLE projet.
Cela est possible par
Amusez-vous!