About

ドキュメント

Javadoc

モジュール

プロジェクト文書

Built by Maven

概要

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

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

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

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

接続系

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

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

送信系

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

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

受信系

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

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

接続系

ManagedConnectionFactoryDeployer

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

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

  • org.seasar.jms.core.deploy.impl.JMSManagedConnectionFactoryDeployer

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

プロパティ
プロパティ 必須 説明 デフォルト
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
allowLocalTx No コンテナ管理のトランザクションを使用する場合に, リソースローカルなトランザクションを許可する場合はtrueを設定します. false (デフォルト) の場合, JTAトランザクションが開始されていない状態でコネクションが取得されると例外がスローされます. false
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.jms.core.deploy.impl.JMSManagedConnectionFactoryDeployer">
        <property name="managedConnectionFactoryClass">
            "リソースアダプタの提供するManegedConnectionFactory実装クラスのFQN"
        </property>

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

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

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

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.TemporaryQueueFactory
  • org.seasar.jms.core.destination.impl.TopicFactory
  • org.seasar.jms.core.destination.impl.TemporaryTopicFactory
  • 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>

TemporaryQueueFactory

TemporaryQueueFactoryは, Session#createTemporaryQueue() を使用して 作成したテンポラリキューを提供するコンポーネントです.

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

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

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>

TemporaryTopicFactory

TemporaryTopicFactoryは, Session#createTemporaryTopic() を使用して 作成したテンポラリトピックを提供するコンポーネントです.

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

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

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ファイルに定義して使うことは想定していません.

送信系

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 instance="prototype"
            class="org.seasar.jms.core.impl.MessageSenderImpl"/>

MessageSenderはスレッドセーフではないため,インスタンス属性はprotytpeにします.

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 instance="prototype"
            class="org.seasar.jms.core.impl.MessageReceiverImpl"/>

MessageReceiverはスレッドセーフではないため,インスタンス属性はprotytpeにします.