|
| |
 |
JMS(PTP)編 |
 |
◆JMSとは? |
| JMSはJava Message Serviceの略です。メッセージを送ったり受け取ったりするためのAPIです。J2EEの一部の機能として提供されています。メッセージの送受信の方法にはPoint-to-PointとPublish-Subscribeの2種類あります。ここではPoint-to-Pointを使用します。 |
| ◆Point-to-Point(PTP)とは? |
| 送り側はキューに対してメッセージを送信して、受け取り側はそのキューからメッセージを取り出します。取り出されたメッセージはその時点でキューからはなくなるので、送り側が送ったメッセージはただ一つの受け取り側に届きます。 |
| ◆ここでの環境 |
| OS |
Windows 2000 |
| J2SE SDK |
1.3.1_01 |
| J2EE SDK |
1.3_01 |
|
|
|
| ◆環境変数 |
| %JAVA_HOME% |
C:\jdk1.3.1_01 |
| %J2EE_HOME% |
C:\j2sdkee1.3 |
| %PATH% |
%JAVA_HOME%bin;%J2EE_HOME%\bin を含める |
| %CLASSPATH% |
.;%J2EE_HOME%\lib\j2ee.jar;%J2EE_HOME%\lib\locale
を含める |
|
| ◆Javaソースコード(メッセージの送り側/Producer) |
| HelloWorldJmsProducer.java(ここからダウンロード) |
import javax.naming.*;
import javax.jms.*;
public class HelloWorldJmsProducer {
public final static String JMS_FACTORY="QueueConnectionFactory";
public final static String QUEUE="MyQueue";
public static void main(String args[]) {
try {
QueueConnectionFactory queueConnectionFactory;
QueueConnection queueConnection;
QueueSession queueSession;
QueueSender queueSender;
Queue queue;
TextMessage msg;
// JNDI InitialContextを作成します
InitialContext ctx = new InitialContext();
// Connection FactoryとQueueをLook upします
queueConnectionFactory = (QueueConnectionFactory)ctx.lookup(JMS_FACTORY);
queue = (Queue) ctx.lookup(QUEUE);
// コネクションを作成
queueConnection = queueConnectionFactory.createQueueConnection();
// セッションを作成
queueSession = queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
// キューセンダーを作成
queueSender = queueSession.createSender(queue);
// メッセージを作成
msg = queueSession.createTextMessage();
msg.setText("Hello World");
// メッセージの配送をスタート
queueConnection.start();
// メッセージを送信
queueSender .send(msg);
// 接続を切断
queueSender.close();
queueSession.close();
queueConnection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} |
|
|
| |
| ◆Javaソースコード(メッセージの受け取り側/Consumer) |
| HelloWorldJmsConsumer.java(ここからダウンロード) |
import javax.jms.*;
import javax.naming.*;
public class HelloWorldJmsConsumer {
public final static String JMS_FACTORY="QueueConnectionFactory";
public final static String QUEUE="MyQueue";
public static void main(String[] args) {
try {
QueueConnectionFactory queueConnectionFactory;
QueueConnection queueConnection;
QueueSession queueSession;
QueueReceiver queueReceiver;
Queue queue;
TextMessage msg;
// JNDI InitialContextを作成します
InitialContext ctx = new InitialContext();
// Connection FactoryとQueueをLook upします
queueConnectionFactory = (QueueConnectionFactory)ctx.lookup(JMS_FACTORY);
queue = (Queue) ctx.lookup(QUEUE);
// コネクションを作成
queueConnection = queueConnectionFactory.createQueueConnection();
// セッションを作成
queueSession = queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
// キューレシーバーを作成
queueReceiver = queueSession.createReceiver(queue);
// メッセージの配送をスタート
queueConnection.start();
// メッセージの受信
while (true) {
Message m = queueReceiver.receive(1);
if (m != null) {
if (m instanceof TextMessage) {
msg = (TextMessage) m;
System.out.println(msg.getText());
} else {
break;
}
}
}
// 接続を切断
queueReceiver.close();
queueSession.close();
queueConnection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} |
|
|
| |
| ◆コンパイル |
| コマンドプロンプト |
| C:\作業フォルダ\JavaHello>javac
HelloWorldJmsProducer.java HelloWorldJmsConsumer.java
C:\作業フォルダ\JavaHello> |
|
| ◆J2EEサーバーの起動(JMSプロバイダーの起動) |
| JMSプロバイダーはJ2EEサーバーの一部の機能として起動します。J2EEサーバーの起動はj2ee
-verboseというコマンドでできます。 |
| コマンドプロンプト |
C:\作業フォルダ\JavaHello>j2ee
-verbose
・・・・・・・・・・
・・・・・・・・・・
Starting web service at port: 8000
Starting secure web service at port: 7000
J2EE SDK/1.3
Starting web service at port: 9191
J2EE SDK/1.3
J2EE server startup complete. |
|
| ◆キューの作成 |
| 次に使用するキューを作成します。j2eeadminコマンドで作成できます。 |
| コマンドプロンプト |
C:\作業フォルダ\JavaHello>j2eeadmin
-addJmsDestination MyQueue queue
C:\作業フォルダ\JavaHello> |
|
| ◆メッセージの送信 |
| HelloWorldJmsProducerを起動してメッセージをキューに対して送信してみましょう! |
| コマンドプロンプト |
C:\作業フォルダ\JavaHello>java
HelloWorldJmsProducer
Java(TM) Message Service 1.0.2 Reference Implementation
(build b14) C:\作業フォルダ\JavaHello> |
|
| ◆メッセージの受信 |
| 新たな窓でコマンドプロンプト(MS-DOSプロンプト)を起動して、HelloWorldJmsConsumerを動かしてみましょう!キューには上で送信したメッセージが一つ入っているはずです。 |
| コマンドプロンプト |
C:\作業フォルダ\JavaHello>Java
HelloWorldJmsConsumer
Java(TM) Message Service 1.0.2 Reference Implementation
(build b14)
Hello World
|
|
| おおおお!表示されましたね! |
| ◆もう一度メッセージの送信 |
| このHelloWorldJmsConsumerはメッセージをキューから受け取り続けるようになっているので、もう一度、HelloWorldJmsProducerを動かしてメッセージをキューに送ってみましょう! |
| コマンドプロンプト |
C:\作業フォルダ\JavaHello>java
HelloWorldJmsProducer
Java(TM) Message Service 1.0.2 Reference Implementation
(build b14) C:\作業フォルダ\JavaHello> |
|
| 送れました。さて、HelloWorldJmsConsumerを動かしている窓を見てみましょう! |
| コマンドプロンプト |
C:\作業フォルダ\JavaHello>Java
HelloWorldJmsConsumer
Java(TM) Message Service 1.0.2 Reference Implementation
(build b14)
Hello World
Hello World
|
|
| おおおおお!メッセージが着てるぞ!! |
| |
■関連 JMS(Publisher/Subscriber)編 |
■書籍 Java関連の書籍
EJB関連の書籍 |
|
| |
|
|
| ツールの部屋
- Java関連の書籍 - デザインパターン - 情報交換掲示板
- HOME |