プライマリ・コンテンツに移動
Oracle® Fusion Middlewareテクノロジ・アダプタの理解
12c (12.2.1.1)
E79351-01
目次へ移動
目次

前
次

14 Oracle JCA Adapter for Coherence

この章では、Oracle JCA Adapter for Coherenceの使用方法について説明します。アダプタの使用の基本的原理、概念およびコヒーレンス・アダプタ構成ウィザード・フローについて説明します。

この章の内容は次のとおりです。

14.1 Oracle CoherenceおよびOracle JCA Coherenceアダプタの概念

Coherenceは、信頼のおけるスケーラビリティの高いピア・ツー・ピアのクラスタリング・プロトコル上で、複製および配布した(パーティション化した)データの管理とキャッシュ・サービスを行います。

14.1.1 Coherenceキャッシュ

Coherenceキャッシュは、データベースとクライアント・アプリケーション間の仲介として機能するデータ・オブジェクトのコレクションです。データベース・データをキャッシュにロードして、異なるアプリケーションで使用できます。このようにしてCoherenceキャッシュはデータベースに対する負荷を軽減し、データベース・データへのアクセスを高速化します。キャッシュのオブジェクトはXMLまたはPOJO (Plain Old Java Object)型にできます。

注意:

POJO Javaクラスは、コヒーレンス・アダプタとともに使用するためにシリアライズされている必要があります。つまり、コヒーレンス・アダプタとともに使用するJavaクラスは、java.io.Serializableまたはcom.tangosol.io.pof.PortableObjectを実装する必要があります。

Coherenceの詳細は、Oracle Coherenceライブラリを参照してください。Coherenceのセキュリティ関連の情報は、Oracle Coherenceセキュリティ・ガイドを参照してください。

14.1.2 コヒーレンス・アダプタ

コヒーレンス・アダプタは、Oracle CoherenceのJCA 1.5準拠のリソース・アダプタです。SOA環境にデプロイする場合、コヒーレンス・アダプタは、SOAコンポジット・アプリケーションがOracle Coherenceと統合されている場合、SOAコンポジット・アプリケーションによる統合手段として使用されます。

コヒーレンス・アダプタにより、Coherenceキャッシュへのアイテムの追加、Coherenceキャッシュからのアイテムの取得、Coherenceキャッシュに対するアイテムの削除や問合せなど、有用なCoherence操作を実行できます。

14.1.3 互換性

コヒーレンス・アダプタを12.1.3で使用する場合、バージョン12.1.3以外、または新しいバージョンのリモートCoherenceクラスタと相互作用することはできません。

これは、Coherence Extendクライアントを古いバージョンの拡張プロキシと使用する場合の、Coherence製品の制限によるものです。

具体的には、CoherenceサーバーとExtendクライアント間の互換性に関して、Extendクライアントからクラスタ・プロキシ・サーバーへの上位互換のみが維持されます。つまり、Extendクライアントは、同じバージョン番号以上のクラスタ・サーバーと接続可能ですが、低いバージョン番号のクラスタ・サーバーとは接続できません。

Coherence製品での制限については、次のリンクを参照してください。

http://docs.oracle.com/cd/E24290_01/coh.371/e22839/gs_install.htm#CBHJGGBG

14.1.4 Oracle Coherenceアダプタの機能

Oracle Coherenceアダプタを使用して、Oracle Coherenceに関連付けられている次のアクティビティを実行できます。

  • キャッシュ・エントリの追加: 新しいエントリをCoherenceキャッシュに作成します。

  • キャッシュ・エントリの削除: キャッシュから削除するアイテムを特定すると、システムによりそのエントリがキャッシュから削除されます。キャッシュ内の複数のレコードに一致するフィルタや条件を指定して、複数のエントリをキャッシュから削除することもできます。

  • キャッシュ・エントリ値の取得: 関連付けられた値を取得するエントリを指定すると、システムによりそのエントリの値が返されます。

  • 問合せキャッシュ: キャッシュを特定し、検索条件を指定すると、システムにより検索条件に一致するエントリが返されます。

