S2JMS で ActiveMQ-4.0

これまで S2JMS では ActiveMQ-3.2 系を使ってテストを行ってきました.
ブランクプロジェクトでも ActiveMQ-3.2.2 をバンドルしています.
それを ActiveMQ-4.0 にしたところ,うまく動かないという話があったので確認してみました.
たぶん,ActiveMQ のパッケージが org.activemq から org.apache.activemq に変わったことが原因ではないかと.
んで,その際に ArrayIndexOutOfBoundsException になっていたのは内緒だ.心より恥じる.


ともあれ (JW),ブランクプロジェクトで ActiveMQ-4.0 を使うためには dicon ファイルの一部を修正する必要があります.
SVN では修正済みですが,配布している 1.0.0-M1 で ActiveMQ-4.0 を使う場合は以下の手順で対応お願いします.


まずは ActiveMQ-4.0 のリソースアダプタ (lib/optional/activemq-ra-4.0.1.jar) を以下のディレクトリにコピーします.

  • s2jms-activemq-blank-jsf/src/main/webapp/WEB-INF/ra
  • s2jms-activemq-blank-server/ra


このリソースアダプタを使うためにリソースアダプタの定義を修正します.
該当の dicon は以下です.

  • s2jms-activemq-blank-jsf/src/main/resources/jms-activemq-ra.dicon
  • s2jms-activemq-blank-server/src/main/resources/jms-activemq-ra.dicon

を次のように修正します.

    <component
        class="org.seasar.jca.deploy.impl.RarResourceAdapterDeployer"
    >
        <!-- ActiveMQ ResourceAdapter へのパスを設定します -->
        <property name="path">
            "ra/activemq-ra-4.0.1.rar"
        </property>
        ・・・


次に outbound な ManagedConnectionFactory の定義.
該当の dicon は以下です.

  • s2jms-activemq-blank-jsf/src/main/resources/jms-activemq-outbound.dicon
  • s2jms-activemq-blank-server/src/main/resources/jms-activemq-outbound.dicon
    <component name="mcfDeployer"
        class="org.seasar.jca.deploy.impl.ManagedConnectionFactoryDeployer"
    >
        <property name="managedConnectionFactoryClass">
            "org.apache.activemq.ra.ActiveMQManagedConnectionFactory"
        </property>
    </component>


最後に inbound な ActivationSpec の定義
該当の dicon は以下です.

  • s2jms-activemq-blank-server/src/main/resources/jms-activemq-inbound.dicon
    <component
        class="org.seasar.jca.deploy.impl.MessageEndpointDeployer"
    >
        <property name="activationSpecClassName">
            "org.apache.activemq.ra.ActiveMQActivationSpec"
        </property>

これで ActiveMQ-4.0 との組み合わせでブランクプロジェクトが動くはずです.


今の S2JMS-1.0.0-M1 は最新の S2.4 では動かない (ビルドもできない) ので,その対応をした 1.0.0-M2 を近いうちにリリースしたいと思ってますが,ちょっと仕様を見直すかも? ってことでしばしお待ちを.