概要
オープンソースのMOMプロダクト,Apache ActiveMQ を 使用する場合の設定例を示します.
リソースアダプタの設定
ResourceAdapterDeployerに設定可能なActiveMQ固有のプロパティは, Apache ActiveMQのドキュメント を 参照してください.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="j2ee.dicon"/>
<!-- リソースアダプタ -->
<component class="org.seasar.jca.deploy.impl.RarResourceAdapterDeployer">
<!-- スレッドプールのスレッド数 -->
<arg>10</arg>
<!-- ActiveMQ ResourceAdapterへのパス -->
<property name="path">
"ra/activemq-rar-4.1.1.rar"
</property>
<!--
リソースアダプタ固有のプロパティを設定します.
-->
<!-- ActiveMQ Broker へのURL -->
<!-- 外部プロセスの ActiveMQ Broker を使用する場合 -->
<initMethod name="setProperty">
<arg>"ServerUrl"</arg>
<arg>"tcp://localhost:61616"</arg>
</initMethod>
<!-- 埋め込み (インプロセス) の ActiveMQ Broker を使用する場合 -->
<!--
<initMethod name="setProperty">
<arg>"ServerUrl"</arg>
<arg>"vm:(broker:(tcp://localhost:61616)?persistent=false&useJmx=false)"</arg>
</initMethod>
-->
</component>
</components>
アウトバウンド通信の設定
ManagedConnectionFactoryDeployerに設定可能なActiveMQ固有のプロパティは, Apache ActiveMQのドキュメント を 参照してください.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="jms-ra.dicon"/>
<!-- マネージドコネクションファクトリ -->
<component class="org.seasar.jms.core.deploy.impl.JMSManagedConnectionFactoryDeployer">
<property name="managedConnectionFactoryClass">
"org.apache.activemq.ra.ActiveMQManagedConnectionFactory"
</property>
</component>
<!-- セッションファクトリ -->
<component class="org.seasar.jms.core.session.impl.SessionFactoryImpl"/>
<!-- メッセージ送信コンポーネント -->
<component instance="prototype"
class="org.seasar.jms.core.impl.MessageSenderImpl">
<property name="destinationFactory">
<!-- デスティネーション (キューまたはトピック) ファクトリ -->
<component class="org.seasar.jms.core.destination.impl.QueueFactory">
<!-- キュー名を指定します -->
<property name="name">"Foo"</property>
</component>
</property>
</component>
<!-- メッセージ受信コンポーネント -->
<component instance="prototype"
class="org.seasar.jms.core.impl.MessageReceiverImpl">
<property name="destinationFactory">
<!-- デスティネーション (キューまたはトピック) ファクトリ -->
<component class="org.seasar.jms.core.destination.impl.QueueFactory">
<!-- キュー名を指定します -->
<property name="name">"Bar"</property>
</component>
</property>
</component>
</components>
インバウンド通信
ActivationSpecDeployerに設定可能なActiveMQ固有のプロパティは, Apache ActiveMQのドキュメント を 参照してください.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="jms-ra.dicon"/>
<!-- アクティベーションスペック -->
<component name="activationSpecDeployer"
class="org.seasar.jca.deploy.impl.ActivationSpecDeployer">
<property name="activationSpecClassName">
"org.apache.activemq.ra.ActiveMQActivationSpec"
</property>
<!-- メッセージを並行に受信するセッション数を設定します (デフォルト 10) -->
<!-- この値は ResourceAdapterDeployer のスレッド数を超えないようにしてください -->
<!--
<initMethod name="setProperty">
<arg>"maxSessions"</arg>
<arg>"10"</arg>
</initMethod>
-->
<!-- 受信するデスティネーションを設定します -->
<initMethod name="setProperty">
<arg>"destination"</arg>
<arg>"Foo"</arg><!-- デスティネーションの名前 (キュー名またはトピック名) に変更してください -->
</initMethod>
<!-- 受信するデスティネーションの種類 (キューまたはトピック) を設定します -->
<initMethod name="setProperty">
<arg>"destinationType"</arg>
<arg>"javax.jms.Queue"</arg>
<!-- トピックの場合
<arg>"javax.jms.Topic"</arg>
-->
</initMethod>
</component>
<!-- メッセージエンドポイントファクトリ -->
<component class="org.seasar.jms.container.impl.JMSMessageEndpointFactory">
<!-- メッセージをトランザクショナルに受信しない場合は false を指定します -->
<property name="deliveryTransacted">true</property>
</component>
<!-- S2JMS-Container の設定 -->
<component class="org.seasar.jms.container.impl.JMSContainerImpl">
<!-- アプリケーション固有のメッセージリスナ・コンポーネントの名前を指定します (複数指定可) -->
<initMethod name="addMessageListener">
<arg>"messageListener"</arg>
</initMethod>
</component>
</components>
メッセージの受信を開始するために,app.diconの最後など,
SMART deploy や AutoRegister によるコンポーネントの登録が終わった後に
初期化される場所にMessageEndpointActivatorを定義します.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="j2ee.dicon"/>
<include path="jms.dicon"/>
<component class="org.seasar.jca.deploy.impl.MessageEndpointActivator"/>
</components>
