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

时间:2014-08-07 16:39:25

标签: openejb

我使用OpenEJB为最终部署到WebSphere Application Server的应用程序运行单元测试。我的问题是(n不可避免)依赖于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.*?'

但仍在检查罐子的可加载模块:

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将绑定到,需要一个重新启动以重命名jar。)

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

1 个答案:

答案 0 :(得分:2)

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

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

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