14.1.4.1 基本的な使用例

コヒーレンス・アダプタには、2つの基本的な使用例があります。

  • ローカル・クラスタに接続するコヒーレンス・アダプタ。この構成では、トランザクション・キャッシュがサポートされます。

  • スタンドアロンCoherenceクラスタまたはWebLogic Serverに接続するコヒーレンス・アダプタ。この構成では、トランザクション・キャッシュはサポートされません。

    この章で説明しているローカル・コヒーレンス・アダプタの操作は、リモート・キャッシュに関して類似しており、前述の制限を持つことに注意してください。主な違いは、リモート・キャッシュに対して操作を行うときに指定するキャッシュの名前が、ローカル・クラスタに関連する名前ではなく、リモート・キャッシュの名前であることです。

    コヒーレンス・アダプタは、Coherence Extendクライアントを使用して、リモート・クラスタに接続します。コヒーレンス・アダプタを使用してアクセスできるリモート・キャッシュの構成を説明している次の項を参照してください。

14.1.4.1.1 リモート・クラスタへのコヒーレンス・アダプタ接続の構成

SOAコヒーレンス・アダプタを使用して、リモート・キャッシュにアクセスできます。

リモート・キャッシュの名前は、次の例の構成ファイルに記録され、このファイルはextend-config.xmlファイルと呼ばれます。この構成ファイルの場所は、プロパティCacheConfigLocationの値として指定する必要があります。キャッシュ名を含めることに加えて、構成ファイルには、リモートCoherenceクラスタに接続するための情報も必要です。

ここでのManagedConnectionFactoryの例では、PojoJarFileの場所も指していることに注意してください。

詳細は、Coherence Extendの構成および使用に関するホワイトペーパーを参照してください。

また、第3章「Coherence*Extendの設定」も参照してください。

例 - リモート・クラスタのManagedConnectionFactory

<connection-instance>
<jndi-name>eis/Coherence/Remote</jndi-name>
  <connection-properties>
   <properties>
     <property>
       <name>CacheConfigLocation</name>
        <value>/scratch/amahajan/Temp/coherence/dhqa/extend-config.xml</value>
     </property>
   <property>
     <name>ClassLoaderMode</name>
     <value>CUSTOM</value>
   </property>
   <property>
     <name>PojoJarFile</name>
     <value>/scratch/amahajan/Temp/coherence/dhqa/book.jar</value>
 </property>
 <property>
   <name>WLSExtendProxy</name>
   <value>false</value>
</property>
</properties>
</connection-properties>
</connection-instance>

例 - リモート・キャッシュを定義するためのサンプルextend-config

この例では、拡張構成によって、アダプタはアドレス10.240.82.123で実行され、ポート14777上でリスニングする拡張プロキシに接続できます。

 
<?xml version="1.0"?>
 
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">
 
<cache-config>
   <caching-scheme-mapping>
      <cache-mapping>
         <cache-name>samples-cache</cache-name>
         <scheme-name>extend-dist</scheme-name>
      </cache-mapping>
      <cache-mapping>
         <cache-name>samples-cache-binxml</cache-name>
         <scheme-name>extend-dist</scheme-name>
      </cache-mapping>
    </caching-scheme-mapping>
    <caching-schemes>
   <remote-cache-scheme>
      <scheme-name>extend-dist</scheme-name>
      <service-name>ExtendTcpCacheService</service-name>
      <initiator-config>
        <tcp-initiator>
          <remote-addresses>
            <socket-address>
              <address>10.240.82.123</address>
              <port>14777</port>
            </socket-address>
          </remote-addresses>
          <connect-timeout>10s</connect-timeout>
        </tcp-initiator>
        <outgoing-message-handler>
          <request-timeout>5s</request-timeout>
        </outgoing-message-handler>
      </initiator-config>
    </remote-cache-scheme>
   </caching-schemes>
</cache-config>
14.1.4.1.2 ローカル・クラスタへのコヒーレンス・アダプタ接続

