0

我在进行一些数据插入时检索 UserTransaction,并且在 jboss 中运行应用程序时代码工作正常。然而,当使用 Ecpise 运行时,它在 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);
4

1 回答 1

0

我不认为你可以通过创建一个新的 UserTransactionImpl 来解决这个问题。更好的方法可能是创建一个模拟的 UserTransaction 实现,然后将其绑定jndi。

您当前绑定的可能取决于容器外无法使用的其他“魔法”

于 2013-01-24T07:59:06.910 回答