OpenEJB:如何从模块搜索中排除 jar?

标签 openejb

我使用 OpenEJB 为最终部署到 WebSphere Application Server 的应用程序运行单元测试。我的问题是对 WAS 运行时 jar 的(不可避免的)依赖。我已经向 exclude 属性添加了一个表达式(我也尝试了物理路径):

    p.put("openejb.deployments.classpath.exclude", ".*?runtime-6.1.*?");
    // p.put("openejb.deployments.classpath.exclude", "C:/Users/user/.m3/repository/was/runtime/6.1/runtime-6.1.jar");
    p.put("openejb.exclude-include.order", "include-exclude");

此值在日志中得到确认:

OpenEJB.options-2014-08-07-main--INFO -OpenEJB.options:Using 'openejb.exclude-include.order=include-exclude'
OpenEJB.options-2014-08-07-main--INFO -OpenEJB.options:Using 'openejb.deployments.classpath.include=.*eed-jar.*'
OpenEJB.options-2014-08-07-main--INFO -OpenEJB.options:Using 'openejb.deployments.classpath.exclude=.*?runtime-6.1.*?'

但 jar 仍在检查可加载模块:

OpenEJB.startup.config-2014-08-07-main--INFO -OpenEJB.startup.config:Found EjbModule in classpath: C:\Users\user\.m3\repository\was\runtime\6.1\runtime-6.1.jar

结果是 OpenEJB 启动失败:

org.apache.openejb.OpenEjbContainer$InvalidApplicationException: org.apache.openejb.config.ValidationFailedException: Module failed validation. AppModule(name=)

WARNING: can't load com.ibm.ws.management.j2ee.ManagementBean
org.apache.openejb.OpenEJBRuntimeException: Management

我一直在创建一个 0 长度的虚拟文件并重命名 runtime-6.1.jar 以在 Eclipse 中执行测试,但我需要恢复 jar 以运行 Maven 构建(Eclipse然后将绑定(bind)到,需要重新启动以重命名 jar)。

排除这个 jar 的正确方法是什么?

最佳答案

您可能还需要将 openejb.deployments.classpath.filter.descriptors 设置为 true。参见 http://tomee.apache.org/application-discovery-via-the-classpath.html

否则,过滤器将不会应用于包含描述 rune 件 (ejb-jar.xml) 的资源。

如果仍然有问题,您可以通过 org.apache.openejb.config.DeploymentsResolves 进行调试,看看为什么您的资源没有被排除。

关于OpenEJB:如何从模块搜索中排除 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25187808/

相关文章:

java - OpenEJB 中的@Module 注解是什么以及如何使用它?

java - VisualVM 连接到本地 TomEE 非常慢,无法进行堆转储

java - 如何正确配置嵌入式 OpenEJB 容器进行测试?

spring - 如何访问 TomEE 的 JTA 事务管理器?

java - 在persistence.xml 的jta-data-source 中放入什么?

Tomcat/"Application cannot be deployed as it contains deployment-ids"错误

unit-testing - 使用 OpenEJB 进行 EJB 存储库测试 - 如何回滚更改

tomcat - Tomcat 6 和 OpenEJB 3.1.4 中的 EJB 2.0 Jar

java - EJB调用WebLogic和OpenEJB中的EJB

java - 如何以编程方式在 OpenEJB 中指定我的用户/角色?