ヘッダーをスキップ

Oracle Containers for J2EE Enterprise JavaBeans開発者ガイド
10g(10.1.3.1.0)

B31852-03
目次
目次
索引
索引

戻る 次へ

23 メッセージ・サービスの構成

この章では、次のようなJava Message Service(JMS)およびJMS以外のメッセージ・サービス・プロバイダを構成する方法を説明します。

詳細は、次を参照してください。

メッセージ・サービス・プロバイダで使用するためのJ2CAリソース・アダプタの構成

メッセージ・サービス・プロバイダで使用するためにOracle JMSコネクタ(「Oracle JMSコネクタ: J2EE Connector Architecture(J2CA)ベース・プロバイダ」を参照)などのJ2CAリソース・アダプタを構成するには、次の処理を行う必要があります。

  1. J2CAアダプタをインストールおよび構成します(「J2CAアダプタのインストールと構成」を参照)。

  2. コネクション・ファクトリに適したJNDI名を選択します(「J2CAメッセージ・サービス・プロバイダのコネクション・ファクトリ名」を参照)。

  3. 適切なデプロイXMLファイルを構成します(「OC4J J2CAリソース・アダプタのデプロイXMLファイルの構成」を参照)。

    これらのデプロイXMLファイルを使用して、XA非準拠のファクトリ(2フェーズ・コミット(2PC)トランザクションが不要な場合)またはXA準拠のファクトリ(2PCトランザクションが必要な場合)を指定できます。2PCの詳細は、「グローバル・トランザクションまたは2フェーズ・コミット(2PC)トランザクションへの参加方法」を参照してください。

  4. J2CAリソース・アダプタを使用してメッセージ・サービス・プロバイダにアクセスするようメッセージドリブンBeanを構成します。

    詳細は、次を参照してください。

J2CAメッセージ・サービス・プロバイダのコネクション・ファクトリ名

宛先およびコネクション・ファクトリの実際のJNDI名は、oc4j-connectors.xmlファイルで定義されているJ2CAインストール環境によって決まります(「OC4J J2CAリソース・アダプタのデプロイXMLファイルの構成」を参照)。

通常、この名前はjava:<Prefix>/<FactoryName>から構成されています。<Prefix>comp/env/eisなどのオプションのJNDIの場所で、<FactoryName>はアダプタのjavax.cci.ConnectionFactoryの名前です。

J2CAアダプタのインストールと構成

OC4Jには、Oracle JMSコネクタが含まれています。このコネクタは、OC4JをOEMS JMSおよびOEMS JMSデータベース・メッセージ・サービス・プロバイダ、またWebSphereMQ、Tibco、SonicMQなどのOracle以外のJMSプロバイダと統合する汎用JMS J2CAリソース・アダプタです。

詳細は、次を参照してください。

OC4J J2CAリソース・アダプタのデプロイXMLファイルの構成

J2CAメッセージ・サービス・プロバイダを構成するには、次のデプロイXMLファイルを構成する必要があります。

これらのデプロイXMLファイルを使用して、XA非準拠のファクトリ(2フェーズ・コミット(2PC)トランザクションが不要な場合)またはXA準拠のファクトリ(2PCトランザクションが必要な場合)を指定できます。2PCの詳細は、「グローバル・トランザクションまたは2フェーズ・コミット(2PC)トランザクションへの参加方法」を参照してください。

詳細は、次を参照してください。

OEMS JMSメッセージ・サービス・プロバイダの構成

OEMS JMSメッセージ・サービス・プロバイダ(「OEMS JMS: メモリー内またはファイルベース・プロバイダ」を参照)を構成するには、次の処理を行う必要があります。

  1. 宛先およびコネクション・ファクトリに適したJNDI名を選択します(「OEMS JMS宛先名およびコネクション・ファクトリ名」を参照)。

  2. <OC4J_HOME>/j2ee/home/config/jms.xmlファイル(「jms.xmlの構成」を参照)を構成して、宛先およびコネクション・ファクトリのタイプを指定します。

    XA非準拠のファクトリ(2フェーズ・コミット(2PC)トランザクションが不要な場合)またはXA準拠のファクトリ(2PCトランザクションが必要な場合)を指定できます。2PCの詳細は、「グローバル・トランザクションまたは2フェーズ・コミット(2PC)トランザクションへの参加方法」を参照してください。

  3. オプションで、実際のJNDI名を論理名にマッピングします(「JMS宛先またはコネクション・リソース・マネージャのコネクション・ファクトリへの環境参照の構成(JMS 1.0)」を参照)。

  4. OEMS JMSメッセージ・サービス・プロバイダにアクセスするようメッセージドリブンBeanを構成します。

    詳細は、次を参照してください。

