2012-03-13 12 views
0

私は、WebSphere 8の埋め込み可能なEJBコンテナを使用して、JUnit4でEJBの単体テストを記述しています。 MyEclipseには、EJBプロジェクトを参照する簡単なJavaプロジェクトがあります。 EJBプロジェクトは永続性のためにHibernate 3.5を使用し、hibernate.cfg.xmlのデータソースJNDIはjdbc/connectionnameです。標準のWebSphere 8で実行すると、Webコンソールを介してデータソースをセットアップし、すべて正常に動作します。組み込み可能なコンテナにデータソースを持つembeddable.propertiesで設定されています。再度、他のデータソース情報(ユーザー名、パスワードなど)と ビーンの間ではjdbc/connectionNameのよう埋め込み可能なWebSphere EJBコンテナでデータソースJNDIを設定する

名#TestProjectName#ClassNameForTests.ResourceRef.BindingName.jdbc/connectionNameの=はjdbc/connectionNameの

マイembeddable.properties次のとおりです。

DataSource.ds1.name=jdbc/connectionname 
DataSource.ds1.className=com.ibm.db2.jcc.DB2Driver 
DataSource.ds1.createDatabase=create 
DataSource.ds1.databaseName=DBNAME 
DataSource.ds1.user=dbusername 
DataSource.ds1.password=dbpassword 
DataSource.ds1.transactional=true 
DataSource.ds1.createDatabase=create 

組み込み可能なコンテナが正常に起動し、EJBがJNDI経由なく、メソッド呼び出しがIなされた時点で成功していますエラー:

ERROR org.hibernate.connection.DatasourceConnectionProvider.configure:78 - Could not find datasource: jdbc/connectionname 
javax.naming.NameNotFoundException: Name jdbc not found in context "serverlocal:CELLROOT/SERVERROOT". 
at com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1969) 
at com.ibm.ws.naming.ipbase.NameSpace.retrieveBinding(NameSpace.java:1376) 
at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1219) 
at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:1141) 
at com.ibm.ws.naming.urlbase.UrlContextImpl.lookupExt(UrlContextImpl.java:1436) 
at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1314) 
at javax.naming.InitialContext.lookup(InitialContext.java:436) 
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75) 

アドバイスをいただければ幸いです。

答えて

0

jdbc/connectionnameデータソースは埋め込み可能なプロパティで構成されていますか? InfoCenterのEmbeddable EJB container configuration propertiesトピックを参照してください。プロパティは次のようになります。

DataSource.ds1.name=jdbc/connectionname 
DataSource.ds1.className=org.apache.derby.jdbc.EmbeddedXADataSource 
DataSource.ds1.createDatabase=create 
DataSource.ds1.databaseName=jtest1 

既にご使用の場合は、使用しているプロパティを表示できますか? Hibernateはあなたのリソース参照を使用していないので、ResourceRef.BindingNameはこの場合は何の効果もありません。

+0

ご返信ありがとうございます。私はすでにこれを持っています。詳細については上記の更新された質問をご確認ください。 – Alex

+0

これらのプロパティは動作するはずです。 JVMの起動時に現在の作業ディレクトリにembeddable.propertiesがありますか?これらのプロパティをEJBContainer.createEJBContainer(Map)メソッドに明示的に渡すとどうなりますか? –

+0

ありがとう@bkail。プロパティをマップとして追加するとうまくいきます。しかし、今私は修正することができない[このエラー](http://stackoverflow.com/questions/9772266/websphere-embeddable-ejb-container-throws-java-lang-classnotfoundexception-com)を取得しています。 – Alex

関連する問題