JBoss Messagingのサーバが実行されているかを確認するために、jboss-messaging-1.4.5.GAに付属しているサンプルを実行してみましょう。
1:C:\jboss-4.2.3.GA\bin\run.batを実行しサーバを立ち上げる
2:先ほどの2.と同様に、C:\jboss-messaging-1.4.5.GA\examples\queue\build.xmlを実行
3:「SUCCESS!」となれば、成功
以上で、サンプルを実行する環境が整いました。
今度は、実際に動作させる簡単なサンプルを作成してみましょう。
package sample;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
/**
* testQueueトピックからテキストメッセージを受信する
*/
public class SampleReceiver {
public static void main(String[] args) {
Context context = null;
Connection conn = null;
try {
// JNDIイニシャルコンテキストを取得します。
context = new InitialContext();
// 接続ファクトリを取得します。
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("ConnectionFactory");
// 接続を作成します。
conn = connectionFactory.createConnection();
// 宛先をルックアップします。
Queue queue = (Queue) context.lookup("/queue/testQueue");
// セッションを作成します。
Session session = conn.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// メッセージ受信
MessageConsumer msgConsumer = session.createConsumer(queue);
conn.start();
TextMessage msg = (TextMessage) msgConsumer.receive();
if (msg == null) {
System.out.println("受信NG");
} else {
System.out.println("受信OK: [" + msg.getText() + "]");
}
System.out.println("受信終了");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (context != null) {
try {
context.close();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
if (conn != null) {
conn.close();
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
package sample;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
/**
* testQueueトピックへテキストメッセージを送信する
*/
public class SampleSender {
public static void main(String[] args) {
Context context = null;
Connection conn = null;
try {
// JNDIイニシャルコンテキストを取得します。
context = new InitialContext();
// 接続ファクトリを取得します。
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("ConnectionFactory");
// 接続を作成します。
conn = connectionFactory.createConnection();
// 宛先をルックアップします。
Queue queue = (Queue) context.lookup("/queue/testQueue");
// セッションを作成します。
Session session = conn.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// メッセージ送信
MessageProducer msgProducer = session.createProducer(queue);
msgProducer.send(session.createTextMessage("Hello World!!!"));
System.out.println(queue.getQueueName() + ":送信完了");
} catch (Exception e) {
e.printStackTrace();
finally {
if (context != null) {
try {
context.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
try {
if (conn != null) {
conn.close();
}
}
catch (JMSException e) {
e.printStackTrace();
}
}
}
}
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=jnp://localhost:1099 java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
次ページでは、先ほどの図5と照らし合わせてソースコードを説明します。さらに、JBoss Messagingのメッセージングをサンプルで体感してみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.