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
を用意する必要があります。命名規則のsome
Service
およびsome
ServiceCallback
を使用して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 Manager、Oracle Mediatorなど)にドラッグすると、2つのポート・タイプがあるWSDLが生成されます(技術的にはラッパーWSDLと呼ばれ、それぞれ単一のポート・タイプがある別の2つのWSDLをインポートするWSDLです)。
コールバックがあるWSDLインタフェースまたはJavaインタフェースをSpringサービス・コンポーネントにドラッグすると、SOAコンポジット・エディタには単一のインタフェースが表示されます。ただし、Springエディタには、同じ命名規則(some
Service
およびsome
ServiceCallback
)を使用するsca:service
およびsca:reference
の両方が表示されます。