連載
非同期処理と疎結合ができる「メッセージング」の常識:企業システムの常識をJBossで身につける(5)(3/4 ページ)
企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
JBoss Messagingのサーバが実行されているかを確認
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!」となれば、成功
以上で、サンプルを実行する環境が整いました。
JBoss Messagingは、こうやって実装する!
今度は、実際に動作させる簡単なサンプルを作成してみましょう。
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(); } } } }
SampleReceiver.java
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(); } } } }
SampleSender.java
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
jndi.properties
次ページでは、先ほどの図5と照らし合わせてソースコードを説明します。さらに、JBoss Messagingのメッセージングをサンプルで体感してみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.