[Java JPA] Obtenir les infos sur la dataSource/persistence.xml ?

Obtenir les infos sur la dataSource/persistence.xml ? [Java JPA] - Java - Programmation

Marsh Posté le 02-07-2007 à 18:36:19    

Bonjour
 
Je suis en stage, et je ne maitrise pas complètement J2EE 5 et particulièrement JPA. Je cherche une méthode permettant d'obtenir la dataSource de l'application sans utiliser de valeurs en dur du type (jdbc:....). Je cherche comment obtenir les informations présent dans persistence.xml (la dataSource) de manière dynamique (méthode de type DataSource maDataSource = .....getDataSource ()...)
 
Je ne peux pas la mettre en dur, car je dois ensuite la transmettre en "paramètre" à une autre application (Jasper/Ireport) via une méthode de la librairie Jasper. Et les règles de développement imposé pour l'application dise que ce genre de données ne doit pas être en dur.
 
J'espère être assez compréhensible.
 
Et que vous pourrez m'aider ?

Reply

Marsh Posté le 02-07-2007 à 18:36:19   

Reply

Marsh Posté le 02-07-2007 à 19:29:08    

euh, tu sais récupérer le DataSource ou c'est ça qui te pose problème?

Reply

Marsh Posté le 02-07-2007 à 20:20:37    

C'est ce qui me pose problème.
Je ne trouve pas la méthode adéquate. Si tu peux m'aider, ça serait sympa. Ca me permetrait d'avancer !

Reply

Marsh Posté le 02-07-2007 à 21:36:33    

en général on récupere ça par jndi, ou par injection, si t'es en j2ee5 et que t'as la chance de bosser avec un serveur qui comprenne ça...
 
mais si tu utilises jpa, qqchose me dit que ptet tu devrais pas passer ta ds a jasperreports, mais plutot un truc capable de causer a ton systeme jpa

Reply

Marsh Posté le 02-07-2007 à 21:38:53    

Reply

Marsh Posté le 03-07-2007 à 08:45:58    

En fait sous Ireport, je fais des requêtes SQL classiques (choix de mon responsable de stage, vu la complexité des requêtes : jointures,conditions...) Donc je ne cherche pas à passer une connexion JPA classiques, mais plutot les paramètres de la connexion à la BD présente dans le persistence.xml.  
 
Peut être que PersistenceUnitInfo.getProperties() est une solution, je regarde.

Reply

Marsh Posté le 03-07-2007 à 10:02:18    

ha ben PersistenceUnitInfo.getJtaDataSource()  hein [:pingouino]
(je connais pas c't'api)

Reply

Marsh Posté le 03-07-2007 à 11:08:42    

En fait ça marche pas, ce que je voulais faire.
Et quand je parlais de persistanceUnitInfo..., il s'agit de javax.persistance.PersistenceUnitInfo (interface). Mais de ce coté là, c pas ça encore. Je suis ouvert à toute solution ! Merci

Reply

Marsh Posté le 03-07-2007 à 11:48:33    

ben t'arrives a recuperer une PersistenceUnitInfo ou bien ?

Reply

Marsh Posté le 03-07-2007 à 14:11:32    

Nan, ça plante à chaque fois. Je suis en stage, et je débute sur l'API JPA... Donc je suis pas hyper au point sur ce sujet.

Reply

Marsh Posté le 03-07-2007 à 14:11:32   

Reply

Marsh Posté le 03-07-2007 à 14:41:53    

ça "plante"? :D

 

et ton maitre de stage, il ferait pas un peu son boulot, au lieu de te laisser trainer sur des forums et bosser gratuit? :D


Message édité par the real moins moins le 03-07-2007 à 14:42:36
Reply

Marsh Posté le 03-07-2007 à 15:20:10    

Que veux tu. Sois je suis pas doué. Mais bon, j'essaye plein de trucs.
Et mon maitre est absent ! Merci qd même.

Reply

Marsh Posté le 05-07-2007 à 08:33:22    

C'était tout simple, je sais pas pourquoi j'ai autant galéré.
Voici la solution
 
Connection conn = null;
Context ctx = new InitialContext();
 
// On recherche la dataSource à partir de son nom
DataSource ds = (DataSource) ctx.lookup("jdbc/...));
 
// On vérifie que la dataSource existe
if (ds != null) {
conn = ds.getConnection();
}

Reply

Marsh Posté le 05-07-2007 à 11:10:27    

bah alors qu'est-ce que je disais :O jndi :O
 
si la ds n'existe pas, t'aurais une exception ;)
( NameNotFoundException je crois)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed