About

ドキュメント

Javadoc

モジュール

プロジェクト文書

Built by Maven

概要

アウトバウンド通信を使用するための主要なコンポーネントを以下に示します.

アウトバウンド通信で利用するコンポーネントは,大きく3つに分類されます.

  • 接続系
  • 送信系
  • 受信系

それぞれのカテゴリごとに,複数のコンポーネントを定義する必要があります.

接続系

接続系のコンポーネントは,JMSメッセージを送信する場合も受信する場合も必要となるコンポーネントです.

ManagedConnectionFactoryDeployer (必須)
リソースアダプタが提供するManagedConnectionFactoryを S2コンテナ内で利用可能にするコンポーネントです.
ConnectionFactory (必須)
JMSコネクションを提供するコンポーネントです.
SessionFactory (必須)
JMSセッションを提供するコンポーネントです.
DestinationFactory (必須)
JMSメッセージの宛先を提供するコンポーネントです.

送信系

送信系のコンポーネントは,JMSメッセージを送信する場合に必要となるコンポーネントです.

MessageSender (必須)
JMSメッセージを送信するコンポーネントです.
MessageFactory (任意)
送信するJMSメッセージを作成するコンポーネントです.
TextProvider (任意)
JMSメッセージで送信する文字列を提供するコンポーネントです.
SendMessageInterceptor (任意)
AOPを利用してメソッドの実行終了時にJMSメッセージを送信するコンポーネントです.

受信系

受信系のコンポーネントは,JMSメッセージを受信する場合に必要となるコンポーネントです.

MessageReceiver (必須)
JMSメッセージを受信するコンポーネントです.

接続系

ManagedConnectionFactoryDeployer

ManagedConnectionFactoryDeployerは, リソースアダプタが提供するManagedConnectionFactoryを S2コンテナ内で利用可能にするコンポーネントです.

ManagedConnectionFactoryDeployerの実装クラスを以下に示します.

  • org.seasar.jca.deploy.impl.ManagedConnectionFactoryDeployer

ManagedConnectionFactoryDeployerのプロパティおよびメソッドを以下に示します.

プロパティ
プロパティ必須説明デフォルト
managedConnectionFactoryClass Yes リソースアダプタが提供する, javax.resource.spi.ManagedConnectionFactoryの実装クラスをFQNで指定します. N/A
managedConnectionFactoryIndex No ra.xmlファイルに記述された何番目の connector/resource-adapter/outbound-resourceadapter/connection-definition をベースにするかを示すインデックスを指定します. 0
managedTx No コンテナ管理のトランザクションを使用する場合はtrueを指定します. true
maxPoolSize No コネクションプールの最大値を指定します. 10
minPoolSize No コネクションプールの最小値を指定します. 5
timeout No アイドル状態になったコネクションをクローズするまでのタイムアウト時間を秒単位で指定します. 600(秒)
メソッド
メソッド説明
setProperty(String key, String value) リソースアダプタ固有のプロパティを指定します.
setProperty(String key, String type, String value) 型を明示してリソースアダプタ固有のプロパティを指定します.
createConnectionFactory() ConnectionFactoryを作成します.

diconファイルへの記述は以下のようになります.

    <component name="mcfDeployer"
            class="org.seasar.jca.deploy.impl.ManagedConnectionFactoryDeployer">
        <property name="managedConnectionFactoryClass">
            "リソースアダプタの提供するManegedConnectionFactory実装クラスのFQN"
        </property>

        <initMethod name="setProperty">
            <arg>"リソースアダプタ固有のプロパティ名"</arg>
            <arg>"リソースアダプタ固有のプロパティ値"</arg>
        </initMethod>
        ...
    </component>

リソースアダプタ固有のプロパティ

リソースアダプタ固有のプロパティは,使用するリソースアダプタのドキュメントを参照してください. 主なプロダクトのドキュメントを以下に示します.

ConnectionFactory

