2016-06-28 2 views
1

Je suis en train de faire une application web java EE avec un déploiement sur TomEE 7 et j'ai besoin de la source de données de tomee.xml. tomee.xml est situé dans le répertoire WEB-INF et a le contenu suivant:Comment obtenir une source de données à partir de ressource (s) dans TomEE 7?

<?xml version="1.0" encoding="UTF-8"?> 
<tomee> 
    <Resource id="rss_db_datasource" type="javax.sql.DataSource"> 
     JdbcDriver = org.hsqldb.jdbcDriver 
     JdbcUrl = jdbc:hsqldb:file:/rss_db 
     UserName = sa 
     Password = 
    </Resource> 
</tomee> 

J'essaie d'injecter en utilisant ce code source de données:

@Resource(name="rss_db_datasource", type = javax.sql.DataSource.class) 
    private DataSource dataSource; 

Lorsque je tente d'obtenir une connexion de la source de données Je reçois NullPointerException. est-ce que quelqu'un sait comment résoudre ceci?

merci

+0

Dans quel composant (servlet, ejb, etc) vous essayez d'injecter la source de données? –

+0

servlet. déjà résolu le problème. merci – VadOs

Répondre

1

META-INF -> context.xml

<?xml version='1.0' encoding='utf-8'?> 
<Context> 
    <Resource name="rss_db_datasource" type="javax.sql.DataSource" 
       username="sa" password="" 
       driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:D:/rss_db" 
      /> 
</Context> 

puis faire l'objet DataSource

 Context initCtx = new InitialContext(); 
     Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
     dataSource = (DataSource) envCtx.lookup("rss_db_datasource"); 
1

Set JTAManaged true.

<?xml version="1.0" encoding="UTF-8"?> 
<tomee> 
    <Resource id="rss_db_datasource" type="javax.sql.DataSource"> 
     JdbcDriver = org.hsqldb.jdbcDriver 
     JdbcUrl = jdbc:hsqldb:file:/rss_db 
     UserName = sa 
     Password = 
     JtaManaged true 
    </Resource> 
</tomee> 

et assurez-vous le jta-data-source dans persistence.xml est correctement configurée.

+0

merci pour la réponse mais j'utilise jdbc que je veux configurer dans tomee.xml ou même mieux dans resources.xml et que pour obtenir l'objet DataSource – VadOs

+0

semble que je fais tout correct. le problème se produit lors de l'obtention de l'objet DataSource via l'annotation @Resource – VadOs

1

La méthode recommandée pour configurer les ressources en tomee utilise

  1. tomee.xml mais on doit être dans tomee_base/conf/ou
  2. vous pouvez le faire dans WEB-INF en utilisant resources.xml (il suffit de changer la balise racine à "ressources" au lieu de "tomee").

L'erreur était probablement la localisation du fichier.

Side note:

Vous n'avez pas besoin de mettre type = javax.sql.DataSource.class au point d'injection, car il est le type de champ.