2010-10-20 50 views
1

如OpenEJB的文檔描述,我們可以配置JMS連接工廠和隊列,它們將出現在JNDI爲: OpenEJB的:資源/ MyJmsConnectionFactory, OpenEJB的:資源/ myQueue中OpenEJB的:配置MDB的自定義連接工廠

  1. 鑑於這些JNDI條目,我如何告訴MDB使用它們?

  2. 是否有可能改變JNDI名稱,例如連接工廠出現如Java:/ ConnectionFactory的 或連接工廠

回答

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> 

上面示出了一個MDB容器掛接到經由ActiveMQ的使用JMS資源適配器。

這裏是顯示了一個MDB容器迷上了一個Quartz Resource Adapter

這是不可能告訴MDB容器有關JMS具體的事情按照規範的例子,關係遠不止通用。這blog post給出了一些有關事情如何工作的見解。

+0

謝謝,真的很有幫助! – 2011-06-01 14:48:07