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という物理送信先が取得できる。