2012-03-16 2 views
1

Je dois gérer une API qui doit être fournie en tant que paramètre DataSource. Le problème est que j'y accède à partir d'un contexte qui fournit un EntityManager ou un PersistentContext, qui ne semble pas exposer de DataSource à travers ses méthodes. Comment est-il possible de récupérer par programme la DataSource sous-jacente à partir d'un EntityManager?Obtenir javax.sql.DataSource à partir de javax.persistence.EntityManager

+0

quelle implémentation jpa avez-vous utilisé? Comment avez-vous eu votre EM? par exemple. via un cadre comme le printemps? – Kent

+0

J'utilise Hibernate comme implémentation JPA. Je n'utilise pas Spring et j'obtiens mon EM en annotant une propriété avec @EntityManager. Dans mon cas, l'utilisation de Spring IOC n'est pas une option. – 1tox

+1

Vous pouvez essayer d'injecter DataSource par l'annotation @Resource ou l'obtenir via la recherche JNDI. –

Répondre

2

Solution injectera ainsi datasource:

@Resource(name = "jdbc/...") 
private DataSource dataSource; 

puis fournir la source de données comme argument à l'API.

+0

Mais seulement dans un conteneur. Comment le récupérer dans une application CLI? (oui, vous pouvez avoir jee dans les applications CLI) –

Questions connexes