非同期で受け取った SOAP メッセージを、メディエータ経由でJMSにキューイングするルーティングを、コンポジットで実装してみたい。
最初は、BPEL から JMS にキューイングするプロセスを考えたけど、要はコンポジットでのJMS アダプタの設定が肝であって、BPELからのJMS 呼び出しは他の <invoke>と変わらず、Getting Started 目的としては BPEL は蛇足だと気づいて割愛。コンポジットだけで構成した。
■■ JMS キュー作成
以下の3つを Weblogic コンソールで設定する
- キュー作成
- コネクションファクトリ作成
- コネクションプール作成
■ JMS キュー作成
- Domain Structureで base_domain/Services/Messaging/JMS Modules を選択
- JMS Modulesで SOAJMSModuleを選択
- [New] 押下→"Queue"を選択 → [Next]
- Name: greetingQueue
- JNDI Name: jms/greetingQueue
- [Next]
- Subdeployments:SOASubDeployment
- Targets/JMS Servers:SOAJMSServer
- [Finish]
■ JMS Connection Factory 作成
- Domain Structureで base_domain/Services/Messaging/JMS Modules を選択
- JMS Modulesで SOAJMSModuleを選択
- [New] 押下→"Connection Factory"選択 → [Next]
- Name: greetingCF
- JNDI Name: jms/greetingCF
- [Next]→ [Finish]
■ Connection Pool 作成
- Domain Structureで base_domain/Deployments を選択
- Deployments テーブルでJmsAdapterを選択
- Settings for JmsAdapter/Configurationタブ/Outbound Connection Poolsタブ
- [New]
- oracle.tip.adapter.jms.IJmsConnectionFactoryを選択して[Next]
- JNDI Name: eis/Queue/greeting
- [Finish]※deployment plan location とか言うのを聞かれたら適当にディレクトリを掘って、パスを指定する
- Configurationタブ/Outbound Connection Poolsタブに戻る
- oracle.tip.adapter.jms.IJmsConnectionFactory を展開して、eis/Queue/greetingを選択
- ConnectionFactoryLocation の Property Value に jms/greetingCF を指定
- [Save]
- Deployments テーブルに戻って JmsAdapter を再デプロイ(チェックして[Update])
■■ コンポジット・アプリ作成
■プロジェクト作成
- 名前:ここでは SimpleJmsQueueing とした
- プロジェクトテクノロジ:SOA
- コンポジットテンプレート:空のテンプレート
このコンポジットで使う XML スキーマを、以下のように作成。
- SOAコンテンツ/xsd フォルダのコンテキストメニューから[新規]
- ファイルを選択し、message.xsdを作成。内容は以下。
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://studies.oss11g/simple.jms.queueing"
xmlns:tns="http://studies.oss11g/simple.jms.queueing"
attributeFormDefault="qualified" elementFormDefault="qualified">
<element name="greeting" type="tns:GreetingType"/>
<complexType name="GreetingType">
<sequence>
<element name="message" type="string" />
</sequence>
</complexType>
</schema>
■ Webサービス
- Webサービスを[公開されたサービス]のレーンにドロップ
- 歯車ボタンでスキーマから WSDL を生成
- リクエストタブでURLに message.xsd の greeting 要素を選択
レスポンス以下のタブは放置 - 他はめんどくさいので全部デフォルト
■ JMS アダプタ
- [外部参照]のレーンにJMS アダプタをドロップ
- 名前はここではJMS_Queueとした。
- JMSプロバイダに Oracle Weblogic JMS を指定
- AppServer 接続:デプロイとかで使ってるいつものやつ
- アダプタ・インタフェイス:操作およびスキーマから定義
- 操作:メッセージ発行、操作名はデフォルトまま
- 発行操作のパラメータ:
- 接続先名:参照ボタンで greetingQueue を指定
- JNDI名:eis/Queue/greeting
- メッセージ
- URL:message.xsd の greeting を指定
- 終了
■ メディエータ
- [コンポーネント]レーンにメディエータをドロップ
- 名前:デフォルト/テンプレート:デフォルトのまま
- Mediator1 から Service1 と JMS_Queue にワイアリング
- Mediator1 の編集開始
- 「次を利用して変換」の×ボタンを押下
- 「新規マッパーファイルの作成」を選択して[OK]
- 開いた XSLT エディタで左の message と右の message をつなげる
■■ テスト
SoapUI か EMコンソールから、いつもどおりにリクエスト送信。キューに入ったメッセージは WebLogic コンソールから確認できる。
0 件のコメント:
コメントを投稿