有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java告诉OpenEJB忽略MDB

我为一个活动编写了一个单元测试,最终将消息放入队列。一旦消息被放入该队列,消息驱动bean就会开始处理。但我不想在单元测试中测试MDB。我如何告诉OpenEJB忽略它们

我使用几个属性设置OpenEJB:

    p.setProperty(Context.INITIAL_CONTEXT_FACTORY,
            "org.apache.openejb.client.LocalInitialContextFactory");
    p.setProperty("openejb.deployments.classpath.include", ".*");
    p.setProperty("openejb.localcopy", "false");

    // Messaging
    p.put("MyJmsResourceAdapter",
            "new://Resource?type=ActiveMQResourceAdapter");
    // Do not start the ActiveMQ broker
    p.put("MyJmsResourceAdapter.BrokerXmlConfig", "");
    p.put("MyJmsConnectionFactory",
            "new://Resource?type=javax.jms.ConnectionFactory");
    p.put("MyJmsConnectionFactory.ResourceAdapter", "MyJmsResourceAdapter");
    p.put("queue/MyQueue",
            "new://Resource?type=javax.jms.Queue");

我知道我必须设置openejb.deployments.classpath.exclude,但我无法找出正确的值:

    p.setProperty("openejb.deployments.classpath.exclude", "org.example.mdb.*");

例如,我的类名为org.example.mdb.MyMDB


共 (2) 个答案

  1. # 1 楼答案

    就我的2美分:

    • 试试".*org/example/mdb.*" or ".*org.example.mdb.*"
    • Loading Deployments from the Classpath

      Note by default these settings will only affect which jars OpenEJB will scan for annotated components when no descriptor is found. If you would like to use these settings to also filter out jars that do contain descriptors, set the

      openejb.deployments.classpath.filter.descriptors

      property to true. The default is false

  2. # 2 楼答案

    我们没有这个功能,但是如果你想做一点修改的话,可以很容易地添加它。新的贡献和贡献者总是受欢迎的

    This class会做你想做的事。。。还有一些您可能不想要的东西:)它去掉了所有MDB和JMS资源引用(好的部分),去掉了所有实体bean和持久化单元引用(您可能不想要的部分)。我们之所以编写它,是因为在加载ActiveMQ或OpenJPA时遇到了一些调试问题。如果你把它清理干净了,我们很乐意把它拿回来,并支持它作为一个功能

    有一个类似的特性strips out all web services。如果设置了特定的系统属性,它将安装在ConfigurationFactory中。在ConfigurationFactory中基本相同的位置使用类似的标志插入“MDB&;JMS”移除程序应该很容易

    事实上,因为在OpenEJB中,所有注释和xml元数据都合并到一个对象树(也是一个JAXB树)中,所以在实际部署应用程序之前,您可以对其进行非常强大的转换。比如说,将特定bean替换为模拟版本

    我认为其中的一个功能会非常出色,但还没有时间去做。也就是说,在我们把树送出去部署之前,制作一些干净的钩子,让人们把树弄乱。欢迎阅读本文的任何人加入并尝试一下(耶,开源!)