ConnectionFactoryは,JMSコネクションを提供するコンポーネントです.

S2JMSでは,ConnectionFactoryはリソースアダプタ (ManagedConnectionFactory) が提供する オブジェクトを使用します. このオブジェクトはManagedConnectionFactoryDeployercreateConnectionFactory()メソッドにより 取得したものをコンポーネントとしてdiconファイルに登録します.

diconファイルへの記述は以下のようになります.

    <component name="connectionFactory" class="javax.jms.ConnectionFactory">
        mcfDeployer.createConnectionFactory()
    </component>

mcfDeployerManagedConnectionFactoryDeployerのコンポーネント名です.

SessionFactory

SessionFactoryは,JMSセッションを提供するコンポーネントです. ConnectionFactoryが提供するJMSコネクション上でJMSセッションを作成して提供します.

SessionFactoryの実装クラスを以下に示します.

  • org.seasar.jms.core.session.impl.SessionFactoryImpl
  • org.seasar.jms.container.session.impl.GenericRaSessionFactoryImpl

SessionFactoryImpl

ConnectionFactoryが提供するJMSコネクション上で作成したJMSセッションを提供するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
connectionFactory Yes JMSコネクションを提供するConnectionFactoryです. 通常は自動バインディングされるため,明示的に設定する必要はありません. N/A
transacted No JMSメッセージをトランザクショナルに受信する場合はtrueを指定します. true
acknowledgeMode No JMSメッセージを受信した場合の応答モードを指定します. AUTO_ACKNOWLEDGE

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.session.impl.SessionFactoryImpl"/>

GenericRaSessionFactoryImpl

S2JMS-Containerを使用する場合に,インバウンド通信でJMSメッセージを受信したJMSセッションを提供するコンポーネントです. このコンポーネントは,S2JMS-ContainerでSun Generic Resource Adapter for JMSと IBM WebSphere MQ (formerly known MQSeries) を組み合わせて,受信したJMSメッセージに対する応答メッセージを 同じJMSコネクション (WebSphere MQのキューマネージャ) に送信する場合に使用します.

このコンポーネントにはプロパティが無く,ManagedConnectionFactoryDeployerおよび, ConnectionFactoryは必要ありません.

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.container.session.impl.GenericRaSessionFactoryImpl"/>

DestinationFactory

DestinationFactoryは,JMSデスティネーション (キューまたはトピック) を提供するコンポーネントです.

SessionFactoryの実装クラスを以下に示します.

  • org.seasar.jms.core.destination.impl.QueueFactory
  • org.seasar.jms.core.destination.impl.TopicFactory
  • org.seasar.jms.core.destination.impl.JndiDestinationFactory
  • org.seasar.jms.core.destination.impl.SimpleDestinationFactory
  • org.seasar.jms.core.destination.impl.ReplyToDestinationFactory

QueueFactory

QueueFactoryは, Session#createQueue(String name)を使用して 作成したキューを提供するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
name Yes 作成するキューの名前です. N/A

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.destination.impl.QueueFactory">
        <property name="name">"QUEUE"</property>
    </component>

TopicFactory

TopicFactoryは, Session#createTopic(String name)を使用して 作成したトピックを提供するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
name Yes 作成するトピックの名前です. N/A

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.destination.impl.TopicFactory">
        <property name="name">"TOPIC"</property>
    </component>

JndiDestinationFactory

JndiDestinationFactoryは, JNDIからルックアップしたJMSデスティネーション (キューまたはトピック) を提供するコンポーネントです. アプリケーションサーバに構成されたJMSデスティネーションを使用する場合に使用します.

プロパティ
プロパティ必須説明デフォルト
name Yes ルックアップするJMSデスティネーションのJNDI名です. N/A
env No JNDIのInitialContextを 作成する際にコンストラクタに渡される環境プロパティです. 省略すると環境プロパティを指定せずにInitialContextを作成します. N/A

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.destination.impl.JndiDestinationFactory">
        <property name="name">"java:comp/env/jms/Queue"</property>
    </component>

