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 を近いうちにリリースしたいと思ってますが,ちょっと仕様を見直すかも? ってことでしばしお待ちを.