on GlassFish
Sun Java System Application Server9.1でS2JMSを動かしてみました。
接続プールの作成
管理コンソールから簡単に作れました。
リソース-->JMSリソース-->接続ファクトリ
JNDI名「jms/hoge1」で登録。
Queueは
リソース-->JMSリソース-->送信先リソース
で登録すれば作成されるみたいです。とりあえず「hoge」というQueueを登録しました。JNDI名は「jms/hoge2」。
普通は外部のQueueを使うと思いますが、ここでは自分のとこのQueueに送受信してみます。
S2JMS側の設定
Dolteng 0.30.0で作ったdiconファイルを基に作りました。jms-outbound.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> <description> 1.マネージドコネクションファクトリをJNDIで取得するように変更。 2.リソースアダプタはアプリケーションサーバのものを使うので削除。 3.デスティネーションファクトリはSimpleDestinationFactoryに変更。 </description> <!-- マネージドコネクションファクトリ --> <component class="javax.jms.ConnectionFactory"> @org.seasar.extension.j2ee.JndiResourceLocator@lookup("jms/hoge1") </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.SimpleDestinationFactory"> <property name="destination"> @org.seasar.extension.j2ee.JndiResourceLocator@lookup("jms/hoge2") </property> </component> </property> </component> <!-- メッセージ受信コンポーネント --> <component instance="prototype" class="org.seasar.jms.core.impl.MessageReceiverImpl"> <property name="destinationFactory"> <!-- デスティネーション (キューまたはトピック) ファクトリ --> <component class="org.seasar.jms.core.destination.impl.SimpleDestinationFactory"> <property name="destination"> @org.seasar.extension.j2ee.JndiResourceLocator@lookup("jms/hoge2") </property> </component> </property> </component> </components>
動作確認
Teedaで簡単な確認画面を作成しました(htmlは省略)。
package hatena.beerman.web.jms; import org.seasar.jms.core.MessageReceiver; import org.seasar.jms.core.MessageSender; public class JmsPage { public String sendMessage; public String recieveMessage; public MessageSender messageSender; public MessageReceiver messageReceiver; public void doSend() { messageSender.send(sendMessage); } public void doRecieve() { recieveMessage = messageReceiver.receiveText(); } }
ちゃんと動いてくれました〜。