物事は、あなたが想像しているよりも違った働きをします。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 コンテナに伝えることはできません。関係はそれよりもはるかに一般的です。このブログ投稿は、物事がどのように機能するかについての洞察を提供します。