我在执行一些数据插入时检索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);
答案 0 :(得分:0)
我认为您不能通过创建新的UserTransactionImpl来解决问题。更好的方法可能是创建一个模拟的UserTransaction实现,然后将 绑定到jndi。
您当前绑定的那个可能取决于容器中没有的其他“魔法”