4.7. アクティベーション設定のプロパティー
4.7.1. アノテーションを使用した MDB の設定
アクティベーションプロパティーは、@ActivationConfigProperty
アノテーションに一致する @MessageDriven
要素とサブ要素を使用してアクティベーションプロパティーを設定できます。@ActivationConfigProperty
は、MDB の設定逢プロパティーのアレイです。@ActivationConfigProperty
アノテーションの仕様は以下のようになります。
@Target(value={}) @Retention(value=RUNTIME) public @interface ActivationConfigProperty { String propertyName(); String propertyValue(); }
@ActivationConfigProperty
を表示する例
@MessageDriven(name="MyMDBName", activationConfig = { @ActivationConfigProperty(propertyName="destinationLookup",propertyValue="queueA"), @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), })
4.7.2. デプロイメント記述子を使用した MDB の設定
ejb-jar.xml
の <message-driven>
要素は、Bean を MDB として定義します。<activation-config>
および要素には、activation-config-property
要素を使用した MDB 設定が含まれます。
サンプル ejb-jar.xml
<?xml version="1.1" encoding="UTF-8"?> <jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" version="3.1"> <enterprise-beans> <message-driven> <ejb-name>MyMDBName</ejb-name> <ejb-class>org.jboss.tutorial.mdb_deployment_descriptor.bean.MyMDBName</ejb-class> <activation-config> <activation-config-property> <activation-config-property-name>destinationLookup</activation-config-property-name> <activation-config-property-value>queueA</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>destinationType</activation-config-property-name> <activation-config-property-value>javax.jms.Queue</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>acknowledgeMode</activation-config-property-name> <activation-config-property-value>Auto-acknowledge</activation-config-property-value> </activation-config-property> </activation-config> </message-driven> <enterprise-beans> </jboss:ejb-jar>
名前 | 説明 |
---|---|
| キューまたはトピックの Java Naming and Directory Interface 名。これは必須の値です。 |
|
管理的に定義された
明示的に定義されていない場合は、 |
|
宛先の有効な値のタイプは |
|
|
|
トランザクション処理された Jakarta Messaging を使用していない場合の承認のタイプ。有効な値は
デフォルト値は |
| 接続のクライアント ID。これは必須の値ではありません。 |
|
トピックサブスクリプションが永続化されるかどうか。有効な値は
デフォルト値は |
| トピックサブスクリプションのサブスクリプション名。これは必須の値ではありません。 |
名前 | 説明 |
---|---|
|
|
| 接続がサブスクリプションを共有するように設定されているかどうか。
デフォルト値は |
| Jakarta Messaging 接続のユーザー。これは必須の値ではありません。 |
| Jakarta Messaging 接続のパスワード。これは必須の値ではありません。 |
| 使用する同時セッションの最大数。これは必須の値ではありません。
デフォルト値は |
| セッションのトランザクションタイムアウト (ミリ秒単位)。これは必須の値ではありません。
指定されない場合または 0 の場合、プロパティーは無視され、 |
| Java Naming and Directory Interface を使用して宛先を検索するかどうか。
デフォルト値は |
|
接続で使用する Java Naming および Directory Interface パラメーター。パラメーターは、 |
| XA の代わりにローカルトランザクションを使用します。
デフォルト値は |
| Jakarta Messaging 接続の設定を試みる回数。Jakarta Messaging リソースが利用可能になる前に MDB がデプロイされる可能性があります。この場合、リソースアダプターは、リソースが利用可能になるまで、複数回の設定を試行します。これは受信接続のみに適用されます。
デフォルト値は |
| Jakarta Messaging 接続の設定を試みる連続的間隔 (ミリ秒単位)。これは受信接続のみに適用されます。
デフォルト値は |
| 受信接続のリバランスが有効になっているかどうか。このパラメーターは、基礎となるクラスタートポロジーの変更時に受信接続をすべてリバランスできるようにします。 アウトバウンド接続にはリバランスがありません。
デフォルト値は |
| ホワイトリストのエントリーのコンマ区切りリスト。これは、信頼できるクラスおよびパッケージのリストです。このプロパティーは、リストにあるオブジェクトをデシリアライズできるように Jakarta Messaging リソースアダプターによって使用されます。 詳細は、JBoss EAPConfiguring Messagingの Controlling Jakarta Messaging ObjectMessage Deserialization を参照してください。 |
| ブラックリストのエントリーのコンマ区切りリスト。これは、信頼できないクラスおよびパッケージのリストです。このプロパティーは、リストにあるオブジェクトがデシリアライズされないように、JMS リソースアダプターによって使用されます。 詳細は、JBoss EAPConfiguring Messagingの Controlling Jakarta Messaging ObjectMessage Deserialization を参照してください。 |
4.7.3. MDB を設定するためのいくつかのユースケース
メッセージを受信する MDB のユースケース
MDB がメッセージを受信する際の基本的なシナリオは、JBoss EAP に同梱される
helloworld-mdb
クイックスタートを参照してください。メッセージを送信する MDB のユースケース
メッセージの処理後、他のビジネスシステムに通知したり、メッセージに応答する必要がある場合があります。この場合、以下のスニペットにあるように、MDB からメッセージを送信できます。
package org.jboss.as.quickstarts.mdb; import javax.annotation.Resource; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.inject.Inject; import javax.jms.JMSContext; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.Queue; @MessageDriven(name = "MyMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "queue/MyMDBRequest"), @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") }) public class MyMDB implements MessageListener { @Inject private JMSContext jmsContext; @Resource(lookup = "java:/queue/ResponseDefault") private Queue defaultDestination; /** * @see MessageListener#onMessage(Message) */ public void onMessage(Message rcvMessage) { try { Message response = jmsContext.createTextMessage("Response for message " + rcvMessage.getJMSMessageID()); if (rcvMessage.getJMSReplyTo() != null) { jmsContext.createProducer().send(rcvMessage.getJMSReplyTo(), response); } else { jmsContext.createProducer().send(defaultDestination, response); } } catch (JMSException e) { throw new RuntimeException(e); } } }
上記の例では、MDB はメッセージを受信した後、
JMSReplyTo
で指定された宛先、または Java Naming and Directory Interface 名java:/queue/ResponseDefault
にバインドされた宛先のいずれかに応答します。MDB でのユースケースインバウンド接続のリバランスの設定
@MessageDriven(name="MyMDBName", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "queueA"), @ActivationConfigProperty(propertyName = "rebalanceConnections", propertyValue = "true") } )