-

コヒーレンス・アダプタはデフォルトのコネクション・ファクトリを提供して、即時利用可能なCoherenceキャッシュに接続し、adapter-localと呼ばれるキャッシュにも接続します。

14.2 コヒーレンス・アダプタの構成

コヒーレンス・アダプタ構成ウィザードを使用するには、次の手順を実行します。

  1. JDeveloper「アプリケーション・ナビゲータ」で、「新規アプリケーション」を選択します。「汎用アプリケーションの作成 - アプリケーションの名前付け」ページが表示されます。
  2. JDeveloper BPELデザイナの「コンポーネント」ウィンドウから「コヒーレンス・アダプタ」をドラッグ・アンド・ドロップします。コヒーレンス・アダプタの「ようこそ」画面が表示されます。「次へ」をクリックします。
  3. 「コヒーレンス接続」画面で、コヒーレンス接続のJNDI名を指定します。「次へ」を選択します。

    図14-1 コヒーレンス・アダプタ構成ウィザードの「サービス名」画面

    図14-1の説明が続きます
    「図14-1 コヒーレンス・アダプタ構成ウィザードの「サービス名」画面」の説明
  4. 「操作タイプ」ページで、Coherenceキャッシュに対して実行する有効な操作を指定します。既存のWSDLをインポートした場合、操作名は事前移入されます。操作は、「Put」(「キャッシュにアイテムを格納」)「Get」(「キャッシュからアイテムを取得」)「削除」(「キャッシュからアイテムを削除」)または「問合せ」(「キャッシュからアイテムを問合せ」)です。下の画面例では、「Put」が選択されています。

    図14-2 「Put」が選択されたコヒーレンス・アダプタ構成ウィザードの「操作タイプ」ページ

    図14-2の説明が続きます
    「図14-2 「Put」が選択されたコヒーレンス・アダプタ構成ウィザードの「操作タイプ」ページ」の説明
  5. 「Put」を選択した場合は、「Put」ページが表示されます。このページでは、Put操作の構成パラメータを取得します。この画面で、次のフィールドを指定します。
    • キャッシュ・タイプ: 値(「XML」、「POJO」)を含むドロップダウン・コンボ・ボックス。キャッシュに格納するアイテムのタイプに対応する値を使用します。

    • キャッシュ名: このテキスト・フィールドにキャッシュ名を入力します。これは、Coherenceキャッシュを一意に識別する名前です。

    • キー: テキスト・フィールドにキーを入力するか、自動生成チェック・ボックスを選択してキーが生成されるようにします。選択した場合、キーはCoherenceランタイムによって自動的に生成されます。キーの自動生成プロセスでは、「キー・タイプ」が「文字列」に設定されます。

    • キー・タイプ: 「キー・タイプ」および「キー」は、フィルタの入力を選択した場合は無効になり、キー・タイプとキーの入力を選択した場合は有効になります。ここでの「キー・タイプ」コンボ・ボックスには、Java単純型(string、integer、long、float、double)のリストが含まれています。

    • 自動生成キー: コヒーレンス・アダプタ構成ウィザードでキーを生成する場合は、このボックスを選択します。

    • 存続時間: 「デフォルト」、「常に」または「カスタム」を選択します。「カスタム」を選択した場合は、ミリ秒単位の値を指定できます。この値は、エントリがCoherenceキャッシュ内に残る時間を示します。デフォルトでは、メッセージは期限切れになりません。「存続時間」プロパティは、ローカル・キャッシュではなくリモート・キャッシュに適用可能です。ローカル・キャッシュの場合、エントリは、削除しないかぎり、またはSOAサーバーが終了しないかぎり、常にキャッシュに残ります。

    図14-3 コヒーレンス・アダプタ構成ウィザードの「Put操作の構成」ページ

    図14-3の説明が続きます
    「図14-3 コヒーレンス・アダプタ構成ウィザードの「Put操作の構成」ページ」の説明
  6. コヒーレンス・アダプタの「操作タイプ」ページで、「キャッシュからアイテムを取得」操作を選択した場合、「Get操作の構成」画面が表示されます。

    図14-4 コヒーレンス・アダプタの「Get操作の構成」ページ

    図14-4の説明が続きます
    「図14-4 コヒーレンス・アダプタの「Get操作の構成」ページ」の説明

    次のフィールドに入力して、キャッシュからアイテムを取得します。

    • キャッシュ・タイプ: 値(「XML」「POJO」)を含むドロップダウン・コンボ・ボックス。取得するエントリのタイプに対応する値を選択します。

    • キャッシュ名: アイテムの取得元となるキャッシュ名を入力します。

    • キー・タイプ: Get操作の場合、このフィールドは常に有効になっています。

    • キー: キャッシュ・エントリのキーをこのテキスト・フィールドに入力します。

  7. 「操作タイプ」画面でキャッシュから削除オプションを選択すると、「キャッシュからアイテムを削除」画面が表示されます。

    図14-5 コヒーレンス・アダプタ構成の「削除操作の構成」画面

    図14-5の説明が続きます
    「図14-5 コヒーレンス・アダプタ構成の「削除操作の構成」画面」の説明

    キャッシュからアイテムを削除するための構成パラメータを入力し、「次へ」をクリックします。

    • キャッシュ名: キャッシュ・アイテムの名前。

    • キー・タイプ: 削除操作を実行する場合に有効になります。

    • キー: キャッシュ・アイテムのキー。

    • フィルタ: キャッシュ名の文字列フィルタ。キーまたはフィルタを指定できますが、両方を指定することはできません。

    注意:

    削除操作でフィルタを使用する場合、コヒーレンス・アダプタは、削除操作が成功したかどうかにかかわらず、削除操作による影響を受けるエントリ数を報告しません。

    特定のエントリの削除にキーを使用する場合、コヒーレンス・アダプタは数を報告しますが、Coherenceでの削除操作が成功した場合、常に1になります。

