4

请注意,我非常密切地反映了example given hereOpenEJB本地客户端注入失败

事实上,我的情况稍微简单一些,因为在这一点上我甚至没有使用持久性单元进行测试。我的测试项目提供了一个简单的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(); 
} 
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); 
    } 
} 

但它仍然是失败的。我非常喜欢这个成语,如果我能够在我的项目中成功使用它,我会非常兴奋。

其他一些注意事项:

  • 我提供一个 '空' ejb-jar.xml中(在SRC /主/资源)和应用client.xml的(src/test下/资源)正如Apache建议的,告诉OpenEJB扫描类路径[更新:事实证明,我做错了。请参阅下面的为我工作的建议我的答案。]
  • @LocalClient标注的测试案例不是由OpenEJB的引擎认定为实际得到回升,妥善处理(如我的MDB是,例如)

在此先感谢您的帮助或指导。

回答

7

这个问题很可能是由描述符的位置不正确引起的,这些描述符提示OpenEJB哪些模块可用。

为了保证测试的类得到回升正常,确保你将一个名为application-client.xml文件在src/test/resources/META-INF,内容如下:

<application-client/>

这应该强制OpenEJB的扫描和反应存在@LocalClient注释。

+0

高兴你发现了问题,并张贴了答案双重感谢。我已经提交了一个JIRA进行了改进,我们可以将其添加到我们可以检查的事项列表中https://issues.apache.org/jira/browse/OPENEJB-1570 – 2011-06-08 02:43:40

+0

备注是@LocalClient不再需要在OpenEJB 4中,任何部署描述符都不是。尚未发布,但它看起来非常好。我们需要进一步了解CDI支持,然后发布测试版。 – 2011-06-08 02:45:35

+0

谢谢@David! – 2011-06-09 13:35:01

0

我有一个类似的问题,当我试图在一个名为tomee-embedded-trial的测试项目中测试东西时,事实证明openejb忽略了名为tomee - 。*的东西。

我固定它,我通过指定以下系统属性: openejb.deployments.classpath.include=".*-trial.*"openejb.deployments.package.include=".*-trial.*"