我为一项活动编写了单元测试,最终将消息放入队列。一旦消息放入该队列,消息驱动的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美分:


尝试".*org/example/mdb.*" or ".*org.example.mdb.*"
来自Loading Deployments from the Classpath


  请注意,默认情况下,这些设置将
  仅影响OpenEJB将使用哪些jar
  如果没有,则扫描带注释的组件
  找到描述符。如果你愿意
  使用这些设置来过滤
  包含描述符的罐子,
  设置
  
  openejb.deployments.classpath.filter.descriptors
  
  属性为true。默认为false

10-06 05:45