SimpleDestinationFactory

SimpleDestinationFactoryは, コンポーネントとしてdiconに定義されたキューまたはトピックを提供するコンポーネントです. QueueFactoryTopicFactoryを使うことができず, ベンダ固有のキューまたはトピック実装クラスをインスタンス化して使う場合に使用します.

プロパティ
プロパティ必須説明デフォルト
destination Yes キューまたはトピックを指定します. N/A

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.destination.impl.SimpleDestinationFactory">
        <property name="destination">
            <component class="ベンダ固有のキューまたはトピック実装クラス">
                ...
            </component>
        </property>
    </component>

ReplyToDestinationFactory

ReplyToDestinationFactoryは, 受信したJMSメッセージのJMSReplyToヘッダで 指定されたJMSデスティネーション (キューまたはトピック) を提供するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
message Yes 受信したJMSメッセージを指定します. N/A

このコンポーネントはdiconファイルに定義して使うことは想定していません.

Apache ActiveMQの場合

以下にオープンソースのMOMプロダクト, Apache ActiveMQで アウトバウンド通信を使用する例を示します.

    <!-- マネージドコネクションファクトリ -->
    <component name="mcfDeployer"
            class="org.seasar.jca.deploy.impl.ManagedConnectionFactoryDeployer">
        <property name="managedConnectionFactoryClass">
            "org.apache.activemq.ra.ActiveMQManagedConnectionFactory"
        </property>
    </component>

    <!-- コネクションファクトリ -->
    <component name="connectionFactory" class="javax.jms.ConnectionFactory">
        mcfDeployer.createConnectionFactory()
    </component>

    <!-- セッションファクトリ -->
    <component class="org.seasar.jms.core.session.impl.SessionFactoryImpl"/>

    <!-- デスティネーション (キューまたはトピック) ファクトリ -->
    <component class="org.seasar.jms.core.destination.impl.QueueFactory">
        <!-- キュー名を指定します -->
        <property name="name">"Foo"</property>
    </component>

IBM WebSphere MQの場合

以下にSun Generic Resource Adapter for JMSと IBM WebSphere MQ (formerly known MQSeries) を組み合わせて アウトバウンド通信を使用する例を示します.

    <!-- マネージドコネクションファクトリ -->
    <component name="mcfDeployer"
            class="org.seasar.jca.deploy.impl.ManagedConnectionFactoryDeployer">
        <property name="managedConnectionFactoryClass">
            "com.sun.genericra.outbound.ManagedJMSConnectionFactory"
        </property>

        <!-- キューマネージャ名 -->
        <initMethod name="setProperty">
            <arg>"connectionFactoryProperties"</arg>
            <arg>"QueueManager=QMGR1"</arg>
        </initMethod>
    </component>

    <!-- コネクションファクトリ -->
    <component name="connectionFactory" class="javax.jms.ConnectionFactory">
        mcfDeployer.createConnectionFactory()
    </component>

    <!-- セッションファクトリ -->
    <component class="org.seasar.jms.container.SessionFactoryImpl"/>

    <!-- デスティネーション (キューまたはトピック) ファクトリ -->
    <component class="org.seasar.jms.core.destination.impl.QueueFactory">
        <!-- キュー名を指定します -->
        <property name="name">"LQ2"</property>
    </component>

送信系

MessageSender

MessageSenderは,JMSメッセージを送信するコンポーネントです.

MessageSenderの実装クラスを以下に示します.

  • org.seasar.jms.core.impl.MessageSenderImpl

MessageSenderのプロパティおよびメソッドを以下に示します.

