ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド

24.3.1 Message Listenerを使用したMessageConsumerの作成

受信したメッセージを処理するために、MessageListenerオブジェクトを登録します。メッセージが到達すると、Message Listenerが呼出されます。
Message Listenerを使用してメッセージを受信する手続き例と処理の流れを以下に説明します。


[Message Listenerを使用したMessageConsumer]

import javax.jms.*;
import javax.naming.*;

public class ConsumerA implements MessageListener,ExceptionListener {                /* 1 */
  public static void main( String[] args ) {
    ...
    Connection connection = null;
    ConsumerA consumerA = new ConsumerA ();                                          /* 2 */
    ...
    try {
        java.util.Hashtable env = new java.util.Hashtable( );
        env.put ( javax.naming.Context.INITIAL_CONTEXT_FACTORY ,
             "com.fujitsu.interstage.j2ee.jndi.InitialContextFactoryForClient" );
        InitialContext initialContext = new InitialContext(env);                     /* 3 */
        ConnectionFactory connectionFactory = (ConnectionFactory)
            initialContext.lookup("java:comp/env/jms/ConnectionFactory");            /* 4 */
        Destination destination = (Destination)
            initialContext.lookup("java:comp/env/jms/Destination");                  /* 5 */
        connection = connectionFactory.createConnection();                           /* 6 */
        connection.setExceptionListener( consumerA ) ;                               /* 7 */
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); /* 8 */
        MessageConsumer consumer = session.createConsumer(destination);              /* 9 */
        consumer.setMessageListener(consumerA);                                      /* 10 */
        connection.start();                                                          /* 11 */
        /* 待ち合わせ処理 */
    } catch( Exception e ) {
        ... 
    }
    finally {
        if( null != connection ) {
            try {
                connection.close();                                                  /* 12 */
            }
            catch( Exception e ) {
                ... 
            }
        }
    }
  }

  public void onMessage(Message message) {
    ... 
    try {
    } catch( JMSException e ) {
        ... 
    }
    ... 
  }

  public void onException( JMSException jmsEx ) {
    ... 
  }
}

  1. MessageListenerインタフェースおよびExceptionListenerインタフェースを実装します。

  2. クラスのインスタンスを生成します。

  3. JNDIの開始コンテキストを構築します。

  4. ConnectionFactoryオブジェクトを取得します(JNDI名が“ConnectionFactory”の場合)。

  5. Destinationオブジェクトを取得します(JNDI名が“Destination”の場合)。

  6. Connectionを作成します。

  7. ExceptionListenerオブジェクトを登録します。

  8. Sessionを作成します。

  9. MessageConsumerを作成します。

  10. MessageListenerオブジェクトを登録します。

  11. 接続によるメッセージの配信を開始します。

  12. Connectionをクローズします。


注意

JNDIの開始コンテキスト構築時の環境プロパティの指定については、“J2EEアプリケーションクライアント”を参照してください。