14.3 Coherenceキャッシュ内のアイテムの問合せ

Coherenceキャッシュ内のアイテムを問い合せることもできます。

  1. これを行うには、「操作」画面から「問合せ」を選択します。コヒーレンス・アダプタの「問合せ操作の構成」画面が表示されます。

    図14-6 コヒーレンス・アダプタの「問合せ操作の構成」画面

    図14-6の説明が続きます
    「図14-6 コヒーレンス・アダプタの「問合せ操作の構成」画面」の説明
  2. 「問合せ操作の構成」画面で、次を入力します。
    • キャッシュ・タイプ: ドロップダウン・リストから「XML」または「POJO」を選択します。

    • キャッシュ名: キャッシュの名前。

    • フィルタ: Coherenceの問合せ言語のフィルタ式を手動で入力できます。フィルタを指定しない場合、コヒーレンス・アダプタ構成ウィザードにより、すべてのアイテムが返されることが警告されます。

    • アイテム数: 問合せから返されるアイテム数の制限を指定する整数。

    • 索引名: (オプション)キャッシュに作成される索引名。ソートされた索引を作成するには、「ソート」チェック・ボックスを選択します。

    • キーのみを返す: このボックスを選択し、返すキーのタイプを指定します。このボックスが選択されている場合、問合せから返されたエントリと値が一致するキーのみが返されます。

      POJOキャッシュ・タイプの場合、索引および順序付きフィールドのキー・タイプのみが有効です。XMLキャッシュ・タイプの場合、key()トークンのみをフィルタ式で使用できます。

      つまり、フィルタ式を指定する場合、キャッシュ・オブジェクト・キーを意味する特殊なトークン・キー()のみを使用できます。たとえば、次のキーのいずれかを使用できます。

      key() = 1234  
      key() = 5678
      

      POJOキャッシュ・タイプを使用する場合、POJOオブジェクトからのトークンと、特殊な組込みkey()トークンの両方を使用するフィルタ式を作成できます。

14.4 「XML」が選択されている場合のPut操作、Get操作および問合せ操作のメッセージの定義

