1

OpenEJB ドキュメントで説明されているように、JMS 接続ファクトリとキューを構成できます。これらは JNDI で次のように表示されます。

openejb:Resource/MyJmsConnectionFactory, 
openejb:Resource/MyQueue
  1. これらの JNDI エントリが与えられた場合、それらを使用するように MDB に指示するにはどうすればよいでしょうか?

  2. JNDI 名を変更することは可能ですjava:/ConnectionFactory か。ConnectionFactory

4

1 に答える 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 コンテナを示しています。

これは、 Quartz リソース アダプタに接続された MDB コンテナを示す例です。

仕様に従って JMS 固有のものについて MDB コンテナに伝えることはできません。関係はそれよりもはるかに一般的です。このブログ投稿は、物事がどのように機能するかについての洞察を提供します。

于 2010-10-23T02:18:54.373 に答える