Interstage Studio プログラマーズガイド
目次 索引 前ページ次ページ

付録A Interstage Application Server V9.0.1以降で動作するJ2EEアプリケーションを開発する> A.2 EJB2.1のアプリケーションの開発方法

A.2.2 J2EE1.4 Message-driven Beanの呼び出し方法

Webアプリケーション、EJBアプリケーションまたはJ2EEアプリケーションクライアントからMessage-driven Beanを呼び出す場合、JNDIを使用してJMS Destinationをlookupします。

deployment descriptorの編集

クライアントアプリケーションの形態に応じて以下のdeployment descriptorにJMS Destinationについて記述を定義する必要があります。

クライアントアプリケーションの形態

deployment descriptor

WebアプリケーションからJMSメッセージを送信する場合

web.xml

EJBアプリケーションからJMSメッセージを送信する場合

ejb-jar.xml

J2EEアプリケーションクライアントからJMSメッセージを送信する場合

application-client.xml

[Webアプリケーション(web.xml)での定義例]

<?xml version="1.0" encoding="UTF-8" ?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
             ・・・
      <message-destination-ref>
          <description>JMS Destination</description>
          <message-destination-ref-name>jms/Topic</message-destination-ref-name>
          <message-destination-type>javax.jms.Topic</message-destination-type>
          <message-destination-usage>Produces</message-destination-usage>
     </message-destination-ref >
</web-app>

deployment descriptorのタグの詳細は、Interstage Application Server V9.0.1以降の"Interstage Application Server J2EEユーザーズガイド"を参照してください。

JMSメッセージを送信する

JNDIを使用してJMS Destinationオブジェクトをlookupして、メッセージを送信します。

  1. InitialContextオブジェクトを生成する
    InitialContextオブジェクトを新規に生成します。

  2. ConnectionFactoryオブジェクトを取得する
    取得したInitialContextオブジェクトのlookupメソッドを使用して、ConnectionFactoryオブジェクトを取得します。
    lookupの引数には、以下の文字列を指定します。
    java:comp/env/[deployment descriptorの<resource-ref>に指定したコネクションファクトリ名]
  3. Destinationオブジェクトを取得する
    取得したInitialContextオブジェクトのlookupメソッドを使用して、Destinationオブジェクトを取得します。
    lookupの引数には、以下の文字列を指定します。
    java:comp/env/[deployment descriptorの<message-destination-ref-name>に指定したDestination名]
  4. Connectionを作成する
    ConnectionFactoryからcreateConnectionメソッドを使用して、Connectionオブジェクトを取得します。

  5. Sessionを作成する
    ConeectionのcreateSessionメソッドを使用して、Sessionオブジェクトを取得します。

  6. MessageProducerを作成する
    SessionのcreateProducerメソッドを使用して、MessageProducerオブジェクトを取得します。

  7. メッセージを送信する
    MessageProducerのsendメソッドを使用して作成したメッセージを送信します。

  8. Connectionをクローズする
    接続したConnectionのcloseメソッドを使用して、クローズします。

[JMS Destinationオブジェクトのlookupによるメッセージの送信例]

package sample;

import javax.jms.*;
import javax.naming.*;
 
public class TopicClient {
    public static void main(String[] args) {
        try {
            InitialContext initialContext = new InitialContext();
            ConnectionFactory connectionFactory = (ConnectionFactory) 
            initialContext.lookup("java:comp/env/jms/ConnectionFactory");
            Destination destination = (Destination) 
            initialContext.lookup("java:comp/env/jms/Topic");
            Connection connection = connectionFactory.createConnection(); 
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            MessageProducer messageProducer = session.createProducer(destination); 
            TextMessage Message = session.createTextMessage( ); 
            Message.setText( "Message" ); 
            messageProducer.send(Message);
            connection.close(); 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

J2EEアプリケーションクライアントからJNDIを使用する場合は、JNDIサービスプロバイダの環境設定をする必要があります。JNDIサービスプロバイダの環境設定については、Interstage Application Server V9.0.1以降の"Interstage Application Server J2EEユーザーズガイド"を参照してください。

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1998-2007