我正在检索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);发布于 2013-01-24 07:59:06
我认为你不能仅仅通过创建一个新的UserTransactionImpl来解决这个问题。更好的方法可能是创建一个模拟的UserTransaction实现,然后将其绑定到jndi。
您目前正在绑定的对象可能取决于其他不在容器中可用的“魔术”。
https://stackoverflow.com/questions/14494724
复制相似问题