Put、Getまたは問合せのいずれかの操作でキャッシュ・タイプとして「XML」を選択した場合、「スキーマの指定」ページが表示されます。このページで、Coherenceキャッシュ・オブジェクトのスキーマを選択します。図14-7を参照してください。

図14-7 コヒーレンス・アダプタ構成ウィザードのメッセージ(「スキーマの指定」)画面

図14-7の説明が続きます
「図14-7 コヒーレンス・アダプタ構成ウィザードのメッセージ(「スキーマの指定」)画面」の説明
  1. 「URL」フィールドでスキーマ・ファイルの場所を指定して、着信ファイルの要素を定義するスキーマ要素を選択します。既存のスキーマ定義を検索するには、「参照」ボタンを使用します。
  2. この時点での選択に適用される考慮事項を次に示します。
    • Put操作の場合、指定した値タイプに生成されたスキーマ、または「スキーマ」ページで指定したスキーマに対応するリクエスト・メッセージが生成されます。レスポンス・メッセージには、Coherenceサーバーで作成されたキャッシュ・エントリのReturnIdentifierが含まれます。

    • Get操作の場合、リクエスト・メッセージは、値タイプのスキーマ、または「スキーマ」ページで指定したスキーマを指します。空のリクエスト・メッセージが作成されます。

    • 問合せ操作の場合、フィルタ式にバインド変数がある場合、これらのバインド変数の要素が含まれたリクエスト・メッセージが生成されます。レスポンス・メッセージは、値タイプに生成されたスキーマであるか、「スキーマ」ページで指定したスキーマです。

14.4.1 「POJO」が選択されている場合のPut操作、Get操作および問合せ操作のメッセージの定義

Get操作、Put操作または問合せ操作でキャッシュ・タイプとして「POJO」を選択した場合、「値タイプ・クラスの指定」画面が表示されます。

図14-8 コヒーレンス・アダプタ構成ウィザードの値タイプ・クラス画面

図14-8の説明が続きます
「図14-8 コヒーレンス・アダプタ構成ウィザードの値タイプ・クラス画面」の説明

キャッシュ・タイプとして「POJO」を選択した場合のメッセージを定義するには、次の手順を実行します。

  1. PUT操作のPOJOキャッシュ・タイプの値タイプを「値タイプ」ボックスに入力します。ブラウザを使用して値タイプを検索できます。
  2. オプションで、スキーマのメタデータ・マッピング・ファイルをメタデータマッピング・フィールドに入力します。

    メタデータ・マッピング・ファイルは、POJOからXMLへの変換、およびXMLからPOJOへの変換に役立ちます。指定したマッピング・ファイルはJDeveloperプロジェクトにコピーされます。ブラウザを使用して、メタデータ・マッピング・ファイルを検索できます。マッピング・ファイルはJDeveloperプロジェクトに格納されます。(XMLを指定すると、アダプタは、XMLをオブジェクトに変換してからキャッシュに追加します。この逆が、キャッシュ内のオブジェクトを問い合せた場合に発生します。アダプタは、キャッシュ内に格納されているオブジェクトをXMLに変換し、それを出力として渡します。)

    マッピング・ファイルが指定されている場合、コヒーレンス・アダプタによりスキーマが自動的に生成されます。

    メタデータ・ファイルを指定しない場合、コヒーレンス・アダプタ構成ウィザードにより、値タイプ・クラスがイントロスペクトされ、マッピング・ファイルが自動的に生成されます。

    注意:

    : 問合せ操作タイプでは、「キーを返す」を選択した場合、XMLまたはPOJOキャッシュ・タイプの「メッセージ」ページは表示されません。

14.5 コヒーレンス・アダプタのファイルおよびアーティファクト

この項では、コヒーレンス・アダプタの設計時アーティファクトの例を示します。

14.5.1 JCAファイル

JCAファイルには、サポートされている各操作のJCAプロパティ値が格納されます。

例 - 作成されたJCAファイル

