Oracle Containers for J2EE Enterprise JavaBeans開発者ガイド 10g(10.1.3.1.0) B31852-03 |
|
この章では、次のようなJava Message Service(JMS)およびJMS以外のメッセージ・サービス・プロバイダを構成する方法を説明します。
詳細は、次を参照してください。
メッセージ・サービス・プロバイダで使用するためにOracle JMSコネクタ(「Oracle JMSコネクタ: J2EE Connector Architecture(J2CA)ベース・プロバイダ」を参照)などのJ2CAリソース・アダプタを構成するには、次の処理を行う必要があります。
これらのデプロイXMLファイルを使用して、XA非準拠のファクトリ(2フェーズ・コミット(2PC)トランザクションが不要な場合)またはXA準拠のファクトリ(2PCトランザクションが必要な場合)を指定できます。2PCの詳細は、「グローバル・トランザクションまたは2フェーズ・コミット(2PC)トランザクションへの参加方法」を参照してください。
詳細は、次を参照してください。
宛先およびコネクション・ファクトリの実際のJNDI名は、oc4j-connectors.xml
ファイルで定義されているJ2CAインストール環境によって決まります(「OC4J J2CAリソース・アダプタのデプロイXMLファイルの構成」を参照)。
通常、この名前はjava:<Prefix>/<FactoryName>
から構成されています。<Prefix>
はcomp/env/eis
などのオプションのJNDIの場所で、<FactoryName>
はアダプタのjavax.cci.ConnectionFactory
の名前です。
OC4Jには、Oracle JMSコネクタが含まれています。このコネクタは、OC4JをOEMS JMSおよびOEMS JMSデータベース・メッセージ・サービス・プロバイダ、またWebSphereMQ、Tibco、SonicMQなどのOracle以外のJMSプロバイダと統合する汎用JMS J2CAリソース・アダプタです。
詳細は、次を参照してください。
J2CAメッセージ・サービス・プロバイダを構成するには、次のデプロイXMLファイルを構成する必要があります。
これらのデプロイXMLファイルを使用して、XA非準拠のファクトリ(2フェーズ・コミット(2PC)トランザクションが不要な場合)またはXA準拠のファクトリ(2PCトランザクションが必要な場合)を指定できます。2PCの詳細は、「グローバル・トランザクションまたは2フェーズ・コミット(2PC)トランザクションへの参加方法」を参照してください。
詳細は、次を参照してください。
OEMS JMSメッセージ・サービス・プロバイダ(「OEMS JMS: メモリー内またはファイルベース・プロバイダ」を参照)を構成するには、次の処理を行う必要があります。
<
OC4J_HOME
>/j2ee/home/config/jms.xml
ファイル(「jms.xmlの構成」を参照)を構成して、宛先およびコネクション・ファクトリのタイプを指定します。 XA非準拠のファクトリ(2フェーズ・コミット(2PC)トランザクションが不要な場合)またはXA準拠のファクトリ(2PCトランザクションが必要な場合)を指定できます。2PCの詳細は、「グローバル・トランザクションまたは2フェーズ・コミット(2PC)トランザクションへの参加方法」を参照してください。
詳細は、次を参照してください。
メッセージ・サービス・プロバイダには、Oracle JMSコネクタなどのJ2CAリソース・アダプタを使用してアクセスすることをお薦めします。詳細は、「J2CAリソース・アダプタを使用せずにメッセージ・サービス・プロバイダにアクセスする場合の制限」を参照してください。
注意
JMS宛先およびコネクション・ファクトリの実際のJNDI名は、jms.xml
ファイル内でユーザーが指定します(「jms.xmlの構成」を参照)。
表23-1に、これらの名前の形式をリストします。
タイプ | 形式 |
---|---|
キュー |
|
キュー・コネクション・ファクトリ |
|
トピック |
|
トピック・コネクション・ファクトリ |
|
<
OC4J_HOME
>/j2ee/home/config/jms.xml
ファイルでOEMS JMSオプションを構成します。このリリースでは、jms.xml
はhttp://www.oracle.com/technology/oracleas/schema/jms-server-10_1.xsd
にあるXML Schema文書(XSD)で定義されています。
jms.xml
ファイルで構成できるオプションの一部を次に示します。
Destination
オブジェクト。
jms.xml
ファイル内のトピックまたはキュー。
Destination
タイプの場合も、名前、位置およびコネクション・ファクトリを指定する必要があります。XA非準拠のファクトリ(2フェーズ・コミット(2PC)トランザクションが不要な場合)またはXA準拠のファクトリ(2PCトランザクションが必要な場合)を指定できます。2PCの詳細は、「グローバル・トランザクションまたは2フェーズ・コミット(2PC)トランザクションへの参加方法」を参照してください。
例23-1に、メッセージドリブンBean rpTestMdb
(例17-1を参照)で使用されるキュー(jms/Queue/rpTestQueue
という名前)を指定するEJB 2.1 MDBのjms.xml
ファイル構成を示します。キュー・コネクション・ファクトリは、jms/Queue/myQCF
で定義されます。また、トピックの名前はjms/Topic/rpTestTopic
、コネクション・ファクトリはjms/Topic/myTCF
で定義されます。
<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
ファイル構成を示します。
<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データベース: アドバンスト・キューイング(AQ)ベース・プロバイダ」を参照)を構成するには、次の処理を行う必要があります。
XA準拠リソースを無効にする権限(2フェーズ・コミット(2PC)トランザクションが不要な場合)またはXA準拠リソースを有効にする権限(2PCトランザクションが必要な場合)を付与できます。2PCの詳細は、「グローバル・トランザクションまたは2フェーズ・コミット(2PC)トランザクションへの参加方法」を参照してください。
data-sources.xml
ファイルを構成してデータベースを識別します(「data-sources.xmlの構成」を参照)。
application.xml
(またはorion-application.xml
)ファイルを構成して、<resource-provider>
要素内でOEMS JMSデータベース・プロバイダとして使用するデータソースのJNDI名を識別します(「application.xmlまたはorion-application.xmlの構成」を参照)。
詳細は、次を参照してください。
メッセージ・サービス・プロバイダには、Oracle JMSコネクタなどのJ2CAリソース・アダプタを使用してアクセスすることをお薦めします。詳細は、「J2CAリソース・アダプタを使用せずにメッセージ・サービス・プロバイダにアクセスする場合の制限」を参照してください。
注意
表23-2に示すように、JMS宛先およびコネクション・ファクトリの実際のJNDI名は、OEMS JMSデータベースのインストール環境によって決まります。
表23-2の変数の値は、次のように定義されます。
<ProviderName>
: OEMS JMSデータベース・サービスを提供しているデータソースのJNDI名(「application.xmlまたはorion-application.xmlの構成」を参照)。
<QName>
: データベースで作成したキューの名前(「OEMS JMSデータベース・プロバイダのインストールと構成」の手順3bを参照)。
<QCFName>
: キュー・コネクション・ファクトリの名前。任意の名前を指定できます。
<TName>
: データベースで作成したトピックの名前(「OEMS JMSデータベース・プロバイダのインストールと構成」の手順3bを参照)。
<TCFName>
: トピック・コネクション・ファクトリの名前。任意の名前を指定できます。
必要な権限は、リクエストする機能によって決まります。各タイプの機能に必要な権限の詳細は、『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の詳細は、次を参照してください。
Destination
オブジェクトをサポートする表およびキューを作成する必要があります。DBMS_AQADM
パッケージおよびOracle AQメッセージ・タイプの詳細は、『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイドおよびリファレンス』を参照してください。
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
に設定します。
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つの永続サブスクライバがトピックに追加されます。最後に、トピックが開始され、ユーザーにそのトピックに関する権限が付与されます。
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');
OEMS JMSデータベース・プロバイダがインストールされているデータベースに対してデータソースを構成します。JMSのトピックおよびキューは、データベース表とキューを使用してメッセージ機能を提供します。使用するデータソースのタイプは、必要な機能によって決まります。
例23-3に、デフォルトでグローバル(2フェーズ・コミット)トランザクションをサポートする一般的なマネージド・データソースを示します。
<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データソース・サービスについて」を参照してください。
<resource-provider>
要素内で、OEMS JMSデータベース・プロバイダとして使用されるデータソースのJNDI名を識別します。
application.xml
ファイルを構成します。
orion-application.xml
ファイルを構成します。
次のコード例は、OEMS JMSデータベースのXML構文を使用してJMSプロバイダを構成する方法を示します。
class
属性: OEMS JMSデータベース・プロバイダは、class
属性で構成されるoracle.jms.OjmsContext
クラスによって実装されます。
property
属性: property
要素内で、このJMSプロバイダとして使用されるデータソースを識別します。トピックまたはキューは、このデータソースに接続して、メッセージ機能を提供する表とキューにアクセスします。
次の例では、jdbc/OracleDS
によって識別されるデータソースが、OEMS JMSデータベース・プロバイダとして使用されるデータソースです。このJNDI名は、例23-3のmanaged-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>
|
![]() Copyright © 2002, 2008 Oracle Corporation. All Rights Reserved. |
|