About

ドキュメント

Javadoc

モジュール

プロジェクト文書

Built by Maven

概要

インバウンド通信を使用するには,次のコンポーネントを使用します.

MessageEndpointDeployer
インバウンド通信で利用されるメッセージエンドポイントを設定するためのコンポーネントです.
MessageEndpointFactory
インバウンド通信で利用されるメッセージエンドポイントを生成するためのコンポーネントです.
JMSContainer
受信したJMSメッセージをアプリケーションコンポーネントにバインドし,リスナメソッドを呼び出すコンポーネントです.

メッセージエンドポイントの設定

MessageEndpointDeployer

MessageEndpointDeployerは, リソースアダプタが提供するメッセージエンドポイントを利用可能にするためのコンポーネントです.

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

  • org.seasar.jca.deploy.impl.MessageEndpointDeployer
プロパティ
プロパティ必須説明デフォルト
activationSpecClassName Yes リソースアダプタが提供する, javax.resource.spi.ActivationSpecの実装クラスを指定します. N/A
メソッド
メソッド説明
setProperty(String key, String value) リソースアダプタ固有のプロパティを指定します.

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

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

MessageEndpointFactory

MessageEndpointFactoryは, リソースアダプタからJMSメッセージを受け取るコンポーネントを生成するコンポーネントです.

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

  • org.seasar.jca.inbound.MessageEndpointFactoryImpl
プロパティ
プロパティ必須説明デフォルト
listenerType No リスナのインタフェースを指定します. MessageListener
endpointClass No listenerTypeプロパティで指定されたリスナインタフェースを実装し, org.seasar.jca.inbound.AbstractMessageEndpointImplを継承したクラスを指定します. JMSMessageEndpointImpl
deliveryTransacted No メッセージをトランザクショナルに受信するにはtrueを設定します. true
メソッド
メソッド説明
setProperty(String key, String value) リソースアダプタ固有のプロパティを指定します.

Apache ActiveMQの場合

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

    <component class="org.seasar.jca.deploy.impl.MessageEndpointDeployer">
        <property name="activationSpecClassName">
            "org.apache.activemq.ra.ActiveMQActivationSpec"
        </property>

        <!-- デスティネーション名 -->
        <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.jca.inbound.MessageEndpointFactoryImpl"/>

IBM WebSphere MQの場合

以下にGeneric Resource Adapter for JMSを使用して IBM WebSphere MQ (formerly known MQSeries) で インバウンド通信を使用する例を示します.

    <component class="org.seasar.jca.deploy.impl.MessageEndpointDeployer">
        <property name="activationSpecClassName">
            "com.sun.genericra.inbound.ActivationSpec"
        </property>
        <initMethod name="setProperty">
            <arg>"userName"</arg>
            <arg>"user"</arg>
        </initMethod>
        <initMethod name="setProperty">
            <arg>"password"</arg>
            <arg>"passwork"</arg>
        </initMethod>

        <!-- キューマネージャ名 -->
        <initMethod name="setProperty">
            <arg>"connectionFactoryProperties"</arg>
            <arg>"QueueManager=QMGR1"</arg>
            <!-- より詳細な情報を設定する場合は以下のように設定します.
            <arg>"QueueManager=QMGR1,HostName=host,Port=1234,TransportType=1"</arg>
            -->
        </initMethod>

        <!-- デスティネーション名 -->
        <initMethod name="setProperty">
            <arg>"destinationProperties"</arg>
            <arg>"BaseQueueName=LQ1"</arg>
            <!-- トピックの場合
            <arg>"BaseTopicName=Stock/Tse/4812"</arg>
            -->
        </initMethod>

        <!-- デスティネーションタイプ -->
        <initMethod name="setProperty">
            <arg>"destinationType"</arg>
            <arg>"javax.jms.Queue"</arg>
            <!-- トピックの場合
            <arg>"javax.jms.Topic"</arg>
            -->
        </initMethod>
    </component>
    <component class="org.seasar.jca.inbound.MessageEndpointFactoryImpl"/>

JMSコンテナの設定

JMSContainer

JMSContainerは,受信したJMSメッセージをアプリケーションコンポーネントにバインドし, リスナメソッドを呼び出すコンポーネントです.

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

  • org.seasar.jms.container.impl.JMSContainerImpl
プロパティ
プロパティ必須説明デフォルト
filters No 受信したメッセージを処理するフィルタを指定します. 通常は自動バインディングされるため,明示的に設定する必要はありません. 標準的なフィルタはjms-default-filter.diconに定義されています. なし
メソッド
メソッド説明
addMessageListener(String messageListenerName) 受信したJMSメッセージを処理するアプリケーションコンポーネントのコンポーネント名を指定します. 少なくとも一つのコンポーネント名を設定する必要があります.

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

    <!-- S2JMS-Container の設定 -->
    <component class="org.seasar.jms.container.impl.JMSContainerImpl">
        <!-- アプリケーションのリスナ・コンポーネントの名前を指定します (複数指定可) -->
        <initMethod name="addMessageListener">
            <arg>"echoListener"</arg>
        </initMethod>
    </component>