OEMS JMS宛先名およびコネクション・ファクトリ名

JMS宛先およびコネクション・ファクトリの実際のJNDI名は、jms.xmlファイル内でユーザーが指定します(「jms.xmlの構成」を参照)。

表23-1に、これらの名前の形式をリストします。

表23-1    OEMS JMS宛先名およびコネクション・ファクトリ名 
タイプ  形式 

キュー 

jms/Queue/<QName> 

キュー・コネクション・ファクトリ 

jms/Queue/<QCFName> 

トピック 

jms/Topic/<TName> 

トピック・コネクション・ファクトリ 

jms/Topic/<TCFName> 

jms.xmlの構成

<OC4J_HOME>/j2ee/home/config/jms.xmlファイルでOEMS JMSオプションを構成します。このリリースでは、jms.xmlhttp://www.oracle.com/technology/oracleas/schema/jms-server-10_1.xsdにあるXML Schema文書(XSD)で定義されています。

jms.xmlファイルで構成できるオプションの一部を次に示します。

例23-1に、メッセージドリブンBean rpTestMdb例17-1を参照)で使用されるキュー(jms/Queue/rpTestQueueという名前)を指定するEJB 2.1 MDBのjms.xmlファイル構成を示します。キュー・コネクション・ファクトリは、jms/Queue/myQCFで定義されます。また、トピックの名前はjms/Topic/rpTestTopic、コネクション・ファクトリはjms/Topic/myTCFで定義されます。

例23-1    OEMS JMSファクトリを使用したEJB 2.1 MDBのjms.xml

<jms>
    <jms-server port="9128">
        <queue location="jms/Queue/rpTestQueue"></queue>
        <queue-connection-factory location="jms/Queue/myQCF"></queue-connection-factory>
        <topic location="jms/Topic/rpTestTopic"></topic>
        <topic-connection-factory location="jms/Topic/myTCF"></topic-connection-factory>
        <log>
             <!-- path to the log-file where JMS-events and errors are written -->
             <file path="../log/jms.log" />
        </log>
    </jms-server>
</jms>

例23-2に、2フェーズ・コミット(2PC)対応のXAファクトリを使用した同じMDBのjms.xmlファイル構成を示します。

例23-2    OEMS JMS XAファクトリを使用したEJB 2.1 MDBのjms.xml

<jms>
    <jms-server port="9128">
        <queue location="jms/Queue/rpTestQueue"></queue>
        <xa-queue-connection-factory location="jms/Queue/myXAQCF"></queue-connection-factory>
        <topic location="jms/Topic/rpTestTopic"></topic>
        <xa-topic-connection-factory location="jms/Topic/myXATCF"></topic-connection-factory>
        <log>
             <!-- path to the log-file where JMS-events and errors are written -->
             <file path="../log/jms.log" />
        </log>
    </jms-server>
</jms>

OEMS JMSデータベース・メッセージ・サービス・プロバイダの構成