<adapter-config name="cohPut1" adapter="Coherence Adapter" 	           wsdlLocation="../WSDLs/cohPut1.wsdl"            xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
      <connection-factory location="eis/coherence"/>
       <endpoint-interaction portType="Put_ptt" operation="Put">
    <interaction-spec className=      "oracle.tip.adapter.coherence.CoherenceInteractionSpec">
   <property name="CacheName" value="TestCache"/>
      <property name="Key" value="ABC12345678"/>
      <property name="KeyType" value="String"/>
      <property name="ValueType" value="com.coherence.vt.Book"/>
      <property name="TimeToLive" value="60"/>
      <property name="MappingsMetadataFile" value="book-oxm-mappings.xml"/>
    </interaction-spec>
  </endpoint-interaction>
</adapter-config>

14.5.2 Put操作のWSDL

次の例に、コヒーレンス・アダプタのPut操作のWSDLを示します

例 - コヒーレンス・アダプタのPut操作のWSDL

<wsdl:definitions name="cohPut1" targetNamespace=   "http://xmlns.oracle.com/pcbpel/adapter/coherence/Application1/Project1/cohPut1"
     xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/"
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
     xmlns:tns=http://xmlns.oracle.com/pcbpel/adapter/coherence/Application1/ 	         Project1/cohPut1
     xmlns:imp1=" http://xmlns.oracle.com/pcbpel/adapter/coherence"
     xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
    <plt:partnerLinkType name="Put_plt">
        <plt:role name="Put_role">
            <plt:portType name="tns:Put_ptt"/>
        </plt:role>
    </plt:partnerLinkType>
 <wsdl:types>
        <schema targetNamespace= “http://xmlns.oracle.com/pcbpel/adapter/coherence/Application1/Project1/cohPut1"  xmlns="http://www.w3.org/2001/XMLSchema">
    <import namespace=" http://xmlns.oracle.com/pcbpel/adapter/coherence " schemaLocation="xsd/book_cache.xsd"/>
        </schema>
        <schema <schema targetNamespace= “http://xmlns.oracle.com/pcbpel         /adapter/coherence/Application1/Project1/cohPut1"  xmlns="http://www.w3.org/2001/XMLSchema">
           <element name="returnId" type="xsd:string"/>
         </schema>
    </wsdl:types>
    <wsdl:message name="Request_msg">
         <wsdl:part name="body" element="imp1:book"/>
    </wsdl:message>
    <wsdl:message name="Response_msg">
        <wsdl:part name="body" element="tns: returnId "/>
    </wsdl:message>
      <wsdl:portType name="Put_ptt">
        <wsdl:operation name="Put">
            <wsdl:input message="tns:Request_msg"/>
            <wsdl:output message="tns:Response_msg"/>
        </wsdl:operation>
    </wsdl:portType>
</wsdl:definitions>

14.5.3 バインド変数が含まれるフィルタ式による削除のWSDL

Coherenceでのフィルタ式による削除操作のWSDLを示します。

例 - Coherenceでのフィルタ式による削除操作のWSDL

<wsdl:definitions name="cohRem1"
    targetNamespace="http://xmlns.oracle.com/pcbpel/adapter
        /coherence/Application1/Project1/cohRem1"
     xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/"
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
 xmlns:tns=http://xmlns.oracle.com/pcbpel/adapter/coherence
/Application1/Project1/cohRem1
     xmlns:plt="http://schemas.xmlsoap.org/ws/
                2003/05/partner-link/">
    <plt:partnerLinkType name="Remove_plt">
        <plt:role name="Remove_role">
            <plt:portType name="tns:Remove_ptt"/>
        </plt:role>
    </plt:partnerLinkType>
    <wsdl:types>
          <schema targetNamespace=
             “http://xmlns.oracle.com/pcbpel/adapter
            /coherence/Application1/Project1/cohRem1"      xmlns="http://www.w3.org/2001/XMLSchema">
<element name="RemoveRequest">
  <complexType>
     <element name="bind1" type="string"/>
     <element name="bind2" type="string"/>
               </complexType>
              </element>
         </schema>
