IBM WebSphere MQ with Sun Generic Resource Adapter for JMS on GlassFish

Sun Generic Resource Adapter for JMSと IBM WebSphere MQ の組み合わせをGlassFish上で動かしてみます。

Sun Generic Resource Adapter for JMSのデプロイ

管理コンソールのアプリケーション > コネクタモジュールから配備します。ファイルを選択して「了解」ボタンをクリックするとリソースアダプタのプロパティー編集画面へ遷移します。ここでorg.seasar.jms.core.deploy.impl.WMQResourceAdapterDeployer#setupProperties()にてセットされている通りにプロパティをセットします。

コネクタ接続プールの作成

管理コンソールのリソース > コネクタ > コネクタ接続プールから作成します。リソースアダプタには先ほどデプロイしたものを指定します。次の画面で追加プロパティを設定しますが、ここにはorg.seasar.jms.core.deploy.impl.JMSManagedConnectionFactoryDeployer#setProperty()と同じものを設定します(名前:ConnectionFactoryProperties,値:QueueManager=Xxx,…)。

コネクタリソースの作成

管理コンソールのリソース > コネクタ > コネクタリソースから作成します。今回JNDI名は/jms/connectionとしました。

以上でGlassFish側の設定は終了です。次にS2JMSの設定です。
S2JMS側ではリソースアダプタの設定が不要になります。コネクションファクトリをlookupするだけになります。

jms.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
	<!-- コネクションファクトリ -->
	<component class="javax.jms.QueueConnectionFactory">
		@org.seasar.extension.j2ee.JndiResourceLocator@lookup("jms/connection")
	</component>

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

	<!-- メッセージ送信コンポーネント -->
	<component instance="prototype"
		class="org.seasar.jms.core.impl.MessageSenderImpl">
		<property name="destinationFactory">
			<!-- デスティネーション (キューまたはトピック) ファクトリ -->
			<component
				class="org.seasar.jms.core.destination.impl.QueueFactory">
				<!-- キュー名を指定します -->
				<property name="name">"TEST_QUEUE"</property>
			</component>
		</property>
	</component>
</components>

s2container.dicon

こちらの設定も忘れずに。。。これでJDBC,JMSともにGlassFishJTAで動かすことができます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
	"http://www.seasar.org/dtd/components24.dtd">
<components>
	<include condition="#ENV == 'ut'" path="warmdeploy.dicon" />
	<include condition="#ENV == 'ct'" path="hotdeploy.dicon" />
	<include condition="#ENV != 'ut' and #ENV != 'ct'"
		path="cooldeploy.dicon" />
	<component
		class="org.seasar.framework.container.factory.SimplePathResolver">
		<initMethod name="addRealPath">
			<arg>"jta.dicon"</arg>
			<arg>"jta-sun9.dicon"</arg>
		</initMethod>
	</component>
</components>