プロパティ
プロパティ必須説明デフォルト
deliveryMode No 送信するJMSメッセージの配信モードを指定します. DEFAULT_DELIVERY_MODE
destinationFactory Yes JMSデスティネーション (キューまたはトピック) を提供するDestinationFactoryです. 通常は自動バインディングされるため,明示的に設定する必要はありません. N/A
disableMessageID No 送信するJMSメッセージのメッセージIDを無効化する場合はtrueを指定します. false
disableMessageTimestamp No 送信するJMSメッセージのを無効化する場合はtrueを指定します. false
messageFactory No 送信するJMSメッセージを提供するMessageFactoryです. send()メソッドを呼び出す場合にのみ必要です. 通常は自動バインディングされるため,明示的に設定する必要はありません. なし
priority No 送信するJMSメッセージの優先度を指定します. DEFAULT_PRIORITY
sessionFactory Yes 送信に使用するするJMSセッションを提供するSessionFactoryです. 通常は自動バインディングされるため,明示的に設定する必要はありません. N/A
timeToLive No 送信するJMSメッセージの生存時間をミリ秒単位で指定します. DEFAULT_TIME_TO_LIVE

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.impl.MessageSenderImpl"/>

MessageFactory

MessageFactoryは,送信するJMSメッセージを提供するコンポーネントです.

MessageFactoryの実装クラスを以下に示します.

  • org.seasar.jms.core.message.impl.BytesMessageFactory
  • org.seasar.jms.core.message.impl.MapMessageFactory
  • org.seasar.jms.core.message.impl.ObjectMessageFactory
  • org.seasar.jms.core.message.impl.TextMessageFactory

BytesMessageFactory

BytesMessageを作成するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
bytes Yes 送信するJMSメッセージのペイロードに設定されるバイト列です. N/A

diconファイルへの記述は以下のようになります.

    <component instance="prototype"
            class="org.seasar.jms.core.message.impl.BytesMessageFactory"/>
        <property name="bytes">
            someObject.byteDate()
        </property>
    </component>

MapMessageFactory

MapMessageを作成するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
map No 送信するJMSメッセージのペイロードに設定されるマッピングです. なし
メソッド
メソッド説明
addValue(String key, Object value) 送信するJMSメッセージのペイロードに設定されるマッピングを追加します.

diconファイルへの記述は以下のようになります.

    <component instance="prototype"
            class="org.seasar.jms.core.message.impl.MapMessageFactory"/>
        <property name="map">
            #{"foo" : foo, "bar" : bar}
        </property>
    </component>

ObjectMessageFactory

ObjectMessageを作成するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
object Yes 送信するJMSメッセージのペイロードに設定されるオブジェクトです. N/A

diconファイルへの記述は以下のようになります.

    <component instance="prototype"
            class="org.seasar.jms.core.message.impl.ObjectMessageFactory"/>
        <property name="object">
            someObject
        </property>
    </component>

TextMessageFactory

TextMessageを作成するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
text No 送信するJMSメッセージのペイロードに設定される文字列です. textProviderプロパティが設定されない場合,このプロパティは必須です. なし
textProvider No 送信するJMSメッセージのペイロードに設定される文字列を提供するTextProviderです. 通常は自動バインディングされるため,明示的に設定する必要はありません. textプロパティが設定されない場合,このプロパティは必須です. なし

diconファイルへの記述は以下のようになります.

    <component instance="prototype"
            class="org.seasar.jms.core.message.impl.TextMessageFactory"/>

SendMessageInterceptor

SendMessageInterceptorは,アプリケーションコンポーネントのメソッドが例外をスローすることなく終了した際に, JMSメッセージを送信するコンポーネントです. AOPにより,既存のアプリケーションコンポーネントに手を加えることなく,JMSメッセージを送信することが可能となります.

SendMessageInterceptorの実装クラスを以下に示します.

  • org.seasar.jms.core.interceptor.SendMessageInterceptor
  • org.seasar.jms.core.interceptor.SendReturnValueInterceptor

SendMessageInterceptor

MessageSender#send()を呼び出すことによりJMSメッセージを送信するコンポーネントです. 使用するMessageSendermessageFactoryプロパティが設定されている必要があります.

