いくつかのデータ挿入を行っているときにUserTransactionを取得していますが、jbossでアプリケーションを実行するとコードは正常に機能します。ただし、Ecpliseで実行すると、JUnitテストで失敗します。
javax.naming.NameNotFoundException: Name java:comp is not bound in this Context.
トランザクションを取得するための私のコードは以下のとおりです
public static UserTransaction getUserTransation() throws CommonServiceException{
Context context = null;
UserTransaction ut = null;
try {
context = new InitialContext();
ut = (UserTransaction)
context.lookup("java:comp/UserTransaction");
} catch (NamingException e) {
throw new CommonServiceException(XMLReader.getErrorCode("Connector:getUserTransation"), e.getMessage(), e);
}
return ut;
}
java:compが見つかりません。Junitテストクラスでうまく機能させるために特にすべきことはありますか?
追加した:
以下のコードをテストクラスに追加しましたが、上記のエラーは発生しませんでした。しかし、後でトランザクションがないと言ってコミットを実行すると失敗しました。
ic = new InitialContext();
ic.createSubcontext("java:");
ic.createSubcontext("java:comp");
ut = new UserTransactionImpl();
ic.bind("java:comp/UserTransaction",ut);