【发布时间】:2026-02-21 11:45:01
【问题描述】:
我为最终将消息放入队列的活动编写了单元测试。只要将消息放入该队列,消息驱动的 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。
【问题讨论】:
-
该属性不会过滤类路径中的单个类,而是过滤实际的类路径本身。 IE。 jar 和目录成为部署的“模块”。我们肯定需要一个类似的功能来对单个类进行包含/排除。会非常有用。
标签: java message-driven-bean openejb