OpenEJB:使用自定义ConnectionFactory配置MDB

问题描述 投票:1回答:1

如OpenEJB文档中所述,我们可以配置JMS连接工厂和队列,它们将在JNDI中显示为:

openejb:Resource/MyJmsConnectionFactory, 
openejb:Resource/MyQueue
  1. 鉴于那些JNDI条目,我如何告诉MDB使用它们?

  2. 是否可以更改JNDI名称,例如ConnectionFactory显示为java:/ConnectionFactoryConnectionFactory

ejb openejb
1个回答
3
投票

事情的运作方式与您想象的不同。指定MDB与javax.jms.Queue绑定,并且该队列的名称是EJB规范的一部分,并通过ActivationConfig完成,例如:

@MessageDriven(activationConfig = {
        @ActivationConfigProperty(
           propertyName = "destinationType", 
           propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(
           propertyName = "destination", 
           propertyValue = "FooQueue")})
public static class JmsBean implements MessageListener {

    public void onMessage(Message message) {
    }
}

MDB容器本身实际上根本不支持JMS。它只是理解它应该将Bean连接到特定的资源适配器。

<openejb>
    <Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
        ServerUrl tcp://someHostName:61616
    </Resource>

    <Container id="MyJmsMdbContainer" ctype="MESSAGE">
        ResourceAdapter MyJmsResourceAdapter
    </Container>
</openejb>

上面显示了通过ActiveMQ连接到使用JMS的资源适配器的MDB容器。

这里是显示MDB容器连接到Quartz Resource Adapter的示例

不可能根据规范告诉MDB容器有关JMS的特定信息,这种关系比这要通用得多。此blog post提供了有关工作原理的一些见解。

© www.soinside.com 2019 - 2024. All rights reserved.