OEMS JMSデータベース・メッセージ・サービス・プロバイダ(「OEMS JMSデータベース: アドバンスト・キューイング(AQ)ベース・プロバイダ」を参照)を構成するには、次の処理を行う必要があります。

  1. OEMS JMSデータベース・プロバイダをインストールおよび構成します(「OEMS JMSデータベース・プロバイダのインストールと構成」を参照)。

    XA準拠リソースを無効にする権限(2フェーズ・コミット(2PC)トランザクションが不要な場合)またはXA準拠リソースを有効にする権限(2PCトランザクションが必要な場合)を付与できます。2PCの詳細は、「グローバル・トランザクションまたは2フェーズ・コミット(2PC)トランザクションへの参加方法」を参照してください。

  2. 宛先およびコネクション・ファクトリに適したJNDI名を選択します(「OEMS JMSデータベース宛先名およびコネクション・ファクトリ名」を参照)。

  3. data-sources.xmlファイルを構成してデータベースを識別します(「data-sources.xmlの構成」を参照)。

  4. オプションで、実際のJNDI名を論理名にマッピングします(「JMS宛先またはコネクション・リソース・マネージャのコネクション・ファクトリへの環境参照の構成(JMS 1.0)」を参照)。

  5. application.xml(またはorion-application.xml)ファイルを構成して、<resource-provider>要素内でOEMS JMSデータベース・プロバイダとして使用するデータソースのJNDI名を識別します(「application.xmlまたはorion-application.xmlの構成」を参照)。

  6. OEMS JMSデータベース・メッセージ・サービス・プロバイダにアクセスするようメッセージドリブンBeanを構成します。

    詳細は、次を参照してください。

OEMS JMSデータベース宛先名およびコネクション・ファクトリ名

表23-2に示すように、JMS宛先およびコネクション・ファクトリの実際のJNDI名は、OEMS JMSデータベースのインストール環境によって決まります。

表23-2    OEMS JMSデータベース宛先名およびコネクション・ファクトリ名 
タイプ  形式 

キュー 

java:comp/resource/<ProviderName>/Queues/<QName> 

キュー・コネクション・ファクトリ 

java:comp/resource/<ProviderName>/QueueConnectionFactories/<QCFName> 

トピック 

java:comp/resource/<ProviderName>/Topics/<TName> 

トピック・コネクション・ファクトリ 

java:comp/resource/<ProivderName>/TopicConnectionFactories/<TCFName> 

表23-2の変数の値は、次のように定義されます。

OEMS JMSデータベース・プロバイダのインストールと構成


注意

次の各項では、キュー、トピック、それらの表の作成および権限の割当てにSQLを使用します。このSQLは、OC4Jのサンプル・コードのページhttp://www.oracle.com/technology/tech/java/oc4j/demosにあるMDBデモ内で提供されています。 


  1. ユーザーまたはDBAは、『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイドおよびリファレンス』および汎用データベース・マニュアルに従ってOracle AQをインストールする必要があります。

  2. ユーザーまたはDBAは、MDBでデータベースに接続するためのRDBMSユーザーを作成し、OEMS JMSデータベース操作を実行するための適切なアクセス権限をこのユーザーに付与する必要があります。

    必要な権限は、リクエストする機能によって決まります。各タイプの機能に必要な権限の詳細は、『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイドおよびリファレンス』を参照してください。

    次の例では、Oracle AQ操作に必要な権限のあるjmsuserを作成します。このユーザーは、そのスキーマ内で作成する必要があります。これらの文を実行するにはSYS DBAであることが必要です。

    DROP USER jmsuser CASCADE ;
    
    GRANT connect, resource,AQ_ADMINISTRATOR_ROLE TO jmsuser IDENTIFIED BY jmsuser ;
    GRANT execute ON sys.dbms_aqadm  TO  jmsuser;
    GRANT execute ON sys.dbms_aq     TO  jmsuser;
    GRANT execute ON sys.dbms_aqin   TO  jmsuser;
    GRANT execute ON sys.dbms_aqjms  TO  jmsuser;
    
    connect jmsuser/jmsuser;
    
    

    ユーザーの必要に応じて、XA準拠の2フェーズ・コミット(2PC)権限やシステム管理権限など、他の権限の付与が必要な場合があります。

    2PCの詳細は、次を参照してください。

  3. ユーザーまたはDBAは、JMSのDestinationオブジェクトをサポートする表およびキューを作成する必要があります。

    DBMS_AQADMパッケージおよびOracle AQメッセージ・タイプの詳細は、『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイドおよびリファレンス』を参照してください。

    1. JMSのDestination(キューまたはトピック)を処理する表を作成します。

      OEMS JMSデータベースでは、トピックとキューの両方でキュー表が使用されます。rpTestMdb JMSの例では、キュー用に単一の表rpTestQTabが作成されます。

      キュー表を作成するには、次のSQLを実行します。

      DBMS_AQADM.CREATE_QUEUE_TABLE(
              Queue_table            => 'rpTestQTab',
              Queue_payload_type     => 'SYS.AQ$_JMS_MESSAGE',
              sort_list => 'PRIORITY,ENQ_TIME',
              multiple_consumers  => false,
              compatible             => '8.1.5');
      
      

      multiple_consumersパラメータは、複数のコンシューマが存在するかどうかを示します。したがって、このパラメータは常に、キューについてはfalse、トピックについてはtrueに設定します。

    2. JMSのDestinationを作成します。トピックを作成する場合は、トピックの各サブスクライバを追加する必要があります。rpTestMdb JMSの例では、単一のキューrpTestQueueが必要です。

      次の例では、キュー表rpTestQTab内にrpTestQueueというキューを作成します。作成後にキューを開始します。

      DBMS_AQADM.CREATE_QUEUE(
            Queue_name          => 'rpTestQueue',
            Queue_table         => 'rpTestQTab');
      
      DBMS_AQADM.START_QUEUE(
            queue_name         => 'rpTestQueue');
      
      

      トピックを追加する場合のために、次の例で、トピック表rpTestTTab内にrpTestTopicというトピックを作成する方法を示します。作成後に、2つの永続サブスクライバがトピックに追加されます。最後に、トピックが開始され、ユーザーにそのトピックに関する権限が付与されます。


      注意

      Oracle AQでは、DBMS_AQADM.CREATE_QUEUEメソッドを使用してキューとトピックの両方が作成されます。 


      DBMS_AQADM.CREATE_QUEUE_TABLE(
              Queue_table            => 'rpTestTTab',
              Queue_payload_type     => 'SYS.AQ$_JMS_MESSAGE',
              multiple_consumers  => true,
              compatible             => '8.1.5');
      DBMS_AQADM.CREATE_QUEUE( 'rpTestTopic', 'rpTestTTab');
      DBMS_AQADM.ADD_SUBSCRIBER('rpTestTopic', 
      sys.aq$_agent('MDSUB', null, null)); DBMS_AQADM.ADD_SUBSCRIBER('rpTestTopic',
      sys.aq$_agent('MDSUB2', null, null)); DBMS_AQADM.START_QUEUE('rpTestTopic');


      注意

      ここで定義する名前は、orion-ejb-jar.xmlファイルでキューまたはトピックを定義するために使用した名前と同じ名前にする必要があります。 


