相关疑难解决方法(0)

OpenEJB本地客户端注入失败

请注意,我正在非常仔细地反映这里给出例子.

事实上,我的情况有点简单,因为我现在甚至没有使用持久性单元进行测试.我的测试项目提供了一个简单的MDB和一个会话bean; MDB和会话bean都正常加载,并且可以在没有注入的情况下成功测试(以约束的方式).

@LocalClient在单元测试中使用注释的建议注入失败,出现已知错误:

javax.naming.NamingException: Unable to find injection meta-data for [your-class]. Ensure that class was annotated with @org.apache.openejb.api.LocalClient and was successfully discovered and deployed. See http://openejb.apache.org/3.0/local-client-injection.html

当我访问此页面时,它通知我可能需要在我的测试用例上下文设置中添加一个额外的属性.所以现在看起来像:

@Override
public void setUp() throws Exception {
    initializeContext();
}
Run Code Online (Sandbox Code Playgroud)
public void initializeContext() {
    Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
    // the property i've added
    p.put("openejb.tempclassloader.skip", "annotations");

    try {
        InitialContext initialContext = new InitialContext(p);
        initialContext.bind("inject", this);
    } catch (Throwable throwable) { 
        throwable.printStackTrace();
        throw new RuntimeException(throwable);
    }
} …
Run Code Online (Sandbox Code Playgroud)

java integration-testing dependency-injection java-ee openejb

4
推荐指数
1
解决办法
3062
查看次数