2016-06-28 10 views
1

私はTomEE 7へのデプロイメントでjava EE Webアプリケーションをやっているので、tomee.xmlからデータソースを取得する必要があります。 tomee.xmlは、WEB-INFディレクトリに配置し、以下の内容がありますされています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> 

私はこのコードを使用してデータソースを注入しようとしている:

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

私は、データソースから接続を取得しようとすると、私はNullPointerExceptionを取得します。誰もこれを解決する方法を知っていますか?

がtrueに設定さJTAManagedあなた

+0

データソースを注入しようとしているコンポーネント(サーブレット、ejbなど)にはどのようなものがありますか? –

+0

サーブレット。すでに問題を解決しました。感謝 – VadOs

答えて

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> 

、その後取得DataSourceオブジェクト

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

に感謝します。

また、persistence.xmlのjta-data-sourceが正しく設定されていることを確認してください。

+0

答えをありがとうが、私はtomee.xmlで設定するjdbcを使用しています。さらに、resources.xmlをよく使って、DataSourceオブジェクトを取得します。 – VadOs

+0

私はすべて正しいことをしています。 @ResourceアノテーションでDataSourceオブジェクトを取得しているときに問題が発生する – VadOs

1

  1. tomee.xmlを使用しているtomee内のリソースを設定するための推奨される方法が、このtomee_base/conf /にある必要があります。
  2. resources.xmlを使用してWEB-INFで行うことができます(ルートタグを "tomee"ではなく "resources"に変更するだけです)。

エラーは、ファイルのローカライゼーションの可能性があります。

サイドノート:あなたはそれがフィールドタイプであるため、注入点でtype = javax.sql.DataSource.classを設定する必要はありません

関連する問題