相互運用性ソリューション ガイド
AquaLogic Service Bus は、次の JMS 実装で動作が確認されています。
JMS 転送を使用するためのプロキシ サービスおよびビジネス サービスのコンフィグレーションについては、『AquaLogic Service Bus Console の使い方』の「プロキシ サービス」と「ビジネス サービス」を参照してください。
AquaLogic Service Bus のすべてサービス タイプで JMS 転送がサポートされます。AquaLogic Service Bus のサービス タイプと各サービス タイプの転送方式については、BEA AquaLogic Service Bus の『ユーザーズ ガイド』の「AquaLogic Service Bus でのメッセージ フローの作成」で「サービス タイプの選択」を参照してください。
WebLogic Server 9.x JMS の詳細については、以下のリソースを参照してください。
この節では、以下の JMS 相互運用性のトピックについて説明します。
JMS 相関 ID を使用した要求および応答メッセージへのリンクなど、非同期の要求/応答メッセージングの設計については、BEA AquaLogic Service Bus の『ユーザーズ ガイド』の「AquaLogic Service Bus でのメッセージ フローの作成」で「非同期の要求/応答」を参照してください。
BEA WebLogic Workshop で JMS バインディングを使用してビジネス サービスをコンフィグレーションした場合、AquaLogic Service Bus Console では次の SOAP/JMS URI 形式を指定する必要があります。
jms://host:port/factoryJndiName/destJndiName
これに対して、BEA WebLogic Workshop では次の形式を想定しています。
jms://host:port/factoryJndiName/destJndiName?URI=/process/myprocess.jpd
この問題を解決するには、メッセージを送信する前に、メッセージ フロー内で outbound 変数 ($outbound
) に JMS プロパティとしてこの URI を設定する必要があります。$outbound
の設定については、『AquaLogic Service Bus Console の使い方』の「メッセージ コンテキスト」で「inbound 変数と outbound 変数」を参照してください。
WebLogic Server 8.1 で JMS バインディングを使用してビジネス サービスをコンフィグレーションした場合、AquaLogic Service Bus Console では次の SOAP/JMS URI 形式を使用する必要があります。
jms://host:port/factoryJndiName/destJndiName?URI=/contextURI/serviceName
要求がビジネス サービスに送信される前に、メッセージ フロー内で outbound 変数 ($outbound
) に JMS プロパティとしてこの URI を設定する必要があります。
WebLogic Server 9.x で JMS バインディングを使用してビジネス サービスをコンフィグレーションした場合、AquaLogic Service Bus Console では次の SOAP/JMS URI 形式を使用する必要があります。
jms://host:port/contextURI/serviceName?URI=destJndiName
ターゲット WebLogic Server の既存の QueueConnectionFactory
の JNDI 名を使用するように、ビジネス サービスをコンフィグレーションする必要があります。また、要求がビジネス サービスに送信される前に、メッセージ フロー内で outbound 変数 ($outbound
) にユーザ定義の JMS プロパティ (名前が URI、値が /contextURI/serviceName
) も設定する必要もあります。
複数のドメインが関わる場合、1 つの命名規則がすべての WebLogic Server デプロイメントに適用されます。以下の点に注意してください。
また、JMS サーバ名については、以下の点に注意してください。
ReplyTo
機能を使用するときに、重複した JMS サーバ名が問題になることがある。2 つのドメインがそれぞれ同じ名前の JMS サーバを持つシナリオでは、特定のドメインから送信された ReplyTo
メッセージは、元のメッセージを送信したドメインに返されるのではなく、メッセージを受信した同じドメイン上の JMS サーバに返されます。WebLogic JMS のコンフィグレーションと管理の詳細については、以下を参照してください。
WebLogic Server ドメインの詳細については、『ドメインのコンフィグレーションについて』を参照してください。
AquaLogic Service Bus では、異種のエンドポイント間での相互運用性を確保するため、使用されるコンテンツ タイプ、JMS タイプ、およびエンコーディングをメッセージ フローのコンフィグレーション時にそれぞれ制御できます。JMS タイプは、バイトまたはテキストのいずれかです。詳細については、BEA AquaLogic Service Bus の『ユーザーズ ガイド』の「AquaLogic Service Bus でのメッセージ フローの作成」で「コンテンツ タイプ、JMS タイプ、およびエンコーディング」を参照してください。
AquaLogic Service Bus と MQ/JMS の相互運用性については、「WebSphere MQ との相互運用性」を参照してください。
WebLogic clientgen ツールは、明示的にエラーを定義した WSDL を消費するときに、XML エラー タイプに応じた java.lang.Exception
のサブクラスを生成します。WebLogic Server JAX-RPC スタックは、SOAP 応答メッセージを検査して、応答メッセージに SOAP エラーがあると判断すると、そのエラーを、clientgen で生成された例外 Java クラスにマップしようとします。
たとえば、次のコード リストの定義が WSDL に含まれる場合、clientgen ツールは、java.lang.Exception
を拡張する Java クラス com.bea.test.TheFaultType
を生成します。JAX-RPC クライアントが、サービス スタブの関連メソッドを呼び出すときに、com.bea.test.TheFaultType
を捕捉できます。
<definitions ... xmlns:s0="http://www.bea.com/test/">
...
<types>
<xsd:schema targetNamespace="http://www.bea.com/test/">
...
<xsd:complexType name="theFaultType">
<xsd:sequence>
<xsd:element name="ID" type="xsd:int" />
<xsd:element name="message" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="theFault" type="theFaultType" />
</xsd:schema>
</types>
...
<message name="theFaultMessage">
<part element="s0:theFaultPart" name="theFault" />
</message>
...
<binding ...>
<operation ...>
<soap:operation soapAction="..." style="document" />
<input ...>
...
</input>
<output ...>
...
</output>
<fault ...>
<soap:fault name="theFaultPart" use="literal" />
</fault>
</operation>
</binding>
...
</definitions>
JAX-RPC スタックが適切な例外を送出するためには、SOAP メッセージに含まれるエラーの形式が適切であることが必要です。エラーが AquaLogic Service Bus メッセージ フロー内で作成される場合は、以下の手順を実行します。
<soap-env:Body>
<soap-env:Fault>
<faultcode xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">soap:Server</faultcode>
<faultstring>Some literal string</faultstring>
<detail>
<test:theFault>
<test:ID>Any user defined code</e2eb:Id>
<test:message>A specific literal message</test:message>
</test:theFault>
</detail>
</soap-env:Fault>
</soap-env:Body>
AquaLogic Service Bus Console での返信アクションのコンフィグレーションについては、『AquaLogic Service Bus Console の使い方』の「プロキシ サービス : アクション」を参照してください。
clientgen ツールは、JAX-RPC スタブなど、Web サービスを呼び出すために必要なクライアントサイド アーティファクトを生成するために使用します。『WebLogic Web サービス プログラマーズ ガイド』の「Ant タスク リファレンス」を参照してください。