<schema targetNamespace= “http://xmlns.oracle.com/
         pcbpel/adapter/coherence
       /Application1/Project1/cohRem1"
         xmlns="http://www.w3.org/2001/XMLSchema">  
      <element name="ReturnCount" type="integer"/>    
        </schema>
    </wsdl:types>
    <wsdl:message name="Request_msg">
        <wsdl:part name="body" element="tns:RemoveRequest "/>
    </wsdl:message>
    <wsdl:message name="Response_msg">
        <wsdl:part name="body" element="tns: ReturnCount "/>
    </wsdl:message>
    <wsdl:portType name="Remove_ptt">
        <wsdl:operation name="Remove">
            <wsdl:input message="tns:Request_msg"/>
            <wsdl:output message="tns:Response_msg"/>
        </wsdl:operation>
    </wsdl:portType>
</wsdl:definitions>

14.5.4 Get操作のWSDL

次の例に、CoherenceでのGet操作用に生成されたWSDLを示します。

例 - Get操作のWSDL

<wsdl:definitions name="cohRem1" targetNamespace=
         "http://xmlns.oracle.com/
     pcbpel/adapter/coherence/Application1/Project1/cohGet1"
     xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/"
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
     xmlns:tns=http://xmlns.oracle.com/pcbpel/
       adapter/coherence/Application1/Project1/cohGet1
     xmlns:imp1=" http://xmlns.oracle.com/pcbpel/              adapter/coherence"
     xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
    <plt:partnerLinkType name="Get_plt">
        <plt:role name="Get_role">
            <plt:portType name="tns:Get_ptt"/>
        </plt:role>
    </plt:partnerLinkType>
    <wsdl:types>
        <schema targetNamespace=            “http://xmlns.oracle.com/pcbpel/adapter
           /coherence/Application1/Project1/cohGet1"
           xmlns="http://www.w3.org/2001/XMLSchema">
          <element name="empty"><complexType/></element>
               </schema>
        <schema targetNamespace=
             “http://xmlns.oracle.com/pcbpel/adapter/
              coherence/Application1/Project1/cohGet1"  xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace=
      "http://xmlns.oracle.com/pcbpel/adapter/coherence
           "schemaLocation="xsd/book_cache.xsd"/>
            </schema>
    </wsdl:types>
    <wsdl:message name="Request_msg">
        <wsdl:part name="body" element="tns:empty "/>
    </wsdl:message>
    <wsdl:message name="Response_msg">
        <wsdl:part name="body" element="imp1:book "/>
   </wsdl:message>
    <wsdl:portType name="Get_ptt">
        <wsdl:operation name="Get">
            <wsdl:input message="tns:Request_msg"/>
            <wsdl:output message="tns:Response_msg"/>
        </wsdl:operation>
    </wsdl:portType>
</wsdl:definitions>

14.5.5 バインド変数が含まれるフィルタ式による問合せのWSDL

次の例は、バインド変数が含まれるフィルタ式による問合せ操作のWSDLを示しています。

例 - バインド変数が含まれるフィルタ式による問合せのWSDL

<wsdl:definitions name="cohQuery1"         targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/coherence    /Application1/Project1/cohQuery1"
     xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/"
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
     xmlns:tns=http://xmlns.oracle.com/pcbpel/adapter            /coherence/Application1/Project1/cohQuery1
     xmlns:imp1=" http://xmlns.oracle.com/pcbpel/
                  adapter/coherence"
     xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
    <plt:partnerLinkType name="Query_plt">
       <plt:role name="Query_role">
        <plt:portType name="tns:Query_ptt"/>
        </plt:role>
    </plt:partnerLinkType>
    <wsdl:types>
<schema targetNamespace= “http://xmlns.oracle.com/
              pcbpel/adapter/coherence
             /Application1/Project1/cohQuery1"                    xmlns="http://www.w3.org/2001/XMLSchema">
<element name="QueryRequest">
  <complexType>
     <element name="bind1" type="string"/>
     <element name="bind2" type="string"/>
               </complexType>
              </element>
         </schema>
