Bonjour,
J'aurais besoin de conseils ou de pistes pour résoudre le problème suivant :
Environnement : WebLogic 10.3, JPA (provider = openjpa 1.2), EJB 3.0, maven 3
Initialement, j'avais un EJB-JAR (appelons le monBelEJBJAR), qui rendait certains services à une application (appelons la appA), et qui gérait 2 entities. Il possédait son persistence.xml où était définit le persistenceUnit utilisé dans l'EJB, persistenceUnit où était renseigné la datasource (appelons la datasourceA).
Niveau DB, les tables correspondantes se trouvaient dans le schéma de l'application (appelons le schémaA).
Tout ça marchait comme sur des roulettes.
Mais voilà le hic : pour une autre application (appB) déployée sur le même serveur WL, j'aurais besoin des services de monBelEJBJAR. Seulement, j'aimerais que les entities soient persistées dans schémaB (schéma de appB), et non dans schémaA). Et c'est là qu'est tout le noeud de mon problème : je ne peux pas garder la même datasource dans le persistenceUnit.
J'ai quelques pistes, mais aucune qui ne me semble être LA solution...
1. Via Maven, aller placer dans monBelEJBJAR le persistence.xml où le nom JNDI de la datasource est une property qui serait différente pour appA et appB
2. Rendre le scope du persistenceUnit global, en le mettant dans un jar se trouvant dans le /lib de chaque ear
3. Utilisation de EntityManagerFactory??
4. ???
Pour le 1 et le 2, ce qui ne me plait pas dans l'histoire, c'est de devoir sortir le persistenceUnit du jar qui va l'utiliser. Pour le moment, je ne peux pas utiliser la solution 2 car j'ai une dépendance sur un autre EJBJAR sur lequel je n'ai pas la main et qui ne définit pas de unitName dans son annotation @PersistenceContext --> il trouve donc 2 persistenceUnits.
La demande de modification pour ajouter le unitName a été demandée, mais Dieu sait quand elle sera faite...
Bref, auriez-vous des suggestions, des conseils, des remarques, des pistes pour résoudre ce problème de manière efficace et "propre"?
Si mes explications ne sont pas assez claires, n'hésitez pas à me demander plus d'informations.
Merci de m'avoir lu.
Bien à vous,
Romain
Partager