[SOA/BPM, Spring] Accessing Coherence Cluster Using Spring Bean on SOA SUITE 11g

以下に記載するソリューションをSOA Suite 11.1.1.4とCoherence 3.6.0でテストしてみました。SOA SuiteからCoherenceクラスタにアクセスするには、以下のように他のやり方もあるはずです。

OTN Discussion Forum
Thread: Oracle Coherence Examples with Oracle SOA suite 11.1.1.4.0 and JDeveloper.
https://forums.oracle.com/forums/thread.jspa?threadID=2268739&tstart=180


背景
Coherenceのキャッシュ設定(cache-config)はSOAクラスタ用に定義済みで全てのSOAコンポジットアプリケーションがこの設定を継承します。このキャッシュ設定はsoa-coherence-cache-config.xml(クラスタ構成の管理対象サーバからログで確認できます)という名前でfabric-runtime.jarに含まれています。tangosol-coherence-override.xmlもまたfabric-runtime.jarに含まれており、SOAサーバがfabric-runtime.jarに含まれているキャッシュ設定を利用するように強制しています(結果として、setDomainEnv.cmd/sh内の -Dtangosol.coherence.cacheconfig の指定が効果を果たさないのです)。
私は全部を動作させるためのいくつかのオプションをテストしたので、これは比較的きれいなソリューションだと思います。SOA Suite 11gでCoherence*ExtendとSpring Beanを使っています。

手順
1. tangosol-coherence-override.xml と soa-coherence-cache-config.xml を fabric-runtime.jar (<WLS_HOME>/Oracle_SOA1/soa/modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar) から抽出し、まずは tangosol-coherence-override.xml を編集します。
cache-config を自身のcache-configファイルに指定しましょう(デフォルトでは、fabric-runtime.jarに含まれているsoa-coherence-cache-config.xmlが指定されています)。

soa-coherence-cache-config.xml にremote-scheme を追加します。
2. SOAドメインのドメインホームに移動し、setDomainEnv.sh/cmd を編集します。-Dtangosol.coherence.override を指定し、手順1で抽出・編集したファイルを指定します。

3. TCP*Extendプロキシを持つように Coherence Clusterを構成します(これは非常に簡単なので省略します)。

4. コーディング時の利便性を考慮して、Java Embeddingの代わりにSpring Beanを使うことにします。SOAプロジェクトでは、以下のように1つのインターフェースと1つのクラスを作成します。

5. コンポーネントパレットからコンポジットダイアグラムへのSpring Contextをドラッグ&ドロップし、[Create New Context]を選択して、新しいSpring Beanコンテキストファイルを作成します。


右ペインから”Service”をドラッグ&ドロップしてサービスを追加し、Beanの定義を作成します。

6. BPELもしくはMediatorとSpring Contextをつなぎ、'ASSIGN' や 'INVOKE'などを追加して、適切に実装します。以下はBPELの例です。

7. これで終了ですが、あと一つだけ、ちょっとしたことをやる必要があります。それは、"wlfullclient.jar"と"jps-internal.jar"をCoherenceキャッシュサーバのCLASSPATHに追加することです。そうしなければ、"ClassNotFound"が出てしまいます。
もしかするとこれよりいい方法があるかもしれません。現在も調査中です。

原文はこちら。
http://blogs.oracle.com/jaylee/entry/accessing_coherence_cluster_using_spring

0 件のコメント:

コメントを投稿