data-sources.xmlの構成

OEMS JMSデータベース・プロバイダがインストールされているデータベースに対してデータソースを構成します。JMSのトピックおよびキューは、データベース表とキューを使用してメッセージ機能を提供します。使用するデータソースのタイプは、必要な機能によって決まります。

例23-3に、デフォルトでグローバル(2フェーズ・コミット)トランザクションをサポートする一般的なマネージド・データソースを示します。

例23-3    シンJDBCドライバを使用するエミュレートされたデータソース

<connection-pool name="ScottConnectionPool">
    <connection-factory
        factory-class="oracle.jdbc.pool.OracleDataSource"
        user="scott"
        password="tiger"
        url="jdbc:oracle:thin:@//localhost:1521/ORCL" >
    </connection-factory>
</connection-pool>

<managed-data-source
    name="OracleDS"
    jndi-name="jdbc/OracleDS"
    connection-pool-name="ScottConnectionPool"
/>

詳細は、「EJBデータソース・サービスについて」を参照してください。

application.xmlまたはorion-application.xmlの構成

<resource-provider>要素内で、OEMS JMSデータベース・プロバイダとして使用されるデータソースのJNDI名を識別します。

次のコード例は、OEMS JMSデータベースのXML構文を使用してJMSプロバイダを構成する方法を示します。

次の例では、jdbc/OracleDSによって識別されるデータソースが、OEMS JMSデータベース・プロバイダとして使用されるデータソースです。このJNDI名は、例23-3managed-data-source要素のjndi-name属性で指定されます。この例でエミュレートされていないデータソースを使用した場合、名前はlocation要素内の名前と同じになります。

<resource-provider
    class="oracle.jms.OjmsContext"
    name="myProvider">
    <description>OJMS/AQ</description>
    <property name="datasource" value="jdbc/OracleDS"></property>
</resource-provider>

戻る 次へ
Oracle
Copyright © 2002, 2008 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引