組み込みメッセージング・サーバーへの接続のための、メッセージ駆動型 Bean のデプロイ
メッセージ駆動型 Bean (MDB) を使用して、組み込みメッセージング・サーバーに接続します。
このタスクについて
- MDB とメッセージング・エンジンの両方が同じ Liberty サーバーにある場合。
- MDB が、別の Liberty サーバーで実行されているリモート・メッセージング・エンジンに接続しようとしている場合。
手順
- MDB フィーチャーを構成します。
server.xml ファイル内で jmsMdb-3.1 および wasJmsClient-2.0 フィーチャーを構成することで、Liberty サーバーでの MDB サポートを使用可能にします。JNDI 検索を実行する場合は、他の 2 つのフィーチャーとともに jndi-1.0 フィーチャーも追加する必要があります。
<featureManager> <feature>jmsMdb-3.1</feature> <feature>wasJmsClient-2.0</feature> <feature>jndi-1.0</feature> </featureManager>
wasJmsClient-2.0 フィーチャーを構成することで、ユーザーは必要な JMS リソースを定義できるようになり、MDB とメッセージング・エンジンとの対話が可能になります。
重要: wasJmsClient-2.0 フィーチャーは、JMS 1.1 仕様と JMS 2.0 仕様の両方のフィーチャーをサポートしています。ただし、 JMS 1.1 仕様に準拠したフィーチャーのみを使用する場合は、wasJmsClient-1.1 フィーチャーを使用することを選択できます。 - MDB が特定の JMS 宛先でリスナーとして機能するよう、JMS リソース・アダプターを使用する JCA アクティベーション・スペックを構成します。メッセージング・エンジンと対話するよう MDB を構成するさまざまな方法を、以下に示します。
- アクティベーション・スペックのプロパティーを使用して MDB を構成します。server.xml ファイル内でプロパティーを定義して、MDB がこのプロパティーを使用して特定の JMS 宛先で listen できるようにします。
<jmsActivationSpec id="JMSSample/JMSSampleMDB"> <properties.wasJms destinationRef="jndi/MDBQ" /> </jmsActivationSpec> <jmsQueue id="jndi/MDBQ" jndiName="jndi/MDBQ"> <properties.wasJms queueName="Q1"/> </jmsQueue>
<destinationRef> は <jmsQueue> の ID を参照します。<jmsQueue> の ID が記載されていない場合、<destinationRef> は <jmsQueue> の <jndiName> を指す必要があります。
注: この ID 値は application name/module name/bean name という形式でなければなりません。各部の意味は、次のとおりです。- application name はデプロイされるアプリケーションの名前です (例: JMSSample)。このアプリケーション名は、Bean が EAR ファイル内にパッケージされている場合のみ適用されます。このアプリケーションは、application.xml デプロイメント記述子によって指定されている場合を除き、デフォルトで、ファイル名拡張子の付いていない EAR ファイルのベース名になります。
- module name は Bean がパッケージされているモジュールの名前です。スタンドアロンの ejb-jar ファイルまたは WAR ファイルでは、<module-name> はデフォルトで、モジュールのベース名からファイル名拡張子を削除したものになります。EAR ファイルでは、<module-name> はデフォルトで、モジュールのパス名からファイル名拡張子を削除し、ディレクトリー名は含めたものになります。デフォルトの <module-name> は、ejb-jar.xml (ejb-jar ファイルの場合) または web.xml (WAR ファイルの場合) の module-name エレメントを使用してオーバーライドできます。
- bean name はエンタープライズ Bean の ejb-name です。アノテーションを使用して定義されたエンタープライズ Bean の場合、MessageDriven アノテーションの name() 属性のコンテンツで指定されている場合を除き、この Bean 名はデフォルトで、セッション Bean クラスの非修飾名になります。 ejb-jar.xml を使用して定義されたエンタープライズ Bean の場合、<ejb-name> デプロイメント記述子エレメントで Bean 名が指定されます。
- アノテーションと server.xml ファイルで定義されたアクティベーション・スペック・プロパティーを使用する。
Liberty は、server.xml ファイルで定義されたアクティベーション・スペック・プロパティーとともに使用できる MDB 用アノテーションの定義をサポートします。このアノテーションを使用するには、前のステップの説明に従ってまずアクティベーション・スペック・プロパティーを定義します。それぞれの MDB について、ユーザーは以下の例に示すようにアノテーションを定義することができます。
@MessageDriven( name = "JMSSampleMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "userName", propertyValue = "user1"), @ActivationConfigProperty(propertyName = "password", propertyValue = "user1pwd"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "jndi_INPUT_Q") } ) public class JMSSampleMDB implements MessageListener{ @TransactionAttribute(value = TransactionAttributeType.REQUIRED) public void onMessage(Message message) { } }
- EJB バインディング・ファイル (ibm-ejb-jar-bnd.xml) を使用する。
このバインディング・ファイルを使用しても、MDB がメッセージング・エンジンに接続する際に必要となるリソース資料を定義できます。EJB バインディング・ファイルを使用する際は、アクティベーション・スペックのプロパティー ID を必ずしもステップ 1 で記載した application name/module name/bean name の形式にする必要はありません。
アクティベーション・スペック・プロパティー情報を server.xml に追加します。<jmsActivationSpec id="PriceChangeAS"> <properties.wasJms destinationRef="jms/TriggerQ" /> </jmsActivationSpec> <jmsQueue id="jms/TriggerQ" jndiName="jms/TriggerQ"> <properties.wasJms queueName="Q1"/> </jmsQueue>
以下の MDB バインディング情報を ibm-ejb-jar-bnd.xml ファイルに追加します。<ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd" (http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd%27) version="1.1"> <message-driven name="PriceChangeMDBBean"> <jca-adapter activation-spec-binding-name="PriceChangeAS" destination-binding-name="jms/TriggerQ" /> </message-driven> </ejb-jar-bnd>
注: EJB バインディング・ファイルを使用する際は、ibm-ejb-jar-bnd.xml ファイル内の activation-spec-binding-name 属性が、server.xml ファイルに指定されたアクティベーション・スペックのプロパティー ID 値を指している必要があります。
- アクティベーション・スペックのプロパティーを使用して MDB を構成します。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_dep_msg_mdbsib
ファイル名: twlp_dep_msg_mdbsib.html