プロパティ
プロパティ必須説明デフォルト
messageSenderName Yes JMSメッセージを送信するMessageSenderのコンポーネント名を指定します. N/A

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.interceptor.SendMessageInterceptor">
        <property name="messageSenderName">
            "fooSender"
        </property>
    </component>

SendReturnValueInterceptor

このインターセプタが適用されたメソッドの戻り値をJMSメッセージのペイロードして送信するコンポーネントです. 使用するMessageSendermessageFactoryプロパティが設定されている必要はありません.

プロパティ
プロパティ必須説明デフォルト
messageSenderName Yes JMSメッセージを送信するMessageSenderのコンポーネント名を指定します. N/A
メソッド
メソッド説明
addMessageFactory(Class<?> returnType, Class<? extends MessageFactory<? extends Message>> messageFactoryClass) メソッドの戻り値の型に対応したJMSメッセージを作成するMessageFactoryを追加します.

デフォルトでは,次の戻り値の型に対応します.

メソッドの戻り値の型対応するMessageFactory
java.lang.String TextMessageFactory
byte[] BytesMessageFactory
java.util.Map MapMessageFactory
java.io.Serializable ObjectMessageFactory

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.interceptor.SendReturnValueInterceptor">
        <property name="messageSenderName">
            "fooSender"
        </property>
    </component>

TextProvider

JMSメッセージ (TextMessageを送信する場合に, ペイロードに設定する文字列を提供するコンポーネントです.

TextProviderの実装クラスを以下に示します.

  • org.seasar.jms.core.text.impl.TextHolder
  • org.seasar.jms.core.text.impl.VelocityTextFormatter

TextHolder

インスタンスフィールドに保持した文字列を提供するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
text Yes このコンポーネントが提供する文字列を指定します. N/A

diconファイルへの記述は以下のようになります.

    <component instance="prototype"
            class="org.seasar.jms.core.text.impl.TextHolder">
        <property name="text">
            someObject.message
        </property>
    </component>

VelocityTextFormatter

Velocityを使用して組み立てた文字列を提供するコンポーネントです.

プロパティ
プロパティ必須説明デフォルト
templateText Yes Velocityで処理するテンプレート文字列を指定します. N/A

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.text.impl.VelocityTextFormatter">
        <property name="templateText">
            "foo:$foo.name bar:$bar.name baz:$baz.name"
        </property>
    </component>

受信系

MessageReceiver

MessageReceiverは,JMSメッセージを受信するコンポーネントです.

MessageReceiverの実装クラスを以下に示します.

  • org.seasar.jms.core.impl.MessageReceiverImpl

MessageReceiverのプロパティおよびメソッドを以下に示します.

プロパティ
プロパティ必須説明デフォルト
destinationFactory Yes JMSデスティネーション (キューまたはトピック) を提供するDestinationFactoryです. 通常は自動バインディングされるため,明示的に設定する必要はありません. N/A
durable No JMSメッセージをデュラブル(継続的)に受信する場合はtrueを指定します. false
messageSelector No 受信するJMSメッセージを選択するためのJMSメッセージセレクタを指定します. null
noLocal No 受信するJMSコネクションから送信されたJMSメッセージを受信しない場合はtrueを指定します. false
sessionFactory Yes 送信に使用するするJMSセッションを提供するSessionFactoryです. 通常は自動バインディングされるため,明示的に設定する必要はありません. N/A
subscriptionName No JMSメッセージをデュラブル(継続的)に受信する場合のサブスクリプション名です. durableプロパティにtrueを指定した場合は必須です. なし
timeout No JMSメッセージを受信するまで待機する時間をミリ秒単位で指定します. 正数が指定されると,JMSメッセージを受信するまで指定された時間待機します. 0が指定されると待機しません. 負数が指定されると無制限に待機します. -1

diconファイルへの記述は以下のようになります.

    <component class="org.seasar.jms.core.impl.MessageReceiverImpl"/>