Spring Frameworkでのコールバックの使用

Oracle SOA Suiteでは、interface.wsdlおよびinterface.javaの両方でコールバックを使用します。ただし、Spring Frameworkにはコールバックの概念が存在しません。Oracle SOA Suiteのサービスおよび参照の場合、コールバックは、interface.wsdlの2番目のポート・タイプ、またはinterface.javaの2番目のJava名として(メタデータに)指定されます。Springメタデータには、sca:servicesおよびsca:referencesのみが含まれ、コールバックを指定する方法がありません。

Springでコールバックを設計するには、特定の名前を指定したsca:servicesおよびsca:referencesを用意する必要があります。命名規則のsomeServiceおよびsomeServiceCallbackを使用してsca:serviceおよびsca:referenceの両方を作成すると、Oracle SOA Suiteでは、この命名規則が認識され、コールバックがある単一のサービスまたは参照が作成されます。

たとえば、Oracle JDeveloperのSpringエディタを使用して、Springコンテキスト・ファイルに次の例に示すような構文を作成するとします。

<sca:service  name="StockService"
 type="oracle.integration.platform.blocks.java.callback.StockService"
 target="impl" />
 <sca:reference  name="StockServiceCallback"
 type="oracle.integration.platform.blocks.java.callback.StockServiceReply" />

Oracle SOA Suiteでは、次の例に示すように、単一のサービスを自動的に作成します。

    <service name="StockService">
      <interface.java
 interface="oracle.integration.platform.blocks.java.callback.StockService"   
           callbackInterface="oracle.integration.platform.blocks.java.callback.StockServiceRe
ply"/>
    </service>

SOAコンポジット・エディタで、コールバック・インタフェースがあるSpringのinterface.javaをWSDLコンポーネント(Oracle BPEL Process ManagerOracle Mediatorなど)にドラッグすると、2つのポート・タイプがあるWSDLが生成されます(技術的にはラッパーWSDLと呼ばれ、それぞれ単一のポート・タイプがある別の2つのWSDLをインポートするWSDLです)。

コールバックがあるWSDLインタフェースまたはJavaインタフェースをSpringサービス・コンポーネントにドラッグすると、SOAコンポジット・エディタには単一のインタフェースが表示されます。ただし、Springエディタには、同じ命名規則(someServiceおよびsomeServiceCallback)を使用するsca:serviceおよびsca:referenceの両方が表示されます。