2008年4月6日日曜日

スタンドアロンなJMSクライアント(Sun Java System Application Serverに実装されてるJMS編)

テスト用にスタンドアロンで動くJMSクライアントを作ってみる。
JMSプロバイダは、
Java EE 5 SDKについてくるSun Java System Application Server(SJSAS)についてくるJMS実装(ややこしい)のiPlanet Message Queue for Java[tm] Software(iMQ)を利用する。
このiMQは、SJSASの管理コンソールからは、Sun Java System Message Queueブローカーと呼ばれてる。
ということは、Sun Java System Message QueueってiMQだったのか。

それはいいとして、
EclipseでJavaプロジェクトを作る。
以下のライブラリをパスに追加する。
${JAVA_SDK_HOME}/imq/lib/jms.jar
${SDK_HOME}/imq/lib/jms.imq.jar
${SDK_HOME}/imq/lib/jms.imq_ja.jar

ソースは以下のとおり。

import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;

public class Sender {
public static void main(String[] args) {

// デフォルト設定(localhost:7676)で実行されているブローカーに対してTCPベースのキューを作成する
QueueConnectionFactory factory = (QueueConnectionFactory) new com.sun.messaging.QueueConnectionFactory();

QueueConnection connection = null;
QueueSession session = null;
Queue queue = null;

try {
connection = factory.createQueueConnection();
session = (QueueSession) connection.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
// 自前でQueueオブジェクトを作成するためには、物理送信先を指定する
queue = session.createQueue("MyPhysicalQueue");
QueueSender sender = session.createSender(queue);
TextMessage msg = session.createTextMessage();
msg.setText("Send Text");
sender.send(msg);

sender.close();
session.close();
connection.close();

} catch(JMSException jmse) {
jmse.printStackTrace();
}

System.out.println("mission complete!");
}
}


■SJSASにJMSのキューを設定する

[設定]-[Javaメッセージサービス]-[物理送信先]から、

新しい物理送信先


の画面を開く。

名前:MyPhysicalQueue
タイプ:javax.jms.Queue

で、了解を押して、物理送信先を作成する。


上記のプログラムを実行すれば"Send Text"というメッセージがMyPhysicalQueueという名前のキューにPUTされる。



JNDIを使ってキューを取得するには、APサーバ(JNDIプロバイダ)の設定が必要。

[リソース]-[JMSリソース]-[送信先リソース]から

新しい JMS 送信先リソース


の画面を開く。

JNDI名:jms/MyQueue
送信先物理名:MyPhysicalQueue
リソースタイプ:javax.jms.Queue

以下のプロパティを追加する
名前:Name
値:MyPhysicalQueue

で、了解を押す。
これで、"jms/MyQueue"という名前で、MyPyhsicalQueueという物理送信先が取得できる。

0 件のコメント:

参加ユーザー

今月の本

  • 臆病者のための株入門
  • TSPガイドブック:リーダー編
  • 夜明けの街で
  • 詳解Oracleアーキテクチャ
  • Ajax イン・アクション
  • 実践Ajax
  • すごい「実行力」
  • More Effective C++
  • 母子関係の理論
  • コンピュータアーキテクチャのエッセンス