<schema targetNamespace= “http://xmlns.oracle.com/
        pcbpel/adapter/coherence
       /Application1/Project1/cohQuery1"  xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace=" http://xmlns.oracle.com/
            pcbpel/adapter/coherence" 
              schemaLocation="xsd/book_cache.xsd"/>
            </schema>
    </wsdl:types>
        <wsdl:message name="Request_msg">
        <wsdl:part name="body" element="tns:QueryRequest "/>
        </wsdl:message>
        <wsdl:message name="Response_msg">
        <wsdl:part name="body" element="imp1:book "/>
        </wsdl:message>
    <wsdl:portType name="Query_ptt">
        <wsdl:operation name="Query">
            <wsdl:input message="tns:Request_msg"/>
            <wsdl:output message="tns:Response_msg"/>
        </wsdl:operation>
    </wsdl:portType>
</wsdl:definitions>

14.6 コヒーレンス・アダプタ使用のヒント

次のエラーが表示される場合があります。

Execute of operation 'Put' failed due to: Service "TransactionalCache" has been started by a different configurable cache factory.; nested exception is:  java.lang.IllegalStateException: Service "TransactionalCache" has been started by a different configurable cache factory.

このメッセージは、サービスTransactionalCacheが複数の場所で定義されていることを意味します。このエラーが発生するのは、コヒーレンス・アダプタのPut操作のみに限定されません。この例外は、コヒーレンス・アダプタがサポートするすべての操作で発生する可能性があります。

この問題は、次のような構成ファイルがある場合に発生します。

最初の構成ファイルa-config.xmlに、次が含まれます。

<cache-config> 
 <caching-scheme-mapping> 
  <cache-mapping> 
   <cache-name>adapter-local</cache-name> 
   <scheme-name>transactional</scheme-name> 
  </cache-mapping> 
 </caching-scheme-mapping> 
  
 <caching-schemes> 
  <transactional-scheme> 
   <scheme-name>transactional</scheme-name> 
   <service-name>TransactionalCache</service-name> 
   <autostart>true</autostart> 
  </transactional-scheme> 
 </caching-schemes> 
</cache-config>

2つ目の構成ファイルb-config.xmlに、次が含まれます。

<cache-config> 
 <caching-scheme-mapping> 
  <cache-mapping> 
   <cache-name>movie-local</cache-name> 
   <scheme-name>transactional</scheme-name> 
  </cache-mapping> 
 </caching-scheme-mapping> 
  
 <caching-schemes> 
  <transactional-scheme> 
   <scheme-name>transactional</scheme-name> 
   <service-name>TransactionalCache</service-name> 
   <autostart>true</autostart> 
  </transactional-scheme> 
 </caching-schemes> 
</cache-config> 

あるjndiにa-config.xmlを、別のjndiにb-config.xmlを使用し、2つのコンポジットでこれら2つの異なるjndiを使用します。最初の構成をデプロイすると、問題なく完了しますが、2つ目のデプロイメントは、サービスTransactionalCacheが最初の構成によりすでに開始されているため、失敗します。

解決方法は、1つのconfig.xmlファイルのみを持つようにし、異なるジョブ間で同じconfig.xmlを使用することです。たとえば、次のconfig.xmlファイルを異なるjndi間で使用できます。

<cache-config> 
 <caching-scheme-mapping> 
  <cache-mapping> 
   <cache-name>adapter-local</cache-name> 
   <scheme-name>transactional</scheme-name> 
  </cache-mapping> 
  <cache-mapping> 
   <cache-name>movie-local</cache-name> 
   <scheme-name>transactional</scheme-name> 
  </cache-mapping> 
 </caching-scheme-mapping> 
 <caching-schemes> 
  <transactional-scheme> 
   <scheme-name>transactional</scheme-name> 
   <service-name>TransactionalCache</service-name> 
   <autostart>true</autostart> 
  </transactional-scheme> 
 </caching-schemes> 
</cache-config>