Oracle® Fusion Middleware

Oracle Service Bus開発者ガイド

11gリリース1 (11.1.1.7)

B61435-08(原本部品番号:E15866-09)

2013年3月

このドキュメントは、開発者向けであり、Oracle Service Bus (OSB)の開発環境(IDE)を使用して、プロキシおよびビジネス・サービスの作成と構成、分割-結合、メッセージ・フローの作成、XQuery、XSLTおよびMFLによるメッセージ変換の実行、トランスポートの構成、JCAアダプタの操作、カスタム・トランスポートの作成、WS-Securityを使用したセキュリティの構成、Oracle Service Bus APIの使用、およびグローバルJNDIリソースの作成を行う方法について説明しています。

Oracle Fusion Middleware Oracle Service Bus開発者ガイド, 11gリリース1 (11.1.1.7)

B61435-08

Copyright © 2008, 2013, Oracle and/or its affiliates. All rights reserved.

原本著者: Oracle Corporation

原本協力著者:

原本協力者:

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

例一覧

図一覧

表一覧

タイトルおよび著作権情報

はじめに

- ドキュメントのアクセシビリティについて

- 表記規則

リリース11.1.1.7用のこのガイドでの新しい情報

第I部 Oracle Service Bus IDEヘルプ

1 Oracle Service Busの紹介

2 タスク

- 2.1 プロジェクト、フォルダ、リソースおよび構成の操作

- 2.1.1 リソースの命名制限

- 2.1.2 リソースの編集

- 2.1.3 Oracle Service Busプロジェクトおよびフォルダのクローン作成

- 2.1.4 Oracle Service Bus構成プロジェクトの作成

- 2.1.5 Oracle Service Busプロジェクトの作成

- 2.1.6 サーバーの作成

- 2.1.7 カスタム・リソースの作成

- 2.1.8 JNDIプロバイダ・リソースの作成および編集

- 2.1.9 プロキシ・サーバー・リソースの作成

- 2.1.10 メッセージ・フォーマット・ファイルの作成

- 2.1.11 リソースのエクスポート

- 2.1.11.1 エクスポート・ウィザードの使用

- 2.1.11.2 コマンドラインやスクリプトを使用したOracle Service Bus構成のエクスポート

- 2.1.12 有効なWSDLの生成

- 2.1.13 JAR依存関係の変更

- 2.1.14 リソースのインポート

- 2.1.14.1 インポート・ウィザードの使用

- 2.1.14.2 コマンドラインやスクリプトを使用したOracle Service Bus構成のインポート

- 2.1.15 サービス・アカウント・リソースの作成

- 2.1.16 サービス・キー・プロバイダ・リソースの作成

- 2.1.17 SMTPサーバー・リソースの作成

- 2.1.18 XQueryトランスフォーメーションの作成

- 2.1.19 XSLトランスフォーメーションの作成

- 2.2 ビジネス・サービスの操作

- 2.2.1 ビジネス・サービスの作成

- 2.2.1.1 既存のサービスからビジネス・サービスを生成する

- 2.2.2 アウトバウンドJCAファイルからJCAビジネス・サービスを生成する

- 2.2.3 Oracle Enterprise Repositoryからビジネス・サービスを生成する

- 2.2.3.1 Oracle Enterprise Repositoryから既存のビジネス・サービスを再生成する

- 2.2.4 ビジネス・サービスの編集

- 2.3 プロキシ・サービスの操作

- 2.3.1 プロキシ・サービスの作成

- 2.3.1.1 既存のサービスからプロキシ・サービスを生成する

- 2.3.2 インバウンドJCAファイルからJCAプロキシ・サービスを生成する

- 2.3.3 Oracle JDeveloperでのWSILによるOracle Service Busプロキシ・サービスの使用

- 2.3.4 プロキシ・サービスの編集

- 2.4 プロキシ・サービス・メッセージ・フローの操作

- 2.4.1 プロキシ・サービスのメッセージ・フローの作成

- 2.4.2 メッセージ・フローへのアラート・アクションの追加と構成

- 2.4.3 メッセージ・フローへの割当てアクションの追加と構成

- 2.4.4 メッセージ・フローへの条件付きブランチ・ノードの追加と構成

- 2.4.5 メッセージ・フローへの削除アクションの追加と構成

- 2.4.6 メッセージ・フローへの動的パブリッシュ・アクションの追加と構成

- 2.4.7 メッセージ・フローへの動的ルーティング・アクションの追加と構成

- 2.4.8 メッセージ・フローへのエラー・ハンドラの追加と構成

- 2.4.9 メッセージ・フローへのFor-Eachアクションの追加と構成

- 2.4.10 メッセージ・フローへのIf-Thenアクションの追加と構成

- 2.4.11 メッセージ・フローへの挿入アクションの追加と構成

- 2.4.12 メッセージ・フローへのJavaコールアウト・アクションの追加と構成

- 2.4.13 メッセージ・フローへのログ・アクションの追加と構成

- 2.4.14 メッセージ・フローへのMFL変換アクションの追加と構成

- 2.4.15 メッセージ・フローへのオペレーション・ブランチ・ノードの追加と構成

- 2.4.16 メッセージ・フローへのパイプライン・ペア・ノードの追加と構成

- 2.4.17 メッセージ・フローへのパブリッシュ・アクションの追加と構成

- 2.4.18 メッセージ・フローへのパブリッシュ表アクションの追加と構成

- 2.4.19 メッセージ・フローへのエラーを発生させるアクションの追加と構成

- 2.4.20 メッセージ・フローへの名前変更アクションの追加と構成

- 2.4.21 メッセージ・フローへの置換アクションの追加と構成

- 2.4.22 メッセージ・フローへの返信アクションの追加と構成

- 2.4.23 メッセージ・フローへのレポート・アクションの追加と構成

- 2.4.24 メッセージ・フローへの再開アクションの追加と構成

- 2.4.25 メッセージ・フローへのルート・ノードの追加と構成

- 2.4.26 メッセージ・フローへのルーティング・アクションの追加と構成

- 2.4.27 メッセージ・フローへのルーティング・オプション・アクションの追加と構成

- 2.4.28 メッセージ・フローへのルーティング表アクションの追加と構成

- 2.4.29 メッセージ・フローへのサービス・コールアウト・アクションの追加と構成

- 2.4.30 メッセージ・フローへのスキップ・アクションの追加と構成

- 2.4.31 メッセージ・フローへのステージの追加と構成

- 2.4.32 メッセージ・フローへのトランスポート・ヘッダー・アクションの追加と構成

- 2.4.33 メッセージ・フローへの検証アクションの追加と構成

- 2.5 アラート宛先の操作

- 2.5.1 アラート宛先の作成および編集

- 2.5.2 アラート宛先への電子メール受信者の追加

- 2.5.3 アラート宛先へのJMS宛先の追加

- 2.6 MQ接続の操作

- 2.6.1 MQ接続の追加および編集

- 2.7 Oracle Enterprise Repositoryおよびハーベスタの操作

- 2.7.1 Oracle Enterprise Repositoryからビジネス・サービスを生成する

- 2.7.2 ハーベスタの使用

- 2.7.2.1 Eclipseでのハーベスタの使用

- 2.7.2.2 コマンドラインまたはスクリプトでのハーベスタの使用

- 2.7.3 EclipseによるOracle Enterprise Repositoryでの問合せの実行

- 2.8 UDDIレジストリの操作

- 2.8.1 UDDIレジストリの追加および構成

- 2.8.2 UDDIレジストリからのビジネス・サービスのインポート

- 2.9 分割-結合の操作

- 2.9.1 分割-結合の概要

- 2.9.1.1 SOAPヘッダー内のコンテンツでの分割-結合の使用

- 2.9.1.2 トランザクション・サポート

- 2.9.1.3 分割-結合のセキュリティ

- 2.9.2 分割-結合の設計

- 2.9.2.1 初期設定

- 2.9.3 静的な分割-結合の設計

- 2.9.3.1 1.新しい分割-結合の作成

- 2.9.3.2 2.割当ての追加

- 2.9.3.3 3.パラレル・ノードの追加

- 2.9.3.4 4.各ブランチに対する割当ての追加

- 2.9.3.5 5.サービス呼出しの追加

- 2.9.3.6 6.各ブランチに対する割当ての追加

- 2.9.3.7 7.分割-結合のエクスポートとテスト

- 2.9.4 動的な分割-結合の設計

- 2.9.4.1 1.新しい分割-結合の作成

- 2.9.4.2 2.割当ての追加

- 2.9.4.3 3.For Eachの追加

- 2.9.4.4 4.割当ての追加

- 2.9.4.5 5.サービス呼出しの追加

- 2.9.4.6 6.割当ての追加

- 2.9.4.7 7.エラー・ハンドラの追加

- 2.9.4.8 8.分割-結合のエクスポートとテスト

- 2.9.5 新しい分割-結合の作成

- 2.9.6 開始ノードの構成

- 2.9.6.1 全般的な情報の追加

- 2.9.6.2 グローバル変数の定義

- 2.9.6.3 外部サービスの表示

- 2.9.7 受信の構成

- 2.9.7.1 操作の表示

- 2.9.7.2 受信変数の定義

- 2.9.7.3 全般的な情報の追加

- 2.9.8 割当ての作成

- 2.9.8.1 割当て操作の追加および構成

- 2.9.8.2 全般的な情報の追加

- 2.9.9 サービスの呼出し

- 2.9.9.1 操作の選択

- 2.9.9.2 入力変数および出力変数の定義

- 2.9.9.3 全般的な情報の追加

- 2.9.10 パラレルの作成

- 2.9.10.1 ノードの追加

- 2.9.10.2 全般的な情報の追加

- 2.9.11 For Eachの作成

- 2.9.11.1 For Eachロジックの定義

- 2.9.11.2 全般的な情報の追加

- 2.9.12 Ifアクティビティの作成

- 2.9.12.1 Ifの構成

- 2.9.12.2 Else Ifの追加および構成

- 2.9.12.3 Elseの構成

- 2.9.12.4 全般的な情報の追加

- 2.9.13 エラー・ハンドラの作成

- 2.9.14 「エラーを発生させる」の作成

- 2.9.15 返信の構成

- 2.9.15.1 操作の表示

- 2.9.15.2 返信変数の定義

- 2.9.15.3 全般的な情報の追加

- 2.9.16 スコープについて

- 2.9.16.1 スコープおよび変数

- 2.9.17 分割-結合のエクスポートとテスト

- 2.9.17.1 トランスポート型ビジネス・サービスの作成

- 2.9.17.2 分割-結合ファイルのエクスポート

- 2.9.17.3 テスト・コンソールによる分割-結合のテスト

- 2.10 Oracle Service Busデバッガの使用

- 2.10.1 デバッグの有効化

- 2.10.2 標準デバッグの使用

- 2.10.2.1 デバッグ・ビュー

- 2.10.2.2 ステップ・アクションとブレークポイント

- 2.10.3 Oracle Service Busデバッガ起動構成の使用

- 2.10.3.1 リモート・デバッグ

- 2.10.3.2 管理対象サーバーでスタンドアロンで実行するOracle Service Busのデバッグ

- 2.10.3.3 サーバー共有

3 トランスポート構成

- 3.1 プロトコル固有のトランスポート構成ページ

- 3.1.1 BPEL-10gトランスポート構成ページ(ビジネス・サービス)

- 3.1.2 DSPトランスポート構成ページ(ビジネス・サービス)

- 3.1.3 EJBトランスポート構成ページ(ビジネス・サービス)

- 3.1.4 電子メール・トランスポート構成ページ(ビジネス・サービス)

- 3.1.5 電子メール・トランスポート構成ページ(プロキシ・サービス)

- 3.1.6 ファイル・トランスポート構成ページ(ビジネス・サービス)

- 3.1.7 ファイル・トランスポート構成ページ(プロキシ・サービス)

- 3.1.8 FTPトランスポート構成ページ(ビジネス・サービス)

- 3.1.9 FTPトランスポート構成ページ(プロキシ・サービス)

- 3.1.10 HTTPトランスポート構成ページ(ビジネス・サービス)

- 3.1.11 HTTPトランスポート構成ページ(プロキシ・サービス)

- 3.1.12 JCAトランスポート構成ページ(プロキシ・サービスおよびビジネス・サービス)

- 3.1.13 JEJBトランスポート構成ページ(ビジネス・サービス)

- 3.1.14 JEJBトランスポート構成ページ(プロキシ・サービス)

- 3.1.15 JMSトランスポート構成ページ(ビジネス・サービス)

- 3.1.16 JMSトランスポート構成ページ(プロキシ・サービス)

- 3.1.17 MQトランスポート構成ページ(ビジネス・サービス)

- 3.1.18 MQトランスポート構成ページ(プロキシ・サービス)

- 3.1.19 SBトランスポート構成ページ(ビジネス・サービス)

- 3.1.20 SBトランスポート構成ページ(プロキシ・サービス)

- 3.1.21 SFTPトランスポート構成ページ(ビジネス・サービス)

- 3.1.22 SFTPトランスポート構成ページ(プロキシ・サービス)

- 3.1.23 SOA-DIRECTトランスポート構成ページ(ビジネス・サービス)

- 3.1.24 Tuxedoトランスポート構成ページ(ビジネス・サービス)

- 3.1.25 Tuxedoトランスポート構成ページ(プロキシ・サービス)

- 3.1.26 WSトランスポート構成ページ(ビジネス・サービス)

- 3.1.27 WSトランスポート構成ページ(プロキシ・サービス)

4 ユーザー・インタフェース・リファレンス

- 4.1 アラート

- 4.1.1 アラート宛先エディタ

- 4.1.2 電子メール受信者の編集ページ

- 4.1.3 JMS宛先の編集ページ

- 4.2 ビジネス・サービスの構成

- 4.2.1 ビジネス・サービスの「全般的な構成」ページ

- 4.2.1.1 ビジネス・サービス・エディタのオプション

- 4.2.2 ビジネス・サービスの「メッセージ・タイプの構成」ページ

- 4.2.3 ビジネス・サービスの「SOAPバインド構成」ページ

- 4.2.4 ビジネス・サービスの「トランスポート構成」ページ

- 4.2.5 ビジネス・サービスの「メッセージ処理構成」ページ

- 4.2.6 ビジネス・サービスの「サービス・ポリシー構成」ページ

- 4.2.7 ビジネス・サービスの「セキュリティ構成」ページ

- 4.3 プロキシ・サービスの構成

- 4.3.1 プロキシ・サービスの「全般的な構成」ページ

- 4.3.1.1 プロキシ・サービス・エディタのオプション

- 4.3.2 プロキシ・サービスの「メッセージ・タイプの構成」ページ

- 4.3.3 プロキシ・サービスの「操作選択構成」ページ

- 4.3.4 プロキシ・サービスの「メッセージ処理構成」ページ

- 4.3.5 プロキシ・サービスの「SOAPバインド構成」ページ

- 4.3.6 プロキシ・サービスの「トランスポート構成」ページ

- 4.3.7 プロキシ・サービスの「サービス・ポリシー構成」ページ

- 4.3.8 プロキシ・サービスの「セキュリティ構成」ページ

- 4.4 Oracle Service Busの構成とプロジェクト

- 4.4.1 Oracle Service Busの「構成」ビュー

- 4.4.2 新しいOracle Service Bus構成プロジェクト・ウィザード

- 4.4.3 Oracle Service Bus構成ページ

- 4.4.4 新しいOracle Service Busプロジェクト

- 4.5 カスタム・リソース

- 4.5.1 新しいカスタム・リソース・ウィザード

- 4.5.2 新しいカスタム・リソース・エディタ

- 4.5.3 新しいカスタム・リソース - リソース・タイプ・ページ

- 4.5.4 カスタムMQの「リソース構成」ページ

- 4.6 エクスポート・ウィザード

- 4.6.1 エクスポート・ウィザード - Oracle Service Bus構成JARエクスポート・ページ

- 4.6.2 エクスポート・ウィザード - サーバーにエクスポート - リソースの選択ページ

- 4.6.3 エクスポート・ウィザード - サーバーにエクスポート - リソースの確認ページ

- 4.7 インポート・ウィザード

- 4.7.1 インポート・ウィザード - 構成JARのインポート - 「リソースのロード」ページ

- 4.7.2 インポート・ウィザード - 構成JARのインポート - リソースの確認ページ

- 4.7.3 インポート・ウィザード - 構成ZIPのインポート - 「リソースのロード」ページ

- 4.7.4 インポート・ウィザード - 構成ZIPのインポート - リソースの確認ページ

- 4.7.5 インポート・ウィザード - URLのインポート - 「リソースのロード」ページ

- 4.7.6 インポート・ウィザード - URLのインポート - リソースの確認ページ

- 4.8 JNDIプロバイダ

- 4.8.1 JNDIプロバイダ・エディタ

- 4.8.2 新しいJNDIプロバイダ・リソース・ウィザード

- 4.9 プロキシ・サーバー

- 4.10 メッセージ・フロー・デザイン・パレット

- 4.10.1 メッセージ・フロー・ノード

- 4.10.2 メッセージ・フローのルート・アクション - 通信アクション

- 4.10.3 メッセージ・フローのルート・アクション - フロー制御アクション

- 4.10.4 メッセージ・フローのステージ・アクション - 通信アクション

- 4.10.5 メッセージ・フローのステージ・アクション - フロー制御アクション

- 4.10.6 メッセージ・フローのステージ・アクション - メッセージ処理アクション

- 4.10.7 メッセージ・フローのステージ・アクション - レポート・アクション

- 4.11 メッセージ・フロー・エディタ

- 4.11.1 アラート・アクションのプロパティ

- 4.11.2 割当てアクションのプロパティ

- 4.11.3 条件付きブランチ・ノードのプロパティ

- 4.11.4 削除アクションのプロパティ

- 4.11.5 動的パブリッシュ・アクションのプロパティ

- 4.11.6 動的ルーティング・アクションのプロパティ

- 4.11.7 エラー・ハンドラ・ノードのプロパティ

- 4.11.8 For-Eachアクションのプロパティ

- 4.11.9 If-Thenアクションのプロパティ

- 4.11.9.1 IfアクションとElse-Ifアクションのプロパティ

- 4.11.9.2 Elseアクションのプロパティ

- 4.11.10 挿入アクションのプロパティ

- 4.11.11 Javaコールアウト・アクションのプロパティ

- 4.11.12 ログ・アクションのプロパティ

- 4.11.13 メッセージ・フローのプロパティ - コメント

- 4.11.14 メッセージ・フローのプロパティ - ネームスペース

- 4.11.15 メッセージ・フローのプロパティ - 変数

- 4.11.16 MFL変換アクションのプロパティ

- 4.11.17 オペレーション・ブランチ・ノードのプロパティ

- 4.11.18 パイプライン・ペア・ノードのプロパティ

- 4.11.19 パブリッシュ・アクションのプロパティ

- 4.11.20 パブリッシュ表アクションのプロパティ

- 4.11.20.1 パブリッシュ表のプロパティ

- 4.11.20.2 ケース・アクションのプロパティ

- 4.11.20.3 パブリッシュ・アクションのプロパティ

- 4.11.21 エラーを発生させるアクションのプロパティ

- 4.11.21.1 トランザクション

- 4.11.22 名前変更アクションのプロパティ

- 4.11.23 置換アクションのプロパティ

- 4.11.24 返信アクションのプロパティ

- 4.11.25 レポート・アクションのプロパティ

- 4.11.26 再開アクションのプロパティ

- 4.11.27 ルート・ノードのプロパティ

- 4.11.28 ルーティング・アクションのプロパティ

- 4.11.29 ルーティング・オプション・アクションのプロパティ

- 4.11.30 ルーティング表アクションのプロパティ

- 4.11.30.1 ルーティング表のプロパティ

- 4.11.30.2 ケース・アクションのプロパティ

- 4.11.30.3 ルーティング・アクションのプロパティ

- 4.11.31 サービス・コールアウト・アクションのプロパティ

- 4.11.32 スキップ・アクションのプロパティ

- 4.11.33 ステージ・ノードのプロパティ

- 4.11.34 トランスポート・ヘッダー・アクションのプロパティ

- 4.11.35 検証アクションのプロパティ

- 4.12 JAR依存関係の変更ダイアログ

- 4.13 SMTPサーバー

- 4.13.1 「SMTPサーバーの編集」ページ

- 4.13.2 新しいSMTPサーバー・リソース・ウィザード

- 4.14 「UDDIレジストリの構成」ページ

- 4.15 アウトライン・ビュー - Oracle Service Bus

- 4.16 リソース管理

- 4.16.1 「プリファレンス」ダイアログ - Oracle Service Bus - タイプの関連付けページ

- 4.16.2 参照ビュー

- 4.16.3 クローン・ターゲットの選択ダイアログ

- 4.16.4 リソースの選択ダイアログ

- 4.17 新しいサービス・キー・プロバイダ・リソース

- 4.18 新しいWS-Policy

- 4.19 サービス・アカウント

- 4.19.1 新しいサービス・アカウント・リソース

- 4.19.2 サービス・アカウント・エディタ - 「全般的な構成」ページ

- 4.19.3 サービス・アカウント・エディタ - 「静的ユーザー構成」ページ

- 4.19.4 サービス・アカウント・エディタ - 「ユーザー・マッピング構成」ページ

- 4.20 式エディタ

- 4.20.1 XQuery/XSLT式エディタ

- 4.20.2 XPath式エディタ

- 4.20.3 条件エディタ

- 4.20.4 「条件ビルダー」ページ

- 4.20.5 「式」ページ

- 4.20.6 「XQueryリソース」ページ

- 4.20.7 「XSLTリソース」ページ

- 4.20.8 「動的XQuery」ページ

- 4.20.9 「変数の構造」ページ

- 4.20.10 「ネームスペース定義」ページ

- 4.20.11 「XQuery関数」ページ

- 4.20.12 変数の構造の追加ダイアログ

- 4.21 新しいXSLトランスフォーメーション

- 4.22 分割-結合ユーザー・インタフェース・リファレンス

- 4.22.1 分割-結合デザイン・パレット

- 4.22.1.1 操作

- 4.22.2 グローバル/開始ノードのプロパティ

- 4.22.3 変数のプロパティ

- 4.22.4 エラー・ハンドラのプロパティ

- 4.22.5 サービスの呼出しのプロパティ

- 4.22.5.1 別の分割-結合の呼出し

- 4.22.6 返信のプロパティ

- 4.22.7 For Eachのプロパティ

- 4.22.8 Ifのプロパティ

- 4.22.9 IfとElse Ifのプロパティ

- 4.22.10 パラレルのプロパティ

- 4.22.11 エラーの生成のプロパティ

- 4.22.12 Repeat Untilのプロパティ

- 4.22.13 エラーの再生成のプロパティ

- 4.22.14 スコープのプロパティ

- 4.22.15 Whileのプロパティ

- 4.22.16 待機のプロパティ

- 4.22.17 割当てのプロパティ

- 4.22.17.1 割当て操作のプロパティ

- 4.22.18 コピーのプロパティ

- 4.22.19 削除のプロパティ

- 4.22.20 挿入のプロパティ

- 4.22.21 Javaコールアウトのプロパティ

- 4.22.22 ログのプロパティ

- 4.22.23 置換のプロパティ

- 4.22.24 受信のプロパティ

- 4.22.25 カウンタ変数ダイアログ

- 4.22.26 変数の作成/編集ダイアログ

- 4.22.26.1 スコープと変数

- 4.22.27 メッセージ変数の作成ダイアログ

- 4.22.28 サービス・ブラウザ

- 4.22.29 SOAPフォルト変数ダイアログ

- 4.22.30 WSDLブラウザ

- 4.22.31 分割-結合ウィザード - 新しい分割-結合

- 4.22.32 分割-結合ウィザード - 操作の指定

第II部 XQuery Mapper

5 はじめに

- 5.1 XQuery Mapperの概要

- 5.2 XQuery 2002および2004のサポート

- 5.2.1 XQueryのテスト・ビューに適用される制限

6 XQuery Mapperを使用したデータの変換

- 6.1 XQuery Mapperの起動

- 6.2 XQuery Mapperサンプル・プロジェクトのインポート

- 6.3 XQuery Mapperプロジェクトの作成

- 6.4 スキーマ・ファイルのインポートと作成

- 6.4.1 XMLスキーマとMFLファイルのインポート

- 6.4.2 XMLスキーマの作成

- 6.4.3 XMLスキーマからのXMLファイルの作成

- 6.4.4 WSDLファイルの作成

- 6.4.5 MFLファイルの作成

- 6.5 ソースとターゲットのデータ型の選択

- 6.6 データ・トランスフォーメーションの作成

- 6.6.1 基本的な要素トランスフォーメーションの作成

- 6.6.1.1 前提条件

- 6.6.1.2 要素-要素リンクの作成

- 6.6.2 基本的な属性トランスフォーメーションの作成

- 6.6.2.1 前提条件

- 6.6.2.2 属性-要素リンクの作成

- 6.6.3 複雑なトランスフォーメーションの作成

- 6.6.3.1 前提条件

- 6.6.3.2 複雑なトランスフォーメーションの作成

- 6.7 データ・トランスフォーメーションの編集

- 6.7.1 XQueryファイルの表示と編集

- 6.7.2 結合と和集合の作成

- 6.7.3 If-Then-Else式の作成

- 6.7.4 For-Let-Where-Order By-Return (FLWOR)式の作成

- 6.7.5 Typeswitch式の作成

- 6.7.6 XQuery関数の挿入

- 6.7.7 式の変数の挿入

- 6.7.8 スキーマ・プロパティの表示

- 6.8 オプション要素の出力の制限

- 6.9 データ・トランスフォーメーションのテスト

- 6.9.1 「Test」ビューの機能

- 6.9.1.1 関連項目

- 6.10 「Design」ビューのグラフィカルな機能

- 6.10.1 右クリック・メニュー・オプション

- 6.10.2 リンクのパターン

- 6.10.3 リンクの色

- 6.11 XMLのグローバル要素、グローバル型、ローカル要素、および属性

7 例: XQuery Mapperを使用したデータ・トランスフォーメーション

- 7.1 異なるスキーマからのデータの結合

- 7.2 反復する要素のマップと結合の作成

- 7.2.1 ステップ1. XQueryファイルの作成

- 7.2.2 ステップ2. 制約の追加

- 7.2.3 ステップ3. 要素を返すデータの追加

- 7.2.4 ステップ4. 見積り値を計算する関数の追加

- 7.2.5 ステップ5. 複数の条件を持つ制約の追加

- 7.2.6 XQueryのテスト

- 7.3 和集合の作成

- 7.4 反復ソースと非反復ターゲットの間のトランスフォーメーションの作成

- 7.5 非反復ソースと反復ターゲットの間のトランスフォーメーションの作成

- 7.6 ネストされたIf-Then-Else式の作成

- 7.6.1 ステップ1. XQueryトランスフォーメーションの作成

- 7.6.2 ステップ2. 最初の「If」条件の作成

- 7.6.3 ステップ3. 最初のネストされたIf-Then-Else条件の作成

- 7.6.4 ステップ4. 2つ目のネストされたIf-Then-Else条件の作成

- 7.7 FLWOR式の作成

- 7.8 再帰的なスキーマの使用

- 7.9 キー・フィールドによるデータのグループ

第III部 Format Builder

8 はじめに

- 8.1 概要

9 Format Builderのメイン・ウィンドウ

- 9.1 メニュー・バーの使用

- 9.2 ツールバーの使用

- 9.3 ツリー・ペインの使用

- 9.4 ショートカット・メニューの使用

- 9.5 ドラッグ・アンド・ドロップの使用

- 9.6 有効な名前

10 メッセージ・フォーマットの詳細ウィンドウ

11 グループの詳細ウィンドウ

12 フィールドの詳細ウィンドウ

13 参照の詳細ウィンドウ

14 コメントの詳細ウィンドウ

15 Format Builderのオプション

16 メタデータのインポート

- 16.1 ガイドラインXMLファイルのインポート

- 16.2 XMLスキーマのインポート

- 16.3 COBOLコピーブックのインポート

- 16.4 C構造体のインポート

- 16.5 C Structure Importerの起動

- 16.6 MFLデータの生成

- 16.7 Cコードの生成

- 16.8 FMLフィールド表クラスのインポート

- 16.8.1 FML Field Table Class Importerの前提条件

- 16.8.2 サンプルのFMLフィールド表クラス・ファイル

- 16.8.3 FML Field Table Class ImporterでのXMLの作成

17 Format Tester

- 17.1 Format Testerウィンドウ

- 17.2 Format Testerのメニュー

- 17.3 「ファイル」メニュー

- 17.4 「編集」メニュー

- 17.5 「表示」メニュー

- 17.6 「生成」メニュー

- 17.7 「変換」メニュー

- 17.8 ショートカット・メニュー

- 17.9 非XMLウィンドウの使用

- 17.10 データ・オフセット機能の使用

- 17.11 テキスト機能の使用

- 17.12 XMLウィンドウの使用

- 17.13 「デバッグ」ウィンドウの使用

- 17.14 サイズ変更バーの使用

- 17.15 フォーマット定義のデバッグ

- 17.16 値の検索

- 17.17 オフセットの検索

- 17.18 デバッグ・ログの使用

18 Format Builderのメニュー

- 18.1 「ファイル」メニュー

- 18.2 「編集」メニュー

- 18.3 「挿入」メニュー

- 18.4 「ビュー」メニュー

- 18.5 ツール・メニュー

- 18.6 「ヘルプ」メニュー

- 18.7 ショートカット・メニュー

19 操作方法

- 19.1 メッセージ・フォーマットの作成

- 19.2 グループの作成

- 19.3 フィールドの作成

- 19.4 コメントの作成

- 19.5 参照の作成

- 19.6 ドキュメントの保存

- 19.7 Format Testerの使用

- 19.8 フォーマット定義のデバッグ

- 19.9 値の検索

- 19.10 オフセットの検索

- 19.11 デバッグ・ログの使用

- 19.12 キャラクタ・デリミタ

- 19.13 デリミタの指定

- 19.13.1 参照による指定

- 19.13.2 値による指定

- 19.14 デリミタの一致ルール

- 19.14.1 データ区切り文字

- 19.14.2 エスケープ文字

- 19.14.3 なし

20 パレットの使用

- 20.1 パレット・ウィンドウの表示

- 20.2 パレットへの項目の追加

- 20.3 メッセージ・フォーマットへのパレットの項目の追加

- 20.4 「ファイル」メニューの使用

- 20.5 ショートカット・メニューの使用

21 Format Builderのサポート対象のデータ型

- 21.1 MFLのデータ型

- 21.2 COBOL Copybook Importerのデータ型

- 21.3 サポートされていないC言語機能

第IV部 開発に関する一般事項

22 開発環境の設定

- 22.1 Derbyでの複数の開発サーバーの実行

- 22.1.1 Derbyのベスト・プラクティスとトラブルシューティング

- 22.1.2 複数のドメイン間における単一のDerbyデータベース・インスタンスの共有

- 22.1.3 独自のDerbyインスタンスによる個々のドメインの実行

- 22.2 JMSレポート・プロバイダの無効化

23 カスタムXPath関数の作成と使用

- 23.1 Oracle Service Busでのカスタム関数の登録

- 23.2 カスタム関数のJavaクラスの作成とパッケージ化

- 23.2.1 クラスとメソッドの作成

- 23.2.1.1 1次元配列の使用

- 23.2.2 カスタム関数クラスのパッケージ化

- 23.3 カスタム関数の使用

- 23.3.1 インラインXQuery式およびXQueryリソースでのカスタム関数の使用

- 23.3.2 XSLTリソースでのカスタム関数の使用

- 23.4 EclipseでのカスタムXPath関数のテスト

- 23.5 クラスタへのカスタム関数のデプロイ

第V部 トランスポート

24 Oracle SOA Suiteトランスポート(SOA-DIRECT)

- 24.1 SOA-DIRECTトランスポートについて

- 24.1.1 WS-Addressing

- 24.1.2 セキュリティ

- 24.1.3 環境値

- 24.1.4 エラーの処理

- 24.1.4.1 接続エラー

- 24.1.4.2 アプリケーション・エラー

- 24.1.4.3 一般エラー

- 24.2 Oracle Service BusでのSOA Suiteサービスの使用

- 24.2.1 簡単な使用例 - 同期

- 24.2.1.1 SOAコンポジットの同期呼出し

- 24.2.1.2 SOAコンポジットからの同期呼出し

- 24.2.1.3 メッセージと正しい会話の関連付け

- 24.2.2 高度な使用例 - 非同期

- 24.2.2.1 SOAコンポジットの非同期呼出し

- 24.2.2.2 SOAコンポジットからの非同期呼出し

- 24.3 トランスポート構成のリファレンス

- 24.3.1 SOA-DIRECTのエンドポイントURI

- 24.3.1.1 クラスタのURI

- 24.3.1.2 URIの例

- 24.3.2 ビジネス・サービスのためのSOA-DIRECTトランスポートの構成

- 24.4 WS-Addressingのリファレンス

- 24.4.1 ReplyToヘッダー

- 24.4.1.1 SOA-DIRECTビジネス・サービスでのSOAコンポジットの非同期呼出し

- 24.4.1.2 SOA-DIRECTビジネス・サービスでのSOAコンポジットへの非同期コールバック

- 24.4.2 MessageID / RelatesToヘッダー

- 24.5 XMLの例

- 24.5.1 会話IDの例

- 24.5.1.1 ポートおよびメッセージ定義

- 24.5.1.2 WS-Addressingでの会話IDの設定

- 24.5.1.3 メッセージ・ペイロード・データでの会話IDの設定

- 24.5.1.4 変換の例

- 24.5.2 Oracle Service Busを介したコンポジット間非同期ネイティブ通信の例

- 24.5.2.1 ポートとメッセージの定義

- 24.5.2.2 BP1からP1 - 開始操作

- 24.5.2.3 P1/B1からBP2

- 24.5.2.4 BP2からP2 - onResult操作

- 24.5.2.5 P2/B2からBP1 - onResult操作

25 JCAトランスポート

- 25.1 JCAトランスポートについて

- 25.1.1 メッセージ

- 25.1.1.1 トランザクション

- 25.1.2 トランスポート・ヘッダーおよび正規化メッセージ・プロパティ

- 25.1.2.1 $inboundおよび$outboundリクエスト・ヘッダー

- 25.1.2.2 $inboundのみのリクエスト・ヘッダー

- 25.1.2.3 $outboundのみのリクエスト・ヘッダー

- 25.1.3 エンドポイント・プロパティ

- 25.1.3.1 プロキシ・サービスのエンドポイント・プロパティ(インバウンド)

- 25.1.3.2 ビジネス・サービスのエンドポイント・プロパティ(アウトバウンド)

- 25.1.4 セキュリティ

- 25.1.4.1 プロキシ・サービス

- 25.1.4.2 ビジネス・サービス

- 25.1.5 ログ

- 25.1.5.1 Oracle BAM Adapterロギング

- 25.1.6 エラー処理

- 25.1.6.1 JCAビジネス・サービスのEISフォルトの詳細

- 25.1.6.2 ビジネス・サービス・アプリケーション・エラーの再試行

- 25.1.7 URI再書込み

- 25.1.8 環境変数

- 25.1.9 エンコーディング

- 25.2 アダプタの操作

- 25.2.1 アダプタ・サポート

- 25.2.2 Oracle JCAアダプタの制約事項

- 25.2.2.1 すべてのJCAアダプタに適用される制約事項

- 25.2.2.2 AQ用のOracle JCAアダプタの制約事項

- 25.2.2.3 ファイル/FTP用のOracle JCAアダプタの制約事項

- 25.2.3 JCAアダプタ・フレームワーク

- 25.2.4 アダプタの構成 - 全般

- 25.2.5 データベースをポーリングするアダプタの構成

- 25.2.6 データベース用のOracle JCAアダプタの構成

- 25.2.7 AQ用のOracle JCAアダプタの構成

- 25.2.8 カスタムJCAアダプタの使用

- 25.2.9 拒否されたメッセージ

- 25.3 Oracle Service Busを介したEISサービスの呼出し

- 25.3.1 サービスの作成、構成および呼出し

- 25.4 EISからの外部サービスの呼出し

- 25.4.1 サービスの作成、構成および呼出し

- 25.5 トランスポート構成のリファレンス

- 25.5.1 エンドポイントURI

- 25.5.1.1 エンドポイント再デプロイメント

- 25.5.2 プロキシ・サービスとビジネス・サービスのためのJCAトランスポートの構成

- 25.5.3 プロキシ・サービス操作の構成

- 25.5.4 プロキシ・サービスのメッセージ処理

- 25.5.5 ポリシー

26 HTTPトランスポートおよびポーラー・トランスポート

- 26.1 HTTPトランスポート

- 26.1.1 HTTPセッションの固定

- 26.1.2 HTTPトランスポートを使用するプロキシ・サービスの構成

- 26.1.3 HTTPトランスポートを使用するビジネス・サービスの構成

- 26.1.4 RESTサポート

- 26.1.4.1 プロキシ・サービスのREST

- 26.1.4.2 ビジネス・サービスのREST

- 26.2 電子メール・トランスポート

- 26.2.1 電子メール・トランスポートを使用するプロキシ・サービスの構成

- 26.2.2 電子メール・トランスポートを使用するビジネス・サービスの構成

- 26.3 ファイル・トランスポート

- 26.3.1 ファイル・トランスポートを使用するプロキシ・サービスの構成

- 26.3.2 ファイル・トランスポートを使用するビジネス・サービスの構成

- 26.4 FTPトランスポート

- 26.4.1 FTPトランスポートを使用するプロキシ・サービスの構成

- 26.4.2 FTPトランスポートを使用するビジネス・サービスの構成

- 26.5 SFTPトランスポート

- 26.5.1 環境値

- 26.5.2 SFTP認証の一般原則

- 26.5.3 実行時の動作

- 26.5.4 SFTPトランスポートの使用

- 26.5.4.1 SFTP認証の有効化

- 26.5.4.2 プロキシ・サービスの構成

- 26.5.4.3 ビジネス・サービスの構成

- 26.5.4.4 通信エラーの処理

- 26.5.4.5 トラブルシューティング

- 26.5.4.6 リソースのインポート

- 26.5.4.7 サービスのインポートとパブリッシュ: UDDIレジストリ

27 SBトランスポート

- 27.1 環境値

- 27.2 SBトランスポートを使用するプロキシ・サービスの構成

- 27.3 SBトランスポートを使用するビジネス・サービスの構成

- 27.3.1 JNDIプロバイダ

- 27.4 エラー処理

- 27.5 UDDI

- 27.5.1 サービスのパブリッシュ

- 27.5.2 サービスのインポート

28 EJBトランスポート

- 28.1 はじめに

- 28.2 Oracle Service BusからのEJBの呼出し

- 28.2.1 JNDIプロバイダ・リソースの登録

- 28.2.1.1 JNDIプロバイダの追加

- 28.2.2 EJBクライアントJARリソースの登録

- 28.2.2.1 クライアントJARまたはコンバータJARの追加

- 28.2.2.2 サービス・アカウントの作成(オプション)

- 28.2.2.3 JNDIツリーでのEJBの検索

- 28.2.3 トランスポート構成のリファレンス

- 28.2.3.1 EJBのエンドポイントURI

- 28.2.3.2 ビジネス・サービスのためのEJBトランスポート構成

- 28.2.4 EJBビジネス・サービスの呼出し

- 28.3 WebサービスとしてのEJBの公開

- 28.4 詳細な説明

- 28.4.1 トランザクション処理、再試行、およびエラー処理

- 28.4.1.1 トランザクション

- 28.4.1.2 再試行およびフェイルオーバー

- 28.4.1.3 エラー処理

- 28.4.2 サポートされる型およびコンバータ・クラス

- 28.4.2.1 コンバータ・クラス

- 28.4.3 ビジネス例外クラス

- 28.5 トラブルシューティング

- 28.5.1 デバッグ・モードの有効化

- 28.5.2 tempディレクトリ

- 28.5.3 デプロイされたアプリケーション

- 28.5.4 エラー

29 JEJBトランスポート

- 29.1 JEJBトランスポートについて

- 29.1.1 JEJBトランスポートとEJBトランスポートの相違点

- 29.1.2 環境値

- 29.1.3 WSDLの生成

- 29.1.4 エラー処理

- 29.1.4.1 レスポンスでの例外の伝播

- 29.1.4.2 アプリケーション・エラーおよび接続エラー

- 29.2 JEJBサービスの作成と構成

- 29.2.1 クライアントEJB JARの作成とパッケージ化

- 29.2.2 JNDIプロバイダ・リソースの登録(ビジネス・サービス)

- 29.2.2.1 JNDIプロバイダの追加

- 29.2.3 JEJBプロキシ・サービスまたはビジネス・サービスの構成

- 29.3 使用例

- 29.3.1 外部サービスを呼び出すEJB

- 29.3.2 EJBを呼び出す非EJBクライアント

- 29.3.3 EJBを呼び出すEJB

- 29.4 トランスポート構成のリファレンス

- 29.4.1 JEJBのエンドポイントURI

- 29.4.1.1 プロキシ・サービスのJEJBエンドポイントURI

- 29.4.1.2 ビジネス・サービスのJEJBエンドポイントURI

- 29.4.2 JEJBトランスポート構成(プロキシ・サービス)

- 29.4.3 JEJBトランスポート構成(ビジネス・サービス)

- 29.5 JEJBサービスのテスト

- 29.6 UDDIの統合

- 29.6.1 UDDIのパブリッシュ

- 29.6.2 UDDIのインポート

30 JMSトランスポート

- 30.1 JMSの相互運用性の概要

- 30.2 非同期のリクエスト/レスポンス・メッセージング

- 30.3 SOAP/JMSトランスポートの使用

- 30.3.1 Oracle WebLogic Serverとの相互運用

- 30.3.1.1 ドメイン間JMS呼出しのレスポンス・キューの構成

- 30.4 ドメイン、WebLogic、およびJMSサーバーの命名ガイドライン

- 30.5 サービスのJMSタイプの指定

- 30.6 プロキシ・サービスでのJMSクライアントIDの指定

- 30.6.1 クライアントIDおよびサブスクライバ名について

- 30.6.2 推奨される使用方法

- 30.7 WSDL定義のSOAPフォルト・メッセージ

- 30.8 WebSphere MQとの相互運用性

- 30.9 Tibco EMSとの相互運用性

- 30.10 JMSリクエスト/レスポンスのメッセージIDと相関IDのパターン

- 30.10.1 JMSリクエスト/レスポンスと設計パターンの概要

- 30.10.1.1 メッセージングのパターン

- 30.10.2 JMSメッセージIDのパターン

- 30.10.3 JMS相関IDのパターン

- 30.10.4 メッセージIDと相関IDのパターンの比較

- 30.10.5 JMSでのJAX-RPCとの相互運用

- 30.10.5.1 JMSメッセージIDのパターンを使用したJAX-RPC Webサービスの呼出し

- 30.10.5.2 JAX-RPCクライアントからのJMSリクエスト/レスポンス・プロキシ・サービスの呼出し

- 30.10.6 JMSメッセージIDのパターン例

- 30.10.6.1 例1: JMSメッセージIDを使用してリクエスト/レスポンス・メッセージの相関を行うMQサービス

- 30.10.6.2 例2: Oracle Service Busプロキシ・サービスを使用したJAX-RPCクライアント

- 30.10.6.3 例3: Oracle WebLogic Server JAX-RPCリクエスト/レスポンス・サービスのクライアントとしてのOracle Service Bus

- 30.11 JMSトランスポートの使用

- 30.11.1 セキュリティ

- 30.11.2 JMS転送プロトコルを使用するプロキシ・サービスの構成

- 30.11.3 トランスポート・ヘッダー

- 30.11.3.1 トランスポート・ヘッダーの構成

- 30.11.4 メッセージでのJavaオブジェクトの送信および受信

- 30.11.5 JMS転送プロトコルを使用するビジネス・サービスの構成

- 30.11.6 エラー処理

31 ローカル・トランスポート

- 31.1 はじめに

- 31.2 ローカル・トランスポート・プロキシ・サービスの機能と特性

- 31.3 ローカル・トランスポート・プロキシ・サービスのメッセージ処理

- 31.4 ローカル・トランスポート・プロキシ・サービスの使用方法

- 31.4.1 プロキシ・サービス間でのSOAPフォルトの伝播

- 31.5 ローカル・プロキシでのOracle WSMセキュリティの使用

- 31.6 制限事項

32 WS トランスポート

- 32.1 サポートされている機能

- 32.1.1 メッセージング・パターン

- 32.1.2 ポリシー

- 32.1.2.1 WS-Policyの構成

- 32.1.3 サイズの大きいメッセージ・コンテンツのストリーミング

- 32.1.4 Webサービスの相互運用性

- 32.2 サービスの認証と認可

- 32.2.1 プロキシ・サービスの認証

- 32.2.2 プロキシ・サービスの認可

- 32.2.3 ビジネス・サービスの認証

- 32.3 WSトランスポートの使用

- 32.3.1 Oracle Service Busドメインへのリソースの追加

- 32.3.1.1 WSポリシーの構成

- 32.3.1.2 サービスへのWSポリシーの付加

- 32.3.2 エラー・キューの構成

- 32.3.3 WSトランスポートを使用するプロキシ・サービスの構成

- 32.3.4 プロキシ・サービスへのトランスポート・アクセス制御の割当て

- 32.3.4.1 ポリシー条件の追加

- 32.3.5 HTTPプロキシ・サーバーを経由するWSトランスポートのルーティング

- 32.3.6 WSトランスポートを使用するビジネス・サービスの構成

- 32.4 エラー処理

- 32.5 リソースのインポートとエクスポート

- 32.6 UDDIレジストリを使用したサービスのインポートとパブリッシュ

33 MQトランスポート

- 33.1 主な機能

- 33.2 MQトランスポートを使用する利点

- 33.3 サポートされるサービス・タイプ

- 33.4 メッセージング・パターン

- 33.5 環境値

- 33.6 サービスの品質

- 33.7 MQクラスタとMQトランスポート

- 33.8 MQトランスポートの使用

- 33.8.1 環境へのMQクライアント・ライブラリの追加

- 33.8.2 MQ接続リソース

- 33.8.2.1 MQ接続リソースの作成

- 33.8.2.2

- 33.8.3 MQトランスポートを使用するプロキシ・サービスの構成

- 33.8.4 MQトランスポートを使用するビジネス・サービスの構成

- 33.8.5 トランスポート・ヘッダー

- 33.8.5.1 トランスポート・ヘッダーの構成

- 33.8.6 エラー処理

- 33.8.7 MQトランスポートの制限

- 33.9 WebSphere JMS MQインタフェースの使用

- 33.9.1 WebSphere MQ JMSインタフェースの使用

- 33.9.2 メッセージングのタイプ

- 33.9.2.1 非永続メッセージング

- 33.9.2.2 非XA永続メッセージング

- 33.9.2.3 XAメッセージング

- 33.9.3 WebSphere MQのチューニング

34 Oracle BPEL Process Managerトランスポート(Oracle SOA Suite 10gで使用する場合のみ)

- 34.1 概要

- 34.1.1 SOAPサポート

- 34.1.2 トランザクション伝播

- 34.1.3 SSLサポート

- 34.1.4 環境変数

- 34.2 簡単な使用例(同期)

- 34.2.1 同期: Oracle BPEL Process Managerのプロセスの呼出し

- 34.2.1.1 サービスの作成と構成

- 34.2.2 同期: Oracle BPEL Process Managerからの外部サービスの呼出し

- 34.2.2.1 サービスの作成と構成

- 34.2.3 メッセージと正しい会話の関連付け

- 34.3 高度な使用例(非同期)

- 34.3.1 非同期: Oracle BPEL Process Managerのプロセスの呼出し

- 34.3.1.1 サービスの作成と構成

- 34.3.2 非同期: Oracle BPEL Process Managerからのサービス・プロバイダの呼出し

- 34.3.2.1 サービスの作成と構成

- 34.4 トランスポート構成のリファレンス

- 34.4.1 エンドポイントURI

- 34.4.2 bpel-10gトランスポート構成

- 34.5 セキュリティ

- 34.5.1 Oracle Service BusからOracleサーバーへの通信でのSSLの使用

- 34.6 エラー処理

- 34.6.1 アプリケーション・エラー

- 34.6.2 接続エラー

- 34.6.3 その他のエラー

- 34.7 WS-Addressingのリファレンス

- 34.7.1 ReplyTo

- 34.7.1.1 Oracle Service Busを介したBPELプロセスの非同期呼出し

- 34.7.1.2 Oracle Service Busを介して外部サービスを呼び出すBPELプロセス

- 34.7.2 MessageID / RelatesTo

- 34.8 XMLの例

- 34.8.1 会話IDの例

- 34.8.1.1 ポートとメッセージの定義

- 34.8.1.2 WS-Addressingでの会話IDの設定

- 34.8.1.3 メッセージ・ペイロード・データでの会話IDの設定

- 34.8.1.4 変換の例

- 34.8.2 Oracle Service Busを介したBPEL間非同期通信の例

- 34.8.2.1 ポートとメッセージの定義

- 34.8.2.2 BP1からP1 - 開始操作

- 34.8.2.3 P1/B1からBP2

- 34.8.2.4 BP2からP2 - onResult操作

- 34.8.2.5 P2/B2からBP1 - onResult操作

35 Tuxedoトランスポート

- 35.1 概要

- 35.1.1 Tuxedoトランスポートの機能

- 35.2 Oracle Tuxedo Connectorの構成

- 35.2.1 始める前に

- 35.2.2 Oracle Tuxedo Connectorの構成

- 35.3 Oracle Service BusでのTuxedoサービスの使用

- 35.3.1 新しいビジネス・サービスの構成

- 35.3.1.1 新しいプロジェクトの追加

- 35.3.1.2 ビジネス・サービスの追加

- 35.3.2 ロード・バランシングおよびフェイルオーバー

- 35.3.3 エラー処理

- 35.3.4 構成のテスト

- 35.4 TuxedoでのOracle Service Busの使用

- 35.4.1 プロキシ・サービスの追加と構成

- 35.4.1.1 新しいプロジェクトの追加

- 35.4.1.2 プロキシ・サービスの追加

- 35.4.1.3 プロキシ・サービスの構成

- 35.4.2 構成のテスト

- 35.5 Tuxedoトランスポートのバッファ変換

- 35.5.1 任意のXMLサービス・タイプ

- 35.5.2 メッセージング・サービス・タイプ

- 35.6 Tuxedoトランスポートのトランザクション処理

- 35.6.1 インバウンド・サービス

- 35.6.2 アウトバウンド・サービス

36 DSPおよびOracle Data Service Integratorトランスポート

- 36.1 Oracle Service Busのデータ・サービスの有効化

- 36.2 DSPトランスポートの使用

- 36.2.1 Oracle Data Service Integrator内での必要なアクション

- 36.2.1.1 ステップ1.サーバーの起動

- 36.2.1.2 ステップ2.データ・サービスからのWSDLの生成

- 36.2.1.3 ステップ3: Webサービス・アドレスの取得

- 36.2.2 Oracle Service Bus内での必要なアクション

- 36.2.2.1 ステップ4: データ・サービスWSDLのOracle Service Busへのインポート

- 36.2.2.2 ステップ5: ビジネス・サービスの作成

- 36.2.2.3 ステップ6: プロキシ・サービスの作成

- 36.2.2.4 ステップ7: 設定のテスト

第VI部 トランスポートSDK

37 はじめに

38設計上の考慮事項

- 38.1 トランスポート・プロバイダとは

- 38.2 トランスポートSDKとは

- 38.2.1 SDKの用途

- 38.2.2 トランスポートSDKの機能

- 38.2.2.1 インバウンド・メッセージおよびアウトバウンド・メッセージの処理

- 38.2.2.2 トランスポート関連のアーティファクトのデプロイ

- 38.2.2.3 メッセージの非同期的な処理

- 38.2.3 トランスポート・プロバイダのモード

- 38.2.4 関連機能

- 38.2.4.1 ロード・バランシング

- 38.2.4.2 モニターおよびメトリック

- 38.3 カスタム・トランスポート・プロバイダの開発の必要性

- 38.3.1 トランスポートSDKの使用が適している場合

- 38.3.2 別の方法を選択した方が良い場合

- 38.4 トランスポート・プロバイダのコンポーネント

- 38.4.1 概要

- 38.4.2 設計時のコンポーネント

- 38.4.3 実行時のコンポーネント

- 38.5 トランザクション・モデル

- 38.5.1 トランスポート・エンドポイントのプロパティの概要

- 38.5.1.1 トランザクション対応のエンドポイントとトランザクション非対応のエンドポイント

- 38.5.1.2 サポートされているメッセージ・パターン

- 38.5.2 同期トランザクションのサポート

- 38.5.2.1 使用例1(レスポンス・パイプラインの処理)

- 38.5.2.2 使用例2(サービス・コールアウトの処理)

- 38.5.2.3 使用例3(トランザクションの中断)

- 38.5.2.4 使用例4(複数のURI)

- 38.6 セキュリティ・モデル

- 38.6.1 インバウンド・リクエストの認証

- 38.6.2 アウトバウンド・リクエストの認証

- 38.6.2.1 ユーザー名およびパスワードによるアウトバウンド認証

- 38.6.2.2 アウトバウンドSSLクライアント認証(双方向SSL)

- 38.6.2.3 アウトバウンドJAAS Subject認証

- 38.6.3 リンクレベルまたは接続レベルの資格証明

- 38.6.4 プロキシ・サービスへの一貫したアクセス制御

- 38.6.5 IDの伝播および資格証明マッピング

- 38.7 スレッディング・モデル

- 38.7.1 概要

- 38.7.2 インバウンド・リクエスト・メッセージのスレッド

- 38.7.3 アウトバウンド・レスポンス・メッセージのスレッド

- 38.7.4 非同期のサポート

- 38.7.5 パブリッシュおよびサービス・コールアウトのスレッディング

- 38.8 メッセージ・コンテンツの設計

- 38.8.1 概要

- 38.8.2 SourceおよびTransformer

- 38.8.3 SourceおよびMessageContextオブジェクト

- 38.8.4 組込みのトランスフォーメーション

39 トランスポート・プロバイダの開発

- 39.1 開発の流れ

- 39.1.1 計画

- 39.1.2 開発

- 39.1.3 パッケージ化およびデプロイ

- 39.2 始める前に

- 39.3 開発の基本手順

- 39.3.1 1. トランスポート・フレームワーク・コンポーネントの確認

- 39.3.2 2. トランスポート・プロジェクトのディレクトリ構造の作成

- 39.3.3 3. トランスポート固有のアーティファクトのXMLスキーマ・ファイルの作成

- 39.3.4 4. トランスポート固有のアーティファクトの定義

- 39.3.4.1 EndPointConfiguration

- 39.3.4.2 RequestMetaDataXML

- 39.3.4.3 RequestHeadersXML

- 39.3.4.4 ResponseMetaDataXML

- 39.3.4.5 ResponseHeadersXML

- 39.3.5 5. XMLBean TransportProviderConfigurationの定義

- 39.3.6 6. トランスポート・プロバイダのユーザー・インタフェースの実装

- 39.3.7 7. 実行時インタフェースの実装

- 39.3.8 8. トランスポート・プロバイダのデプロイ

- 39.4 開発に関する重要事項

- 39.5 メッセージの処理

- 39.5.1 概要

- 39.5.2 メッセージ・データの送受信

- 39.5.3 リクエスト/レスポンスのメタデータの処理

- 39.5.4 文字セット・エンコーディング

- 39.5.5 同じ場所に配置された呼出し

- 39.5.6 Oracle Service Busランタイムへのアウトバウンド・レスポンスの返信

- 39.6 メッセージの変換

- 39.7 レジストリからのサービスのインポート

- 39.7.1 インバウンド処理

- 39.7.2 アウトバウンド処理

- 39.7.3 リクエスト・モード

- 39.8 エラー処理

- 39.8.1 ケース1

- 39.8.2 ケース2

- 39.8.3 ケース3

- 39.8.4 アプリケーション・エラーの捕捉

- 39.8.4.1 アプリケーション・エラーの識別

- 39.8.4.2 アプリケーション・エラーの再試行の構成

- 39.8.5 接続エラーの捕捉

- 39.8.5.1 接続エラーの識別

- 39.9 カスタム環境の値タイプの定義

- 39.10 UDDIレジストリへのプロキシ・サービスのパブリッシュ

- 39.11 TransportWLSArtifactDeployerの実装が適している場合

- 39.12 カスタム・トランスポートのヘルプの作成

- 39.12.1 カスタム・トランスポートのヘルプの概要

- 39.12.1.1 Eclipseヘルプ

- 39.12.1.2 Oracle Service Bus管理コンソール・ヘルプ

- 39.12.2 Eclipseでのカスタム・トランスポートのヘルプの提供

- 39.12.2.1 Eclipseでの状況依存ヘルプの提供

- 39.12.2.2 Eclipseヘルプ・システムでのヘルプの提供

- 39.12.2.3 ヘルプ実装のリファレンス

- 39.12.2.4 トランスポート・プラグインのヘルプのパッケージ化

- 39.12.2.5 関連項目

- 39.12.3 Oracle Service Bus管理コンソールでのカスタム・トランスポートのヘルプの提供

- 39.12.3.1 CustomHelpProviderインタフェースの実装

- 39.12.3.2 起動するHTMLファイルの作成

- 39.12.3.3 拡張されたヘルプを表示する簡単なWebアプリケーションの作成(オプション)

- 39.12.3.4 Oracle Service Bus管理コンソールのトランスポートのヘルプのパッケージ化

40 Eclipse用のOracle Service Busトランスポートの開発

- 40.1 はじめに

- 40.2 サービスのランタイムとサービスの構成

- 40.2.1 オフライン・メソッド

- 40.2.2 オフラインで作業する場合の制限

- 40.2.3 オフライン(リモート・サーバーあり)での作業

- 40.2.4 オフライン・モードでのトランスポートのブートストラップ

- 40.2.5 オフライン・モードでのトランスポートのパッケージ化

- 40.3 Eclipseプラグインとしてのトランスポートのパッケージ化

- 40.3.1 トランスポート・プラグインのリソース

- 40.3.2 トランスポート・プラグインのパッケージ化

- 40.4 リファレンス

- 40.4.1 異なるモードでの動作

- 40.4.2 TransportProviderFactory

- 40.4.3 拡張ポイント・スキーマ

- 40.4.4 plugin.xml

- 40.4.5 MANIFEST.MF

- 40.4.6 Build.xml

- 40.4.7 TransportManagerHelperメソッド

41 トランスポートSDKのインタフェースおよびクラス

- 41.1 はじめに

- 41.2 スキーマで生成されるインタフェース

- 41.3 汎用クラスおよびインタフェース

- 41.3.1 汎用クラスのサマリー

- 41.3.2 汎用インタフェースのサマリー

- 41.4 SourceおよびTransformerクラスとインタフェース

- 41.4.1 SourceおよびTransformerインタフェースのサマリー

- 41.4.2 SourceおよびTransformerクラスのサマリー

- 41.5 リクエストおよびレスポンス・メッセージのメタデータおよびヘッダーの表現

- 41.5.1 メッセージ・コンテンツの実行時表現

- 41.5.2 インタフェース

- 41.6 ユーザー・インタフェースの構成

- 41.6.1 概要

- 41.6.2 UIインタフェースのサマリー

- 41.6.3 UIクラスのサマリー

42 サンプル・ソケット・トランスポート・プロバイダ

- 42.1 サンプル・ソケット・トランスポート・プロバイダの設計

- 42.1.1 サンプルによって説明される概念

- 42.1.2 サンプルの基本アーキテクチャ

- 42.1.3 構成のプロパティ

- 42.2 サンプルの場所とディレクトリ構造

- 42.3 サンプルのビルドとデプロイ

- 42.3.1 環境の設定

- 42.3.2 トランスポートのビルド

- 42.3.3 サンプル・トランスポート・プロバイダのデプロイ

- 42.4 ソケット・サーバーの起動とテスト

- 42.4.1 ソケット・サーバーの起動

- 42.4.2 ソケット・トランスポートのテスト

- 42.5 ソケット・トランスポート・サンプルの構成

- 42.5.1 新しいプロジェクトの作成

- 42.5.2 ビジネス・サービスの作成

- 42.5.3 プロキシ・サービスの作成

- 42.5.4 パイプラインの編集

- 42.6 ソケット・トランスポート・プロバイダのテスト

43 トランスポート・プロバイダのデプロイ

- 43.1 トランスポート・プロバイダのパッケージ化

- 43.2 トランスポート・プロバイダのデプロイ

- 43.2.1 トランスポートの登録

- 43.3 トランスポート・プロバイダのアンデプロイ

- 43.4 クラスタへのデプロイ

第VII部 セキュリティ

44 はじめに

- 44.1 対象読者

- 44.2 関連項目

45 Oracle Service Busセキュリティの理解

- 45.1 インバウンド・セキュリティ

- 45.2 アウトバウンド・セキュリティ

- 45.3 IDの伝播のオプション

- 45.3.1 例: ユーザー名トークンによる認証

- 45.4 管理セキュリティ

- 45.5 アクセス制御ポリシー

- 45.5.1 プロキシ・サービスのアクセス制御の構成

- 45.5.2 アクセス制御ポリシーの管理

- 45.5.2.1 プロキシ・サービスの削除

- 45.5.2.2 プロキシ・サービスに割り当てられているアクセス制御ポリシーの削除

- 45.5.2.3 プロキシ・サービスの移動または名前の変更

- 45.5.2.4 プロキシ・サービスの操作の名前の変更

- 45.6 インポート時のセキュリティ構成の保持

- 45.6.1 「セキュリティおよびポリシーの構成を保持」チェック・ボックス

- 45.6.2 「資格証明の保持」チェック・ボックス

- 45.6.3 アクセス制御の保持チェック・ボックス

- 45.7 Oracle WebLogicセキュリティ・フレームワークの構成: 主な手順

- 45.8 コンテキスト・プロパティがセキュリティ・プロバイダに渡される

- 45.8.1 HTTPトランスポートレベル認証用のコンテキスト・プロパティ

- 45.8.2 アクセス制御およびメッセージレベルのカスタム認証用のContextHandlerプロパティ

- 45.8.3 トランスポート固有のその他のコンテキスト・プロパティ

- 45.8.4 管理者が提供するメッセージレベル認証用のコンテキスト・プロパティ

- 45.8.5 セキュリティ・プロバイダはプロパティ名を認識している必要がある

- 45.8.6 Oracle WebLogic Server管理チャネルがサポートされている

- 45.9 セキュリティ・プロバイダの使用

- 45.9.1認証プロバイダの構成

- 45.9.2 カスタム認可プロバイダによるOracle Service Busリソースの保護

- 45.9.2.1 WebLogic認可プロバイダの使用法について

- 45.9.2.2 Oracle Service BusProxyServiceResourceオブジェクト

- 45.9.2.3 ProjectResourceV2オブジェクト

- 45.9.2.4 ConsoleResourceオブジェクト

- 45.9.3 セキュリティ・プロバイダ・ポリシー使用時のエラーについて

46 Oracle Service Busのセキュリティに関するFAQ

- 46.1 Oracle Service BusとOracle WebLogic Serverのセキュリティにはどのような関係がありますか。

- 46.2 トランスポート・レベルのセキュリティとは何ですか。

- 46.3 Webサービス・セキュリティとは何ですか。

- 46.4 Webサービス・ポリシーとは何ですか。

- 46.5 Webサービス・ポリシーのアサーションとは何ですか。

- 46.6 アクセス制御ポリシーとWebサービス・ポリシーは同じものですか。

- 46.7 Webサービス・セキュリティのパススルーとは何ですか。

- 46.8 Webサービス・セキュリティのアクティブな仲介とは何ですか。

- 46.9 アウトバウンドWebサービス・セキュリティとは何ですか。

- 46.10 SAMLとは何ですか。

- 46.11 SAMLアサーションのサブジェクトIDの形式はカスタマイズ可能ですか。

- 46.12 証明書検索および検証フレームワークとは何ですか。

- 46.13 Oracle Service Busでは、プロキシ・サービスでのIDの伝播はサポートされますか。

- 46.14 プロキシ・サービスへのインバウンド・メッセージにトランスポート・レベルの認証とメッセージ・レベルの認証の両方が存在する場合、どちらのIDが伝播されますか。

- 46.15 シングル・サインオンはOracle Service Busでサポートされますか。

- 46.16 セキュリティ・エラーはモニターされますか。

- 46.17 MBeanのセキュリティを構成できますか。

47 管理セキュリティの構成

- 47.1 管理セキュリティ・ロールと権限

- 47.1.1 Oracle Service Bus管理コンソールでのロール・ベース・アクセス

- 47.2 管理セキュリティのグループ

- 47.3 管理セキュリティの構成: 主な手順

48 本番環境でのOracle Service Busのセキュリティ

- 48.1 Service Bus (SB)リソースのアンデプロイ

- 48.2 bodyコンテンツをストリーミングする場合の一時ファイルの保護

- 48.3 Oracle Service Bus管理コンソールに対するサービス拒否攻撃からの保護

49トランスポート・レベルのセキュリティの構成

- 49.1 HTTPSのトランスポート・レベルでのセキュリティの構成

- 49.1.1 HTTPSの認証レベル

- 49.1.2 インバウンドHTTPSセキュリティの構成:主な手順

- 49.1.3 アウトバウンドHTTPSセキュリティの構成:主な手順

- 49.2 HTTPのトランスポート・レベルでのセキュリティの構成

- 49.2.1 インバウンドHTTPセキュリティの構成:主な手順

- 49.2.2 アウトバウンドHTTPセキュリティの構成:主な手順

- 49.3 JMSのトランスポート・レベルでのセキュリティの構成

- 49.3.1 インバウンドJMSトランスポート・レベル・セキュリティの構成:主な手順

- 49.3.2 アウトバウンドJMSトランスポート・レベル・セキュリティの構成:主な手順

- 49.4 SFTPトランスポートのトランスポート・レベルでのセキュリティの構成

- 49.4.1 双方向認証の実行方法

- 49.4.2 known_hostsファイルの使用

- 49.4.3 SFTPトランスポート認証プロセス

- 49.4.4 インバウンドSFTPトランスポート・レベル・セキュリティの構成:主な手順

- 49.4.5 アウトバウンドSFTPトランスポート・レベル・セキュリティの構成:主な手順

- 49.4.6 インポート時に保持されるSFTPのセキュリティ属性

- 49.4.7 SFTP資格証明のライフサイクル

- 49.5 電子メール、FTP、およびファイル・トランスポート・レベルのセキュリティ

- 49.5.1 電子メールとFTPトランスポート・レベルのセキュリティ

- 49.5.2 ファイル・トランスポート・セキュリティ

- 49.6 SBトランスポートのトランスポート・レベルでのセキュリティの構成

- 49.6.1 サービス・バス(SB)トランスポートを使用したSAML認証の構成

- 49.7 WSトランスポートのトランスポート・レベルでのセキュリティの構成

- 49.7.1 Webサービスの信頼性のあるメッセージングの定義

- 49.7.2 WLS Consoleに表示されるWSトランスポート・リソース

- 49.7.3 Webサービスの信頼性のあるメッセージングを構成するためのWS-Policyファイルの使用

- 49.7.3.1 構成済のWS-RMポリシー・ファイル

- 49.7.4 アクティブ化の前に必要なRM WS-Policy

- 49.7.5 非同期レスポンス

- 49.7.6 プロキシ・サービスの認証

- 49.7.7 インポート時のセキュリティ構成の保持

- 49.7.8 インバウンド/アウトバウンドWSトランスポート・レベルのセキュリティの構成

- 49.8 WebSphereメッセージ・キュー・トランスポートのトランスポート・レベルでのセキュリティの構成

- 49.8.1 インバウンドMQトランスポート・レベル・セキュリティの構成:主な手順

- 49.8.2 アウトバウンドMQトランスポート・レベル・セキュリティの構成:主な手順

- 49.9 メッセージ・コンテキストでのトランスポート・レベルのセキュリティ要素

50 Oracle Web Services Managerを使用したOracle Service Busのセキュリティ

- 50.1 Oracle Web Services ManagerとOracle Service Busの統合について

- 50.1.1 セキュリティ・プロバイダ

- 50.1.1.1 JPSプロバイダ

- 50.1.1.2 CSSプロバイダ

- 50.2 Oracle Web Services ManagerとOracle Service Busの設定および使用

- 50.2.1 Oracle Service BusドメインへのOracle Web Services ManagerおよびOracle Enterprise Managerの追加

- 50.2.2 Oracle Service BusサービスへのOracle Web Services Managerポリシーの付加

- 50.2.2.1 ポリシーのオーバーライド

- 50.2.3 SAMLの構成

- 50.2.4 WS標準をサポートするためのWSDLの公開

- 50.2.4.1 WSポリシーのためのWSDL問合せパラメータ・リファレンス

- 50.2.5 デプロイメントに関する考慮事項

- 50.2.6 監査

- 50.2.7 モニター統計

- 50.2.8 サポートされるシード・ポリシーとサポートされないアサーション

- 50.2.8.1 サポートされるシード・ポリシー

- 50.2.8.2 サポートされないアサーション

- 50.2.9 Oracle Service BusでOracle WSMを使用する場合のガイドライン

- 50.2.9.1 wss_http_token_*_policyのガイドライン

- 50.2.9.2 Oracle WSM認証ポリシーのガイドライン

- 50.2.9.3 Oracle WSMポリシーおよびSOAP with Attachments (SwA)

- 50.2.9.4 Oracle WSMポリシーおよびMTOM形式のメッセージ

- 50.3 使用例: Oracle Service BusおよびWLS 9ポリシーとOracle Web Services Manager

- 50.3.1 メッセージの保護

- 50.3.1.1 クライアント・エージェントを使用したメッセージの保護

- 50.3.1.2 サーバー・エージェントを使用したメッセージの保護

- 50.3.1.3 クライアントとサーバー・エージェントを使用したメッセージの保護

- 50.3.1.4 ゲートウェイを使用したメッセージの保護

- 50.3.2 認証

- 50.3.3 境界セキュリティ

- 50.3.4 IDの伝播

51 Oracle Service Busプロキシ・サービスとビジネス・サービスでのWS-Policyの使用

- 51.1 Webサービス・ポリシーについて

- 51.1.1 WS-SecurityとWS-Policyの関係

- 51.1.2 WS-Policyはサービスに直接バインド可能

- 51.1.3 抽象および具象WS-Policy文

- 51.2 Oracle Service Bus WS-Policyファイル

- 51.2.1 事前定義されたOracle独自のポリシー・ファイル

- 51.2.2 事前定義された信頼性のあるメッセージング・ポリシー・ファイル

- 51.2.3 定義済のポリシー・ファイルを使用する条件

- 51.3 カスタムWS-Policy文の作成と使用

- 51.4 WSDLドキュメントへのWS-Policy文の付加

- 51.4.1 WS-Policy文のURIの確認

- 51.4.2 WSDLドキュメントでのWS-Policy文のURIの指定

- 51.4.3 ベスト・プラクティス: WS-Policy文の付加

- 51.4.4 例: IDと機密性アサーションでのX.509資格証明の要求

- 51.4.5 例: WSDLドキュメントへのカスタム・インラインWS-Policy文の付加

- 51.5 Oracle独自のセキュリティ・ポリシーのベスト・プラクティス

- 51.6 ポリシー・サブジェクトと有効ポリシー

52 Webサービスのメッセージ・レベルでのセキュリティの構成

- 52.1 メッセージ・レベルのセキュリティについて

- 52.1.1 メッセージ・レベルのセキュリティの一連のアクションのサンプル

- 52.2 プロキシ・サービスのメッセージ・レベルのアクセス制御ポリシー

- 52.3 プロキシ・サービスのメッセージ・レベルのセキュリティの構成

- 52.3.1 アクティブな仲介プロキシ・サービスの作成: 主な手順

- 52.3.2 パススルー・プロキシ・サービスの作成: 主な手順

- 52.4 ビジネス・サービスのメッセージ・レベルのセキュリティの構成:主な手順

- 52.5 カスタムWS-Policy文の例

- 52.5.1 例: SOAP本体およびヘッダー部分の暗号化

- 52.5.2 例: ビジネス・サービスの暗号化ポリシー

- 52.5.3 例:カスタムSOAPヘッダーの暗号化

- 52.5.4 例: メッセージ本体とヘッダーの署名

- 52.5.5 例: SAML Holder-of-KeyによるSOAP本体の署名

- 52.5.6 例: SAML Sender-VouchesによるSOAP本体とヘッダーの認証、署名、および暗号化

- 52.6 アウトバウンドWS-Securityの無効化

53 Oracle Service BusでのSAMLの使用

- 53.1 IDのSAMLトークンへのマッピング

- 53.2 SAMLパススルーIDの伝播の構成

- 53.3 プロキシ・サービス・リクエストでのSAMLトークンの認証

- 53.4 サービス・バス(SB)トランスポートを使用したSAML認証の構成

- 53.5 SAMLのアイデンティティ切替えの使用

- 53.5.1 アイデンティティ切替えリソースの保護

- 53.6 Oracle Service BusにおけるSAMLのトラブルシューティング

54 カスタム認証の構成

- 54.1 カスタム認証トークンとは

- 54.1.1 カスタム認証トークンの使用とデプロイメント

- 54.2 トランスポート・レベルのカスタム認証について

- 54.2.1 インポートとエクスポートおよびトランスポート・レベルのカスタム・トークン認証

- 54.3 メッセージ・レベルのカスタム認証について

- 54.4 XPath拡張の形式

- 54.5 カスタム・トークン用IDアサーション・プロバイダの構成

- 54.5.1 カスタム・トークンのオブジェクト・タイプ

- 54.5.2 IDアサーション・プロバイダでのカスタム・トークン・タイプの構成

- 54.5.2.1 IDアサーション・プロバイダでのカスタム・トークン・タイプの構成手順

- 54.5.2.2 MBeanでサポートするアクティブなタイプの設定

- 54.6 カスタム認証によるトランスポート・レベルのセキュリティの構成

- 54.6.1 カスタム認証によるトランスポート・レベルのセキュリティの構成手順

- 54.7 カスタム認証によるメッセージ・レベルのセキュリティの構成

- 54.7.1 カスタム認証によるメッセージ・レベルのセキュリティの構成手順

- 54.8 カスタム認証トークンから取得したIDの伝播

- 54.9 WS-Securityおよびカスタム・ユーザー名/パスワードとトークンの組合せ

55 .Net 2.0とメッセージ・レベルのセキュリティ

- 55.1 .NET 2.0とOracle Service Bus間のメッセージ・レベルのセキュリティ

- 55.2 .NETとは

- 55.3 Oracle Service Busとの相互運用性のための.NETのメッセージ・レベル・セキュリティの構成

- 55.4 Oracle Service Busの.NETとのメッセージ・レベルのセキュリティの構成

- 55.4.1 サンプルのWSDLファイル

第VIII部 付録

A トランスポートSDK UMLシーケンス・ダイアグラム

- A.1 Oracle Service Busランタイムのインバウンド・メッセージ

- A.2 Oracle Service Busランタイムのアウトバウンド・メッセージ

- A.3 設計時のサービスの登録

B Oracle Service Bus構成のオフラインでのエクスポート

- B.1 エクスポート・プロセスについて

- B.1.1 ロード・フェーズの構成

- B.1.2 エクスポート・フェーズの構成

- B.1.3 Oracle Service Busリソースのファイル拡張子およびタイプID

- B.2 Oracle Service Bus構成のエクスポートの準備

- B.2.1 始める前に

- B.2.2 エクスポート設定ファイルの作成

- B.2.3 環境の構成

- B.3 Oracle Service Bus構成のエクスポート

- B.3.1 コマンドラインを使用した構成のエクスポート

- B.3.2 Antを使用した構成のエクスポート

- B.3.3 WLSTを使用した構成のエクスポート

- B.4 エクスポート設定ファイルの形式、サンプルおよびスキーマ

- B.4.1 エクスポート設定ファイルの形式

- B.4.2 検証

- B.4.3 包含ルールおよび除外ルール

- B.4.4 エクスポート設定ファイルのサンプル

- B.4.5 エクスポート設定ファイルのスキーマ定義

例一覧

- 6-1 オプション要素を含むXMLデータ

- 6-2 グローバル要素とローカル要素を含むXMLスキーマ

- 7-1 calculateTotalPrice関数

- 7-2 Where句

- 7-3 If-Then式

- 7-4 ネストされたIf-Then-Else式

- 7-5 ネストされたIf-Then-Else式

- 7-6 FLWOR式のコード

- 7-7 再帰的なスキーマの例

- 7-8 入力XMLドキュメントのサンプル

- 7-9 出力XMLドキュメントのサンプル

- 7-10 Group-By式のXQueryコード

- 23-1 Xalanエンジンを使用してカスタム関数を呼び出すための構文

- 30-1 WSDL定義のサンプル

- 30-2 SOAPのサンプル

- 39-1 SocketEndPointConfiguration定義のサンプル

- 39-2 SocketRequestMetaDataXML定義のサンプル

- 39-3 SocketRequestHeadersXML定義のサンプル

- 39-4 SocketResponseMetaDataXML定義のサンプル

- 39-5 SocketResponseHeadersXML定義のサンプル

- 39-6 tModelの例

- 39-7 トランスポートのplugin.xmlのサンプル

- 39-8 サンプル・ソケット・トランスポートのtoc.xml (Eclipseヘルプ・システムの最上位エントリ)

- 39-9 サンプル・ソケット・トランスポートのcontext.xmlサンプル(contexts_socketTransport.xml)

- 39-10 Oracle Service Bus管理コンソールでトランスポートのヘルプを提供するためのCustomHelpProviderの実装

- 39-11 リダイレクトを提供するJavaScript関数

- 39-12 サンプル・ソケット・トランスポートのWebアプリケーションのapplication.xml

- 39-13 サンプル・ソケット・トランスポートのWebアプリケーションのweb.xml

- 40-1 リモート・サーバーへの接続

- 40-2 TransportProviderFactoryクラス

- 40-3 インタフェースを実装するソケット・トランスポートの例

- 40-4 拡張ポイント・スキーマの一部

- 40-5 Plugin.xmlファイル

- 40-6 MANIFEST.MFファイルのサンプル

- 40-7 TransportManagerHelperメソッド

- 43-1 アプリケーション・デプロイメント・エントリ

- 45-1 HttpServletRequestプロパティの取得

- 49-1 LongRunningReliability.xmlファイル

- 49-2 Wssp1.2-Https.xmlファイル(一部)

- 51-1 Oracle Service Bus WS-Policyへのポリシー参照を持つWSDL

- 51-2 カスタム・インライン・ポリシーへのポリシー参照を持つWSDL

- 52-1 SOAP本体およびヘッダー部分の暗号化

- 52-2 具象ポリシーによる本体の暗号化、WSDLドキュメントへのポリシーの埋込み

- 52-3 カスタムSOAPヘッダーの暗号化

- 52-4 SOAPヘッダーと本体の署名の要求

- 52-5 SAML Holder-of-KeyによるSOAP本体の署名

- 52-6 SAML Sender VouchesメソッドによるSOAP本体とヘッダーの署名

- 54-1 SampleIdentityAsserter MDF: SupportedTypes属性

- 54-2 SampleIdentityAsserter MDF: ActiveTypes属性(デフォルト)

- 55-1 WS-Policyのメッセージレベル・セキュリティの構成

- B-1 Eclipse以外のファイル構造からのエクスポート

- B-2 プロジェクト・レベルでのエクスポート

- B-3 ロード・フェーズでのファイル拡張子の除外

- B-4 エクスポート・フェーズでのファイル拡張子の除外

- B-5 ファイル拡張子のマッピング

図一覧

- 2-1 新しい分割-結合

- 2-2 パラレル・ノード

- 2-3 テスト前の完成した分割-結合

- 2-4 新しい分割-結合(ラベルの編集)

- 2-5 「注文全体で繰返し」というラベルのFor Eachノード

- 2-6 エラー・ハンドラ

- 2-7 テスト前の完成した分割-結合

- 2-8 「Add Scope」ボタン

- 2-9 「Add Else If」ボタン

- 2-10 「Add Else If」ボタン

- 2-11 プロキシ・サービスのデバッグ

- 4-1 WSDLの「Submit」操作とデフォルト・ブランチを含むブランチ・ノード

- 4-2 パブリッシュ表アクション

- 4-3 ルーティング表アクション

- 5-1 複数のソースから1つのターゲットへのデータ・トランスフォーメーション

- 6-1 New XQuery Transformation

- 6-2 ソース型の選択

- 6-3 要素-要素リンク

- 6-4 属性-要素リンク

- 6-5 反復グループ-反復グループ・リンク

- 6-6 If-Then-Else式の例

- 6-7 「Target Expression」ビューのIf-Then-Else式

- 6-8 FLWOR式

- 6-9 Typeswitch式

- 6-10 空のノードの削除

- 6-11 空のノードの保持

- 6-12 「Test」ビュー

- 7-1 異なるスキーマからのデータの結合

- 7-2 XQueryトランスフォーメーションの「Design」ビュー

- 7-3 「デザイン」ビューのデータ・トランスフォーメーション

- 7-4 「デザイン」ビューのデータ・トランスフォーメーション

- 7-5 制約の追加

- 7-6 QuoteResponse要素のデータの追加

- 7-7 「Design」ビューでのtotalCostの計算

- 7-8 和集合の作成

- 7-9 暗黙的なリンクの作成

- 7-10 反復ソースから非反復ターゲットへのトランスフォーメーション

- 7-11 反復ソースから非反復ターゲットへのデータ・トランスフォーメーション

- 7-12 反復ソースから非反復ターゲットへのデータ・トランスフォーメーション

- 7-13 非反復ソースから反復ターゲットへのトランスフォーメーション

- 7-14 構造的なリンクの和集合の作成

- 7-15 If-Then-ElseサンプルのXQueryトランスフォーメーション

- 7-16 XQueryサンプル - FLWOR式

- 7-17 再帰的な要素のマッピング

- 19-1 参照フィールドの選択

- 19-2 参照フィールド

- 19-3 データ区切り文字

- 19-4 エスケープ文字

- 22-1 ドメイン用のDerbyデータベース

- 24-1 クライアントによるSOAバインディング・サービスの同期呼出し

- 24-2 SOA SOAバインディング・サービスによる外部サービスの同期呼出し

- 24-3 クライアントによるSOAバインディング・サービスの非同期呼出し

- 24-4 SOAバインディング・サービスによる外部サービスの非同期呼出し

- 24-5 Oracle Service Busを介した同期的なやりとりでの操作

- 24-6 Oracle Service Busを介してSOAコンポジットを呼び出すSOAコンポジット

- 25-1 EISと対話するOracle Service Busサービス

- 25-2 クライアントによるOracle Service Busを介したEISサービスの呼出し

- 25-3 EISによるOracle Service Busを介した外部サービスの呼出し

- 29-1 外部サービスを呼び出すEJB

- 29-2 EJBを呼び出す非EJBクライアント

- 29-3 EJBを呼び出すEJB

- 30-1 JMSメッセージIDを使用してリクエスト/レスポンス・メッセージの相関を行うMQサービス

- 30-2 Oracle Service Busプロキシ・サービスを使用したJAX-RPCクライアント

- 30-3 Oracle WebLogic Server JAX-RPCリクエスト/レスポンス・サービスのクライアントとしてのOracle Service Bus

- 31-1 ローカル・トランスポートを使用したコンバージェンスの実装

- 31-2 ローカル・トランスポートを使用した複数のビジネス・サービスへのアクセス

- 31-3 ローカル・プロキシにセキュリティ・パススルーを行うフロント・エンド・プロキシ

- 31-4 ローカル・プロキシへの転送前にすべてのセキュリティ・ヘッダーを処理するフロント・エンド・プロキシ

- 32-1 競合 - WSDLにRMポリシー・アサーションが指定されていない場合

- 32-2 プロキシ・サービスの「セキュリティ」タブ

- 32-3 トランスポートレベルのポリシー

- 32-4 述部のリスト

- 33-1 Oracle Service Busフロント・エンド

- 33-2 Oracle Service Busを介して送信されるメッセージ

- 34-1 Oracle Service Busを介したOracle BPELプロセスの同期呼出し

- 34-2 Oracle Service Busを介してサービスを同期的に呼び出すOracle BPELプロセス

- 34-3 Oracle Service Busを介したOracle BPELプロセスの非同期呼出し

- 34-4 Oracle Service Busを介してサービスを非同期的に呼び出すOracle BPELプロセス

- 34-5 Oracle Service Busを介した同期的なやりとりでの操作

- 34-6 Oracle Service Busを介して別のBPELプロセスを呼び出すBPELプロセス

- 35-1 WTCのメッセージ処理

- 36-1 データ・ソースからWebサービス・クライアントへ

- 36-2 Oracle Service Busテスト・コンソールからのリクエストとレスポンス

- 38-1 Oracle Service Busを介したメッセージ・フロー

- 38-2 設計時のUMLダイアグラム

- 38-3 EndPointConfigurationのプロパティ

- 38-4 実行時のUMLダイアグラム

- 38-5 Oracle Service Busのスレッディング・モデルのサンプル

- 38-6 添付のフロー

- 39-1 トランスポート・サブシステムの概要

- 39-2 エラーの発生例1

- 39-3 エラーの発生例2

- 39-4 エラーの発生例3

- 39-5 開発環境および実行時環境でのカスタム・トランスポートのヘルプ

- 39-6 「トランスポート構成」ページで[F1]を押すとトランスポートのヘルプが表示される

- 39-7 Eclipseでのカスタム・トランスポートのヘルプ

- 39-8 Oracle Service Bus管理コンソールから表示したカスタム・トランスポートのヘルプ

- 39-9 Oracle Service Bus管理コンソール・ヘルプ・フレームワーク

- 40-1 Eclipseのトランスポート構成ページ

- 40-2 プラグインのパッケージ化

- 42-1 サンプル・ソケット・トランスポートのアーキテクチャ

- 42-2 SocketEndpointConfigurationのプロパティ

- 42-3 リクエスト/レスポンス・ヘッダーおよびメタデータの構成

- 42-4 メッセージ・フロー・アイコンの選択

- 42-5 メッセージ・フローの編集

- 42-6 アクションの追加

- 42-7 テスト・コンソールの起動

- 42-8 テスト・コンソール

- 42-9 成功したテスト

- 45-1 インバウンド・セキュリティとアウトバウンド・セキュリティ

- 45-2 サービス・アカウントの使用方法

- 50-1 Oracle Web Services Managerクライアント・エージェントを使用したメッセージの保護

- 50-2 Oracle Web Services Managerサーバー・エージェントを使用したメッセージの保護

- 50-3 Oracle Web Services Managerクライアントおよびサーバー・エージェントを使用したメッセージの保護

- 50-4 Oracle Web Services Managerゲートウェイを使用したメッセージの保護

- 50-5 Oracle Web Services Managerクライアント・エージェントを使用した認証

- 50-6 Oracle Web Services Managerゲートウェイを使用した境界セキュリティ

- 50-7 Oracle Web Services Managerゲートウェイを使用したID伝播

- 52-1 抽象ポリシーへの証明書のバインディング

- 54-1 IDアサーションとカスタム・トークン

- A-1 ランタイムにおけるインバウンド・メッセージ

- A-2 ランタイムにおけるアウトバウンド・メッセージ

- A-3 サービスの登録

表一覧

- 2-1 ハーベスト・シナリオの相違点

- 3-1 ビジネス・サービスのためのBPEL-10gトランスポート構成オプション

- 3-2 ビジネス・サービスのためのDSPトランスポート構成オプション

- 3-3 ビジネス・サービスのためのEJBトランスポート構成オプション

- 3-4 ビジネス・サービスのための電子メール・トランスポート構成オプション

- 3-5 プロキシ・サービスのための電子メール・トランスポート構成オプション

- 3-6 ビジネス・サービスのためのファイル・トランスポート構成オプション

- 3-7 プロキシ・サービスのためのファイル・トランスポート構成オプション

- 3-8 ビジネス・サービスのためのFTPトランスポート構成オプション

- 3-9 プロキシ・サービスのためのFTPトランスポート構成オプション

- 3-10 ビジネス・サービスのためのHTTPトランスポート構成オプション

- 3-11 プロキシ・サービスのためのHTTPトランスポート構成オプション

- 3-12 JCAトランスポート構成オプション

- 3-13 ビジネス・サービスのためのJEJBトランスポート構成

- 3-14 プロキシ・サービスのためのJEJBトランスポート構成

- 3-15 ビジネス・サービスのためのJMSトランスポート構成オプション

- 3-16 プロキシ・サービスのためのJMSトランスポート構成オプション

- 3-17 ビジネス・サービスのためのMQトランスポート構成オプション

- 3-18 プロキシ・サービスのためのMQトランスポート構成オプション

- 3-19 ビジネス・サービスのためのSBトランスポート構成オプション

- 3-20 プロキシ・サービスのためのSBトランスポート構成オプション

- 3-21 ビジネス・サービスのためのSFTPトランスポート構成オプション

- 3-22 プロキシ・サービスのためのSFTPトランスポート構成オプション

- 3-23 SOA-DIRECTトランスポート構成

- 3-24 ビジネス・サービスのためのTuxedoトランスポート構成オプション

- 3-25 プロキシ・サービスのためのTuxedoトランスポート構成オプション

- 3-26 ビジネス・サービスのためのWSトランスポート構成オプション

- 3-27 プロキシ・サービスのためのWSトランスポート構成オプション

- 4-1 アラート宛先エディタのオプション

- 4-2 電子メール受信者のオプション

- 4-3 JMS宛先のオプション

- 4-4 ビジネス・サービス・エディタのオプション

- 4-5 メッセージ・タイプのビジネス・サービスのオプション

- 4-6 ビジネス・サービスのトランスポート構成のオプション

- 4-7 ビジネス・サービスのメッセージ処理のオプション

- 4-8 ビジネス・サービスのサービス・ポリシー構成のオプション

- 4-9 ビジネス・サービスのセキュリティ構成のオプション

- 4-10 プロキシ・サービス・エディタのオプション

- 4-11 プロキシ・サービスのメッセージ・タイプのオプション

- 4-12 プロキシ・サービスの操作選択のオプション

- 4-13 プロキシ・サービスのメッセージ処理のオプション

- 4-14 プロキシ・サービスのSOAPバインドのオプション

- 4-15 プロキシ・サービスのトランスポート構成のオプション

- 4-16 プロキシ・サービスのサービス・ポリシーのオプション

- 4-17 プロキシ・サービスのメッセージレベル・セキュリティのオプション

- 4-18 Oracle Service Bus構成のオプション

- 4-19 新しいOracle Service Busプロジェクトのオプション

- 4-20 MQリソースのオプション

- 4-21 構成JARのエクスポート・オプション

- 4-22 リソースのエクスポート・オプション

- 4-23 リソースのエクスポート・オプション

- 4-24 構成JARのインポート

- 4-25 構成JARのインポート・オプション

- 4-26 構成ZIPのインポート

- 4-27 構成ZIPのインポート・オプション

- 4-28 URLのインポート・オプション

- 4-29 URLのインポート・オプション

- 4-30 新しいJNDIプロバイダ・リソースのオプション

- 4-31 プロキシ・サーバー構成のオプション

- 4-32 メッセージ・フロー・ノード

- 4-33 メッセージ・フロー・ルート・ノードの通信アクション

- 4-34 メッセージ・フロー・ルート・ノードのフロー制御アクション

- 4-35 メッセージ・フロー・ステージ・ノードの通信アクション

- 4-36 メッセージ・フロー・ステージ・ノードのフロー制御アクション

- 4-37 メッセージ・フロー・ステージ・ノードのメッセージ処理アクション

- 4-38 メッセージ・フロー・ステージ・ノードのレポート・アクション

- 4-39 アラート・アクションのオプション

- 4-40 割当てアクションのオプション

- 4-41 フローのオプション

- 4-42 条件付きブランチのオプション

- 4-43 ブランチのオプション

- 4-44 削除アクションのオプション

- 4-45 動的パブリッシュ・アクションのオプション

- 4-46 動的ルーティング・アクションのプロパティ

- 4-47 For-Eachアクションのプロパティ

- 4-48 IfアクションとElse-Ifアクションのオプション

- 4-49 挿入アクションのオプション

- 4-50 Javaコールアウト・アクションのオプション

- 4-51 ログ・アクションのオプション

- 4-52 MFL変換アクションのオプション

- 4-53 パイプライン・ペア・ノードのオプション

- 4-54 パブリッシュ・アクションのオプション

- 4-55 パブリッシュ表のオプション

- 4-56 ケース・アクションのオプション

- 4-57 エラーの生成アクションのオプション

- 4-58 名前変更アクションのオプション

- 4-59 置換アクションのオプション

- 4-60 返信アクションのオプション

- 4-61 レポート・アクションのオプション

- 4-62 レポート・アクションの実行結果

- 4-63 ルート・ノードのオプション

- 4-64 ルーティング・アクションのオプション

- 4-65 ルーティング・オプション・アクションのプロパティ

- 4-66 ルーティング表のオプション

- 4-67 ケース・アクションのオプション

- 4-68 サービス・コールアウト・アクションのオプション

- 4-69 SOAP本体、ペイロード・パラメータおよびペイロード・ドキュメントのオプション

- 4-70 SOAP本体、ペイロード・パラメータおよびペイロード・ドキュメントのオプションの説明

- 4-71 開始ノードのオプション

- 4-72 トランスポート・ヘッダー・アクションのオプション

- 4-73 検証アクションのオプション

- 4-74 JAR依存関係の変更のプロパティ

- 4-75 新しいSMTPサーバーのオプション

- 4-76 UDDIレジストリのオプション

- 4-77 タイプの関連付けのプロパティ

- 4-78 参照の依存関係のプロパティ

- 4-79 プロジェクトのクローン作成のオプション

- 4-80 新しいサービス・キー・プロバイダのオプション

- 4-81 新しい WS-Policyのオプション

- 4-82 新しいサービス・アカウントのオプション

- 4-83 サービス・アカウントの全般的なオプション

- 4-84 サービス・アカウントの静的ユーザーのオプション

- 4-85 サービス・アカウントのユーザー・マッピングのオプション

- 4-86 XQueryリソースのオプション

- 4-87 XSLTリソースのオプション

- 4-88 動的XQueryのオプション

- 4-89 変数の構造のオプション

- 4-90 新しいXSLトランスフォーメーションのオプション

- 4-91 分割-結合の通信操作

- 4-92 分割-結合のフロー制御操作

- 4-93 分割-結合の割当て操作

- 4-94 分割-結合の開始ノードのオプション - 「インポート」タブ

- 4-95 分割-結合の開始ノードのオプション - 「全般」タブ

- 4-96 分割-結合の変数のオプション

- 4-97 分割-結合のエラー・ハンドラのオプション - 「キャッチ」タブ

- 4-98 分割-結合のエラー・ハンドラのオプション - CatchAllタブ

- 4-99 分割-結合の呼出しサービスのオプション - 「操作」タブ

- 4-100 分割-結合の呼出しサービスのオプション - 入力変数タブ

- 4-101 分割-結合の呼出しサービスのオプション - 出力変数タブ

- 4-102 分割-結合の返信のオプション - 「操作」タブ

- 4-103 分割-結合の返信のオプション - 「変数」タブ

- 4-104 分割-結合のFor Eachのオプション - カウンタ変数タブ

- 4-105 分割-結合のFor Eachのオプション - 完了条件

- 4-106 分割-結合のIfとElse Ifのオプション

- 4-107 分割-結合のエラー生成のオプション

- 4-108 分割-結合のRepeat Untilのオプション

- 4-109 分割-結合のWhileのオプション

- 4-110 分割-結合の待機のオプション

- 4-111 分割-結合の割当て操作のオプション

- 4-112 分割-結合のコピーのオプション

- 4-113 分割-結合の削除のオプション

- 4-114 分割-結合の挿入のオプション

- 4-115 分割-結合のJavaコールアウトのオプション

- 4-116 分割-結合のログのオプション

- 4-117 分割-結合の置換のオプション

- 4-118 分割-結合の受信のオプション - 「操作」タブ

- 4-119 分割-結合の受信のオプション - 「変数」タブ

- 4-120 分割-結合のカウンタ変数のオプション

- 4-121 分割-結合の変数のオプション

- 4-122 分割-結合の新しいメッセージ変数のオプション

- 4-123 分割-結合のSOAPフォルト変数のオプション

- 4-124 新しい分割-結合のオプション

- 4-125 新しい分割-結合のオプション - 操作の選択

- 5-1 XQueryのテスト・ビューに適用される制限

- 6-1 FLWOR式の句

- 6-2 Typeswitch式の句

- 6-3 右クリック・メニュー・オプション

- 6-4 リンクのパターン

- 6-5 XML構成要素のグラフィカルな表現

- 9-1 ツールバーのボタンのリスト

- 9-2 ツリー・アイコンの説明

- 10-1 メッセージ・フォーマット

- 11-1 メッセージ・フォーマットのグループ - グループの説明

- 11-2 メッセージ・フォーマットのグループ - グループの出現回数

- 11-3 メッセージ・フォーマットのグループ - グループの属性

- 11-4 メッセージ・フォーマットのグループ - グループのデリミタ

- 11-5 メッセージ・フォーマットのグループ - グループの更新ボタン

- 12-1 メッセージ・フォーマットのフィールド - フィールドの説明

- 12-2 メッセージ・フォーマットのフィールド - フィールドの出現回数

- 12-3 メッセージ・フォーマットのフィールド - フィールドのデータ・オプション

- 12-4 メッセージ・フォーマットのフィールド - フィールドの属性

- 12-5 メッセージ・フォーマットのフィールド - 終了

- 12-6 メッセージ・フォーマットのフィールド - リテラル

- 12-7 メッセージ・フォーマットのフィールド - フィールド更新ボタン

- 13-1 参照の詳細ウィンドウ - 参照の説明

- 13-2 参照の詳細ウィンドウ - フィールドの出現回数

- 13-3 参照の詳細ウィンドウ - フィールド更新ボタン

- 14-1 メッセージ・フォーマットに関するコメント

- 15-1 Format Builderのオプション

- 15-2 Format Builderのオプション - 文字エンコーディングのオプション

- 15-3 Format Builderのオプション - XMLフォーマットのオプション

- 15-4 Format Builderのオプション - XMLコンテンツ・モデルのオプション

- 16-1 「EDI Importer」のオプション

- 16-2 XML Schema Importerのオプション

- 16-3 COBOL Copybook Importerのオプション

- 16-4 COBOL Copybook Importerのオプション - バイト・オーダー

- 16-5 COBOL Copybook Importerのオプション - 文字セット

- 16-6 COBOL Copybook Importerのオプション - アクション・ボタン

- 16-7 C Structure Importerのオプション - 入力

- 16-8 C Structure Importerのオプション - 出力

- 16-9 FMLフィールド表クラスのサンプル・ファイル

- 16-10 FML Field Table Class Importerのオプション

- 16-11 FML Field Table Class Importerのオプション - FMLフィールド・セレクタ

- 16-12 FML Field Table Class Importerのオプション - アクション・ボタン

- 17-1 「ファイル」メニューのコマンド

- 17-2 「編集」メニューのコマンド

- 17-3 「表示」メニューのコマンド

- 17-4 「生成」メニューのコマンド

- 17-5 「変換」メニューのコマンド

- 17-6 ショートカット・メニューのコマンド

- 17-7 「検索」のオプション

- 17-8 「移動」のオプション

- 18-1 「ファイル」メニューのコマンド

- 18-2 「編集」メニューのコマンド

- 18-3 「Insert」メニューのコマンド

- 18-4 「View」メニューのコマンド

- 18-5 「Tools」メニューのコマンド

- 18-6 「Help」メニューのコマンド

- 18-7 ショートカット・メニューのコマンド

- 19-1 キャラクタ・デリミタ

- 20-1 「ファイル」メニューのコマンド

- 20-2 ショートカット・メニューのコマンド

- 21-1 サポートされるMFLデータ型

- 21-2 COBOLのデータ型

- 23-1 カスタム関数でサポートされるJavaメソッドの型

- 24-1 SOA-DIRECTトランスポート構成

- 25-1 JCAトランスポート構成オプション

- 26-1 プロキシ・サービスのHTTPトランスポートを構成するためのパラメータ

- 26-2 ビジネス・サービスのHTTPトランスポートを構成するためのパラメータ

- 26-3 HTTPビジネス・サービスのレスポンス・コード処理

- 26-4 プロキシ・サービスの電子メール・トランスポートを構成するためのパラメータ

- 26-5 ビジネス・サービスの電子メール・トランスポートを構成するためのパラメータ

- 26-6 プロキシ・サービスのファイル・トランスポートを構成するためのパラメータ

- 26-7 ビジネス・サービスのファイル・トランスポートを構成するためのパラメータ

- 26-8 ビジネス・サービスのFTPトランスポートを構成するためのパラメータ

- 26-9 ビジネス・サービスのFTPトランスポートを構成するためのパラメータ

- 26-10 環境値

- 26-11 SFTPプロキシ・サービスの構成

- 26-12 トランスポート・ヘッダーとメタデータ

- 26-13 SFTPビジネス・サービスの構成

- 26-14 UDDIレジストリからインポートされるプロパティ

- 27-1 環境値

- 27-2 プロキシ・サービスのSBトランスポートを構成するためのフィールド

- 27-3 ビジネス・サービスのSBトランスポートを構成するためのフィールド

- 28-1 ビジネス・サービスのためのEJBトランスポート構成オプション

- 29-1 プロキシ・サービスのためのJEJBトランスポート構成

- 29-2 ビジネス・サービスのためのJEJBトランスポート構成

- 30-1 メッセージIDと相関IDのパターンの相違点

- 30-2 JMSトランスポート・ヘッダー

- 32-1 WSトランスポートを使用するプロキシ・サービスの構成で必要なフィールド

- 32-2 プロキシ・サービス用のWSトランスポートの構成で必要なフィールド

- 32-3 WSトランスポートを使用するビジネス・サービスの構成

- 32-4 ビジネス・サービス用のWSトランスポートの構成

- 33-1 MQ接続パラメータ

- 33-2 MQプロキシ・サービスの構成

- 33-3 MQビジネス・サービスの構成

- 33-4 トランスポート・ヘッダー

- 34-1 BPELトランスポートの環境変数

- 34-2 エンドポイントURIの指定

- 34-3 BPELトランスポート構成

- 35-1 Tuxedo例外

- 35-2 任意のXMLサービスの場合のバッファ変換

- 35-3 メッセージング・サービスの場合のバッファ変換

- 38-1 組込みのトランスフォーメーション

- 39-1 トランスポート構成ページのコンテキストID

- 42-1 サンプル・トランスポート・プロバイダの重要なディレクトリ

- 45-1 IDの伝播のオプション

- 45-2 トランスポートレベルのセキュリティ要件の組合せ

- 45-3 メッセージレベルのセキュリティ要件の組合せ

- 45-4 認証プロバイダ

- 45-5 HTTPトランスポート認証用のContextHandlerプロパティ

- 45-6 メッセージレベルのカスタム認証およびアクセス制御用のContextHandlerプロパティ

- 45-7 HTTPプロキシ・サービスのその他のメッセージレベルのセキュリティのContextHandlerプロパティ

- 47-1 Oracle Service Busの管理セキュリティ・ロール

- 47-2 Oracle WebLogic Serverのセキュリティ・ロール

- 47-3 Oracle Service Bus管理コンソールにおけるロール・ベースのオペレーション・アクセス

- 47-4 Oracle Service Bus管理コンソールにおけるロール・ベースのリソース・ブラウザのアクセス

- 47-5 Oracle Service Bus管理コンソールにおけるロール・ベースのプロジェクト・エクスプローラのアクセス

- 47-6 Oracle Service Bus管理コンソールにおけるロール・ベースのセキュリティ構成アクセス

- 47-7 Oracle Service Bus管理コンソールにおけるロール・ベースのシステム管理アクセス

- 47-8 Oracle Service Bus管理コンソールにおけるロール・ベースのチェンジ・センター・アクセス

- 47-9 Oracle Service Busのグループ

- 49-1 WSトランスポートの認証一覧

- 50-1 &wspおよび&wsspの問合せパラメータの有効および無効な組合せ

- 50-2 SOAPおよびWSDL (SOAP)サービス・タイプでサポートされるOracle WSMシード・ポリシー

- 50-3 HTTPトランスポートを使用するWSDL (非SOAP)、XMLおよびメッセージング・サービス・タイプでサポートされるOracle WSMシード・ポリシー

- 50-4 SOAPおよび非SOAPサービスのサポートされないアサーション

- 51-1 Oracle Service Busで保護可能なWSDL要素

- B-1 Oracle Service Busリソースのデフォルトのファイル拡張子

はじめに

ここでは、このガイド『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のドキュメントのアクセシビリティ機能および規則について説明します。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

Oracleサポート・サービスでは、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。

表記規則

このドキュメントでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

斜体

イタリックは、ユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

リリース11.1.1.7用のこのガイドでの新しい情報

このガイドはいくつかの点が更新されています。次の表に、追加または変更された項を示します。

既知の問題のリストについては(リリース・ノート)、Oracle SOA製品およびOracle AIA Foundation Packの既知の問題に関するページ(http://www.oracle.com/technetwork/middleware/docs/soa-aiafp-knownissuesindex-364630.html)を参照してください。

項

変更内容

2013年2月

第3章「トランスポート構成」

3.1.4項「電子メール・トランスポート構成ページ(ビジネス・サービス)」

項が改定され、電子メール・トランスポートにおけるSecure Sockets Layerのサポートおよび新しいプロパティであるソケットI/Oタイムアウトが追加されました。

X

3.1.5項「電子メール・トランスポート構成ページ(プロキシ・サービス)」

項が改定され、電子メール・トランスポートにおけるSecure Sockets Layerのサポートが追加されました。

X

表3-10「ビジネス・サービスのためのHTTPトランスポート構成オプション」

項が改定され、ロード・バランシング・シナリオでHTTPセッション・アフィニティを有効にする「セッション固定性」と「固定セッションID名」の2つのプロパティが新しく追加されました。

X

表3-16「プロキシ・サービスのためのJMSトランスポート構成オプション」

項が改定され、JMSプロキシ・サービスにトランザクションのタイムアウト期間を構成するためのサポートが追加されました。

X

表3-16「プロキシ・サービスのためのJMSトランスポート構成オプション」

項が改定され、JMSプロキシ・サービスでトピックに「JMSクライアントID」を指定するためのサポートが追加されました。

X

表3-17「ビジネス・サービスのためのMQトランスポート構成オプション」

項が改定され、XAトランザクションをサポートする新しいビジネス・サービス・プロパティが追加されました。

X

表3-18「プロキシ・サービスのためのMQトランスポート構成オプション」

項が改定され、XAトランザクションをサポートする新しいプロキシ・サービス・プロパティが追加されました。

X

表3-21「ビジネス・サービスのためのSFTPトランスポート構成オプション」

項が改定され、ビジネス・サービスに優先暗号スイートおよび様々なアルゴリズムを選択するためのプロパティが新しく追加されました。

X

表3-22「プロキシ・サービスのためのSFTPトランスポート構成オプション」

項が改定され、プロキシ・サービスに優先暗号スイートおよび様々なアルゴリズムを選択するためのプロパティが新しく追加されました。

X

第4章「ユーザー・インタフェース・リファレンス」

4.1.2項「電子メール受信者の編集ページ」

項が改定され、電子メール・アラートの送信時におけるSecure Sockets Layerのサポートが追加されました。

X

4.5.4項「カスタムMQの「リソース構成」ページ」

項が改定され、MQ接続の最大待機時間の単位にミリ秒が使用されることが記述されました。

X

4.5.4項「カスタムMQの「リソース構成」ページ」

項が改定され、MQ接続におけるXAトランザクションのサポートを提供する「XA有効」オプションが新しく追加されました。

X

第26章「HTTPトランスポートおよびポーラー・トランスポート」

26.2.2項「電子メール・トランスポートを使用するビジネス・サービスの構成」

項が改定され、電子メール・トランスポートにおけるSecure Sockets Layerのサポートおよび新しいプロパティであるソケットI/Oタイムアウトが追加されました。

X

26.2.1項「電子メール・トランスポートを使用するプロキシ・サービスの構成」

項が改定され、電子メール・トランスポートにおけるSecure Sockets Layerのサポートが追加されました。

X

表26-2「ビジネス・サービスのHTTPトランスポートを構成するためのパラメータ」

項が改定され、ロード・バランシング・シナリオでHTTPセッション・アフィニティを有効にする「セッション固定性」と「固定セッションID名」の2つのプロパティが新しく追加されました。

X

表26-10「環境値」

項が改定され、SFTPトランスポートに優先暗号スイートおよび様々なアルゴリズムを選択するための環境値が新しく追加されました。

X

表26-11「SFTPプロキシ・サービスの構成」

項が改定され、プロキシ・サービスに優先暗号スイートおよび様々なアルゴリズムを選択するためのプロパティが新しく追加されました。

X

表26-13「SFTPビジネス・サービスの構成」

項が改定され、ビジネス・サービスに優先暗号スイートおよび様々なアルゴリズムを選択するためのプロパティが新しく追加されました。

X

第30章「JMSトランスポート」

30.6項「プロキシ・サービスでのJMSクライアントIDの指定」

トピック宛先を持つプロキシ・サービスにJMSクライアントIDを指定する機能について説明する項が追加されました。

X

第33章「MQトランスポート」

33.1項「主な機能」

項が改定され、MQトランスポートを使用するXAトランザクションのサポートが追加されました。

X

33.5項「環境値」

項が改定され、「XA有効」環境値が新しく追加されました。

X

33.8.2.1項「MQ接続リソースの作成」

項が改定され、「XA有効」プロパティが新しく追加されました。

X

33.8.3項「MQトランスポートを使用するプロキシ・サービスの構成」

項が改定され、XAトランザクションをサポートする新しいプロパティが追加されました。

X

33.8.4項「MQトランスポートを使用するビジネス・サービスの構成」

項が改定され、XAトランザクションをサポートする新しいプロパティが追加されました。

X

第50章「HTTPトランスポートおよびポーラー・トランスポート」

50.2.8.1項「サポートされるシード・ポリシー」

項が改定され、HTTP転送プロトコルを使用したメッセージングまたはXMLサービス・タイプを使用するプロキシ・サービスおよびビジネス・サービスについて、Oracle WSMポリシーのサポートが追加されました。

X

50.2.9.4項「Oracle WSMポリシーおよびMTOM形式のメッセージ」

Oracle WSMポリシーを使用するMTOMエンコード・メッセージの新しいサポートについて説明する項が追加されました。

X

付録B「Oracle Service Bus構成のオフラインでのエクスポート」

付録B「Oracle Service Bus構成のオフラインでのエクスポート」

Service Bus構成JARファイルをオフライン・モードでエクスポートするプロセスについて説明する付録が追加されました。このモードでは、Eclipseをインストールする必要はありません。

X

第I部

Oracle Service Bus IDEヘルプ

Oracle Service Bus IDEヘルプです。次の章が含まれます。

- 第1章「Oracle Service Busの紹介」

- 第2章「タスク」

- 第3章「トランスポート構成」

- 第4章「ユーザー・インタフェース・リファレンス」

1 Oracle Service Busの紹介

ここでは、Eclipse用のOracle Service Busプラグインを使用して、サービスとその他のサービス・バス・リソースを構成する方法について説明します。構成は設計時アクティビティであるため、特に明記されていないかぎり、実行中のOracle WebLogic Serverインスタンスは必要ありません。同じくOracle Service Busに備わっているWebベースのOracle Service Bus管理コンソールは、Oracle Service Busプラグインと同じ設計ツールを提供し、モニターなどの実行時アクティビティも提供します。Oracle Service Bus管理コンソールを使用するには、実行中のOracle WebLogic Serverインスタンスが必要です。

Oracle Service Busは、構成ベースでポリシー駆動のEnterprise Service Busです。スケーラビリティと信頼性の高いサービス志向の統合やサービス管理、また、異なるIT環境に対して従来のメッセージ・ブローカリングを提供します。また、インテリジェントなメッセージ・ブローカリング、メッセージのルーティングとトランスフォーメーション、サービス・モニターおよび管理が、統一したソフトウェア製品で融合されます。詳細は、『Oracle Fusion Middleware Oracle Service Busコンセプトおよびアーキテクチャ』を参照してください。

2 タスク

この章では、Oracle Service Bus IDEでタスク(プロジェクトとリソース、ビジネス・サービスとプロキシ・サービス、分割-結合、メッセージ・フロー、およびグローバル・リソースの操作など)を実行する方法について説明します。

この章の内容は次のとおりです。

- 2.1項「プロジェクト、フォルダ、リソースおよび構成の操作」

- 2.2項「ビジネス・サービスの操作」

- 2.3項「プロキシ・サービスの操作」

- 2.4項「プロキシ・サービス・メッセージ・フローの操作」

- 2.5項「アラート宛先の操作」

- 2.6項「MQ接続の操作」

- 2.7項「Oracle Enterprise Repositoryおよびハーベスタの操作」

- 2.8項「UDDIレジストリの操作」

- 2.9項「分割-結合の操作」

- 2.10項「Oracle Service Busデバッガの使用」

2.1 プロジェクト、フォルダ・リソースおよび構成の操作

このセクションでは、次のタスクの実行方法を示します。

- 2.1.1項「リソースの命名制限」

- 2.1.2項「リソースの編集」

- 2.1.3項「Oracle Service Busプロジェクトおよびフォルダのクローン作成」

- 2.1.4項「Oracle Service Bus構成プロジェクトの作成」

- 2.1.5項「Oracle Service Busプロジェクトの作成」

- 2.1.6項「サーバーの作成」

- 2.1.7項「カスタム・リソースの作成」

- 2.1.8項「JNDIプロバイダ・リソースの作成および編集」

- 2.1.9項「プロキシ・サーバー・リソースの作成」

- 2.1.10項「メッセージ・フォーマット・ファイルの作成」

- 2.1.11項「リソースのエクスポート」

- 2.1.12項「有効なWSDLの生成」

- 2.1.13項「JAR依存関係の変更」

- 2.1.14項「リソースのインポート」

- 2.1.15項「サービス・アカウント・リソースの作成」

- 2.1.16項「サービス・キー・プロバイダ・リソースの作成」

- 2.1.17項「SMTPサーバー・リソースの作成」

- 2.1.18項「XQueryトランスフォーメーションの作成」

- 2.1.19項「XSLトランスフォーメーションの作成」

2.1.1 リソースの命名制限

Oracle Service Bus構成でディレクトリまたはリソースに名前を付ける際は、次の文字を使用できます。

- http://docs.oracle.com/javase/specs/jls/se5.0/html/lexical.htmlにあるJava Language Specificationの「Identifiers」および「Keywords」の各項に記述されている、すべてのJava識別子の文字(Javaキーワードを含む)

- 名前の先頭または末尾以外の場所のブランク、ピリオドおよびハイフン

/ \ * : " < > ? | などの文字は使用できません。

2.1.2 リソースの編集

リソースは、組込みのエディタを使用して編集します。たとえば、プロキシ・サービスを編集する場合は、プロジェクト・エクスプローラでサービスの名前をクリックすると、プロキシ・サービス・エディタが表示されます。

リソース・ファイルをテキスト・ファイルやXMLファイルとして手動で編集しないでください。予測不可能な動作が発生するおそれがあります。リソースの次の種類は手動で編集しないでください。

- アラート宛先

- ビジネス・サービス

- カスタム・リソース

- プロキシ・サービス

- サービス・アカウント

- サービス・キー・プロバイダ

- 分割-結合

- JNDIプロバイダ

- SMTPサーバー

- プロキシ・サーバー

- UDDIレジストリ

2.1.3 Oracle Service Busプロジェクトおよびフォルダのクローン作成

Oracle Service Busプロジェクトおよびフォルダのクローンを作成するには:

1. プロジェクト・エクスプローラで、クローンを作成するOracle Service Busプロジェクトまたはフォルダを右クリックします。

2. メニューから「Oracle Service Bus」→「Clone」を選択して、「Select Clone Target」ダイアログを表示します。

2.1.4 Oracle Service Bus構成プロジェクトの作成

Oracle Service Busパースペクティブで「ファイル」→「新規」→Oracle Service Bus構成プロジェクトを選択して、新しいOracle Service Bus構成プロジェクト・ウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

構成の詳細は、4.4.3項「Oracle Service Bus構成ページ」を参照してください。

2.1.5 Oracle Service Busプロジェクトの作成

Oracle Service Busパースペクティブで「ファイル」→「新規」→Oracle Service Busプロジェクトを選択して、新しいOracle Service Busプロジェクト・ウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

Oracle Service Busプロジェクトは、Oracle Service Bus構成プロジェクトでのみ作成できます。

構成の詳細は、4.4.4項「新しいOracle Service Busプロジェクト」を参照してください。

2.1.6 サーバーの作成

Oracle Service Bus構成をEclipseの実行中のサーバーにデプロイ(パブリッシュ)し、テストできます。開発で実行中のサーバーに接続する際、JNDIリソースやリモートEJBのような実行時環境のリソースにアクセスすることもできます。

既存のOracle WebLogic Serverに接続する場合、サーバー作成プロセスでは既存サーバーのドメインの指定のみが必要です。Oracle Fusion Middleware構成ウィザードを使用して新しいサーバーを作成することもできます。

Eclipseでサーバーを作成する手順:

1. Oracle Service Busパースペクティブで「ファイル」→「新規」→「サーバー」を選択します。新規サーバー・ウィザードが表示されます。

2. 作成または接続するサーバーのタイプ/バージョンを選択します。

3. サーバーのホスト名に、ローカル・サーバーの場合は「localhost」と入力するか、既存サーバーをホスティングするリモート・コンピュータの名前またはIPアドレスを入力します。

4. 「サーバー名」はEclipseで表示する場合のものです。

5. 「次へ」をクリックします。

6. WebLogicホームで、「参照」をクリックし、サーバー・ドメインを配置する予定の(またはすでに配置されている) Oracle Fusion Middlewareインストール環境のWL_HOMEを選択します。たとえば、MW_HOME_1に新規サーバーを作成する場合、MW_HOME_1/WL_HOMEを選択します。または、MW_HOME_2の既存のサーバー・ドメインに接続する場合、MW_HOME_2/WL_HOMEを選択します。

注意:

サーバーのインストール「MW_HOME」の外部にある「WL_HOME」は、外部の「MW_HOME」が同じ製品バージョンである場合でも、参照できません。

7. 「Javaホーム」は自動的に入力されます。別のJRE(デフォルトのOracle JRockit JREなど)を使用する場合は、「参照」をクリックしてサーバーと同じ「MW_HOME」の下にあるJREを選択します。

8. 「次へ」をクリックします。

9. サーバーが「ローカル」か「リモート」かを選択します。「リモート」は既存のリモート・サーバーを示します。

- 「ローカル」の場合は、「ドメイン・ディレクトリ」フィールドで既存サーバーを選択するか、リンクをクリックして新規ドメインを作成します。新規ドメインを作成したら、「ドメイン・ディレクトリ」フィールドでそのドメインを選択します。
自動パブリッシュやデバッグ・モードなどのその他のオプションを、必要に応じて設定します。

新規のOracle Service Busドメインの作成の詳細は、『Oracle Fusion Middleware Oracle Service Busインストレーション・ガイド』の「Oracle Service Bus 11gのインストールと構成」を参照してください。

- 「リモート」の場合は、既存リモート・サーバーへの接続設定を入力します。

10. 「次へ」をクリックします。

11. サーバーでパブリッシュするすべてのOracle Service Bus構成を「構成済」ペインに移動します。
サーバーの作成後にこの指定を変更するには、サーバーを右クリックして、「追加および削除」を選択します。

12. 「終了」をクリックします。Eclipseの「Servers」ビューに新規サーバーが表示され、サーバーの起動と停止や、サーバーへのパブリッシュができます。

Eclipse用のOracle Service Busプラグインにより特殊な機能が提供される、デバッグ・モードでサーバーを実行する場合の詳細は、2.10項「Oracle Service Busデバッガの使用」を参照してください。

2.1.7 カスタム・リソースの作成

Oracle Service Busパースペクティブで「File」→「New」→「Custom Resource」を選択して、New Custom Resourceウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

カスタム・リソースは、Oracle Service Busプロジェクトでのみ作成できます。

構成の詳細は、4.5項「カスタム・リソース」を参照してください。

2.1.8 JNDIプロバイダ・リソースの作成および編集

Oracle Service Busパースペクティブで「ファイル」→「新規」→「JNDIプロバイダ」を選択し、新規JNDIプロバイダ・リソース・ウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

JNDIプロバイダ・リソースは、Oracle Service Bus構成プロジェクトでのみ作成できます。

JNDIプロバイダ・リソースを編集するには:

1. プロジェクト・エクスプローラで、編集するJNDIプロバイダ・リソースを含むOracle Service Bus構成プロジェクトを見つけます。

2. JNDIプロバイダの名前をダブルクリックして、JNDIプロバイダ・エディタを表示します。

構成の詳細は、4.8項「JNDIプロバイダ」を参照してください。

2.1.9 プロキシ・サーバー・リソースの作成

Oracle Service Busパースペクティブで「ファイル」→「新規」→「プロキシ・サーバー」を選択し、新規プロキシ・サーバー・リソース・ウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

プロキシ・サーバー・リソースは、Oracle Service Bus構成プロジェクトでのみ作成できます。

プロキシ・サーバー・リソースを編集するには:

1. プロジェクト・エクスプローラで、編集するプロキシ・サーバー・リソースを含むOracle Service Bus構成プロジェクトを見つけます。

2. プロキシ・サーバーの名前をダブルクリックして、プロキシ・サーバー・エディタを表示します。

構成の詳細は、4.9項「プロキシ・サーバー」を参照してください。

2.1.10 メッセージ・フォーマット・ファイルの作成

Oracle Service Busパースペクティブで「ファイル」→「新規」→「MFL」を選択し、新規メッセージ・フォーマット・ファイル・ウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

メッセージ・フォーマット・ファイルは、Oracle Service Busプロジェクトでのみ作成できます。

構成の詳細は、4.11.16項「MFL変換アクションのプロパティ」を参照してください。

2.1.11 リソースのエクスポート

ここでは、Oracle Service BusリソースをEclipseからエクスポートする様々な方法について説明します。

ここでの手順は、Eclipseのインストール環境を必要とするため、Oracle Enterprise Pack for Eclipse用のOracle Service Busプラグインをサポートするプラットフォームでのみ実行できます。サポートされていないプラットフォームでは、Oracle Service Bus管理コンソールを使用してエクスポートします。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のインポートとエクスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1311)を参照してください。

この項の内容は次のとおりです。

- 2.1.11.1項「エクスポート・ウィザードの使用」

- 2.1.11.2項「コマンドラインやスクリプトを使用したOracle Service Bus構成のエクスポート」

注意:

Oracle Service Busリソースの種類の1つであるXMLファイルは、次のエクスポート手順のいずれかを使用するとEclipseから自動的にエクスポートされます。XMLファイルをエクスポートしない場合は、Eclipseのリソース・フィルタ機能をプロジェクトまたはフォルダで使用して、そのファイルを除外します。エクスポート・ウィザードではファイルおよびリソースをエクスポートから除外することもできます。

2.1.11.1 エクスポート・ウィザードの使用

Oracle Service Busパースペクティブで「ファイル」→「エクスポート」を選択し、エクスポート・ウィザードを表示します。詳細は、次の項を参照してください。

- 4.6.1項「エクスポート・ウィザード - Oracle Service Bus構成JARエクスポート・ページ」

- 4.6.2項「エクスポート・ウィザード - サーバーにエクスポート - リソースの選択ページ」

2.1.11.2 コマンドラインやスクリプトを使用したOracle Service Bus構成のエクスポート

この項では、Oracle Service Bus構成をエクスポートするためのスクリプトおよびコマンドライン・オプションについて説明します。

- 2.1.11.2.1項「始める前に」

- 2.1.11.2.2項「コマンドラインを使用した構成のエクスポート」

- 2.1.11.2.3項「Antを使用した構成のエクスポート」

- 2.1.11.2.4項「WLSTを使用した構成のエクスポート」

2.1.11.2.1 始める前に

始める前に、次の前提条件を満たしていることを確認してください。

- クラスパスにOSB_ORACLE_HOME/lib/sb-kernel-api.jarが含まれている。

- スクリプト内のリソースJAR名に正しいバージョン番号が含まれている。

- 適切なバージョンのJavaがインストールされている。これは、Oracle JDK 1.6.0_35以上またはOracle JDK 1.7.0_07以上である必要があります。

- Oracle Service Bus 10gR3 MP1以降のリリースとEclipseがインストールされている。

- JAR命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

エクスポートを実行する際に、ワークスペース・ファイルが読取り専用である場合、出力またはワークスペース・ログ・ファイルにスタック・トレースの例外が発生する可能性があります。終了値で0が表示される場合、エクスポートが完了したことを意味します。

2.1.11.2.2 コマンドラインを使用した構成のエクスポート

Oracle Service Busでは、次のコマンドライン引数を使用して構成および起動できるConfigExportクラスが提供されます。コマンドライン・エクスポートは、より高い柔軟性を必要とする上級ユーザーを対象とします。

コマンドラインからのエクスポートによって、Oracle Service Bus構成JARがEclipseワークスペースから生成されます。

java -Xms384m -Xmx768m
-Dmiddleware.home=FMW_HOME
-Dosgi.bundlefile.limit=500
-Dosgi.nl=en_US
-Dosb.home=OSB_ORACLE_HOME
-Dweblogic.home=WEBLOGIC_HOME
-Dharvester.home=${osb.home}/HARVESTER_HOME
-Dsun.lang.ClassLoader.allowArraySyntax=true
-jar ECLIPSE_HOME/eclipse/plugins/org.eclipse.equinox.launcher_launcher_version.jar
-data WORKSPACE_DIR
-application com.bea.alsb.core.ConfigExport
-configProject PROJECT_NAME
-configJar config_filename.jar
-configSubProjects projects_to_export
-includeDependencies true/false
-includeSystemResources true/false

説明:

- FMW_HOMEは、Oracle Fusion Middlewareのホーム・ディレクトリです。これは、入力する最初の引数である必要があります。

- OSB_ORACLE_HOMEは、Oracle Fusion Middlewareホームの最上位のOracle Service Busディレクトリです。

- WEBLOGIC_HOMEは、Oracle WebLogic Serverがインストールされている場所です。

- HARVESTER_HOMEは、ハーベスタの場所です。ハーベスタはOracle Enterprise Repositoryのツールであり、このツールを使用すると、Oracle Service Busを含む複数のリソースからOracle Enterprise Repositoryへのエンタープライズ・アーティファクトのハーベストを実行できます。Oracle Service Busインストールにはハーベスタが含まれます。

- ECLIPSE_HOMEは、Oracle Service Bus IDEプラグインにリンクしているEclipseがインストールされている場所です。

- launcher_versionは、EclipseランチャJARのバージョンです。

- WORKSPACE_DIRは、エクスポートするOracle Service Busアーティファクトの場所を示します。たとえば、c:/oracle/user_projects/workspaces/default。この場所にEclipseワークスペースが含まれている場合、ワークスペースを使用し、ワークスペース・プロジェクトから構成Jarがエクスポートされます。この場所にワークスペースが含まれず、Eclipse Oracle Service Busプロジェクトのみが含まれている場合、ユーティリティによって、構成JARエクスポート用の一時的なワークスペースにプロジェクトがインポートされます。

- PROJECT_NAMEは、エクスポートするOracle Service Bus構成プロジェクトの名前です。たとえば、「OSB Configuration」。この引数を指定しない場合、ワークスペース内の最初のOracle Service Bus構成プロジェクトがエクスポートされます。

- config_filename.jarは、エクスポートするOracle Service Bus構成JARの場所を示します。たとえば、c:\sbconfig.jar。

- configSubProjects projects_to_exportは、エクスポートする構成内にある1つ以上の特定のプロジェクトです。configSubProjectsを指定しない場合、構成内のすべてのプロジェクトがエクスポートされます。

- includeDependencies true/falseでは、JNDIプロバイダとプロキシ・サーバーのような構成レベルの依存性が、エクスポートに含まれるかどうかが判断されます。

- includeSystemResources true/falseでは、システムのリソースがエクスポートに含まれるかどうかが判断されます。システムのリソースを含めるには、includeSystemResourcesおよびincludeDependenciesを両方ともtrueにする必要があります。

次に、コマンドラインからOracle Service Bus構成をエクスポートするサンプルを示します。

注意:

次に示すのはサンプルのコマンドライン操作です。このサンプルを使用する場合は、パスとファイル名が現在のインストールと一致するか必ず確認してください。

java -Xms384m -Xmx768m
-Dosgi.bundlefile.limit=500
-Dosgi.nl=en_US
-Dosb.home=D:/oracle/Oracle_OSB1
-Dweblogic.home=D:/oracle/wlserver_10.3
-Dharvester.home=${osb.home}/harvester
-Dsun.lang.ClassLoader.allowArraySyntax=true
-jar D:/oracle/oepe_11gR1PS1/eclipse/plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
-data D:/oracle/user_projects/myWorkspace
-application com.bea.alsb.core.ConfigExport
-configProject config
-configJar sbconfig.jar
-configSubProjects OSB Project 1,OSB Project 2
-includeDependencies true
-includeSystemResources true

2.1.11.2.3 Antを使用した構成のエクスポート

Apache Antビルド・ファイルを使用してOracle Service Bus構成をエクスポートできます。Antによるエクスポートによって、Oracle Service Bus構成JARがEclipseワークスペースから生成されます。ソース・コード制御リポジトリにService Busプロジェクトおよびリソースを格納する場合は、Antを使用してソース・リポジトリのプロジェクトを確認し、構成.jarファイルを生成し、Service Busを起動して構成をService Busにインポートできます。

次に示すのは、付随するプロパティ・ファイルを示すサンプルのAntビルド・ファイルです。

注意:

次に示すのはサンプルのスクリプトです。このサンプル・スクリプトを使用する場合は、パスとファイル名が現在のインストールと一致するか必ず確認してください。

Antビルド・ファイルの例

<project name="ConfigExport">
<property file="./build.properties"/>
<property name="eclipse.home" value="${oracle.home}/oepe_11gR1PS2"/>
<property name="weblogic.home" value= "${oracle.home}/wlserver_10.3"/>
<property name="metadata.dir" value="${workspace.dir}/.metadata"/>
<target name="export">
<available file="${metadata.dir}" type="dir"
property="metadata.dir.exists"/>
<java dir="${eclipse.home}"
jar="${eclipse.home}/plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar"
fork="true"
failonerror="true"
maxmemory="768m">
<arg line="-data ${workspace.dir}"/>
<arg line="-application com.bea.alsb.core.ConfigExport"/>
<arg line="-configProject ${config.project}"/>
<arg line="-configJar ${config.jar}"/>
<arg line="-configSubProjects ${config.subprojects}"/>
<arg line="-includeDependencies ${config.includeDependencies}"/>
<sysproperty key="weblogic.home" value="${weblogic.home}"/>
<sysproperty key="osb.home" value="${osb.home}"/>
<sysproperty key="osgi.bundlefile.limit" value="500"/>
<sysproperty key="harvester.home" value="${osb.home}/harvester"/>
<sysproperty key="osgi.nl" value="en_US"/>
<sysproperty key="sun.lang.ClassLoader.allowArraySyntax" value="true"/>
</java>
<antcall target="deleteMetadata"/>
</target>
<target name="deleteMetadata" unless="metadata.dir.exists">
<delete failonerror="false" includeemptydirs="true"
dir="${metadata.dir}"/>
</target>
</project>

build.propertiesの例

oracle.home=c:/oracle
workspace.dir=c:/oracle/user_projects/workspaces/default
config.project="OSB Configuration"
config.jar=c:/sbconfig.jar
config.subprojects="OSB Project 1,OSB Project 2"
config.includeDependencies=true

(setDomainEnvスクリプトを実行した後に)「ant export」を実行すると、「OSB Configuration」プロジェクトがデフォルトのワークスペースからc:\sbconfig.jarにエクスポートされます。

2.1.11.2.4 WLSTを使用した構成のエクスポート

WebLogic Scripting Tool (WLST)を使用してOracle Service Bus構成をエクスポートできます。WLSTによるエクスポートによって、Oracle Service Bus構成JARが実行中のOracle Service Busサーバーから生成されます。

詳細は、http://www.oracle.com/technetwork/middleware/service-bus/learnmore/index.htmlにあるOracle Service Busサンプル・ページの、OSB構成JARをインポート/エクスポートおよびカスタマイズするWLSTスクリプトに関する項を参照してください。

2.1.12 有効なWSDLの生成

有効なWSDLを生成するには:

1. プロジェクト・エクスプローラで、有効なWSDLの生成元とするプロキシ・サービスまたはビジネス・サービスを見つけます。

2. サービスの名前を右クリックして、メニューから「Oracle Service Bus」→「Generate Effective WSDL」を選択します。

3. 保存場所を選択して、ファイルを保存します。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

2.1.13 JAR依存関係の変更

JAR依存関係を変更するには:

1. プロジェクト・エクスプローラで、依存関係を修正するJARファイルを見つけます。

2. ファイルの名前を右クリックして、メニューから「Oracle Service Bus」→「Modify JAR Dependencies」を選択します。

3. 「Modify JAR Dependencies」ダイアログで変更を行います。

2.1.14 リソースのインポート

ここでは、リソースをOracle Service Busにインポートする様々な方法について説明します。

ここでの手順は、Eclipseのインストール環境を必要とするため、Oracle Enterprise Pack for Eclipse用のOracle Service Busプラグインをサポートするプラットフォームでのみ実行できます。サポートされていないプラットフォームでは、Oracle Service Bus管理コンソールを使用してインポートします。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のインポートとエクスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1311)を参照してください。

この項の内容は次のとおりです。

- 2.1.14.1項「Importウィザードの使用」

- 2.1.14.2項「コマンドラインやスクリプトを使用したOracle Service Bus構成のインポート」

2.1.14.1 Importウィザードの使用

Oracle Service Busパースペクティブで「File」→「Import」を選択してImportウィザードを表示します。次を参照:

- 4.7.1項「インポート・ウィザード - 構成JARインポート - 「リソースのロード」ページ」

- 4.7.2項「インポート・ウィザード - 構成JARインポート - リソースの確認ページ」

- 4.7.3項「インポート・ウィザード - 構成ZIPインポート - 「リソースのロード」ページ」

- 4.7.4項「インポート・ウィザード - 構成ZIPのインポート - リソースの確認ページ」

- 4.7.5項「インポート・ウィザード - URLのインポート - 「リソースのロード」ページ」

- 4.7.6項「インポート・ウィザード - URLのインポート - リソースの確認ページ」

2.1.14.2 コマンドラインやスクリプトを使用したOracle Service Bus構成のインポート

スクリプトやコマンドラインを使用してOracle Service Bus構成をインポートできます。コマンドラインやAntスクリプトを使用したインポートによって、Oracle Service Bus構成JARがEclipseワークスペースにインポートされます。インポートのガイドラインは、2.1.11.2.3項「Antを使用した構成のエクスポート」と2.1.11.2.2項「コマンドラインを使用した構成のエクスポート」の例を参照してください。

WebLogic Scripting Tool (WLST)を使用してOracle Service Bus構成をインポートすることもできます。WLSTによるインポートによって、Oracle Service Bus構成JARがOracle Service Bus実行時環境にインポートされます。詳細は、http://www.oracle.com/technetwork/middleware/service-bus/learnmore/index.htmlにあるOracle Service Busサンプル・ページの、OSB構成JARをインポート/エクスポートおよびカスタマイズするWLSTスクリプトに関する項を参照してください。

2.1.15 サービス・アカウント・リソースの作成

Oracle Service Busパースペクティブで「File」→「New」→「Service Account」を選択して、New Service Account Resourceウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

サービス・アカウント・リソースは、Oracle Service Busプロジェクトでのみ作成できます。

構成の詳細は、4.19項「サービス・アカウント」を参照してください。

2.1.16 サービス・キー・プロバイダ・リソースの作成

Oracle Service Busパースペクティブで「File」→「New」→「Service Key Provider」を選択して、New Service Key Provider Resourceウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

サービス・キー・プロバイダ・リソースは、Oracle Service Busプロジェクトでのみ作成できます。

構成の詳細は、4.17項「新しいサービス・キー・プロバイダ・リソース」を参照してください。

2.1.17 SMTPサーバー・リソースの作成

Oracle Service Busパースペクティブで「ファイル」→「新規」→「SMTPサーバー」を選択し、新規SMTPサーバー・リソース・ウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

SMTPサーバー・リソースは、Oracle Service Bus構成プロジェクトでのみ作成できます。

構成の詳細は、4.13項「SMTPサーバー」を参照してください。

2.1.18 XQueryトランスフォーメーションの作成

Oracle Service Busパースペクティブで「ファイル」→「新規」→「XQueryトランスフォーメーション」を選択して、XQuery/XSLT式エディタを表示します。詳細は、第II部「XQuery Mapper」を参照してください。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

XQueryトランスフォーメーション・リソースは、Oracle Service Busプロジェクトでのみ作成できます。

2.1.19 XSLトランスフォーメーションの作成

Oracle Service Busパースペクティブで「File」→「New」→「XSL Transformation」を選択して、XPath式エディタを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

XSLトランスフォーメーション・リソースは、Oracle Service Busプロジェクトでのみ作成できます。

構成の詳細は、4.20項「式エディタ」を参照してください。

2.2 ビジネス・サービスの操作

次の項では、Oracle Service Busプラグインでビジネス・サービスを作成および操作する方法を説明します。

- 2.2.1項「ビジネス・サービスの作成」

- 付録2「アウトバウンドJCAファイルからJCAビジネス・サービスを生成する」

- 2.2.3項「Oracle Enterprise Repositoryからビジネス・サービスを生成する」

- 2.2.4項「ビジネス・サービスの編集」

2.2.1 ビジネス・サービスの作成

Oracle Service Busパースペクティブで「ファイル」→「新規」→「ビジネス・サービス」を選択し、新規ビジネス・サービス・ウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

ビジネス・サービス構成の詳細は、次の項を参照してください。

- 4.2.1項「ビジネス・サービスの「全般的な構成」ページ」

- 4.2.2項「ビジネス・サービスの「メッセージ・タイプの構成」ページ」

- 4.2.6項「ビジネス・サービスの「サービス・ポリシー構成」ページ」

- 4.2.3項「ビジネス・サービスの「SOAPバインド構成」ページ」

- 4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」

注意:

ビジネス・サービスは、Oracle Service Busプロジェクトでのみ作成できます。

2.2.1.1 既存のサービスからビジネス・サービスを生成する

既存のプロキシやビジネス・サービスからビジネス・サービスを生成するには:

1. プロジェクト・エクスプローラで、既存のサービスを右クリックし、「Oracle Service Bus」→「Generate Business Service」を選択します。

2. サービスに名前を付けて構成します。

2.2.2 アウトバウンドJCAファイルからJCAビジネス・サービスを生成する

Oracle Service Busでは、アウトバウンドJCAファイルからビジネス・サービスを生成できます。Oracle Service Bus JCAトランスポートを使用するJCAサービスは、JCAアダプタ・フレームワークおよびJCA準拠アダプタを介してバックエンドEnterprise Information Systems (EIS)と通信します。たとえば、Oracle Databaseアダプタを使用して通信するOracle Service Bus JCAビジネス・サービスを使用して、バックエンド・データベース・レコードを更新できます

Oracle Service BusでJCAビジネス・サービスを作成するには:

1. Oracle JDeveloperで、JCAファイル、関連する抽象WSDLおよび必要なその他のリソース(TopLinkマッピング・ファイルなど)を作成します。詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。

2. JCAリソース・ファイルをOracle Service Busプロジェクトにインポートし、依存関係へのすべての参照が維持されるようにします。詳細は、2.1.14項「リソースのインポート」を参照してください。

3. Eclipseで、アウトバウンドJCAファイルを右クリックし、「Oracle Service Bus」→「Generate Service」を選択します。

4. 「JCA Generate Business Service」ウィンドウで、新しいサービスのフォルダの場所を選択し、必要であればデフォルトのサービス名を変更します。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

5. 「OK」をクリックします。Oracle Service Busによって、ビジネス・サービスと、そのビジネス・サービスが使用する具象WSDLが生成されます。

Oracle Service BusのJCAトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のJCAトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV910)を参照してください。

2.2.3 Oracle Enterprise Repositoryからビジネス・サービスを生成する

Oracle Enterprise Repositoryのサービス・アーティファクトからビジネス・サービスを生成できます。詳細は、2.7.1項「Oracle Enterprise Repositoryからビジネス・サービスを生成する」を参照してください。

Oracle Service Busプロジェクトをハーベスタを使用してOracle Enterprise Repositoryにアップロードすることもできます。詳細は、2.7項「Oracle Enterprise Repositoryおよびハーベスタの操作」を参照してください。

2.2.3.1 Oracle Enterprise Repositoryから既存のビジネス・サービスを再生成する

2.2.3項「Oracle Enterprise Repositoryからビジネス・サービスを生成する」で説明するのと同じ手順に従って、以前にOracle Enterprise Repositoryから生成したビジネス・サービスを再生成できます。再生成を行うと、開発環境でサービスの更新を取得できます。

サービスを再生成すると、Oracle Service Busによってサービス定義がマージされ、既存のサービスがOracle Enterprise Repositoryの変更で更新されますが、開発環境で作成したサービス・アカウントとラージ・メッセージ・サポートの構成は維持されます。

2.2.4 ビジネス・サービスの編集

ビジネス・サービスを編集するには:

1. プロジェクト・エクスプローラで、編集するビジネス・サービスを見つけます。

2. サービスの名前をダブル・クリックします。

3. 編集対象のオプションが含まれるページを選択します。次を参照:

- 4.2.1項「ビジネス・サービスの「全般的な構成」ページ」

- 4.2.2項「ビジネス・サービスの「メッセージ・タイプの構成」ページ」

- 4.2.6項「ビジネス・サービスの「サービス・ポリシー構成」ページ」

- 4.2.3項「ビジネス・サービスの「SOAPバインド構成」ページ」

- 4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」

- 4.2.5項「ビジネス・サービスの「メッセージ処理構成」ページ」

2.3 プロキシ・サービスの操作

次の項では、Oracle Service Busプラグインでプロキシ・サービスを作成および操作する方法を説明します。

- 2.3.1項「プロキシ・サービスの作成」

- 2.3.2項「インバウンドJCAファイルからJCAプロキシ・サービスを生成する」

- 2.3.3項「Oracle JDeveloperでのWSILによるOracle Service Busプロキシ・サービスの使用」

- 2.3.4項「プロキシ・サービスの編集」

2.3.1 プロキシ・サービスの作成

Oracle Service Busパースペクティブで「ファイル」→「新規」→「プロキシ・サービス」を選択し、新規プロキシ・サービス・ウィザードを表示します。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

先頭および末尾のスペースと、/ \ * : " < > ? |などの文字はサービス名に使用しないでください。

プロキシ・サービス構成の詳細は、次の項を参照してください。

- 4.3.1項「プロキシ・サービスの「全般的な構成」ページ」

- 4.3.8項「プロキシ・サービスの「セキュリティ構成」ページ」

- 4.3.2項「プロキシ・サービスの「メッセージ・タイプの構成」ページ」

- 4.3.3項「プロキシ・サービスの「操作選択構成」ページ」

- 4.3.4項「プロキシ・サービスの「メッセージ処理構成」ページ」

- 4.3.7項「プロキシ・サービスの「サービス・ポリシー構成」ページ」

- 4.3.5項「プロキシ・サービスの「SOAPバインド構成」ページ」

- 4.3.6項「プロキシ・サービスの「トランスポート構成」ページ」

注意:

プロキシ・サービスは、Oracle Service Busプロジェクトでのみ作成できます。

2.3.1.1 既存のサービスからプロキシ・サービスを生成する

既存のビジネスやプロキシ・サービスからプロキシ・サービスを生成するには:

1. プロジェクト・エクスプローラで、既存のサービスを右クリックし、「Oracle Service Bus」→「Generate Proxy Service」を選択します。

2. サービスに名前を付けて構成します。

ビジネス・サービスから作成したプロキシ・サービスでは、ビジネス・サービスのルート・ノードが自動的にメッセージ・フローに含まれます。

2.3.2 インバウンドJCAファイルからJCAプロキシ・サービスを生成する

Oracle Service Busでは、インバウンドJCAファイルからプロキシ・サービスを生成できます。Oracle Service Bus JCAトランスポートを使用するJCAサービスは、JCAアダプタ・フレームワークおよびJCA準拠アダプタを介してEnterprise Information Systems (EIS)と通信します。たとえば、JCAを使用するOracle Service Busを介してEISアプリケーションから外部サービスを呼び出すことができます。

Oracle Service BusでJCAプロキシ・サービスを作成するには:

1. Oracle JDeveloperで、JCAファイル、関連する抽象WSDLおよび必要なその他のリソース(TopLinkマッピング・ファイルなど)を作成します。詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。

2. JCAリソース・ファイルをOracle Service Busプロジェクトにインポートし、依存関係へのすべての参照が維持されるようにします。詳細は、2.1.14項「リソースのインポート」を参照してください。

3. Eclipseで、インバウンドJCAファイルを右クリックし、「Oracle Service Bus」→「Generate Service」を選択します。

4. JCA Generate Proxy Serviceウィンドウで、新しいサービスのフォルダの場所を選択し、必要であればデフォルトのサービス名を変更します。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

5. 「OK」をクリックします。Oracle Service Busによって、プロキシ・サービスと、そのプロキシ・サービスが使用する具象WSDLが生成されます。

Oracle Service BusのJCAトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のJCAトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV910)を参照してください。

2.3.3 Oracle JDeveloperでのWSILによるOracle Service Busプロキシ・サービスの使用

Oracle Service Busでは、Web Services Inspection Language (WSIL)でのWSDLベースのプロキシ・サービスが使用可能であり、Oracle SOA Suiteでのサービス編成のためにOracle JDeveloperでOracle Service Bus WSDLプロキシ・サービスを使用できます。

Oracle Service Bus WSILサーブレットは、Oracle Service Bus実行時環境にデプロイされているWSDLベース・プロキシ・サービスを自動的に登録します。WSIL接続をJDeveloperで作成することで、様々な階層レベル(プロジェクト、フォルダ、個々のサービスなど)にマップされる様々なURLパターンを介してそれらのプロキシ・サービスにアクセスできます。たとえば、プロジェクトレベルのURLを使用してOracle Service Bus WSILサーブレットに接続すると、Oracle JDeveloperで、そのフォルダにあるすべての子フォルダとWSDLベース・プロキシ・サービスを見ることができます。

次の手順は、WSIL接続をJDeveloperで作成し、SOAアプリケーションで使用するためにOracle Service Bus WSDLプロキシ・サービスからWebサービス参照を生成するプロセスを示します。

1. Oracle JDeveloperでSOAアプリケーションを開くか作成します。

2. 新しいWSIL接続を作成します。
リソース・パレットで、「新規」アイコンをクリックし、「接続の作成」→「WSIL」を選択します。

「WSIL接続の作成」ウィンドウで次の手順を実行します。

- 接続名を入力します。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

- IntegrationAdmin、IntegrationDeployer、IntegrationOperator、IntegrationMonitorのOracle Service Busロールいずれか1つについて資格証明を入力します。

- Oracle Service Bus WSILのURLを次のいずれかの形式で入力します。

- ドメイン(すべてのプロジェクト、フォルダおよびWSDLプロキシ・サービスを取得) - http://host:port/sbinspection.wsil

- プロジェクト(すべての子フォルダおよびWSDLプロキシ・サービスを取得) - http://host:port/sbinspection.wsil?refpath=project_name

- フォルダ(プロジェクト内のフォルダ、子フォルダおよびWSDLプロキシ・サービスを取得) - http://host:port/sbinspection.wsil?refpath=project_name/folder_path(例: http://localhost:7021/sbinspection.wsil?refpath=MortgageBroker/ProxyServices)

- プロキシ・サービス(個々のWSDLプロキシ・サービスを取得) - http://host:port/sbinspection.wsil?refpath=project_name/folder_path/wsdl_proxy_service(例: http://localhost:7021/sbinspection.wsil?refpath=MortgageBroker/ProxyServices/loanGateway1)

クラスタでは、WSILサーブレットは管理サーバーではなく管理対象サーバーにデプロイされます。URLでは管理対象サーバーのホスト名とポートを使用してください。

終了したら、「OK」をクリックします。WSIL接続が、入力したURLによって決まる階層でリソース・パレットに表示されます。

3. Oracle Service Bus WSDLプロキシ・サービスをSOAアプリケーションで使用するには、そのプロキシ・サービスのWebサービス参照を作成します。
コンポーネント・パレットで新しいWebサービスを作成します。「Webサービスの作成」ウィンドウで「WSDL URL」参照アイコンをクリックします。

SOAリソース・ブラウザで「リソース・パレット」を選択し、前の手順で作成したWSIL接続のOracle Service Bus WSDLプロキシ・サービスを選択します。

Oracle Service Bus WSDLプロキシ・サービスのWebサービス参照を作成したら、SOAアプリケーションで外部参照として使用できます。

Oracle Service Bus WSILサーブレットはSBResourceサーブレットを利用します。SBResourceがデプロイ解除されると、WSIL接続は使用できなくなります。

2.3.4 プロキシ・サービスの編集

プロキシ・サービスを編集するには:

1. プロジェクト・エクスプローラで、編集するプロキシ・サービスを見つけます。

2. サービスの名前をダブル・クリックします。

3. 編集対象のオプションが含まれるページを選択します。次を参照:

- 4.3.1項「プロキシ・サービスの「全般的な構成」ページ」

- 4.3.8項「プロキシ・サービスの「セキュリティ構成」ページ」

- 4.3.2項「プロキシ・サービスの「メッセージ・タイプの構成」ページ」

- 4.3.3項「プロキシ・サービスの「操作選択構成」ページ」

- 4.3.4項「プロキシ・サービスの「メッセージ処理構成」ページ」

- 4.3.7項「プロキシ・サービスの「サービス・ポリシー構成」ページ」

- 4.3.5項「プロキシ・サービスの「SOAPバインド構成」ページ」

- 4.3.6項「プロキシ・サービスの「トランスポート構成」ページ」

2.4 プロキシ・サービス・メッセージ・フローの操作

次の項では、プロキシ・サービス・メッセージ・フローに対してノードとアクションを追加および構成する方法について説明します。

- 2.4.1項「プロキシ・サービスのメッセージ・フローの作成」

- 2.4.2項「メッセージ・フローへのアラート・アクションの追加と構成」

- 2.4.3項「メッセージ・フローへの割当てアクションの追加と構成」

- 2.4.4項「メッセージ・フローへの条件付きブランチ・ノードの追加と構成」

- 2.4.6項「メッセージ・フローへの動的パブリッシュ・アクションの追加と構成」

- 2.4.7項「メッセージ・フローへの動的ルーティング・アクションの追加と構成」

- 2.4.8項「メッセージ・フローへのエラー・ハンドラの追加と構成」

- 2.4.9項「メッセージ・フローへのFor-Eachアクションの追加と構成」

- 2.4.10項「メッセージ・フローへのIf-Thenアクションの追加と構成」

- 2.4.11項「メッセージ・フローへの挿入アクションの追加と構成」

- 2.4.12項「メッセージ・フローへのJavaコールアウト・アクションの追加と構成」

- 2.4.13項「メッセージ・フローへのログ・アクションの追加と構成」

- 2.4.14項「メッセージ・フローへのMFL変換アクションの追加と構成」

- 2.4.15項「メッセージ・フローへのオペレーション・ブランチ・ノードの追加と構成」

- 2.4.16項「メッセージ・フローへのパイプライン・ペア・ノードの追加と構成」

- 2.4.17項「メッセージ・フローへのパブリッシュ・アクションの追加と構成」

- 2.4.18項「メッセージ・フローへのパブリッシュ表アクションの追加と構成」

- 2.4.19項「メッセージ・フローへのエラー生成アクションの追加と構成」

- 2.4.20項「メッセージ・フローへの名前変更アクションの追加と構成」

- 2.4.21項「メッセージ・フローへの置換アクションの追加と構成」

- 2.4.23項「メッセージ・フローへのレポート・アクションの追加と構成」

- 2.4.21項「メッセージ・フローへの置換アクションの追加と構成」

- 2.4.22項「メッセージ・フローへの返信アクションの追加と構成」

- 2.4.24項「メッセージ・フローへの再開アクションの追加と構成」

- 2.4.25項「メッセージ・フローへのルート・ノードの追加と構成」

- 2.4.26項「メッセージ・フローへのルーティング・アクションの追加と構成」

- 2.4.27項「メッセージ・フローへのルーティング・オプション・アクションの追加と構成」

- 2.4.28項「メッセージ・フローへのルーティング表アクションの追加と構成」

- 2.4.29項「メッセージ・フローへのサービス・コールアウト・アクションの追加と構成」

- 2.4.30項「メッセージ・フローへのスキップ・アクションの追加と構成」

- 2.4.31項「メッセージ・フローへのステージの追加と構成」

- 2.4.32項「メッセージ・フローへのトランスポート・ヘッダー・アクションの追加と構成」

- 2.4.33項「メッセージ・フローへの検証アクションの追加と構成」

2.4.1 プロキシ・サービスのメッセージ・フローの作成

プロキシ・サービスを作成する場合、メッセージ・フローはデフォルトで開始ノードが空の状態で作成されます。メッセージ・フローを構築するプロセスは、次の一般的なパターンに従います。

1. プロキシ・サービスを メッセージ・フロー・エディタ で開きます。プロキシ・サービスを開くには、プロジェクト・エクスプローラでサービスの名前をダブル・クリックします。メッセージ・フロー・エディタがプロキシ・サービス・ビューにタブで表示されます。

2. メッセージ・フロー・デザイン・パレットを開きます。パレットを開くには、Oracle Service Busパースペクティブで「Window」→「Show View」→「Design Palette」を選択します。

3. まだ開いていない場合は、プロパティ・ビューを開きます。

1. Oracle Service Busパースペクティブで「Window」→「Show View」→「Other」を選択します。

2. 「Show View」ダイアログで「General」→「Properties」を選択します。

4. ノードとアクションをメッセージ・フロー・デザイン・パレットからメッセージ・フロー・エディタにドラッグします。
あるいは、メッセージ・フロー・エディタでノードまたはアクションを右クリックして、その場所に挿入できるノードおよびアクションのメニューを表示することもできます。このメニューには、次の1つまたは複数の項目が表示されます。

- 「Insert」→(ノードおよびアクションのリスト)

- 「Insert Into」→(ノードおよびアクションのリスト)

- 「Insert After」→(ノードおよびアクションのリスト)

- 「エラー・ハンドラの追加」

5. ノードおよびアクションを構成します。

1. プロキシ・サービス・エディタで、ノードまたはアクションを選択します。
アウトライン・ビューからノードまたはアクションを選択することもできます。アウトライン・ビューを開くには、Oracle Service Busパースペクティブで「Window」→「Show View」→「Outline」を選択します。

2. プロパティ・ビューで、選択したノードまたはアクションにプロパティを設定します。ノードおよびアクションを構成する手順については、ノードまたはアクションのプロパティ・ビューをクリックし、「F1」を押してヘルプを参照してください。

2.4.2 メッセージ・フローへのアラート・アクションの追加と構成

アラート宛先にアラートを送信するには、アラート・アクションを使用して、パイプラインのメッセージ・コンテキストに基づいてアラートを生成します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

アラート・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Reporting」リストを開きます。

2. アラート・アクションをメッセージ・フローの適切な場所にドラッグします。

アラート・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、アラート・アクションをクリックします。

2. アラート・アクションのプロパティ・ページで、プロパティを編集します。
構成の詳細は、4.11.1項「アラート・アクションのプロパティ」を参照してください。

2.4.3 メッセージ・フローへの割当てアクションの追加と構成

XQuery式の結果をコンテキスト変数に割り当てるには、割当てアクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

割当てアクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Message Processing」リストを開きます。

2. 割当てアクションをメッセージ・フローの適切な場所にドラッグします。

割当てアクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、割当てアクションをクリックします。

2. 割当てアクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.2項「割当てアクションのプロパティ」を参照してください。

2.4.4 メッセージ・フローへの条件付きブランチ・ノードの追加と構成

条件付きブランチ・ノードは、XPath条件が返す結果に基づいて、考えられる複数のパスの中の1つのみに沿ってメッセージ処理を進める指定を行うために使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

条件付きブランチ・ノードを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Oracle Service Bus Message Flow」→「Nodes」リストを開きます。

2. 条件付きブランチ・ノードをメッセージ・フローの適切な場所にドラッグします。

条件付きブランチ・ノードを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、条件付きブランチ・ノードをクリックします。

2. 条件付きブランチ・ノードのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.3項「条件付きブランチ・ノードのプロパティ」を参照してください。

2.4.5 メッセージ・フローへの削除アクションの追加と構成

削除アクションは、コンテキスト変数や、XPath式で指定されたノードのセットの削除に使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

削除アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Message Processing」リストを開きます。

2. メッセージ・フローのステージ・アクションの適切な場所に削除アクションをドラッグします。

削除アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、削除アクションをクリックします。

2. 削除アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.4項「削除アクションのプロパティ」を参照してください。

2.4.6 メッセージ・フローへの動的パブリッシュ・アクションの追加と構成

XQuery式によって指定されたサービスに対してメッセージをパブリッシュするには、動的パブリッシュ・アクションを使用します。

パブリッシュの動作の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のメッセージ・フローでのトランスフォーメーションの実行に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG205)を参照してください。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

動的パブリッシュ・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Communication」リストを開きます。

2. 動的パブリッシュ・アクションをメッセージ・フローの適切な場所にドラッグします。

動的パブリッシュ・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、動的パブリッシュ・アクションをクリックします。

2. 動的パブリッシュ・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.5項「動的パブリッシュ・アクションのプロパティ」を参照してください。

2.4.7 メッセージ・フローへの動的ルーティング・アクションの追加と構成

動的ルーティング・アクションは、XQueryリソースで入手できるルーティング情報に基づいて、メッセージのルートを割り当てるために使用します。

ルーティングの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのメッセージ・フローのモデル化に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG181)を参照してください。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

動的ルーティング・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Route Actions」→「Communication」リストを開きます。

2. 動的ルーティング・アクションをメッセージ・フローのルート・アクションにドラッグします。

動的ルーティング・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、動的ルーティング・アクションをクリックします。

2. 動的ルーティング・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.6項「動的ルーティング・アクションのプロパティ」を参照してください。

2.4.8 メッセージ・フローへのエラー・ハンドラの追加と構成

エラー・ハンドラを使用して、メッセージ・フロー内の指定の場所でエラーが発生した場合の処理を指定します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

エラー・ハンドラを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Oracle Service Bus Message Flow」→「Nodes」リストを開きます。

2. エラー・ハンドラをメッセージ・フローの適切な場所にドラッグします。

3. ステージ・ノードをエラー・ハンドラにドラッグします。

4. ステージにエラー・ハンドラを定義するためのアクションを追加します。

エラー・ハンドラを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、エラー・ハンドラをクリックします。

2. 「Error Handler Node Properties」ページで、プロパティを編集します。

3. まだ選択していない場合は、ステージ・ノードをクリックします。

4. 「Stage Node Properties」ページで、プロパティを編集します。

5. ステージに含まれる対象のアクションを選択して編集します。
構成の詳細は、4.11.7項「エラー・ハンドラ・ノードのプロパティ」を参照してください。

2.4.9 メッセージ・フローへのFor-Eachアクションの追加と構成

For-Eachアクションは、一連の値を反復処理してアクションのブロックを実行するために使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

For-Eachアクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Flow Control」リストを開きます。

2. For-Eachアクションをメッセージ・フローの目的のステージ・アクションにドラッグします。

For-Eachアクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、For-Eachアクションをクリックします。

2. For-Eachアクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.8項「For-Eachアクションのプロパティ」を参照してください。

2.4.10 メッセージ・フローへのIf-Thenアクションの追加と構成

XQuery式のブール結果に基づき、1つまたは複数のアクションを条件付きで実行するには、If-Thenアクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

If-Thenアクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで次のいずれかを行います。

- ルート・ノードにあるIf-Thenアクションをまだ開いていない場合は、「Route Actions」→「Flow Control」リストを開きます。

- ステージ・ノードにあるIf-Thenアクションをまだ開いていない場合は、「Stage Actions」→「Flow Control」リストを開きます。

2. If-Thenアクションをメッセージ・フローのルート・ノードまたは目的のステージ・アクションにドラッグします。

If-Thenアクションを構成するには

メッセージ・フロー・エディタで、If-Thenアクションに含まれる個別のIf条件とElse-If条件をクリックし、 4.11.9項「If-Thenアクションのプロパティ」の説明に従って条件エディタで条件を定義します。

2.4.11 メッセージ・フローへの挿入アクションの追加と構成

XPath式で選択したノードを基準に、指定した位置にXQuery式の結果を挿入するには、挿入アクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

挿入アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Message Processing」リストを開きます。

2. 挿入アクションをメッセージ・フローの適切な場所にドラッグします。

挿入アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、挿入アクションをクリックします。

2. 挿入アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.10項「挿入アクションのプロパティ」を参照してください。

2.4.12 メッセージ・フローへのJavaコールアウト・アクションの追加と構成

メッセージ・フローからJavaメソッド、またはEJBビジネス・サービスを呼び出すには、Javaコールアウト・アクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

Javaコールアウト・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Message Processing」リストを開きます。

2. Javaコールアウト・アクションをメッセージ・フローの適切な場所にドラッグします。

Javaコールアウト・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、Javaコールアウト・アクションをクリックします。

2. Javaコールアウト・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.11項「Javaコールアウト・アクションのプロパティ」を参照してください。

2.4.13 メッセージ・フローへのログ・アクションの追加と構成

ログに記録するメッセージを作成し、ログに使用する一連の属性を定義するには、ログ・アクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

ログ・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Reporting」リストを開きます。

2. ログ・アクションをメッセージ・フローの適切な場所にドラッグします。

ログ・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、ログ・アクションをクリックします。

2. ログ・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.12項「ログ・アクションのプロパティ」を参照してください。

2.4.14 メッセージ・フローへのMFL変換アクションの追加と構成

MFL (メッセージ・フォーマット言語)変換アクションを使用して、メッセージ・パイプライン内でメッセージ・コンテンツをXMLとXML以外の形式との間で変換します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

MFL変換アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Message Processing」リストを開きます。

2. MFL変換アクションをメッセージ・フローの適切な場所にドラッグします。

MFL変換アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、MFL変換アクションをクリックします。

2. MFL変換アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.16項「MFL変換アクションのプロパティ」を参照してください。

2.4.15 メッセージ・フローへのオペレーション・ブランチ・ノードの追加と構成

オペレーション・ブランチ・ノードを使用すると、WSDLで定義されているオペレーションに基づいてブランチを構成できます。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

オペレーション・ブランチ・ノードを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Oracle Service Bus Message Flow」→「Nodes」リストを開きます。

2. オペレーション・ブランチ・ノードをメッセージ・フローの適切な場所にドラッグします。

オペレーション・ブランチ・ノードを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、オペレーション・ブランチ・ノードをクリックします。

2. オペレーション・ブランチ・ノードのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.17項「オペレーション・ブランチ・ノードのプロパティ」を参照してください。

2.4.16 メッセージ・フローへのパイプライン・ペア・ノードの追加と構成

パイプライン・ペア・ノードは、リクエストおよびレスポンス処理の定義に使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

パイプライン・ペア・ノードを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Oracle Service Bus Message Flow」→「Nodes」リストを開きます。

2. パイプライン・ペア・ノードをメッセージ・フローの適切な場所にドラッグします。

パイプライン・ペア・ノードを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、パイプライン・ペア・ノードをクリックします。

2. パイプライン・ペア・ノードのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.18項「パイプライン・ペア・ノードのプロパティ」を参照してください。

2.4.17 メッセージ・フローへのパブリッシュ・アクションの追加と構成

静的に指定された、メッセージのターゲット・サービスを指定し、メッセージのパッケージおよびサービスへの送信方法を構成するには、パブリッシュ・アクションを使用します。

パブリッシュの動作の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のメッセージ・フローでのトランスフォーメーションの実行に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG205)を参照してください。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

パブリッシュ・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Communication」リストを開きます。

2. パブリッシュ・アクションをメッセージ・フローの適切な場所にドラッグします。

パブリッシュ・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、パブリッシュ・アクションをクリックします。

2. パブリッシュ・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.19項「パブリッシュ・アクションのプロパティ」を参照してください。

2.4.18 メッセージ・フローへのパブリッシュ表アクションの追加と構成

ゼロまたはそれ以上の静的に指定されたサービスにメッセージをパブリッシュするには、パブリッシュ表アクションを使用します。

パブリッシュの動作の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のメッセージ・フローでのトランスフォーメーションの実行に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG205)を参照してください。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

パブリッシュ表アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Communication」リストを開きます。

2. パブリッシュ表アクションをメッセージ・フローの適切な場所にドラッグします。

パブリッシュ表アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、パブリッシュ表アクションをクリックします。

2. 「Publish Table Action Properties」ページで、「<Expression>」をクリックしてXQuery/XSLT式エディタを表示します。実行時にルーティングの決定を行う値を返すXQuery式を作成します。

3. メッセージ・フロー・エディタで、ケース・アクションを選択します。

4. 「Publish Table Action Properties」ページの「Operator」リストから比較演算子を選択します。その後で、「Value」フィールドに、値を返すXQuery式が評価される対象の値を入力します。

5. メッセージ・フロー・エディタで、パブリッシュ表のパブリッシュ・アクションの1つをクリックして選択します。

6. 「Publish Action Properties」ページで、「Browse」をクリックしてサービスを選択します。指定した値の式による評価がtrueの場合にメッセージをパブリッシュするサービスを選択します。「Select a Service Resource」ダイアログが表示されます。

7. リストからサービスを選択してから、「OK」をクリックします。これがメッセージのターゲット・サービスとなります。

8. サービスの操作がすでに定義されている場合、「invoking」リストから選択して、呼び出す操作を指定できます。

9. アウトバウンド操作をインバウンド操作と同じにする場合、「Use inbound operation for outbound」チェック・ボックスを選択します。

10. 「Request Actions」フィールドで、メッセージのパッケージ方法とサービスへの送信方法を構成し、「Add an Action」をクリックします。次に、このサービスに関連付ける1つ以上のアクションを選択します。

11. 新しいケースを挿入するには、「Case」アイコンをクリックし、「Insert New Case」を選択します。

12. 新しいケースについて、ステップ4 - 8を繰り返します。

13. ビジネス・ロジックで指定されているようにケースを追加します。

14. 最後に定義したケースの「Case」アイコンをクリックして、「Insert Default Case」を選択し、デフォルト・ケースを最後に追加します。

15. デフォルト・ケースを構成します。このケースの構成では、それ以前のケースが満たされていない場合のルーティングの動作を指定します。
詳細は、4.11.20項「パブリッシュ表アクションのプロパティ」を参照してください。

2.4.19 メッセージ・フローへのエラー生成アクションの追加と構成

指定したエラー・コード(文字列)と説明を使用して例外を発生させるには、エラーを発生させるアクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

エラー生成アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Flow Control」リストを開きます。

2. エラーを発生させるアクションをメッセージ・フローの適切な場所にドラッグします。

エラー生成アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、エラー生成アクションをクリックします。

2. エラー生成アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.21項「エラー生成アクションのプロパティ」を参照してください。

2.4.20 メッセージ・フローへの名前変更アクションの追加と構成

XPath式で選択された要素のコンテンツを変更せずに要素名を変更するには、名前変更アクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

名前変更アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Message Processing」リストを開きます。

2. 名前変更アクションをメッセージ・フローの適切な場所にドラッグします。

名前変更アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、名前変更アクションをクリックします。

2. 名前変更アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.22項「名前変更アクションのプロパティ」を参照してください。

2.4.21 メッセージ・フローへの置換アクションの追加と構成

XPath式で指定されたノードまたはノードのコンテンツを置き換えるには、置換アクションを使用します。ノードまたはそのコンテンツは、XQuery式が返した値で置換されます。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

置換アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Message Processing」リストを開きます。

2. 置換アクションをメッセージ・フローの適切な場所にドラッグします。

置換アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、置換アクションをクリックします。

2. 置換アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.23項「置換アクションのプロパティ」を参照してください。

2.4.22 メッセージ・フローへの返信アクションの追加と構成

呼出し元に即時に返信されるように指定するには、返信アクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

返信アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Flow Control」リストを開きます。

2. 返信アクションをメッセージ・フローの適切な場所にドラッグします。

返信アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、返信アクションをクリックします。

2. 返信アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.24項「返信アクションのプロパティ」を参照してください。

2.4.23 メッセージ・フローへのレポート・アクションの追加と構成

プロキシ・サービスのメッセージ・レポートを有効にするには、レポート・アクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

レポート・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Reporting」リストを開きます。

2. レポート・アクションをメッセージ・フローの適切な場所にドラッグします。

レポート・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、レポート・アクションをクリックします。

2. レポート・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.25項「レポート・アクションのプロパティ」を参照してください。

2.4.24 メッセージ・フローへの再開アクションの追加と構成

エラー・ハンドラによってエラーが処理された後で、メッセージ・フローを再開するには、再開アクションを使用します。このアクションにパラメータはありません。このアクションはエラー・パイプラインでのみ使用できます。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

再開アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Flow Control」リストを開きます。

2. 再開アクションをメッセージ・フローの適切な場所にドラッグします。

再開アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、再開アクションをクリックします。

2. 再開アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.26項「再開アクションのプロパティ」を参照してください。

2.4.25 メッセージ・フローへのルート・ノードの追加と構成

ルート・ノードは、ビジネス・サービスとの間でリクエスト・メッセージおよびレスポンス・メッセージのディスパッチの処理に使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

ルート・ノードを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Oracle Service Bus Message Flow」→「Nodes」リストを開きます。

2. ルート・ノードをメッセージ・フローの適切な場所にドラッグします。

ルート・ノードを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、ルート・ノード・アクションをクリックします。

2. ルート・ノードのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.27項「ルート・ノードのプロパティ」を参照してください。

2.4.26 メッセージ・フローへのルーティング・アクションの追加と構成

ルーティング・アクションを使用して、メッセージのターゲット・サービスを識別し、そのサービスにメッセージがルーティングされる方法を構成します。

ルーティングの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのメッセージ・フローのモデル化に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG181)を参照してください。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

ルーティング・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Route Actions」→「Communication」リストを開きます。

2. ルーティング・アクションをメッセージ・フローの適切な場所にドラッグします。

ルーティング・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、ルーティング・アクションをクリックします。

2. ルーティング・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.28項「ルーティング・アクションのプロパティ」を参照してください。

2.4.27 メッセージ・フローへのルーティング・オプション・アクションの追加と構成

ルーティング・オプション・アクションは、アウトバウンド・リクエストのプロパティ(URI、サービス品質、モード、再試行パラメータ、メッセージ優先度)の一部またはすべてを変更するために使用します。

ルーティングの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのメッセージ・フローのモデル化に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG181)を参照してください。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

ルーティング・オプション・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Communication」リストを開きます。

2. ルーティング・オプション・アクションをメッセージ・フローの適切な場所にドラッグします。

ルーティング・オプション・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、ルーティング・オプション・アクションをクリックします。

2. ルーティング・オプション・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.29項「ルーティング・オプション・アクションのプロパティ」を参照してください。

2.4.28 メッセージ・フローへのルーティング表アクションの追加と構成

ルーティング表を使用して、単一のXQuery式の結果に基づいて異なるルートを選択します。ルーティング表アクションは、切替え式の条件表にラップされた一連のルートを含みます。

ルーティングの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのメッセージ・フローのモデル化に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG181)を参照してください。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

ルーティング表アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Route Actions」→「Communication」リストを開きます。

2. ルーティング表アクションを、メッセージ・フローの目的の場所にドラッグします。

ルーティング表アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、ルーティング表アクションをクリックします。

2. ルーティング表アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.30項「ルーティング表アクションのプロパティ」を参照してください。

2.4.29 メッセージ・フローへのサービス・コールアウト・アクションの追加と構成

Oracle Service Busに登録済のプロキシ・サービスまたはビジネス・サービスの同期(ブロック)コールアウトを構成するには、サービス・コールアウト・アクションを使用します。

サービス・コールアウト・アクションの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・コールアウト・メッセージの作成に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1124)を参照してください。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

サービス・コールアウト・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Communication」リストを開きます。

2. サービス・コールアウト・アクションを、メッセージ・フローの目的の場所にドラッグします。

サービス・コールアウト・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、サービス・コールアウト・アクションをクリックします。

2. サービス・コールアウト・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.31項「サービス・コールアウト・アクションのプロパティ」を参照してください。

2.4.30 メッセージ・フローへのスキップ・アクションの追加と構成

スキップ・アクションを使用して、実行時に現在のステージの実行をスキップし、メッセージ・フローの次のステージに処理が進むように指定します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

スキップ・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Flow Control」リストを開きます。

2. スキップ・アクションを、メッセージ・フローの目的の場所にドラッグします。

スキップ・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、スキップ・アクションをクリックします。

2. スキップ・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.32項「スキップ・アクションのプロパティ」を参照してください。

2.4.31 メッセージ・フローへのステージの追加と構成

メッセージ・フローのアクションのコンテナとしてステージ・ノードを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

ステージを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Oracle Service Bus Message Flow」→「Nodes」リストを開きます。

2. メッセージ・フローの目的の位置にステージをドラッグします。

3. 構成のためのアクションをステージに追加します。

ステージを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、ステージをクリックします。

2. ステージ・ノードのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.33項「ステージ・ノードのプロパティ」を参照してください。

2.4.32 メッセージ・フローへのトランスポート・ヘッダー・アクションの追加と構成

メッセージのヘッダーの値を設定するには、トランスポート・ヘッダー・アクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

トランスポート・ヘッダー・アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Communication」リストを開きます。

2. メッセージ・フローの目的の位置にトランスポート・ヘッダー・アクションをドラッグします。

トランスポート・ヘッダー・アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、トランスポート・ヘッダー・アクションをクリックします。

2. トランスポート・ヘッダー・アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.34項「トランスポート・ヘッダー・アクションのプロパティ」を参照してください。

2.4.33 メッセージ・フローへの検証アクションの追加と構成

XMLスキーマ要素またはWSDLリソースに対して、XPath式で選択した要素を検証するには、検証アクションを使用します。

始める前に

目的のプロキシ・サービスのメッセージ・フローを表示します。2.4.1項「プロキシ・サービスのメッセージ・フローの作成」を参照してください。

検証アクションを追加するには:

1. メッセージ・フロー・デザイン・パレットで、まだ開いていない場合は、「Stage Actions」→「Message Processing」リストを開きます。

2. メッセージ・フローの目的の位置に検証アクションをドラッグします 。

検証アクションを構成するには:

1. メッセージ・フロー・エディタで、まだ選択されていない場合は、検証アクションをクリックします。

2. 検証アクションのプロパティ・ページで、対象のプロパティを編集します。
構成の詳細は、4.11.35項「検証アクションのプロパティ」を参照してください。

2.5 アラート宛先の操作

次の項では、Oracle Service Busプラグインでアラート宛先を作成および操作する方法を説明します。

- 2.5.1項「アラート宛先の作成および編集」

- 2.5.2項「アラート宛先への電子メール受信者の追加」

- 2.5.3項「アラート宛先へのJMS宛先の追加」

2.5.1 アラート宛先の作成および編集

アラート宛先を作成するには:

1. Oracle Service Busパースペクティブの「プロジェクト・エクスプローラ」で、アラート宛先を作成するプロジェクトまたはフォルダを右クリックします。

2. メニューから、「ファイル」→「新規」→「アラート宛先」を選択し、新規アラート宛先リソース・ウィザードを表示します。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

アラート宛先は、Oracle Service Busプロバイダでのみ作成できます。

アラート宛先を編集するには:

1. プロジェクト・エクスプローラで、編集するアラート宛先を含むプロジェクト・フォルダを見つけます。

2. アラート宛先の名前をダブル・クリックして、アラート宛先エディタを表示します。必要に応じて、情報を編集します。

構成の詳細は、4.1.1項「アラート宛先エディタ」を参照してください。

2.5.2 アラート宛先への電子メール受信者の追加

アラート宛先に電子メール受信者を追加するには:

1. 2.5.1項「アラート宛先の作成および編集」の説明に従って、アラート宛先を作成または編集します。

2. アラート宛先エディタの「電子メール受信者」フィールドで「追加」をクリックして、電子メール受信者の編集ページを表示します。

2.5.3 アラート宛先へのJMS宛先の追加

アラート宛先にJMS宛先を追加するには:

1. 2.5.1項「アラート宛先の作成および編集」の説明に従って、アラート宛先を作成または編集します。

2. アラート宛先エディタの「JMS宛先」フィールドで「追加」をクリックして、JMS宛先の編集ページを表示します。

2.6 MQ接続の操作

MQ接続は、複数のMQプロキシ・サービスおよびビジネス・サービスで再使用できる、共有可能なリソースです。MQプロキシ・サービスとビジネス・サービスは、MQキューにアクセスする前に、MQキュー・マネージャに接続する必要があります。MQ接続リソースは、MQキュー・マネージャへ接続するための接続要求を行います。

各MQ接続リソースには、接続プールがあります。任意のMQ接続リソースを使用して任意のキュー・マネージャへの接続を取得しているすべてのビジネス・サービスまたはプロキシ・サービスは、そのリソースに対して作成された同じ接続プールを使用します。つまり、同じキュー・マネージャを使用している複数のビジネス・サービスまたはプロキシ・サービスは、接続プールを共有することになります。

Oracle Service BusのMQ接続リソースやネイティブMQトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のMQトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1117)を参照してください。

WebSphere MQの基本的な情報は、http://www.redbooks.ibm.com/redbooks/SG247128/wwhelp/wwhimpl/java/html/wwhelp.htmを参照してください。

2.6.1 MQ接続の追加および編集

Oracle Service BusではMQ接続はカスタム・リソースとして作成されます。したがって、MQ接続を追加するには、次のようにカスタム・リソースとして作成する必要があります。

1. Oracle Service Busパースペクティブで「File」→「New」→「Custom Resource」を選択して、New Custom Resourceウィザードを表示します。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

2. 「Create a New Custom Resource」ページの「Resource Type」フィールドで「MQ Connection」を選択します。

3. カスタムMQの「リソース構成」ページで構成情報を入力します。

注意:

MQ接続リソースにスペースを含めないでください。

MQ接続を編集するには:

1. プロジェクト・エクスプローラで、編集するMQ接続リソースを含むOracle Service Bus構成フォルダを見つけます。

2. MQ接続の名前をダブルクリックして、カスタムMQの「リソース構成」ページを表示します。

構成の詳細は、4.5.4項「カスタムMQの「リソース構成」ページ」を参照してください。

2.7 Oracle Enterprise Repositoryおよびハーベスタの操作

Oracle Enterprise Repositoryは、アプリケーションのリソースとサービスのためのエンタープライズ・メタデータ・リポジトリです。Oracle Service RegistryやOracle UDDIソリューションとOracle Enterprise Repositoryを組み合せて使用することは、Oracle Service Busを介したエンタープライズ全体のサービスの検索、使用、同期および管理のベストプラクティス・アプローチです。

ハーベスタはOracle Enterprise Repositoryのツールです。このツールを使用すると、Oracle Service Busを含む複数のリソースからOracle Enterprise Repositoryへのエンタープライズ・アーティファクトのハーベストを実行できます。

Oracle Service Busでは、開発環境においてOracle Enterprise Repositoryおよびハーベスタにネイティブ接続が提供され、リポジトリからのビジネス・サービスの生成と、リポジトリへのOracle Service Busプロジェクトのハーベスト実行の両方を行うことができます。ハーベスタでは、実行時環境でOracle Service Busプロジェクトのハーベストを実行するためのコマンドライン・スクリプトも提供されます。

Oracle Enterprise Repositoryの詳細は、Oracle Fusion MiddlewareのOracle Enterprise Repositoryクイック・スタート・ガイドを参照してください。

この項の内容は次のとおりです。

- 2.7.1項「Oracle Enterprise Repositoryからビジネス・サービスを生成する」

- 2.7.2項「ハーベスタの使用」

- 2.7.3項「EclipseによるOracle Enterprise Repositoryでの問合せの実行」

2.7.1 Oracle Enterprise Repositoryからビジネス・サービスを生成する

Oracle Service Bus開発環境でビジネス・サービスをOracle Enterprise Repositoryのサービス・アセットから生成できます。

ベストプラクティス・デプロイメント・シナリオでは、Oracle Enterprise Repositoryのサービス・アセットには、Oracle Service Registryに格納されているサービスが関連付けられています。ビジネス・サービスをOracle Enterprise Repositoryアセットから生成するとき、Oracle Service Bus UDDIリソースによって、レジストリに格納されている関連サービスとそれらのサービスを同期できます。

ここでは、開発環境を使用して、Oracle Enterprise Repositoryのサービス・アセットからビジネス・サービスを生成する手順を説明します。

注意:

Oracle Service Busでビジネス・サービスを生成するには、Oracle Enterprise RepositoryアセットがHTTPを使用するSOAP/XML WSDLベース・サービスであることが必要です。

1. Oracle Enterprise Repositoryで問合せを実行し、ビジネス・サービスの生成元のサービスを探します。2.7.3項「EclipseによるOracle Enterprise Repositoryでの問合せの実行」を参照してください。

2. 新しいビジネス・サービスを生成するサービス・アセットを右クリックし、Oracle Service Bus→ビジネス・サービスの生成を選択します。

3. ビジネス・サービスの生成ウィンドウで、新しいビジネス・サービスのEclipseにおける場所を選択し、エンドポイントを選択します。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

ビジネス・サービスをOracle Service Busで生成するためには、サービス・アセットにエンドポイントが必要です。

4. Oracle Enterprise RepositoryアセットがOracle Service Registryに関連付けられている場合は、「次へ」をクリックして、実行時にOracle Service Registryに接続するOracle Service Bus UDDI Registryリソースを構成します(それ以外の場合は、次のステップに進みます)。Oracle Enterprise Repositoryアセットでは、Oracle Service Registryへの照会URLが自動的に提供されます。
UDDIレジストリの構成ウィンドウには、一致するUDDIレジストリ・リソースの選択、一致しないUDDIレジストリ・リソースの選択、新しいUDDIレジストリ・リソースの作成、またはUDDIの不使用というオプションがあります。

新しいUDDIレジストリ・リソースを作成するオプションを選択した場合は、4.14項「「UDDIレジストリの構成」ページ」の手順を参照してください。

5. 「終了」をクリックすると、ビジネス・サービスを生成されます。
新しいHTTPビジネス・サービスと、それに関連するWSDLおよびXSDが開発環境に追加されます。

Oracle Enterprise Repositoryアセット・エンドポイントがOracle Service Registryのサービスに関連付けられている場合、ビジネス・サービスの構成には、Oracle Service Registryインスタンスに対するUDDI接続の詳細が含まれます。

6. Oracle Enterprise RepositoryアセットがOracle Web Services ManagerポリシーまたはWS-Policyを参照していても、生成されるビジネス・サービスにポリシーは自動的に含まれません。Oracle Web Services ManagerポリシーおよびWS-Policyを手動で追加する必要があります。ただし、WSDLベース・ポリシーは自動的に含まれます。

開発環境では、Oracle Service Registryへのサブスクリプションを確立しません。Oracle Service Registryに対するサブスクリプションとサービスの同期が行われるのは、ビジネス・サービスをOracle Service Bus実行時環境にデプロイするときです。サービスの同期は、UDDIレジストリ・リソースの自動インポート設定で決まります。

UDDIの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「UDDI」(http://www.oracle.com/pls/as111170/lookup?id=OSBAG392)を参照してください。

2.7.2 ハーベスタの使用

ハーベスタでは、Eclipse、コマンドライン、AntタスクまたはWLSTスクリプトを使用して、Oracle Service BusプロジェクトをOracle Enterprise Repositoryに発行できます。

ハーベストの2つの概念は、ローカル・ハーベストとリモート・ハーベストです。ローカル・ハーベストはEclipseや特定のコマンドライン・スクリプトで実行され、プロジェクトをファイル・システムからリポジトリに発行します。リモート・ハーベストは、コマンドライン・スクリプトで実行され実行時環境からプロジェクトを発行します。

リソースのハーベストを実行するとき、依存関係はOracle Enterprise Repositoryで維持されます。

表2-1では、適切なハーベスト・シナリオの決定に役立つシナリオの相違について説明します。

表2-1 ハーベスト・シナリオの相違点

Eclipseハーベスト

ローカル・ハーベスト

リモート・ハーベスト

1つのプロジェクトのハーベスト、または複数のプロジェクトを含むOracle Service Bus構成のハーベストを実行できます。

コマンドライン・スクリプトを使用して、ファイル・システムの構成JARからOracle Service Busアーティファクトのハーベストを実行できます。構成JARのすべてのプロジェクトまたは選択したプロジェクトのハーベストを実行できます。

コマンドライン・スクリプトを使用して、実行時環境の構成JARからOracle Service Busアーティファクトのハーベストを実行できます。構成JARのすべてのプロジェクトまたは選択したプロジェクトのハーベストを実行できます。

プロキシ・サービスのエンドポイント・アセットはリポジトリに作成されません。

プロキシ・サービスのエンドポイント・アセットはリポジトリに作成されません。

プロキシ・サービスのエンドポイント・アセットがリポジトリに作成されます。

Eclipseまたはローカル・ハーベストでハーベストを実行したサービスに対してリモート・ハーベストを実行すると、ローカルでハーベストを実行されたのと同じサービスに、新たに作成されるサービス・エンドポイントが追加されます。

サービスWSDL(有効なWSDL)が、localhost:7001のようなローカル・アドレスでリポジトリに生成されます。

サービスWSDL(有効なWSDL)が、localhost:7001のようなローカル・アドレスでリポジトリに生成されます。

サービスWSDL(有効なWSDL)が、サーバー・ランタイム・アドレスでリポジトリに生成されます。

Oracle Service Busでハーベスタを使用する前には、Oracle Fusion Middleware Oracle Enterprise Repository構成ガイドの設計時環境および実行時環境での自動ハーベストの構成と使用に関する説明を参照してハーベスタ・ソリューション・パックをインストールしてください。

次に、Eclipse、ローカルおよびリモートのハーベストについて説明します。

2.7.2.1 Eclipseでのハーベスタの使用

Eclipse用のOracle Service Busプラグインにより、Oracle Enterprise Repositoryに対するプロジェクトのハーベストのための組込み機能が提供されます。

Eclipseでのアセットのハーベスト方法の詳細は、表2-1を参照してください。

EclipseでOracle Service Busプロジェクトのハーベストを実行するには:

1. 「Project Explorer」ビューで、ハーベストを実行するプロジェクトを右クリックし、「Submit Project to Enterprise Repository」を選択します。
Oracle Service Busの構成プロジェクトを右クリックして、その構成内のすべてのプロジェクトのハーベストを実行することもできます。

2. Submitウィンドウで、リポジトリのURIやログイン資格証明など、リポジトリへの接続に関する詳細を入力します。
2.7.3項「EclipseによるOracle Enterprise Repositoryでの問合せの実行」に従って、Oracle Enterprise Repositoryへの接続を前に構成している場合は、その構成の詳細がデフォルトで表示されます。

オプションとして次のように設定できます。

- プロジェクトとそのアーティファクトのネームスペースを入力します。ネームスペースは、Oracle Enterprise Repositoryの問合せ結果でサービス・アセット名の前に付きます。

- アーティファクトの登録ステータスを選択できます。たとえば、テストのためにアーティファクトのハーベストを実行する場合は、「Unsubmitted」など適切なステータスを選択します。

- デフォルトの接続タイムアウト(ミリ秒単位)を変更します。

- プロジェクトのデフォルトの説明を変更します。

3. 「発行」をクリックします。アップロードの進行中はアクティビティ・バーがスクロールします。アップロードが終了したら、「閉じる」をクリックします。

4. ハーベストを実行したリソースを確認するには、2.7.3項「EclipseによるOracle Enterprise Repositoryでの問合せの実行」に従って、Oracle Enterprise Repositoryで問合せを実行します。

2.7.2.2 コマンドラインまたはスクリプトでのハーベスタの使用

Oracle Service Busでは、AntタスクまたはWLSTスクリプトを使用してコマンドラインからOracle Service Busプロジェクトのハーベストを実行するために必要な組込みハーベスタ・リソースが提供されます。これらのリソースは次の場所にあります。

OSB_ORACLE_HOME/harvester

このディレクトリのメインの構成ファイルはHarvesterSettings.xmlで、これには、Oracle Enterprise Repositoryへの接続のプレースホルダー構成、ローカル・ハーベスト設定およびリモート・ハーベスト設定が含まれます。コマンドライン・ハーベスタは、このファイルにある構成の詳細と、ユーザーが指定するオーバーライド構成スイッチを使用してハーベストを実行します。

ローカル・ハーベストとリモート・ハーベストの基本は次のとおりです。

- ローカル・ハーベスト - ローカル・ハーベストでは、ファイル・システムにOracle Service Bus構成JARが生成され、ハーベストの対象としてそのJARを指定します。JARのすべてのプロジェクトにハーベストが実行されます。
Oracle Service Bus構成JARの生成の詳細は、2.1.11項「リソースのエクスポート」または『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のリソースのエクスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1320)を参照してください。

- リモート・ハーベスト - リモート・ハーベストでは、実行中のOracle Service Busインスタンスでスクリプトを指定し、1つのプロジェクトまたはOracle Service Bus構成全体をハーベスト対象として指定します。

使用するハーベスト・オプションの決定に役立つ情報は、表2-1を参照してください。

Oracle Service Busでは、コマンドラインのAntおよびWLSTによるハーベストについてガイダンスとリソース・ファイルが用意されています。詳細は、OSB_ORACLE_HOME/harvester/README.TXTファイルを参照してください。

README.TXTファイルにはOracle Service Bus固有のガイダンスが含まれます。この情報およびOracle Service Bus Harvesterリソースを、Oracle Fusion Middleware Oracle Enterprise Repository構成ガイドの設計時環境および実行時環境での自動ハーベストの構成と使用に関する説明のコマンドラインとスクリプトの詳しい説明と一緒に使用してください。README.TXTファイルに記載されているオプションのみがOracle Service Busでサポートされます。

プロジェクトのハーベストを実行したら、EclipseでOracle Enterprise Repositoryの問合せを行い、ハーベストを実行したリソースを確認できます。2.7.3項「EclipseによるOracle Enterprise Repositoryでの問合せの実行」を参照してください。

注意:

すべてのプロジェクトのハーベストを実行するOracle Service Busハーベスタの他に、コマンドライン・フレームワークではWSDL、XSD、XSLT、WS-Policyなど個々のリソースのための組込みハーベスタもサポートされます。ただし、Oracle Service Busでは、Oracle Service Bus 11g以上のリリースでのこれらのハーベスタの使用はサポートされません。

個々のリソース(Oracle SOA Suite、Oracle WebLogic ServerまたはプレーンWSDLなどのリソース)のハーベスト実行のためには、ハーベスタ・ベース・データ・パックをダウンロードしてください。

2.7.3 EclipseによるOracle Enterprise Repositoryでの問合せの実行

次の手順は、EclipseでOracle Enterprise Repositoryに接続して問合せを実行する方法を示します。問合せにより、ビジネス・サービスを生成するサービス・アセットの検索、リポジトリでのアセットのブラウズ、アセットの詳細や関係の表示を行うことができます。

1. Eclipseで、「Window」→「Show View」→「Other」を選択し、「Oracle Enterprise Repository」→「Enterprise Repository Access」を選択します。

2. 「Enterprise Repository Access」ビューで「Connect to enterprise repository」アイコンをクリックします。

3. Enterprise Repository Connectionウィンドウで、リポジトリのURLおよびログイン資格証明を入力し、「Establish Connection」をクリックします。

4. 接続が成功したら「終了」をクリックします。

5. Oracle Enterprise Repositoryに接続すると、リポジトリを問い合せて必要なサービスとアセットを探すことができます。たとえば、サービス・アセットを検索するには、「問合せ」画面の「すべてのタイプ」フィールドの「サービス」を選択して、問合せの実行アイコンをクリックします。
「Enterprise Repository Access」ビューが「Results」画面に切り替わり、問合せ結果が表示されます。

Eclipseで「Enterprise Repository Asset Relationships」ビューを開いて、選択したアセット間の関係をグラフィック表示することもできます。、「Window」→「Show View」→「Other」を選択し、「Oracle Enterprise Repository」→「Enterprise Repository Asset Relationships」を選択します。

EclipseでのOracle Enterprise Repositoryの操作の詳細は、Oracle Fusion Middleware Oracle Enterprise Repository統合ガイドを参照してください。

2.8 UDDIレジストリの操作

Universal Description, Discovery and Integration (UDDI)レジストリは、企業でWebサービスを共有するために使用されます。UDDIは、企業のビジネス、ビジネス・サービス、および公開するサービスの技術的な詳細を分類するためのフレームワークを提供します。

レジストリへサービスをパブリッシュするには、サービス・タイプと、レジストリ内でそのサービスを表すデータ構造の知識が必要です。レジストリ・エントリには、特定のプロパティが関連付けられ、これらのプロパティ・タイプはレジストリの作成時に定義されます。レジストリにサービスをパブリッシュして、他の組織がそのサービスを検出して使用できるようにすることが可能です。Oracle Service Busで開発されたプロキシ・サービスは、UDDIレジストリにパブリッシュできます。Oracle Service Busは任意のUDDIバージョン3.0に適合したレジストリと相互作用します。

『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「UDDI」も参照してください。

2.8.1 UDDIレジストリの追加および構成

UDDIレジストリを追加するには:

1. Oracle Service Busパースペクティブで「ファイル」→「新規」→「UDDIレジストリ」を選択して、新規UDDIリソース・ウィザードを表示します。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

注意:

UDDIレジストリは、Oracle Service Bus構成プロジェクトにのみ追加できます。

2. 場所を選択して名前を入力したら、 「UDDIレジストリの構成」ページでレジストリを構成します。

注意:

UDDIレジストリは、Oracle Service Bus構成プロジェクトでのみ追加できます。

UDDIレジストリを構成するには:

1. プロジェクト・エクスプローラで、構成するUDDIレジストリを見つけます。

2. レジストリの名前をダブル・クリックします。

3. 「UDDIレジストリの構成」ページで構成オプションを設定します。

構成の詳細は、4.14項「「UDDIレジストリの構成」ページ」を参照してください。

2.8.2 UDDIレジストリからのビジネス・サービスのインポート

注意:

UDDIレジストリからビジネス・サービスを直接インポートするだけでなく、Oracle Enterprise Repositoryからビジネス・サービスを生成できます。詳細は、2.2.3項「Oracle Enterprise Repositoryからビジネス・サービスを生成する」を参照してください。

UDDIレジストリからビジネス・サービスをインポートするには:

1. 2.2.1項「ビジネス・サービスの作成」に示されているように、ビジネス・サービスを作成します。

2. New Business Serviceウィザードの「Business Service General Configuration」ページで、「WSDL Web Service」を選択します。次に、「Browse」をクリックします。

3. 「Select a WSDL」ダイアログで「Consume」をクリックします。

4. 「Service Consumption」ダイアログで「UDDI」を選択します。

2.9 分割-結合の操作

このセクションでは、分割-結合の作成と構成の手順を説明します。次に、この項の主な内容を示します。

- 2.9.1項「分割-結合の概要」

- 2.9.2項「分割-結合の設計」

- 2.9.3項「静的な分割-結合の設計」

- 2.9.4項「動的な分割-結合の設計」

特定の構成の詳細は、4.22項「分割-結合ユーザー・インタフェース・リファレンス」を参照してください。

2.9.1 分割-結合の概要

分割-結合は、Oracle Service Busメッセージ・フローのトランスポート型ビジネス・サービスによって使用される調停パターンです。分割-結合を使用すると、複数のサービスに同時にメッセージ・リクエストを送信できるので、メッセージ・リクエストを順次送信する場合と比較してパフォーマンスが改善します。分割-結合は、入力メッセージを個別のメッセージに分割し、それらを同時に宛先へルーティングして、レスポンスを1つの総合的な返信メッセージに集約することで、この作業を実現します。

Eclipseの分割-結合エディタで分割-結合を設計してから、テストと本番のためにOracle Service Bus管理コンソールにエクスポートします。

注意:

Oracle Service Bus管理コンソールでは、分割-結合は、フロー転送プロトコルを使用してビジネス・サービスと関連付けられます。そのため、このドキュメントでは常に「分割-結合」と簡単に呼んでいますが、Eclipseにおいて分割-結合には.flowというファイル拡張子が付きます。

2.9.2項「分割-結合の設計」で説明されるように、静的な分割-結合と動的な分割-結合の2つの分割-結合パターンがあります。

Oracle Service Busメッセージ・フローからのビジネス・サービスの呼出しの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のプロキシ・サービスのメッセージ・フローに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1102)を参照してください。

2.9.1.1 SOAPヘッダー内のコンテンツでの分割-結合の使用

分割-結合を使用して、SOAPヘッダーにメッセージ・コンテンツを格納するサービスのパフォーマンスを向上させることができます。プロキシ・サービスはSOAPヘッダーを分割-結合に渡すことができます。そして、分割-結合が呼出しまたはレスポンスとしてSOAPヘッダーをプロキシとビジネス・サービスに渡すことができます。

この機能を有効にするには、分割-結合WSDLと 分割-結合によって呼び出されるプロキシやビジネス・サービスのWSDLに、単一のリクエスト・メッセージまたはレスポンス・メッセージに本文部分とヘッダー部分を宣言する必要があります。メッセージ部分をWSDLに宣言すると、分割-結合でリクエスト/レスポンス・メッセージ変数にSOAPヘッダー・コンテンツを利用できます。

次に、WSDLでのメッセージとバインディング定義の例を示します。

メッセージ

<wsdl:message name="retrieveCustomerOverviewByIdRequestMessage">
<wsdl:part name="retrieveCustomerOverviewByIdRequest"
element="co:retrieveCustomerOverviewByIdRequest"/>
<wsdl:part name="serviceContext" element="sc:serviceContext"/>
</wsdl:message>

バインディング

<wsdl:input>
<soap:body use="literal" parts="retrieveCustomerOverviewByIdRequest"/>
<soap:header message="tns:retrieveCustomerOverviewByIdRequestMessage"
part="serviceContext" use="literal"/>
</wsdl:input>

2.9.1.2 トランザクション・サポート

分割-結合ではトランザクションの伝播がサポートされます。多数の分割-結合操作には、トランザクション・サポートを制御する特定のサービス品質(QoS)値を設定するオプションがあります。分割-結合操作で「必ず1回」というQoS値を設定すると、トランザクションが存在する場合に操作がトランザクションのコンテキストで必ず実行されます。

個々の操作にQoSを設定すると、単一の分割-結合操作において、トランザクションのコンテキストで複数の操作を実行し、その他の操作をトランザクション外で実行する柔軟性が得られます。QoSが「必ず1回」に設定された操作はトランザクションで実行されます。QoSが「ベスト・エフォート」に設定された操作はトランザクションのコンテキストでは実行されません。

分割-結合では、例外時のトランザクション・ロールバックが処理されません。トランザクションの例外とロールバックの処理は、分割-結合と呼ばれるサービス・コンポーネントが担当します。

次の分割-結合操作では、トランザクションの伝播がサポートされます。

- サービスの呼出し

- 割当て

- 削除

- 挿入

- Javaコールアウト

- 置換

2.9.1.3 分割-結合のセキュリティ

分割-結合では、セキュリティ・ポリシーは施行されません。つまり、ポリシーを含むWSDLを備えた分割-結合は作成できません。また、WSDLポリシーを含むWSDLベースのビジネス・サービスを分割-結合から呼び出すことはできません。

分割-結合を使用するときにセキュリティを確実に施行するには、プロキシ・サービスを使用して次のようにセキュリティの施行を処理します。

- 分割-結合を呼び出すインバウンド・プロキシを使用し、ポリシーを施行します。

- 分割-結合でポリシーを含むWSDLビジネス・サービスを呼び出す必要がある場合は、分割-結合でローカル・プロキシ(セキュリティ・ポリシーなしの構成)を呼び出し、必要なポリシーを含むビジネス・サービスをそのローカル・プロキシで呼び出すようにします。

2.9.2 分割-結合の設計

分割-結合には、静的な分割-結合と動的な分割-結合の2つのパターンがあります。

静的な分割-結合は、固定した数(数が不明な場合に対して)のメッセージ・リクエストの作成に使用できます。たとえば、顧客が、インターネット・サービス、TVサービス、電話サービスという3つの独立したサービスを含むケーブル・パッケージの注文を行う場合です。静的な使用例では、3つのリクエストすべてを分割したパラレル・ブランチで実行できるため、標準的な順次実行と比較して実行時間のパフォーマンスが改善されます。

動的な分割-結合は、数が変化するメッセージ・リクエストの作成に使用できます。たとえば、個別の発注数が変化する注文を小売業者が一括して行う場合です。動的な使用例では、一括注文を解析して発注ごとに分離したメッセージ・リクエストを作成できます。静的な使用例と同様に、これらのメッセージはパラレルに実行できるため、パフォーマンスが改善されます。

2.9.2.1 初期設定

分割-結合の初期設定では、次の作業を行う可能性があります。

2.9.2.1.1 基本操作を含むWSDLの作成またはインポート

すべての分割-結合はWSDL操作に基づいています。分割-結合を初めて作成する際には、適切なWSDLファイルを指定し、作成プロセスの一部としてこの操作を選択するように求められます。このWSDLファイルは、Eclipseで作成できます。

2.9.2.1.2 分割-結合で使用するビジネス・サービスの作成またはインポート

すべての分割-結合は、トランスポート型ビジネス・サービスによって使用されます。言い換えるとプロキシ・サービスによって呼び出されます。ビジネス・サービスの作成が終了しなければ、分割-結合のエクスポートやテストを行うことはできません。ビジネス・サービスがすでに存在している場合は、これをEclipseにインポートすることができます。存在していない場合はEclipseまたはOracle Service Bus管理コンソールで作成できます。ビジネス・サービスを作成する前に分割-結合を開始する場合は、分割-結合の作成後にビジネス・サービスを自動的に生成できます。

2.9.3 静的な分割-結合の設計

ここでは、テレビ、電話、インターネット・サービスを含んだ電話会社のケーブル・サービスのパッケージの注文を処理する「サービスの利用可能性」という名前の新しい分割-結合を設計するものとします。パッケージの注文を受信し、各種類のサービスに対して受注確認を返信するというのが、分割-結合での考え方になります。この例では、注文ごとに各タイプのサービスについて3つのメッセージ・リクエストがあるので、「サービスの利用可能性」は「静的」な分割-結合として設計されます。この例では、顧客はテレビとDSLサービスのみをリクエストします。

「サービスの利用可能性」分割-結合の作成には次の手順が含まれます。

2.9.3.1項「1.新しい分割-結合の作成」

2.9.3.2項「2.割当ての追加」

2.9.3.3項「3.パラレル・ノードの追加」

2.9.3.4項「4.各ブランチに対する割当ての追加」

2.9.3.5項「5.サービス呼出しの追加」

2.9.3.6項「6.各ブランチに対する割当ての追加」

2.9.3.7項「7.分割-結合のエクスポートとテスト」

2.9.3.1 1. 新しい分割-結合の作成

注文の実行に使用するWSDL操作に基づいて分割-結合を作成します。この例では、WSDL操作を「telecom」と呼びます。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

WSDL操作を選択すると、次の図に示すように、新しく作成された分割-結合のスケルトンが分割-結合エディタに表示されます。スケルトンは開始ノード、受信ノード、返信ノードから構成されます。「全般プロパティ」タブにあるこれらのラベルは、この特定の分割-結合の各ノードに固有の機能をより適切に反映したものに編集されます。

図2-1 新しい分割-結合

開始ノードには、最初に選択されたWSDL操作によって決定されたリクエスト変数とレスポンス変数が両方とも含まれます。受信ノードでは受信リクエスト・メッセージ(この例では3種類以下のケーブル・サービス)を受信し、返信ノードではレスポンス・メッセージを生成して、これをクライアントに戻します。

注意:

受信ノードには、これ以上の構成は必要ありません。同様に、返信ノードには、エラーを生成する場合を除き、これ以上の構成は必要ありません。上記のシナリオにエラーの生成はありません(エラーの生成の詳細は、2.9.15項「返信の構成」を参照)。

2.9.3.2 2. 割当ての追加

最初の割当てである「出力メッセージの用意」には、後からノードのデータで作業(つまり、データのコピー、挿入、割り当て、置換、削除、Javaコールアウト、ログなど)できるような形でレスポンス変数を用意する割当て操作が含まれます。この出力メッセージは、分割-結合の最終的な返信ノードに中継され、その結果、元のクライアントに戻ります。

2.9.3.3 3. パラレル・ノードの追加

パラレル・ノードには、ケーブルTVの利用可能性のチェックと、DSLの利用可能性のチェックの2つの主要ブランチがあります。各ブランチはいくつかのアクションで構成されており、そのシーケンスと全体的な構成は両方のブランチで同じになっています。

図2-2 パラレル・ノード

2.9.3.4 4. 各ブランチに対する割当ての追加

各パラレル・ブランチの最初の割当てである「入力アドレスの用意」では、その場所でサービスが利用できるかどうかをチェックするために、受信した顧客アドレス・データを参照されている変数にコピーします。この割当ては、各ブランチに対して同じになっており、これはブランチが追加される場合でも同様です。

2.9.3.5 5. サービス呼出しの追加

次に外部サービスが呼び出されて、リクエストされたサービスのタイプが顧客のいる場所で利用可能であるかどうかがチェックされます。各ブランチには、1つのサービスを呼び出す、「TVの利用可能性のチェック」、および「DSLの利用可能性のチェック」が含まれます。それぞれの外部サービスの呼出しでは、顧客のアドレス(前の手順で初期化された変数に格納されている)が、その場所でのサービスの利用可能性と比較されます。結果は出力変数に格納され、次の手順であるブランチの最終的な割当てに渡されます。

2.9.3.6 6. 各ブランチに対する割当ての追加

最終的な2つの割り当て、「出力メッセージのケーブルTVステータスの更新」と「出力メッセージのDSLステータスの更新」では、外部サービス呼出しの結果を取得し、置換操作を使用して、これを出力メッセージに入れます。集約されたレスポンスは、これ以上の構成が必要でない最終的な返信ノードにある元のクライアントに送信されます。

2.9.3.7 7. 分割-結合のエクスポートとテスト

分割-結合の設計が終了したら、テストと本番用にOracle Service Bus管理コンソールにエクスポートできます。

図2-3 テスト前の完成した分割-結合

関連項目

- 2.9.5項「新しい分割-結合の作成」

- 2.9.6項「開始ノードの構成」

- 2.9.8項「割当ての作成」

- 2.9.9項「サービスの呼出し」

- 2.9.10項「パラレルの作成」

- 2.9.17項「分割-結合のエクスポートとテスト」

2.9.4 動的な分割-結合の設計

小売業者からの一括注文を処理する分割-結合を設計する場合を考えてみます。一括注文内の個別の発注の数は(発注数が固定してる注文とは異なり)変化します。一括注文を受信し、その中にある各注文に受注確認を返信するというのが、分割-結合での考え方になります。個別の発注数リクエストの数は変化し、設計時にその数を知ることはできないので、これは動的な分割-結合になります。

動的な分割-結合の作成には次の手順が含まれます。

2.9.4.1項「1. 新しい分割-結合の作成」

2.9.4.2項「2. 割当ての追加」

2.9.4.3項「3. For Eachの追加」

2.9.4.4項「4. 割当ての追加」

2.9.4.5項「5. サービス呼出しの追加」

2.9.4.6項「6. 割当ての追加」

2.9.4.7項「7. エラー・ハンドラの追加」

2.9.4.8項「8. 分割-結合のエクスポートとテスト」

2.9.4.1 1. 新しい分割-結合の作成

注文の実行に使用するWSDL操作に基づかない分割-結合を作成します。この例では、WSDL操作を「batchOrders」と呼びます。

命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

この操作が選択されると、開始ノード、受信ノード、返信ノードから構成される新しく作成された分割-結合のスケルトンが、分割-結合エディタに表示されます。「全般プロパティ」タブにあるこれらのラベルは、この特定の分割-結合の各ノードに固有の機能をより適切に反映したものに編集されます。

図2-4 新しい分割-結合(ラベルの編集)

開始ノードである「注文の実行」には、リクエスト変数inputVarとレスポンス変数outputVarの両方が含まれます。受信ノードである「一括注文リクエストの受信」は、リクエスト変数(この例の場合は発注)の内容を初期化し、返信ノードである「注文の実行への返信」は、レスポンス変数に集約された受注確認に基づいてレスポンスをクライアントへ戻します。この例では、「注文の実行」には、個別の注文を承認するために呼び出される外部サービス「Order」へのコールアウトが含まれています。

注意:

受信ノードには、これ以上の構成は必要ありません。同様に、返信ノードには、エラーを生成する場合を除き、これ以上の構成は必要ありません。上記のシナリオにエラーの生成はありません(エラーの生成の詳細は、2.9.15項「返信の構成」を参照)。

2.9.4.2 2. 割当ての追加

最初の割当てである「出力メッセージの用意」には、後からレスポンス変数(ここでは理解を容易にするために「出力メッセージ」というラベルになっています)をノード内にキャプチャしたデータで作業(つまり、変数へのコピー、挿入、割り当て、置換、削除)できるような形で用意する割当て操作が含まれます。この例の場合、データは受注確認やエラーで構成されます。この出力メッセージは、分割-結合の最終的な返信ノードに中継され、その結果、元のクライアントに戻ります。

2.9.4.3 3. For Eachの追加

For Eachである「注文全体で繰返し」には、一括注文内にある個別の注文を1つずつ解析して、承認のために外部プロキシに送信し、レスポンス内にある受注確認をキャプチャするロジックが含まれます。注文に問題がある場合、呼び出されたプロキシからエラーが送信され、エラー・ハンドラでキャプチャされます。次の図にFor Eachロジックのスコープ全体を示します。

図2-5 「注文全体で繰返し」というラベルのFor Eachノード

2.9.4.4 4. 割当ての追加

割当て「発注の準備」は、受信発注リクエストを、次の手順で承認をチェックするために参照される変数にコピーします。

2.9.4.5 5. サービス呼出しの追加

次に外部サービス「注文の有効性のチェック」が呼び出され、個別の発注ごとに承認を行います。注文が受け入れられる場合、サービスは受注確認で応答します。注文が受け入れられない場合、サービスはエラーで応答します。この結果は出力変数に格納され、次の手順で説明する最終的な割当てに渡されます。

2.9.4.6 6. 割当ての追加

最終的な割当てである「出力メッセージの注文ステータスの更新」は、外部サービス呼出しの結果を取得し、挿入操作を使用してこの結果を出力メッセージにコピーします。集約されたレスポンスは、これ以上の構成が必要でない最終的な返信ノードにある元のクライアントに送信されます。

2.9.4.7 7. エラー・ハンドラの追加

エラー・ハンドラは、呼び出されたサービスから返されたすべてのエラーをキャプチャします。エラー・ハンドラは、エラーを取得し、割当て操作を使用してこれを出力メッセージに挿入します。

図2-6 エラー・ハンドラ

2.9.4.8 8. 分割-結合のエクスポートとテスト

分割-結合の設計が終了したら、テストと本番用にOracle Service Bus管理コンソールにエクスポートできます。

図2-7 テスト前の完成した分割-結合

関連項目

- 2.9.5項「新しい分割-結合の作成」

- 2.9.6項「開始ノードの構成」

- 2.9.13項「エラー・ハンドラの作成」

- 2.9.10項「パラレルの作成」

- 2.9.15項「返信の構成」

- 2.9.17項「分割-結合のエクスポートとテスト」

2.9.5 新しい分割-結合の作成

新しい分割-結合を作成するには、分割-結合の基盤となる操作を含むWSDLにアクセスできる必要があります。分割-結合は、既存のOracle Service Bus構成プロジェクト内のOracle Service Busプロジェクトで作成する必要があります。

新しい分割-結合を作成するには:

1. Oracle Service Busパースペクティブで、「ファイル」→「新規」→「分割-結合」を選択します。新しい分割-結合サービス・ウィザードが開きます。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

2. 新しい分割-結合サービス・ウィザードで、Oracle Service Busプロジェクトの場所を入力または選択して、新しい分割-結合のファイル名を入力します。完了したら、「次へ」をクリックします。

3. 次の画面で、バインディングと、分割-結合を実装する操作を選択する必要があります。次の2通りの選択方法があります。

1. 操作の選択ツリーに表示されているWSDLのいずれかから操作を選択します。現在のOracle Service Bus構成プロジェクトのすべてのWSDLが使用できます。

2. 「消費」ボタンを使用して、WSDLをOracle Service Bus構成プロジェクトにインポートします。次の手順に示すように、基本的に、消費では、新しいWSDLが外部リソースから構成にインポートされます。

4. 基盤となるWSDLを消費する場合は、次の手順を実行します。

1. 「Consume」をクリックします。

2. 消費されるWSDLを生成する場所(アーティファクト・フォルダ)を参照します。デフォルトのアーティファクト・フォルダは、現在のOracle Service Busプロジェクトです。

3. 既存のローカル・ファイルを上書きする場合は、チェック・ボックスを選択します。

4. 消費されるWSDLが配置されるサービス・リソースを選択します(エンタープライズ・リポジトリ、ファイル・システム、UDDI、URI、またはワークスペース)。

5. そのサービス・リソースから消費するWSDLを選択します。選択したら、ワークスペースがすぐに再構築され、消費のステータスを示す「Service Consumption Status」ダイアログが表示されます。成功したら、「OK」を選択してダイアログを閉じます。

6. 消費されるWSDLがOracle Service Bus構成プロジェクトに置かれ、そこから、分割-結合の基盤となる操作を選択できるようになります。

5. 「終了」をクリックします。

基本的な分割-結合が作成され、デザイン・ビューにダイアグラムとして表示されます。デフォルトでは、開始ノード、受信、および返信で構成されています。開始ノードには、WSDL操作からイントロスペクトされるリクエスト変数およびレスポンス変数が含まれています。受信は、着信リクエスト・メッセージを受信するために使用されます。返信は、レスポンス・メッセージを送信するために使用されます。

関連項目

- 2.9.6項「開始ノードの構成」

- 2.9.7項「受信の構成」

- 2.9.10項「パラレルの作成」

- 4.22.31項「分割-結合ウィザード - 新しい分割-結合」

2.9.6 開始ノードの構成

開始ノードは、新しい分割-結合を作成するたびに、自動的に生成されます。これは、その他のすべてのノードを実行するための出発点です。開始ノードの構成には、次の作業が含まれます。

- 全般的な情報の追加

- グローバル変数の定義

- 外部サービスの表示

関連項目

- 2.9.9項「サービスの呼出し」

- 4.22.2項「グローバル/開始ノードのプロパティ」

2.9.6.1 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.6.2 グローバル変数の定義

開始ノードの変数には、分割-結合のノードによってグローバルに参照されるデータが格納されます。デフォルトでは、分割-結合が最初に作成されるときに、すべてのプロセス・ノードに、リクエストおよびレスポンスの両方の変数が割り当てられます。開始ノードから、新しいグローバル変数を作成するか、または既存のグローバル変数を編集することができます。

グローバルとローカル変数の関係の詳細は、2.9.16.1項「スコープおよび変数」を参照してください。

新しいグローバル変数を作成するには:

1. 開始ノードを右クリックし、「Create Variable」 を選択して、「Create Variable」ダイアログを開きます。

2. 変数の名前を入力します。

3. 変数の型(「組込み」、「スキーマ」、または「メッセージ」)を選択します。

4. 変数を選択します。

注意:

「スキーマ」または「メッセージ」タイプの変数を選択するには、階層をドリル・ダウンする必要がある場合があります。

5. 「OK」をクリックします。

まだ開いていない場合は、開始ノード・アイコンの左側の矢印をクリックして、コンテンツ領域を展開します。新しく作成された変数が、その他のグローバル変数と共に「変数」フィールドに表示されます。変数の詳細を表示するには、その変数を選択します。プロパティ・ビューに、その構造が表示されます。

既存のグローバル変数を編集するには:

1. 次のいずれかの方法で、「変数の編集」ダイアログを開きます。

- 選択した変数を右クリックして、コンテキスト・メニューから「Edit Variable」を選択します。

- 変数を選択し、変数のプロパティ・ビューで「Edit」 をクリックします。

2. 変数の名前を入力します。

3. 変数の型(「組込み」、「スキーマ」、または「メッセージ」)を選択します。

4. 変数を選択します。

注意:

「スキーマ」または「メッセージ」タイプの変数を選択するには、階層をドリル・ダウンする必要がある場合があります。

5. 「OK」をクリックします。

まだ開いていない場合は、コンテンツ領域を開始ノード・アイコンの左側に展開します。新しく作成された変数が、その他のグローバル変数と共に「変数」フィールドに表示されます。変数の詳細を表示するには、その変数を選択します。プロパティ・ビューに、その構造が表示されます。

2.9.6.3 外部サービスの表示

開始ノード に示されている「外部サービス」は、分割-結合のコンテキストの外部で呼び出されるサービスです。これらは、サービスの呼出しで指定されていますが、容易に使用できるようにリストされています。

「外部サービス」を表示するには、開始ノード・アイコンの左側の矢印をクリックして、コンテンツ領域を展開します。「外部サービス」を選択する場合、サービスに関連付けられるサービスを呼び出すことを指す破線の青い矢印が表示され、サービスの場所がプロパティ・ビューに表示されます。

2.9.7 受信の構成

新しい分割-結合を作成するたびに、受信が自動的に生成されます。受信の目的は、着信リクエスト・データを変数に入れ、後のノードでコンテンツを使用できるようにすることです。受信の構成には、次の作業が含まれます。

- 操作の表示

- 受信変数の定義

- 全般的な情報の追加

関連項目

4.22.24項「受信のプロパティ」

2.9.7.1 操作の表示

操作は、分割-結合全体に対して最初に選択されたWSDLに基づきます。これは、参照用としてプロパティ・ビューに表示されています。

2.9.7.2 受信変数の定義

受信が初期化する着信メッセージ変数を定義する必要があります。

1. 受信操作を選択します。

2. 新しいメッセージ変数を作成します(次の手順を参照)。

注意:

前に選択した操作に関連付けられているメッセージ変数がない場合は、新しいメッセージ変数を作成する必要があります。

新しいメッセージ変数を作成するには、「Message Variable」メニューから「Create Message Variable」を選択し、「Create Variable」ダイアログで変数名を入力し、「OK」をクリックします。

変数を定義すると、プロパティ・ページに「メッセージ・タイプ・ネームスペース」と「メッセージ・タイプ」が自動的に表示されます。

2.9.7.3 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.8 割当ての作成

割当ては、変数の初期化や更新などのデータ操作に使用されます。割当てツール・バーから追加できる1つまたは複数の操作のセットから構成されます。割当ての構成には、次の作業が含まれます。

- 割当て操作の追加および構成

- 全般的な情報の追加

関連項目

4.22.17項「割当てのプロパティ」

2.9.8.1 割当て操作の追加および構成

割当て操作には、割り当て、コピー、削除、挿入、Javaコールアウト、ログ、および置換があります。各割当ては、これらの1つまたは複数の操作から構成されます。この操作をデザイン・パレット・ビューから追加できます。

注意:

分割-結合エディタの割当て操作は、基本的には、Eclipseメッセージ・フロー・エディタの対応するアクションと同じです。ただし、重要な相違点の1つとして、XQuery、XSLTまたはXPathエディタを使用して、分割-結合コンテキストの式を編集する場合に、使用可能なのは、分割-結合に対して内部である変数およびネームスペースのみであるという点があります。

各操作の簡単な説明を次に示します。

- 変数にXQuery式の結果を割り当てます。
割当ての構成の詳細は、4.22.17項「割当てのプロパティ」を参照してください。

- XPath式で指定された情報を、ソース・ドキュメントから、宛先ドキュメントにコピーします。(これは、分割-結合に固有の操作で、2.9.8.1.2項「コピー操作の追加」で説明されるようにEclipseメッセージ・フロー・エディタでは対応するアクションはありません)。

- XPath式で指定されたノードのセットを削除します。

注意:

Oracle Service Busの削除とは異なり、変数全体ではなくXPath式のみを分割-結合から削除できます。

削除操作の構成の詳細は、4.22.19項「削除のプロパティ」を参照してください。

- XPath式で選択したノードを基準として特定された場所にXQuery式の結果を挿入します。
挿入操作の構成の詳細は、4.22.20項「挿入のプロパティ」を参照してください。

- Javaコールアウトにより、検証、トランスフォーメーション、およびロギングなどの処理のJavaメソッドを呼び出すことができます。
Javaコールアウト操作の構成の詳細は、4.22.21項「Javaコールアウトのプロパティ」を参照してください。

- ログにより、サーバー・ログ・ファイルに分割-結合データを特定の重大度でログできます。
ログ操作の構成の詳細は、4.22.22項「ログのプロパティ」を参照してください。

- XPath式で指定されたノードまたはノードのコンテンツを置き換えます。
置換操作の構成の詳細は、4.22.23項「置換のプロパティ」を参照してください。

2.9.8.1.1 割当てへの操作の追加

割り当てへの操作の追加には、次のステップが含まれます:

1. デザイン・パレットから操作を分割-結合エディタの割当てノードにドラッグします。

2. プロパティ・ビューで、操作を構成します。

3. 分割-結合を保存します。

操作を選択し、プロパティ・ビューでプロパティを変更することで操作を編集できます。

2.9.8.1.2 コピー操作の追加

コピー操作を使用すると、Xpath式で指定された情報を、ソース・ドキュメントから、宛先ドキュメントにコピーできます。これは、分割-結合エディタに固有の操作です。割当てへのコピー操作の追加には、次のステップが含まれます:

1. デザイン・パレットから割当てにコピー操作を追加します。

2. プロパティ・ビューで、「Copy From」のタイプと「Copy To」のタイプを選択します。

3. タイプが式の場合は、式を手動で入力するか、または、「Browse」をクリックして、XQuery式ビルダーを起動します。

4. タイプが変数の場合は、目的の要素までドリル・ダウンして、選択します。下の「問合せ」フィールドに、結果として生じる問合せが表示されます。

5. 「コピー元の選択」のタイプがリテラルの場合は、テキスト・フィールドにリテラルを入力します。

6. 「コピー元の選択」のタイプがXMLフラグメントの場合は、テキスト・フィールドにフラグメントを入力(または貼付け)します。

2.9.8.2 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.9 サービスの呼出し

サービスを呼び出す操作を使用して、外部、WSDLベースのビジネス・サービス、WSDLベースのプロキシ・サービス、および分割-結合を呼び出すことができます。サービスを呼び出すの構成には、次の作業が含まれます。

- 操作の選択

- 入力変数および出力変数の定義

- 全般的な情報の追加

関連項目

- 2.9.6項「開始ノードの構成」

- 2.9.16項「スコープについて」

- 4.22.5項「サービスの呼出しのプロパティ」

2.9.9.1 操作の選択

サービスを呼び出すで使用する操作を選択する必要があります。入力変数および出力変数を定義する前に、この操作を選択する必要があります。操作を選択するには:

1. デザイン・パレットからサービスを呼び出す操作を分割-結合に追加します。

2. プロパティ・ビューの「Operations」タブで「Browse」をクリックし、サービス・ブラウザを起動します。

3. サービス・ブラウザで、必要なサービスまでドリル・ダウンして、バインディングを選択してから操作を選択します。

4. 「OK」をクリックします。選択された操作とそのサービスの場所がプロパティ・ビューに表示されます。

注意:

プロパティ・ビューで「サービスの場所」をクリックすると、外部のサービス・ファイルが開かれます。

2.9.9.2 入力変数および出力変数の定義

サービスを呼び出すには、一方向呼出しでないかぎり、入力変数および出力変数の両方が必要です。これらの変数を構成する手順は、基本的には同じです。いずれのタイプの変数も、グローバル(分割-結合全体で使用可能)にすることも、ローカル(特定のコンテキストのスコープ内で使用可能)にすることもできます。入力変数または出力変数を定義するには:

プロパティ・ビューの「入力変数」タブと「出力変数」タブでそれぞれのメッセージ変数を定義します。これには2通りの方法があります。

- 「メッセージ変数」メニューから既存の変数を選択します。

- 新しいメッセージ変数を作成します(次の手順を参照)。

注意:

前に選択した操作に関連付けられているメッセージ変数がない場合は、新しいメッセージ変数を作成する必要があります。

新しいメッセージ変数を作成するには:

1. 「Message Variable」メニューから「Create Message Variable」を選択します。「Create Variable」ダイアログが表示されます。

2. 変数の名前を指定します。

3. 変数をグローバルまたはローカルにします。グローバル変数は、分割-結合全体でアクセスできますが、ローカル変数は、現在のスコープ内に制限されます。

変数を定義すると、プロパティ・ビューに「メッセージ・タイプ・ネームスペース」と「メッセージ・タイプ」が自動的に表示されます。

2.9.9.3 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.10 パラレルの作成

パラレルは、固定数の構成済パラレル・ブランチを作成します。各ブランチは、任意の数のノードを含めることができるそれぞれのスコープを持ちます。パラレルの構成には、次のタスクを含めることができます。

- ノードの追加

- 全般的な情報の追加

関連項目

- 2.9.16項「スコープについて」

- 4.22.10項「パラレルのプロパティ」

2.9.10.1 ノードの追加

パラレルは、基本的には、固定数の処理ブランチのプレースホルダーであり、各ブランチは、それぞれのスコープを持ちます。デフォルトでは、2つのブランチが自動的に生成されます。個々のスコープには、構成に応じて、ユニークな処理ロジックを含めることができます。これは、適切なノードをスコープにドラッグするだけで行えます。「スコープの追加」ボタンを使用して、追加のブランチを追加できます。

図2-8 「Add Scope」ボタン

2.9.10.2 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.11 For Eachの作成

For Eachは、リクエストの数に応じて反復する条件付きロジックを作成するために使用します。これは、主に動的な分割-結合を作成するために使用されます。For Eachの構成には、次の作業があります。

- For Eachロジックの定義

- 全般的な情報の追加

関連項目

- 2.9.9項「サービスの呼出し」

- 4.22.7項「For Eachのプロパティ」

2.9.11.1 For Eachロジックの定義

For Eachロジックを定義するには:

1. 分割-結合にFor Eachノードを追加し、選択します。

2. プロパティ・ビューで、「Counter Variables」タブを選択し、パラレル・プロパティを「Yes」または「No」に設定します。「Yes」を選択した場合、個別のブランチは並行処理されます。「いいえ」を選択した場合、個別のブランチは順次処理されます。

3. 「Counter Name」リンクをクリックしてカウンタ変数名を定義します。

4. 「Start Counter Value」を入力します。必要に応じて、「Browse」ボタンを使用してXPath式ビルダーで新しい値を作成します。

注意:

カウンタの最も小さな開始値は「1」です。

5. 「Final Counter Value」を入力します。必要に応じて、「Browse」ボタンを使用してXPath式ビルダーで新しい値を作成します。

注意:

カウンタの最も小さな開始値は「1」です。

2.9.11.2 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.12 Ifアクティビティの作成

If条件は、分割-結合内で条件付きロジックを提供するために使用されます。If条件全体の動作を決定する多数のノードから構成されます。各ノードを個別に構成する必要があります。Ifアクティビティを作成すると、アクティビティ内にIfおよびElseが自動的に生成されます。Else Ifの追加ボタンを使用して、Else Ifノードを無制限に追加できます。

図2-9 「Add Else If」ボタン

Ifアクティビティの構成には、次の作業が含まれます。

- Ifの構成

- Else Ifの追加および構成

- Elseの構成

関連項目

- 2.9.16項「スコープについて」

- 2.9.4項「動的な分割-結合の設計」

- 4.22.8項「Ifのプロパティ」

- 4.22.12項「Repeat Untilのプロパティ」

- 4.22.15項「Whileのプロパティ」

2.9.12.1 Ifの構成

Ifは、Ifアクティビティ全体内で、1つの条件付きロジックを提供します。これは、Ifアクティビティを作成すると自動的に生成されます。Ifの構成には、次の作業が含まれます。

- 条件のロジックの記述

- 結果としてのノードの追加

- 全般的な情報の追加

関連項目

- 4.22.9項「IfとElse Ifのプロパティ」

- 4.22.12項「Repeat Untilのプロパティ」

- 4.22.15項「Whileのプロパティ」

2.9.12.1.1 条件のロジックの記述

Ifアクティビティは、XPath式で定義された条件付きロジックを実行します。この条件を「Condition」タブの「Condition」テキスト・フィールドに入力するか、または「Browse」ボタンをクリックし、式ビルダーを起動して、式を書き込みます。

2.9.12.1.2 結果としてのノードの追加

Ifロジックの条件に合致した場合、結果として1つまたは一連のノードが実行されます。結果としてのノードを追加および構成するには、それらのノードを、「If」アイコンの下のドロップ・ポイントに順番にドラッグします。

2.9.12.1.3 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.12.2 Else Ifの追加および構成

Else Ifは、If全体のコンテキスト内で、追加のロジックを提供するために使用されます。「Add Else If」ボタンを押して、いつでもElse Ifを追加できます。

図2-10 「Add Else If」ボタン

Else Ifの構成には、次の作業が含まれます。

- 条件のロジックの記述

- 結果としてのノードの追加

- 全般的な情報の追加

関連項目

- 4.22.9項「IfとElse Ifのプロパティ」

- 4.22.12項「Repeat Untilのプロパティ」

- 4.22.15項「Whileのプロパティ」

2.9.12.2.1 条件のロジックの記述

Else Ifは、XPath式で定義された条件付きロジックを実行します。この条件を「Condition」タブの「Condition」テキスト・フィールドに入力するか、または「Browse」ボタンをクリックし、式ビルダーを起動して、式を書き込みます。

2.9.12.2.2 結果としてのノードの追加

Else Ifロジックの条件に合致した場合、結果として1つまたは一連のノードが実行されます。結果としてのノードを追加および構成するには、それらのノードを、「Else If」アイコンの下のドロップ・ポイントに順番にドラッグします。

2.9.12.2.3 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.12.3 Elseの構成

Elseアクティビティは、If全体のコンテキスト内で、ロジックの最後の段階を提供します。これは、Ifが作成されるときに、自動的に生成されます。Elseの構成には、次の作業が含まれます。

- 結果としてのノードの追加

- 全般的な情報の追加

関連項目

- 4.22.9項「IfとElse Ifのプロパティ」

- 4.22.12項「Repeat Untilのプロパティ」

- 4.22.15項「Whileのプロパティ」

2.9.12.3.1 結果としてのノードの追加

Ifのロジックにおける最後の段階であるため、Elseでは、実行するために条件に合致する必要はありません。呼び出されると、自動的に、結果としてのアクティビティが実行されます。結果としてのノードを追加および構成するには、それらのノードを、「Else」アイコンの下のドロップ・ポイントに順番にドラッグします。

2.9.12.4 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.13 エラー・ハンドラの作成

エラー・ハンドラは、エラーを受信して、処理します。開始ノードに付加されている場合は、「グローバル」エラー・ハンドラであり、すべてのローカルのエラー生成ノードの出力に対して、すべてをキャッチします。スコープに付加されている場合は、ローカルで発生したエラーのみを処理します。エラー・ハンドラを作成するには:

1. エラー・ハンドラの追加先である開始ノードまたはスコープ・ノードを選択します。

2. 選択済アイコンを右クリックし、「Add Catch」または「Add CatchAll」を選択します。

3. SOAPフォルトを呼び出す場合は、プロパティ・ビューの「Catch All」タブで「SOAP Fault Variable Name」を選択し、エラー・ハンドラに関連付けられるSOAPフォルト変数を定義します。

基本的なエラー・ハンドラは構成されましたが、レスポンスを送信する前に受信したエラーでロジックを実行するかどうかに応じて、エラー・ハンドラにその他の割り当て、If、および返信ノードを追加する必要がある場合があります。

関連項目

- 2.9.8項「割当ての作成」

- 2.9.12項「Ifアクティビティの作成」

- 2.9.10項「パラレルの作成」

- 2.9.16項「スコープについて」

- 4.22.4項「エラー・ハンドラのプロパティ」

2.9.14 「エラーを発生させる」の作成

「エラーを発生させる」は、分割-結合の通常の処理を停止させるエラーを発生させます。エラー・ハンドラを使用せずにエラーが処理されると、分割-結合は終了し、Oracle Service Busメッセージ・フローにエラーが送信されます。「エラーを発生させる」の構成には、「一般情報」タブへのエラーの性質の入力が含まれます(オプション)。

エラー・ハンドラに「エラーを再発生させる」操作も追加できます。構成では、ラベルの変更とドキュメントの追加を行います。

関連項目

4.22.11項「エラーの生成のプロパティ」

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、開発者のメモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューを開き、「Label」フィールドに一意の識別文字列を入力します。入力したラベルは、キャンバス領域のノード・アイコンの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.15 返信の構成

新しい分割-結合を作成するたびに、グローバルな返信が自動的に生成されます。グローバルな返信の目的は、呼び出しているOracle Service Busメッセージ・フローに、レスポンスを送り返すことです。ただし、返信を分割-結合でのエラー・ハンドラ内、または他の場所にも生成できます。返信の構成には、次の作業が含まれます。

- 操作の表示

- 返信変数の定義

- 全般的な情報の追加

関連項目

4.22.6項「返信のプロパティ」

2.9.15.1 操作の表示

操作は、分割-結合全体に対して最初に選択されたWSDLに基づきます。これは、参照用としてプロパティ・ビューに表示されています。

2.9.15.2 返信変数の定義

返信は、変数の構成に応じて、レスポンスまたはフォルトをクライアントに送り返すことができます。使用できるエラーのオプションは、返信がグローバルかローカルかによって異なります。

- グローバルな返信(つまり、分割-結合でのエラー・ハンドラの外に生成される返信)には、SOAPフォルトは含まれませんが、WSDLフォルトが含まれる場合があります。これは、SOAPフォルト・オプションは常に無効になっているためです。

- ローカルな返信(つまり、エラー・ハンドラに付加された返信)は、WSDLフォルトまたはSOAPフォルトを持つことができます。WSDLフォルトは、分割-結合の基盤となるWSDLで定義されている場合にのみ使用できます。SOAPフォルトは、以前にエラー・ハンドラで定義されていれば、常に使用することができます。

注意:

「Response」および「Fault」ボタンを使用して切り替えると、それぞれの構成がクリアされます。たとえば、以前にフォルトの構成で「Propagate SOAP Fault」を選択していて、「Response」の構成に切り替えると、「Propagate SOAP Fault」の選択が解除されます。

上記の使用可能なオプションを考慮して、返信変数に、レスポンスまたはフォルトを選択してください。

レスポンスを選択する場合、レスポンスが割り当てられるメッセージ変数を定義する必要があります。これには2通りの方法があります。

1. 返信を選択し、プロパティ・ビューで「変数」タブを選択します。

2. 「メッセージ変数」メニューから既存の変数を選択します。

3. 新しいメッセージ変数を作成します(次の手順を参照)。

注意:

前に選択した操作に関連付けられているメッセージ変数がない場合は、新しいメッセージ変数を作成する必要があります。

新しいメッセージ変数を作成するには、「Message Variable」メニューから「Create Message Variable」を選択します。「Create Variable」ダイアログが表示されます。

1. 変数の名前を指定します。

2. 「OK」をクリックします。

変数を定義すると、プロパティ・ビューに「メッセージ・タイプ・ネームスペース」と「メッセージ・タイプ」が自動的に表示されます。

「Fault」を選択する場合は、「WSDL Fault」または「SOAP Fault」の伝播を選択する必要があります。

注意:

状況によっては、フォルトが使用できない、またはSOAPフォルトしか使用できない場合があります。前述の注意を参照してください。

WSDLフォルトを選択する場合、フォルトを名前で指定し、フォルトが割り当てられるメッセージ変数を定義する必要があります。

1. 「WSDL Fault Name」を選択し、使用可能なものの中から名前を選択します。

注意:

使用できる名前が1つしかない場合があります。その場合は選択する必要はありません。

2. メッセージ変数を定義します。これには2通りの方法があります。

1. 「メッセージ変数」メニューから既存の変数を選択します。

2. 新しいメッセージ変数を作成します(次の手順を参照)。

注意:

以前に選択した操作に関連付けられているメッセージ変数がない場合は、新しいメッセージ変数を作成する必要があります。

新しいメッセージ変数を作成するには、「Message Variable」メニューから「Create Message Variable」を選択します。「Create Variable」ダイアログが表示されます。

1. 変数の名前を指定します。

2. 「OK」をクリックします。

変数を定義すると、プロパティ・ページに「メッセージ・タイプ・ネームスペース」と「メッセージ・タイプ」が自動的に表示されます。

「SOAPフォルトの伝播」を選択すると、親エラー・ハンドラで指定されているSOAPフォルトが、返信で自動的に伝播されます。他に構成するものはありません。

2.9.15.3 全般的な情報の追加

全般的な情報は、ノードをより理解しやすくするために役立ちます。全般的な情報では、ノードにユニークなID、またはラベルを追加したり、メモまたはドキュメントでそれらを補完したりできます。全般的な情報は、省略可能です。

1. ノードにラベルを追加するには、プロパティ・ビューで「全般」タブを選択し、「ラベル」フィールドにユニークな識別文字列を入力します。入力したラベルは、分割-結合エディタでノードの下に表示されます。

2. 「ドキュメント」フィールドに重要なノートを入力します。

2.9.16 スコープについて

スコープは、様々な要素をまとめるコンテナです。このコンテナは、それに含まれる要素の動作に影響を与えるコンテキストを作成します。スコープ内に定義されているローカル変数およびエラー・ハンドラは、このコンテキストに制限されます。ただし、スコープ内の一部のノードは、ローカル(スコープ内)にも、グローバル(スコープ外)にも動作する場合があります。たとえば、特定のスコープ内に呼び出したサービスにより、そのスコープのコンテキストの外のサービスが呼び出される場合もあります。

2.9.16.1 スコープと変数

変数は定義されるスコープ内やそのスコープ内にネストされたすべてのスコープに表示できますが、外部のスコープに宣言される変数と同じ名前の変数が内部のスコープに宣言される場合、外部のスコープの変数が非表示になります。たとえば、外部のスコープ(So)にmyVarという変数を定義した後、外部のスコープにある内部のスコープ(Si)にもmyVar変数を定義する場合、内部のスコープ(Si)に定義したmyVarにのみアクセスできます。このmyVarにより、スコープSo.で定義されたmyVarがオーバーライドされます。

関連項目

4.22.14項「スコープのプロパティ」

2.9.17 分割-結合のエクスポートとテスト

トランスポート型ビジネス・サービスと関連付けられているOracle Service Busサーバーである場合、Oracle Service Busサーバー上で分割-結合のエクスポートとテストを実行できます。分割-結合のエクスポートとテストには、次の手順があります。

- トランスポート型ビジネス・サービスの作成

- 分割-結合ファイルのエクスポート

- テスト・コンソールによる分割-結合のテスト

2.9.17.1 トランスポート型ビジネス・サービスの作成

分割-結合は、特定のトランスポート型ビジネス・サービスで使用されます。適切なビジネス・サービスがない場合、分割-結合のエクスポートやテストを行う前に、ビジネス・サービスを作成する必要があります。ビジネス・サービスの作成には、次の2通りの方法があります。

1. EclipseまたはOracle Service Bus管理コンソールでビジネス・サービスを手動で作成します。

2. 分割-結合(..flow)のメニューからビジネス・サービスを次のように自動的に作成します。

1. プロジェクト・エクスプローラで分割-結合(..flow)ファイルを右クリックし、「分割-結合」メニューを開きます。

2. 「Oracle Service Bus」を選択します。

3. 「Generate Business Service」を選択します。

4. 新しいサービスに名前を付け、プロジェクトに保存します。
命名ガイダンスについては2.1.1項「リソースの命名制限」を参照してください。

ビジネス・サービスが作成されると、エラーがなければ、分割-結合をエクスポートできます。

注意:

関連するビジネス・サービスを分割-結合として同じOracle Service Busプロジェクトに置いておくと作業上便利です。また、関連付けが容易になるように、ビジネス・サービスに分割-結合と同じ名前を付けておくことも役に立ちます。

2.9.17.2 分割-結合ファイルのエクスポート

エラーがなければ、分割-結合をOracle Service Busサーバーにエクスポートできます。

注意:

エラーは分割-結合エディタの「問題」ビューに表示されます。エラーのある分割-結合をエクスポートしようとすると、エクスポートは失敗します。

分割-結合のエクスポートには、次の3通りの方法があります。

1. ビジネス・サービスのメニューからのエクスポート

2. 自動エクスポート

3. 手動エクスポート

2.9.17.2.1 ビジネス・サービスのメニューからのエクスポート

ビジネス・サービスのメニューから分割-結合を直接エクスポートすることができます。この方法によるエクスポートではOracle Service Busテスト・コンソールが自動的に起動されるため、エクスポートとテストの両方を行う場合に便利です。ビジネス・サービスのメニューからのエクスポートには、次のステップが含まれます:

1. プロジェクト・エクスプローラで、エクスポートまたはテストを行うためにビジネス・サービス(..bizファイル)を右クリックします。

2. 「Run as」を選択します。

3. 「Run on server」を選択します。「Run on server」ダイアログが開きます。

4. 既存のサーバーを選択するか、新しいサーバーを定義して、次の手順に進みます。

5. 「プロジェクトの追加と除去」ウィンドウでは、ビジネス・サービスを含むOracle Service Busプロジェクトと、その他のすべての依存ファイルが構成とエクスポート用にあらかじめ選択されています。依存ファイルなしでビジネス・サービスをテストすることはできないので、これらのファイルは削除できません。そのため、分割-結合全体がエクスポートされます。

6. 「終了」を選択すると、Oracle Service Busテスト・コンソールが起動します。これで、ビジネス・サービスのテストができるようになりました。

2.9.17.2.2 自動エクスポート

分割-結合はOracle Service Busサーバーに自動的にエクスポートできます。この方法を使用する場合、エクスポートされたファイルをテストするには、手動でOracle Service Bus管理コンソールを起動する必要があります。自動エクスポートには、次のステップが含まれます:

1. 「File」→「Export」を選択します。

2. 「Oracle Service Bus」を選択します。

3. 「Resources to Oracle Service Bus Server」を選択します。これにより、リソースがOracle Service Busサーバーにエクスポートされますが、Oracle Service Busテスト・コンソールは起動されません。Oracle Service Bus管理コンソール・アプリケーション内でテスト・コンソールを手動で起動する必要があります。

2.9.17.2.3 手動エクスポート

分割-結合はOracle Service Busサーバーに手動でエクスポートできます。この方法を使用する場合、エクスポートされたファイルをテストするには、手動でOracle Service Bus管理コンソールを起動する必要があります。手動エクスポートには、次のステップが含まれます:

1. 「File」→「Export」を選択します。

2. 「Oracle Service Bus」を選択します。

3. 「Resources as Configuration JAR」を選択し、次の手順に進みます。

4. 「Oracle Service Bus構成Jarエクスポート」ウィンドウで、次のオプションを構成します。

1. エクスポートするファイルを含んでいるOracle Service Bus構成ファイルを選択します。

2. プロジェクト全体をエクスポートするのか、個別のファイルをエクスポートするのかに応じて、「Export Level」を「Project」または「Resource」に設定します。エクスポート・レベルに基づいて、下にあるツリーで選択できるものが変化します。

3. 構成JARにエクスポートされるプロジェクトやリソースを選択します。

4. 選択したファイルと依存関係にあるすべてのファイルをエクスポートする場合は、「Include Dependencies」を選択します。

5. エクスポートされたJARファイルの宛先を参照します。

6. 「終了」をクリックしてJARファイルをエクスポートします。

5. Oracle Service Bus管理コンソールを使用してJARファイルをインポートします。

注意:

EclipseからOracle Service Bus管理コンソールにすばやくアクセスするには、サーバーを右クリックして「Launch Service Bus Console」を選択します。

2.9.17.3 テスト・コンソールによる分割-結合のテスト

分割-結合は、Oracle Service Busテスト・コンソールで、分割-結合を使用するビジネス・サービスを実行することでテストできます。テストは、分割-結合エディタ内に行うか、または分割-結合をOracle Service Busサーバーにエクスポートして行うことができます。IDE内で分割-結合のテストを行うには、分割-結合を使用するビジネス・サービスのメニューを使用して、ファイルをエクスポートする必要があります。

2.9.17.3.1 ビジネス・サービスのメニューからのエクスポート

分割-結合は、ビジネス・サービスのメニューから直接エクスポートしてテストすることができます。この方法を使用する場合、エクスポートはOracle Service Busテスト・コンソールの起動中にバックグラウンドで実行されます。ビジネス・サービスのメニューからのエクスポートには、次のステップが含まれます:

1. プロジェクト・エクスプローラで、エクスポートまたはテストを行うためにビジネス・サービス(..bizファイル)を右クリックします。

2. 「次として実行」を選択します。

3. 「Run on server」を選択します。「Run on server」ダイアログが表示されます。

4. 既存のサーバーを選択するか、新しいサーバーを定義して、次の手順に進みます。

5. 「プロジェクトの追加と除去」ウィンドウでは、ビジネス・サービスを含むOracle Service Busプロジェクトと、その他のすべての依存ファイルが構成とエクスポート用にあらかじめ選択されています。ビジネス・サービスは依存ファイルなしではテストできないので、依存ファイルを削除することはできません。

「終了」をクリックすると、Oracle Service Busテスト・コンソールが起動します。これで、ビジネス・サービスのテストができるようになりました。

注意:

この時点では、Oracle Service Busテスト・コンソールのみが表示されていますが、分割-結合全体がOracle Service Busサーバーにエクスポートされています。

2.10 Oracle Service Busデバッガの使用

Oracle Service Busでは、Eclipseデバッグ・フレームワークを拡張して、プロキシ・サービス・メッセージ・フローおよび分割-結合用のデバッグ機能を提供します。

Oracle Service Busデバッガでは、Javaコールアウトを処理できます。また、並列処理を使用する分割-結合でのマルチ・スレッド・デバッグをサポートします。リモート・サーバーでデバッグを実行することもできます。

Oracle Service Busデバッガを使用する2つの方法は次のとおりです。

- 2.10.2項「標準デバッグの使用」 - ローカル・コンピュータでのデバッグ用に、自動化されたサービス・デバッグ機能を提供します。

- 2.10.3項「Oracle Service Busデバッガ起動構成の使用」 - Oracle Service Busデバッガ環境をより詳細に手動で制御できます。

2.10.1 デバッグの有効化

Oracle Service Busのデバッグは、開発モードで実行されているサーバーで自動的に有効になります。新しいドメインを作成するときは、次のエントリが<domain>/bin/setDomainEnvスクリプトに追加されます。

set ALSB_DEBUG_FLAG=true

set ALSB_DEBUG_PORT=7453

Oracle Service Busのデバッグ機能を無効にする場合は、ALSB_DEBUG_FLAG=falseを設定します。

本番モードでサーバーを起動する場合、Oracle Service Busのデバッグは自動的に無効になります。

2.10.2 標準デバッグの使用

プロキシ・サービスまたは分割-結合をデバッグするには、それらをデバッグ・モードで実行する必要があります(2.10.3項「Oracle Service Busデバッガ起動構成の使用」で説明されているデバッガ起動構成を使用しない場合)。

プロキシ・サービスまたは分割-結合をデバッグするには:

1. メッセージ・フローまたは分割-結合でブレークポイントを設定して、それらのポイントでのテストの実行を自動的に一時停止します。フロー・エディタでアクションを右クリックし、「Toggle Breakpoint」を選択します。

2. デバッグ・モードでサーバーを起動します。サーバーの起動時には、Eclipseが、図2-11に示すデバッグ・パースペクティブに自動的に切り替えられます。

3. プロキシ・サービス・ファイルまたはビジネス・サービス・ファイルが開いてアクティブな状態で、サーバー上のEclipseで「Run」→「Debug As」→「Debug」を選択します。
「サーバーでデバッグ」ウィンドウで、Oracle Service Bus構成をデプロイ済のサーバー、または構成をデプロイするサーバーを選択し、ウィザードの手順を完了します。

「デバッグ」オプションを使用すると、Javaデバッガが自動的に有効になり、サービスのJavaコールアウトを処理できます。

4. Oracle Service Busテスト・コンソールが表示されます。テストを実行します。デバッグ・ビューで実行スレッドを確認し、やり取りを行うことができます。テストを進める場合、デバッガでは、図2-11に示すように、テストの現在のステージがサービスのフロー・ビューで強調表示されます。

テスト・コンソールを使用してサービスのテストを実行したり、デバッガを使用したりする必要はありません。また、JMSメッセージを書き込む方法や、ファイル・プロキシ・サービスのディレクトリ内のファイルを削除する方法でサービスを実行することもできます。

リモート・サーバーでデバッグする場合は、そのリモート・サーバーでサービスを実行し、デバッグ・ビューでテストを行います。リモート・サーバーがデバッグ・モードではなく通常モードで実行されている場合は、 2.10.3項「Oracle Service Busデバッガ起動構成の使用」で説明されているデバッガ起動構成を使用します。

Oracle Service Busデバッガの様々なデバッグ・ビューの詳細は、2.10.2.1項「デバッグ・ビュー」を参照してください。

2.10.2.1 デバッグ・ビュー

このセクションでは、サービスのデバッグ時に使用できる様々なビュー(図2-11)について説明します。

図2-11 プロキシ・サービスのデバッグ

デバッグ・パースペクティブには、サービスのデバッグに使用する次の主要なビューがあります。

- デバッグ・ビュー - デバッグ・ビューには、Oracle Service Bus呼出しスタックと現在の実行スレッドが表示されます。また、デバッグ・ビューには、現在の場所からテストを再開したり、ステップ・アクション(ステップ・イン、ステップ・オーバー、ステップ・リターン)を実行したりするためのツール・バーがあります。テストを行うときに、ローカル・サービスをテストしている場合は、現在の操作がサービスのフロー・ビューで強調表示されます。コンソール・ビューにはエラーが表示されます。

- コンソール・ビュー - コンソール・ビューには、サーバー・メッセージ(サービスの実行時に発生したランタイム・エラー)が表示されます。

- 変数ビュー - 変数ビューには、テストの各ステージのサービスの変数名と値が表示されます。デバッグ時には、変数が読取り専用になります。現在の変数と値を確認するには、特定のブレークポイントで呼出しスタックを選択します。

- ブレークポイント・ビュー - ブレークポイント・ビューには、サービスのフローに手動で挿入したブレークポイントが一覧表示されます。テストは各ブレークポイントで停止するので、そのポイントでのテストの状態を確認できます。ブレークポイント・ビューでは、ブレークポイントの有効と無効を切り替えることができます。ブレークポイントの選択を解除して無効にすると、ブレークポイントはそのまま残りますが、デバッガで無視されます。

- サービス・エディタ、フロー・ビュー - テストを行うときに、ローカル・サービスをテストしている場合は、テストの進行状況がサービスのフロー・ビューで視覚的に強調表示されます。また、フロー・ビューには、設定済のブレークポイントが表示されます。ブレークポイントを表示するには、サービスのフロー・ビュー・エディタでアクションを右クリックし、「Toggle Breakpoint」をクリックします。

- Oracle Service Busテスト・コンソール - テスト・コンソールでは、ローカルのプロキシ・サービスとビジネス・サービスを実行できます。テスト・コンソールの使用の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のテスト・コンソールの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG357)を参照してください。

2.10.2.2 ステップ・アクションとブレークポイント

Eclipseデバッグ・フレームワークを使用すると、デバッグ・コードに対してステップ・アクションを実行してインクリメンタルにデバッグできます。Eclipseヘルプ・システムの「実行制御コマンド」を参照してください(Java開発のユーザーズ・ガイド)。

ステップ・アクションを使用してデバッグする場合でも、Oracle Service Busデバッガは設定済の各ブレークポイントで停止し、実行される現在のステップ・アクションを無視します。

2.10.3 Oracle Service Busデバッガ起動構成の使用

Oracle Service Busデバッガ環境をより詳細に手動で制御する場合は、Oracle Service Busデバッガ起動構成を使用します。起動構成はEclipseの機能です。Oracle Service Busデバッガ起動構成では、「デバッグ」オプションによるデバッガの実行の自動化(デバッグ・パースペクティブの起動、デバッグ・モードでのサーバーの再起動、Javaデバッガの起動)が行われず、ノーマル・モードまたはデバッグ・モードで実行されているサーバーで、必要に応じてデバッガを接続および切断できます。

JavaデバッガをOracle Service Busデバッガと共に使用してJavaコールアウトを処理する場合は、サーバーがデバッグ・モードで実行されている必要があります。

Oracle Service Busデバッガ起動構成を使用するには:

1. プロキシ・サービス・メッセージ・フローまたは分割-結合にブレークポイントを設定します。

2. サーバーは通常モードまたはデバッグ・モードで起動できますが、Javaデバッガを使用してフローからJavaコールアウトを処理する場合は、デバッグ・モードでサーバーを起動します。

3. Eclipseのメニューで「Run」→「Debug Configurations」を選択します。

4. 「Oracle Service Bus Debugger」をダブルクリックします。「New_configuration」というサブ項目が表示されます。この手順は、作成するデバッグ構成ごとに1回だけ実行します。
右ペインにデフォルトのサーバーとポートが表示されます。このポートが、ドメインのsetDomainEnvスクリプトのALSB_DEBUG_PORTの値と一致するようにしてください。

右ペインでは、デバッグ構成の名前を変更したり、デバッグ・ツール・バーの項目にデバッグ構成をショートカットとして追加したりすることもできます。

サービスでJavaコールアウトを使用する場合は、「Remote Java Application」をダブルクリックして「New_configuration」を構成することによりJavaデバッガを有効にします。

5. 起動構成を選択した状態で、「Debug」ダイアログの「Debug」をクリックします。デバッガが接続されます。Javaデバッガも使用する場合は、そのデバッガを選択して「Debug」をクリックします。

6. デバッグ・パースペクティブまたは必要なデバッグ・ビュー(「デバッグ」、「ブレークポイント」、「変数」など)を開きます。

7. サービスを実行します。

- テスト・コンソールでサービスを実行するには、「Run As」→「Run on Server」を使用します。

- カスタム・テスト・クライアントを使用するなど、他の方法でサービスを実行することもできます。

8. テストを行います。

デバッガを切断するには、「切断」アイコンをクリックします。「デバッグ」ダイアログでデバッガを再接続します。そのためには、起動構成を選択し、「デバッグ」をクリックするか、または前に説明した手順に従ってデバッグ・ツール・バーの項目にショートカットを作成します。

2.10.3.1 リモート・デバッグ

リモート・サービスをデバッグする場合は、サーバー構成ウィンドウ(「Debug As」)でリモート・サーバーを選択するか、または起動構成でリモート・サーバーとポートを設定できます。デバッガをリモート・サーバーに接続したら、リモート・サーバーでサービスを実行し、ローカルのデバッグ・パースペクティブでテストを行います。

2.10.3.2 管理対象サーバーでスタンドアロンで実行するOracle Service Busのデバッグ

非クラスタ環境の管理対象サーバーにおいてスタンドアロンで実行するOracle Service Busインスタンスをデバッグする場合は、次の手順を実行します:

1. Eclipseの「Servers」ビューで、Oracle Service Busの管理対象サーバーが所属するドメインのサーバーを追加します。

2. ドメインの管理サーバーとOracle Service Bus管理対象サーバーの両方が実行していることを確認します。
管理サーバーは、デバッグ・モードではなく標準モードで実行する必要があります。

3. 2.10.3項「Oracle Service Busデバッガ起動構成の使用」のデバッグ構成およびデバッグ手順に従います。
Javaアプリケーション削除構成を設定してJavaコールアウトをテストする場合、構成のターゲットとして管理対象サーバーを指定してください。

2.10.3.3 サーバー共有

複数のユーザーが1つのサーバー・インスタンスを共有してデバッグする場合、デバッガに接続できるユーザーは一度に1人だけです。他のユーザーがデバッガに接続しようとしても、接続拒否エラーが発生します。

3 トランスポート構成

この章では、Oracle Service Bus IDEでビジネス・サービスとプロキシ・サービスのトランスポートを構成する方法について説明します。

ビジネス・サービスまたはプロキシ・サービスを構成する場合、サービスが使用するトランスポートを構成する必要があります。各トランスポートを、それぞれの構成ページで構成します。

3.1 プロトコル固有のトランスポート構成ページ

ビジネス・サービスおよびプロキシ・サービスで使用できるトランスポートごとに独自の構成ページがあります。Oracle Service Busでは次のトランスポートが提供されます。

- 3.1.1項「BPEL-10gトランスポート構成ページ(ビジネス・サービス)」

- 3.1.2項「DSPトランスポート構成ページ(ビジネス・サービス)」

- 3.1.3項「EJBトランスポート構成ページ(ビジネス・サービス)」

- 3.1.4項「電子メール・トランスポート構成ページ(ビジネス・サービス)」

- 3.1.5項「電子メール・トランスポート構成ページ(プロキシ・サービス)」

- 3.1.6項「ファイル・トランスポート構成ページ(ビジネス・サービス)」

- 3.1.7項「ファイル・トランスポート構成ページ(プロキシ・サービス)」

- 3.1.8項「FTPトランスポート構成ページ(ビジネス・サービス)」

- 3.1.9項「FTPトランスポート構成ページ(プロキシ・サービス)」

- 3.1.10項「HTTPトランスポート構成ページ(ビジネス・サービス)」

- 3.1.11項「HTTPトランスポート構成ページ(プロキシ・サービス)」

- 3.1.12項「JCAトランスポート構成ページ(プロキシ・サービスおよびビジネス・サービス)」

- 3.1.13項「JEJBトランスポート構成ページ(ビジネス・サービス)」

- 3.1.14項「JEJBトランスポート構成ページ(プロキシ・サービス)」

- 3.1.15項「JMSトランスポート構成ページ(ビジネス・サービス)」

- 3.1.16項「JMSトランスポート構成ページ(プロキシ・サービス)

- 3.1.17項「MQトランスポート構成ページ(ビジネス・サービス)」

- 3.1.18項「MQトランスポート構成ページ(プロキシ・サービス)」

- 3.1.19項「SBトランスポート構成ページ(ビジネス・サービス)」

- 3.1.20項「SBトランスポート構成ページ(プロキシ・サービス)」

- 3.1.21項「SFTPトランスポート構成ページ(ビジネス・サービス)」

- 3.1.22項「SFTPトランスポート構成ページ(プロキシ・サービス)」

- 3.1.23項「SOA-DIRECTトランスポート構成ページ(ビジネス・サービス)」

- 3.1.24項「Tuxedoトランスポート構成ページ(ビジネス・サービス)」

- 3.1.25項「Tuxedoトランスポート構成ページ(プロキシ・サービス)」

- 3.1.26項「WSトランスポート構成ページ(ビジネス・サービス)」

- 3.1.27項「WSトランスポート構成ページ(プロキシ・サービス)」

3.1.1 BPEL-10gトランスポート構成ページ(ビジネス・サービス)

このページでは、BPEL-10g (Oracle BPEL Process Manager)転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。Oracle BPEL Process ManagerでのOracle Service Busの使用の詳細は、第34章「Oracle BPEL Process Managerトランスポート(Oracle SOA Suite 10gで使用する場合のみ)」を参照してください。

表3-1 ビジネス・サービスのためのBPEL-10gトランスポート構成オプション

プロパティ

説明

ロール

BPELトランスポートは、Oracle Service BusからOracle BPEL Process Managerにリクエスト・メッセージを送信するために使用します。ビジネス・サービスでは、次のロールを処理できます。

- 「同期クライアント」
Oracle Service Busクライアントとの同期通信では、必要な場所情報はBPELアドレスのみです。このアドレスは、エンドポイントURIとして静的に、またはURIの書直しを通じて動的に、あるいはその両方でキャプチャされます。

- 「非同期クライアント」
Oracle Service Busクライアントとの非同期通信では、Oracle BPEL Process ManagerからOracle Service Busへのコールバックはリクエストとは別の接続で送信されます。正しいコールバック・アドレスを提供するようにOracle Service Busを構成する必要があります。

- 「サービス・コールバック」
ビジネス・サービスがOracle BPEL Process Managerへのサービス・コールバックとして設計されている(Oracle BPEL Process ManagerがOracle Service Busを通じて外部サービスを呼び出している)場合、コールバック・アドレスは実行時にのみわかります。bpel://callbackのエンドポイントURIを使用します。

マーカーURIでビジネス・サービスを構成する場合は、たとえばTransportHeaderアクションを使用して、$outboundにURIを動的に設定するようにパイプライン・ロジックを構成します。

注意: サービス・コールバック・ビジネス・サービスでは、ロード・バランシングまたはフェイルオーバーはサポートされません。

コールバック・プロキシ

このオプションのフィールドは、非同期クライアント・ロールでのみ使用可能です。このフィールドでは、リクエストを行ったOracle Service Busクライアントへのコールバックのルーティングに使用されるプロキシ・サービス(任意のSOAPタイプのSBまたはHTTPプロキシである必要があります)を選択します。

サービス・アカウント

JNDIコンテキスト・セキュリティの場合は、Oracle BPEL Process Manager配信サービスへのアクセスに使用されます。「参照」をクリックして、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

静的またはパススルーなど、構成できるサービス・アカウントのタイプに制限はありませんが、ランタイムはユーザー名とパスワードにアクセスできる必要があります。

トランザクションを中断

「トランザクションを中断」を選択すると、ビジネス・サービスがトランザクションによって呼び出された場合でも、ビジネス・サービスは非トランザクションになります。

「トランザクションを中断」を選択しない場合は、次のようになります。

- プロトコルによって、Oracle WebLogic Serverでサポートされるプロトコル(t3、iiop、http)が指定されている場合は、トランザクションが伝播されます。

- プロトコルがOC4Jサーバー(ormi、opmn)を指定している場合、OC4Jではトランザクションの伝播がサポートされないため、BPELトランスポートで例外がスローされます。

BPELトランスポートでは、次の状況で「トランザクションを中断」オプションが無視されます。

- サービスの品質(QoS)を「ベスト・エフォート」に設定してビジネス・サービスが呼び出される場合。BPELトランスポートでは、QoSをサポートしていないトランザクションが自動的に中断されます。

- QoSを「必ず1回」に設定してビジネス・サービスが呼び出され、トランザクションが存在しない場合。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』の「ワーク・マネージャを使用したスケジューリング済作業の最適化」

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する説明

3.1.2 DSPトランスポート構成ページ(ビジネス・サービス)

このページでは、DSP (Oracle Data Service Integrator)転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。Oracle Service BusからOracle Data Service Integratorにアクセスする方法の詳細は、第36章「DSPおよびOracle Data Service Integratorトランスポート」を参照してください。

表3-2 ビジネス・サービスのためのDSPトランスポート構成オプション

オプション

説明

デバッグ・レベル

次のいずれか1つを指定します。

- 0 - デバッグ情報はありません。

- 1 - リクエスト・メッセージに情報を出力します。

- 3 - リクエスト・メッセージとレスポンス・メッセージに情報を出力します。

サービス・アカウント

「参照」をクリックし、表示されるリストでサービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャは、レスポンス処理で返信メッセージをポストするために使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』の「ワーク・マネージャを使用したスケジューリング済作業の最適化」

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する説明

3.1.3 EJBトランスポート構成ページ(ビジネス・サービス)

このページでは、EJB転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。

EJBトランスポートの詳細は、第28章「EJBトランスポート」を参照してください。

表3-3 ビジネス・サービスのためのEJBトランスポート構成オプション

オプション

説明

呼出し元のサブジェクトを渡す

EJBの呼出し時にサービス・アカウントが構成されていない場合、このチェックボックスを選択して、Oracle Service Busがプロキシ・サービスから認証されたサブジェクトを渡すようにします。このオプションを選択すると、「サービス・アカウント」フィールドが無効になります。

サービス・アカウント

「参照」をクリックし、表示されるリストでサービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。「呼出し元のサブジェクトを渡す」オプションを使用する場合、このオプションは使用できません。

トランザクションをサポートする

トランザクションを指定する場合は、このチェック・ボックスを選択します。

クライアントJar

「参照」をクリックし、表示されるリストからEJBクライアントJARリソースを選択します。

コンバータJar

「参照」をクリックし、表示されたリストからEJBコンバータ・クラスJARリソースを選択します。

ホーム・インタフェース

EJB 2.1専用 - JARによって挿入されるオプションから必要なEJBHomeインタフェースを選択します。このURIサンプルのJNDI名はここで選択するEJBHomeインタフェースに関連付ける必要があります。EJBが必要なタイプのものではない、またはEJBHomeインタフェースがclient-jarで指定されていない場合は、警告が表示されます。

リモート・インタフェース

EJB 2.1専用 - このフィールドは、Homeインタフェースの構成に基づいて、自動的に情報が表示されます。

ビジネス・インタフェース

EJB 3.0専用 - 呼び出すクライアントJARでビジネス・インタフェースを選択します。

対象ネームスペース

このフィールドにはJARからのピックアップされた情報が表示されます。

スタイル

要件に応じて、「ドキュメントをラップ」または「RPC」を選択します。ステートレス・セッションEJBの2つ以上のメソッドに、同じ数の同じデータ型のパラメータがあり、操作をドキュメント指向にする場合はドキュメントのラップを指定する必要があります。

EJBへのルーティングまたはパブリッシュの場合、$bodyにはスタイルに合ったコンテンツが必要なので、スタイルは重要です。また、EJBへのコールアウトの場合、スタイルは、特にドキュメントのラップに関して、パラメータ・コンテンツに影響を及ぼします。2番目に、EJBビジネス・サービスを定義して、EJBにルーティングする同じWSDLでプロキシ・サービスを作成する使用パターンもあります。この場合、プロキシの呼出しに使用するクライアント・ツールには、WSDLのスタイルに関する制限がある可能性があるため、注意が必要です。

エンコーディング

「エンコード形式」または「リテラル形式」を選択します。

メソッド

選択したEJBリモート・インタフェースまたはビジネス・インタフェースのメソッドが表示されます。必要なメソッドを選択します(複数のメソッドの選択も可能)。「+」をクリックしてメソッドを展開します。デフォルトのパラメータ値を編集して、提供されている場合(または必要な場合)はコンバータを選択します。

JAX-RPCスタックでサポートされないパラメータまたは戻り値の型を持つメソッドを除外するか、それらの引数をコンバータ・クラスに関連付ける必要があります。

任意のメソッドのデフォルトの操作名を変更できます。(デフォルトでは、操作名はメソッド名です。)EJBに同じ名前のメソッドが含まれている場合、ユニークになるように操作名を変更する必要があります。WSDLはユニークな操作名を必要とします。

注意: 任意のEJBのメソッド間で資格証明またはトランザクション設定が異なる場合、任意のビジネス・サービスのメソッドをカスタマイズして、メソッドごとのビジネス・サービスを作成できます。これにより、トランザクションと資格証明の詳細な制御が可能になります。

例外

このフィールドは、メソッドがビジネス例外をスローした場合に表示されます。EJBメソッドが、ArrayListなどのJava Web Services (JWS)でサポートされないデータ型を持つ例外をスローした場合は、「例外」フィールドを使用して、例外をJWSでサポートされる型に変換するコンバータ・クラスを選択します。

コンバータ・クラスは、com.bea.wli.sb.transports.ejb.ITypeConverterを実装する必要があります。コンバータ・クラスは、実行時例外ではなくチェック済の例外用にのみ構成できます。

コンバータ・クラスおよび変換された例外クラスをクライアントまたはコンバータJARでパッケージ化します。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のEJBトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1009)を参照してください。

3.1.4 電子メール・トランスポート構成ページ(ビジネス・サービス)

このページでは、電子メール転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。

表3-4 ビジネス・サービスのための電子メール・トランスポート構成オプション

オプション

説明

SSLが必要

Secure Sockets Layerを使用して通信するには、このオプションを選択します。電子メール・トランスポートでは一方向SSL通信がサポートされます。SSLを使用する場合のデフォルトのSMPTポート番号は、465です。

注意:

- SSLを有効にするには、Oracle Service Busトラストストアに電子メール・サーバーの証明書が存在している必要があります。

- TLSを使用している場合は、デフォルトのトラストストア($JAVA_HOME/jre/lib/security/cacerts)に信頼性のある証明書を配置するか、次に示すように、任意のトラストストアに証明書を配置して$DOMAIN_HOME/bin/setDomainEnv.*ファイルにそのパスを追加する必要があります。

set EXTRA_JAVA_PROPERTIES=%EXTRA_JAVA_PROPERTIES%
-Djavax.net.ssl.trustStore=<path to trustStore>

SMTPサーバー

name@domain_name.comのエンドポイントURIエントリで使用するデフォルトのSMTPサーバーを選択します。表4-6で説明するようにエンドポイントURIにSMTPサーバーのパラメータを指定すると、それらのサーバー・リソースがこの「SMTPサーバー」設定のかわりに使用されます。

「メール・セッション」オプションを使用する場合はSMTPサーバーを選択しないでください。

最初にSMTPサーバー・リソースを作成する必要があります。詳細は、2.1.17項「SMTPサーバー・リソースの作成」を参照してください。

メール・セッション

name@domain_name.comのエンドポイントURIエントリで使用する構成済メール・セッションのJNDI名を入力します。表4-6で説明するようにエンドポイントURIにJNDIメール・セッションのパラメータを指定すると、この「メール・セッション」設定のかわりにそれらのメール・セッションが使用されます。

「SMTPサーバー」オプションを使用する場合は、メール・セッションを入力しないでください。

送信元の名前

このサービスでの送信元の電子メール・アカウントの表示名を入力します。

送信元アドレス

このサービスでの送信元の電子メール・アカウントを入力します。

返信先の名前

電子メール・アカウントの返信先の表示名を入力します。

返信先アドレス

返信先の電子メール・アドレスを入力します。

接続タイムアウト

接続を切断するまでのタイムアウト時間を秒単位で入力します。「0」を入力すると、タイムアウトは発生しません。

ソケットI/Oタイムアウト

ソケットI/Oタイムアウト間隔をミリ秒単位で入力します。ゼロ(0)を入力すると、タイムアウトは発生しません。

リクエストのエンコーディング

電子メール・トランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのISO-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

3.1.5 電子メール・トランスポート構成ページ(プロキシ・サービス)

このページでは、電子メール・トランスポートプロトコルを使用するプロキシ・サービスのトランスポート設定を構成できます。

表3-5 プロキシ・サービスのための電子メール・トランスポート構成オプション

オプション

説明

SSLが必要

Secure Sockets Layerを使用して通信するには、このオプションを選択します。デフォルトのSSLポート番号は、次のとおりです。

- POP3(S)の場合: 995

- IMAPの場合: 993

注意: SSLを有効にするには、Oracle Service Busトラストストアに電子メール・サーバーの証明書が存在している必要があります。電子メール・トランスポートでは一方向SSL通信がサポートされます。

サービス・アカウント

サービス・アカウント名を入力するか、または、「参照」をクリックして、サービス・アカウントをブラウザから選択します。

管理対象サーバー

クラスタ・ドメイン内のポーリング用管理対象サーバーを選択します。

このフィールドは、クラスタ・ドメインでのみ使用できます。

ポーリング間隔

ポーリング間隔を秒単位で入力します。

電子メール・プロトコル

電子メール・アカウントのサーバーの種類としてPOP3またはIMAPを選択します。

読取り制限

ポーリング・スイープごとの読取りメッセージの最大数を指定します。無制限にするには「0」と入力します。

参照渡し

このチェック・ボックスを選択すると、ファイルはアーカイブ・ディレクトリにステージングされ、ヘッダーに参照として渡されます。

デフォルトでは、新しいサービスを作成するときに、「参照渡し」オプションが選択されるため、アーカイブ・ディレクトリの場所を指定する必要があります。

添付ファイルを参照として渡す

このチェック・ボックスを選択すると、添付ファイルはアーカイブ・ディレクトリにステージングされ、ヘッダーに参照として渡されます。

デフォルトでは、「参照渡し」オプションが選択されると、「添付ファイルを参照渡し」オプションが暗黙的に適用されるため、アーカイブ・ディレクトリの場所を指定する必要があります。

読取り後のアクション

メッセージの読込み後の動作を選択します。

- アーカイブ - メッセージはアーカイブされます。

- 「削除」 - メッセージが削除されます。

- 「移動」 - メッセージが移動されます。「移動」は、IMAPプロトコルでのみ使用可能です。

添付ファイル

添付ファイルの処理方法を選択します。

- 「アーカイブ」 - 添付ファイルがアーカイブ・ディレクトリに保存されます。

- 「無視」 - 添付ファイルが無視されます。

IMAP移動先フォルダ

「読取り後のアクション」フィールドが「移動」に設定されている場合は、メッセージの移動先フォルダを入力します。

ダウンロード・ディレクトリ

電子メールをダウンロードするための一時的な場所を入力します。

アーカイブ・ディレクトリ

「読取り後のアクション」フィールドが「アーカイブ」に設定されている場合は、アーカイブの場所へのパスを入力します。

「参照渡し」または「添付ファイルを参照渡し」オプションが選択されている場合は、このフィールドは必須です。

エラー・ディレクトリ

問題が生じたときにメッセージと添付ファイルを書き込むファイル・システム・ディレクトリへのパスを入力します。

リクエストのエンコーディング

電子メール・トランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのISO-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

3.1.6 ファイル・トランスポート構成ページ(ビジネス・サービス)

このページでは、ファイル・トランスポートプロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。

表3-6 ビジネス・サービスのためのファイル・トランスポート構成オプション

オプション

説明

接頭辞

ファイル名の前に付加する接頭辞を入力します。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

接尾辞

ファイル名に付加する接尾辞を入力します。このフィールドは必須です。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

リクエストのエンコーディング

ファイル・トランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのutf-8を受け入れるか、別の文字セット・エンコーディングを入力します。

3.1.7 ファイル・トランスポート構成ページ(プロキシ・サービス)

このページを使用して、ファイル・トランスポートプロトコルを使用してプロキシ・サービスのトランスポート設定を構成します。

表3-7 プロキシ・サービスのためのファイル・トランスポート構成オプション

オプション

説明

ファイル・マスク

プロキシ・サービスがポーリングするファイルを指定します。URIがディレクトリの場合、*.*を指定すると、サービスによってそのディレクトリのすべてのファイルがポーリングされます。ファイル・マスクに指定できるワイルドカード文字は*および?のみです。正規表現はサポートされません。

管理対象サーバー

クラスタ・ドメイン内のポーリング用管理対象サーバーを選択します。

このフィールドは、クラスタ・ドメインでのみ使用できます。

ポーリング間隔

読み取る新しいファイルをポーリングするまでService Busが待機する時間の長さを秒単位で入力します。デフォルト値は 60 です。

読取り制限

ポーリング・スイープごとの読取りメッセージの最大数を指定します。無制限にするには0を入力します。デフォルト値は10です。

到着順にソート

イベントが受信順に配信されるように指定する場合は、このチェック・ボックスを選択します。

クラスタ環境で実行されるプロキシ・サービスに対してこのオプションを選択すると、メッセージは常に同じサーバーに送信されます。つまり、このオプションを選択した場合、サーバー全体のロード・バランシングは無視されます。

サブディレクトリのスキャン

すべてのディレクトリを再帰的にスキャンする場合は、このチェック・ボックスを選択します。

参照渡し

このチェック・ボックスを選択すると、ファイルはアーカイブ・ディレクトリにステージングされ、ヘッダーに参照として渡されます。

読取り後のアクション

メッセージの読込み後の動作を選択します。

- アーカイブ - メッセージはアーカイブされます。

- 「削除」 - メッセージが削除されます。

ステージ・ディレクトリ

ファイルの処理中に一時的にファイルをステージングする中間ディレクトリを入力します。

ステージ・ディレクトリは、ポーリング・ディレクトリ(file:///c:/dir1/dir2などの、ファイル・トランスポート・プロキシ・サービスのURLで識別されるディレクトリ)内に配置しないでください。

アーカイブ・ディレクトリ

「読取り後のアクション」オプションが「アーカイブ」に設定されている場合、アーカイブ場所へのパスを入力します。「アーカイブ・ディレクトリ」フィールドは、「参照渡し」フィールドを選択した場合も必須のフィールドです。

アーカイブ・ディレクトリは、ポーリング・ディレクトリ内に配置しないでください。

エラー・ディレクトリ

問題が生じたときにメッセージと添付ファイルをポストする場所を入力します。

エラー・ディレクトリは、ポーリング・ディレクトリ内に配置しないでください。

リクエストのエンコーディング

ファイル・トランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのUTF-8を受け入れるか、別の文字セット・エンコーディングを入力します。

3.1.8 FTPトランスポート構成ページ(ビジネス・サービス)

このページでは、FTP転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。

表3-8 ビジネス・サービスのためのFTPトランスポート構成オプション

オプション

説明

ユーザー認証

FTPサーバーのユーザーが匿名の場合は、「匿名」を選択し、FTPサーバーが外部的に構成されたアカウントの場合は「外部ユーザー」を選択します。

ID(電子メールID)

このフィールドは、「ユーザー認証」オプションが「匿名」に設定されている場合にのみ使用できます。

匿名ユーザーのメールIDを入力します。

サービス・アカウント

このフィールドは、「ユーザー認証」オプションが「外部ユーザー」に設定されている場合にのみ有効です。

外部ユーザーのサービス・アカウントを入力します。

タイムアウト

接続が切断されるまでのソケット・タイムアウト間隔を秒単位で入力します。デフォルトは60秒です。

宛先ファイル名の接頭辞

トランスポートによってリモート・サーバー上のファイル名の先頭に付加される、省略可能な接頭辞を入力します。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

宛先ファイル名の接尾辞

トランスポートによってリモート・サーバー上のファイル名の末尾に付加される、省略可能な接尾辞を入力します。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

転送モード

転送モードとして「ascii」または「バイナリ」を選択します。

リクエストのエンコーディング

FTPトランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのUTF-8を受け入れるか、別の文字セット・エンコーディングを入力します。

3.1.9 FTPトランスポート構成ページ(プロキシ・サービス)

このページを使用して、FTP転送プロトコルを使用してプロキシ・サービスのトランスポート設定を構成します。

表3-9 プロキシ・サービスのためのFTPトランスポート構成オプション

オプション

説明

ユーザー認証

FTPサーバーのユーザーが匿名の場合は、「匿名」を選択し、FTPサーバーが外部的に構成されたアカウントの場合は「外部ユーザー」を選択します。

ID(電子メールID)

このフィールドは、「ユーザー認証」オプションが「匿名」に設定されている場合にのみ使用できます。

匿名ユーザーのメールIDを入力します。

サービス・アカウント

このフィールドは、「ユーザー認証」オプションが「外部ユーザー」に設定されている場合にのみ有効です。

ユーザーのサービス・アカウントを入力します。このフィールドは「ユーザー認証」オプションが「外部ユーザー」に設定されている場合は必須です。

参照渡し

このチェック・ボックスを選択すると、ファイルはアーカイブ・ディレクトリにステージングされ、ヘッダーに参照として渡されます。

リモート・ストリーミング

処理時にリモート・サーバーからFTPファイルを直接ストリーミングする場合は、このチェック・ボックスを選択します。このオプションを選択した場合、アーカイブ・ディレクトリはリモートのFTPサーバー・コンピュータ上のリモート・ディレクトリになります。そのため、FTPユーザー・ディレクトリを基準にした相対パスでアーカイブ・ディレクトリを指定する必要があります。

ファイル・マスク

選択されるファイルの正規表現を入力します。デフォルト値は*.*です。

管理対象サーバー

クラスタ・ドメイン内のポーリング用管理対象サーバーを選択します。

このフィールドは、クラスタ・ドメインでのみ使用できます。

ポーリング間隔

ポーリング間隔を秒単位で入力します。デフォルト値は 60 です。

読取り制限

ポーリング・スイープごとの読取りメッセージの最大数を指定します。無制限にするには0を入力します。デフォルトは10です。

読取り後のアクション

メッセージが読み込まれた後の動作を選択します。

- アーカイブ - メッセージはアーカイブされます。

- 「削除」 - メッセージが削除されます。

転送モード

転送モードとして「ascii」または「バイナリ」を選択します。

アーカイブ・ディレクトリ

「読取り後のアクション」オプションが「アーカイブ」に設定されている場合、アーカイブ場所へのパスを入力します。このフィールドは、「参照渡し」オプションが選択されている場合、必須です。

注意: アーカイブ・ディレクトリ、ダウンロード・ディレクトリ、およびエラー・ディレクトリは絶対パスであり、自動的に作成されます。相対パスを指定すると、ファイルはOracle WebLogic Serverを起動するJavaプロセスを基準にした相対的な位置に作成されます。

ダウンロード・ディレクトリ

ファイル転送時にファイルがダウンロードされる、ローカル・コンピュータのディレクトリを入力します。

注意: アーカイブ・ディレクトリ、ダウンロード・ディレクトリ、およびエラー・ディレクトリは絶対パスであり、自動的に作成されます。相対パスを指定すると、ファイルはOracle WebLogic Serverを起動するJavaプロセスを基準にした相対的な位置に作成されます。

エラー・ディレクトリ

問題が発生した場合にメッセージがポストされる場所を入力します。

注意: アーカイブ・ディレクトリ、ダウンロード・ディレクトリ、およびエラー・ディレクトリは絶対パスであり、自動的に作成されます。相対パスを指定すると、ファイルはOracle WebLogic Serverを起動するJavaプロセスを基準にした相対的な位置に作成されます。

リクエストのエンコーディング

FTPトランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのUTF-8を受け入れます。

サブディレクトリのスキャン

すべてのディレクトリを再帰的にスキャンする場合は、このチェック・ボックスを選択します。

到着順にソート

イベントを受信順に配信する場合は、このチェック・ボックスを選択します。

タイムアウト

接続が切断されるまでのソケット・タイムアウト間隔を秒単位で入力します。「0」を入力すると、タイムアウトは発生しません。

再試行回数

FTP接続失敗時の再試行回数を指定します。

3.1.10 HTTPトランスポート構成ページ(ビジネス・サービス)

このページでは、HTTP転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。HTTPトランスポートでは、 HTTP エンドポイントおよび HTTPS エンドポイントの両方がサポートされます。

表3-10 ビジネス・サービスのためのHTTPトランスポート構成オプション

オプション

説明

読取りタイムアウト

読取りタイムアウトまでの間隔を秒単位で入力します。

値0ではタイムアウトが行われません。

接続タイムアウト

接続タイムアウトまでの間隔を秒単位で入力します。接続が確立する前にタイムアウトになると、Oracle Service Busによって接続エラーが生成されます。

値0ではタイムアウトが行われません。

HTTPリクエスト・メソッド

このパラメータにより、リクエストで次のいずれかのHTTPメソッドを使用できます。

- 「POST」 - HTTPリクエストの本文の一部として、長さに関わらずすべてのデータをソケット接続で直接渡します。このやりとりはクライアントから認識できず、URLも変わりません。RESTベースのリクエストの場合、POSTでは作成/置換操作を実行するか、またはリクエストの操作を実行するようにトランスポートに指示します。

- 「GET」 - リクエストの一部として、取得対象を詳しく表した独自の情報を組み込むことができます。この情報は、問合せ文字列内のリクエストURLに追加された文字のシーケンスとして渡されます。「リクエスト・メッセージ・タイプ」が「なし」に設定されている場合は、「サービス・タイプ」が「任意のXMLサービス」または「メッセージ・サービス」のビジネス・サービスでGETを使用できます。RESTベースのリクエストの場合、GETはリモート・リソースの表現を受け取ります。

- 「PUT」 - PUTは、「サービス・タイプ」が「任意のXMLサービス」または「メッセージ・サービス」のビジネス・サービスで使用できます。PUTは、RESTベースのリクエストによる作成と置換の操作(既知の場所へのファイルのアップロードなど)を実行するようトランスポートに通知します。

- 「HEAD」 - 「レスポンス・メッセージ・タイプ」が「なし」に設定されている場合は、「サービス・タイプ」が「任意のXMLサービス」または「メッセージ・サービス」のビジネス・サービスでHEADを使用できます。HEADは、RESTベースのリクエストでリモート・リソースの完全な表現を取得するのではなく、そのリソースのヘッダー情報を取得するようトランスポートに通知します。

- 「削除」 - 「削除」は、「サービス・タイプ」が「任意のXMLサービス」または「メッセージ・サービス」のビジネス・サービスで使用できます。「削除」は、RESTベースのリクエストによる削除操作を実行するようトランスポートに通知します。

注意: $outbound/transport/request/http:http-method変数でメソッドがすでに設定されている場合は、HTTPリクエスト・メソッドに選択したどのメソッドよりもその値が優先されます。

認証

次のいずれか1つを選択します:

- 「なし」 - このサービスへのアクセスに認証を必要としないことを指定します。

- 「基本」 - このサービスにアクセスするには、基本認証が必要であることを指定します。
基本認証では、Oracle WebLogic Serverでユーザー名とパスワードを使用し、セキュリティ・レルム(Lightweight Directory Access Protocol (LDAP)ディレクトリ・サービスやWindows Active Directoryなど)で構成された認証プロバイダに対してクライアントの認証が行われます。クライアントは、HTTPリクエスト・ヘッダーでユーザー名とパスワードを送信する必要があります。

HTTPでの基本認証は、パスワードがクリア・テキストで送信されるため推奨しません。HTTPSでは暗号化されたチャネルが提供されるため、パスワードはHTTPSで送信するのが安全です。

警告: デフォルトでは、すべてのユーザー(認可ユーザーおよび匿名ユーザー)がビジネス・サービスにアクセス可能です。ビジネス・サービスにアクセスできるユーザーを制限するには、トランスポートレベルの認可ポリシーを作成する必要があります。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のトランスポートレベル・アクセス・ポリシーの編集に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1208)を参照してください。

「クライアント証明書」 - 暗号化通信および強力なクライアント認証(双方向SSL)を指定します。このオプションを使用するには、サービス定義のすべてのエンドポイントURIがHTTPSである必要があります。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のトランスポートレベルのセキュリティ構成に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1557)を参照してください。

サービス・アカウント

サービス・アカウントを入力します。サービス・アカウントとは、ユーザー名とパスワードのエイリアス・リソースです。基本認証必須フィールドを選択した場合、このフィールドは必須です。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

リクエストのエンコーディング

電子メール・トランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのiso-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

レスポンスのエンコーディング

HTTPトランスポートにおけるレスポンスの文字セット・エンコーディングとして、デフォルトのiso-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

プロキシ・サーバー

プロキシ・サーバー・リソースを入力するか、「参照」をクリックして構成されたプロキシ・サーバー・リソースの一覧からエントリを選択します。

HTTPリダイレクトの追跡

HTTPリダイレクト(レスポンス・コード3xxによるリクエスト)を自動的に追跡することを指定します。リダイレクトは、ビジネス・サービスのURLにアウトバウンド・リクエストを送信し、そのサービスから、URLが無効になったためこのリクエストを別のURLに送信する必要があることを示すレスポンス・コード(たとえば302)が返された場合に発生します。「HTTPリダイレクトの追跡」チェック・ボックスが選択されている場合、リクエストは自動的に新しいURLに再送信され、ユーザー側でのアクションは発生しません。HTTPリダイレクトを自動的に追跡しない場合は、このチェック・ボックスのチェックを外します。

チャンク・ストリーミング・モードの使用

HTTPチャンク転送エンコーディングを使用してメッセージを送信する場合は、このオプションを選択します。

注意: 「HTTPリダイレクトの追跡」オプションを使用する場合は、チャンク・ストリーミングを使用しないでください。リダイレクトと認証をチャンク・モードで自動的に処理することはできません。

セッション固定性

ビジネス・サービス用のHTTPリクエストにセッションの固定(セッション・アフィニティとも呼ばれる)を使用する場合は、このオプションを選択します。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の「HTTPセッションの固定」(http://www.oracle.com/pls/as111170/lookup?id=OSBDV948)を参照してください。

固定セッションID名

「セッション固定性」を有効にした場合、スティッキー・セッションに一意の識別名を入力します。

3.1.11 HTTPトランスポート構成ページ(プロキシ・サービス)

このページを使用して、HTTP転送プロトコルを使用してプロキシ・サービスのトランスポート設定を構成します。HTTPトランスポートでは、 HTTP エンドポイントおよび HTTPS エンドポイントの両方がサポートされます。

表3-11 プロキシ・サービスのためのHTTPトランスポート構成オプション

オプション

説明

HTTPSが必要

インバウンドHTTPSエンドポイントの場合は、このチェック・ボックスを選択します。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のトランスポートレベルのセキュリティ構成に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1557)を参照してください。

認証

次のいずれか1つを選択します:

- 「なし」 - 認証を必要としないことを指定します。

- 「基本」 - このサービスにアクセスするには、基本認証が必要であることを指定します。
基本認証では、Oracle WebLogic Serverでユーザー名とパスワードを使用し、セキュリティ・レルム(Lightweight Directory Access Protocol (LDAP)ディレクトリ・サービスやWindows Active Directoryなど)で構成された認証プロバイダに対してクライアントの認証が行われます。クライアントは、HTTPリクエスト・ヘッダーでユーザー名とパスワードを送信する必要があります。

HTTPでの基本認証は、パスワードがクリア・テキストで送信されるため推奨しません。HTTPSでは暗号化されたチャネルが提供されるため、パスワードはHTTPSで送信するのが安全です。

注意: デフォルトでは、すべてのユーザー(認可ユーザーおよび匿名ユーザー)がプロキシ・サービスにアクセス可能です。プロキシ・サービスにアクセスできるユーザーを制限するには、トランスポートレベルの認可ポリシーを作成する必要があります。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「セキュリティ構成」、トランスポートレベル・アクセス・ポリシーの編集に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1176)を参照してください。

- 「クライアント証明書」 - 暗号化通信および強力なクライアント認証(双方向SSL)を指定します。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のトランスポートレベルのセキュリティ構成に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1557)を参照してください。

- 「カスタム認証」 - 認証トークンがHTTPヘッダーに含まれていることを指定します。クライアントのIDは、ここでクライアントが指定したトークンを使用して設定されます。トークンをOracle Service BusユーザーにマップするIDアサーション・プロバイダを構成する必要があります。
カスタム認証トークンには、構成されたOracle WebLogic Server IDアサーション・プロバイダがサポートする任意のアクティブなトークン・タイプを指定できます。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

リクエストのエンコーディング

- HTTPインバウンド・トランスポートの場合は次のとおりです。
クライアント・リクエストでContent-Typeヘッダーの文字セット・エンコーディング・パラメータが指定されていないときは、文字セット・エンコーディング・パラメータを入力します。値を入力しない場合は、このフィールドにデフォルトのISO-8859-1が設定されます。

- HTTPアウトバウンド・トランスポートの場合は次のとおりです。
リクエスト・エンコーディングを構成していない場合、Oracle Service Busランタイムがビジネス・サービスにリクエストを行う際に最適なエンコーディングが決定されます。パススルー以外のシナリオでは、実行時のデフォルトの文字エンコーディングはUTF-8となります。ただし、パススルーのシナリオでは、ランタイムはアウトバウンド・レスポンスで受信したエンコーディングのパススルーを行います。

レスポンスのエンコーディング

HTTPトランスポートにおけるレスポンスの文字セット・エンコーディングとして、デフォルトのiso-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

認証ヘッダー

Oracle Service Busがトークンを抽出するHTTPヘッダー(Authorization以外の任意)を入力します。このフィールドが使用可能になるのは、「カスタム認証」チェック・ボックスが選択されている場合に限られます。

たとえば、client-xyz-tokenを入力します。

認証トークン・タイプ

認証トークン・タイプを選択します。IDアサーション・プロバイダに対して構成されているアクティブなトークン・タイプのみを使用できます。このフィールドが使用可能になるのは、「カスタム認証」チェック・ボックスが選択されている場合に限られます。

3.1.12 JCAトランスポート構成ページ(プロキシ・サービスおよびビジネス・サービス)

このページを使用して、JCA転送プロトコルを使用するトランスポート設定を構成します。JCAトランスポートの使用の詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のJCAトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV910)を参照してください。

表3-12 JCAトランスポート構成オプション

オプション

説明

JCAファイル

「参照」をクリックしてJCAリソースを選択します。JCAリソースによって、使用されるアダプタの詳細、WSDLへのバインド、TopLinkまたはEclipseLinkマッピング・ファイル、サービスで必要なアクティブ化/相互指定プロパティなど、サービスの様々な面が定義されます。

有効なJCAリソースを選択したら、その他のトランスポート構成フィールドが使用可能になります。

アダプタ名

JCAサービスで使用するアダプタの名前を示す読取り専用の値。

アダプタ・タイプ

アダプタ・タイプを示す読取り専用の値。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

JNDIサービス・アカウント

JNDIサービス・アカウントはJNDIコンテキスト・セキュリティのためのアカウントで、EISアダプタ管理対象の接続ファクトリへのアクセスに使用します。「参照」をクリックして、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

JCAビジネス・サービスでは、静的またはパススルーなど、構成できるJNDIサービス・アカウントのタイプに制限はありませんが、ランタイムはユーザー名とパスワードにアクセスできる必要があります。JCAプロキシ・サービスは静的JNDIサービス・アカウントのみを使用できます。

JNDIサービス・アカウントの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の「JCAトランスポート」、セキュリティに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV916)を参照してください。

エンドポイント・プロパティ

このフィールドでは、サービスが使用するアダプタ・タイプの再試行回数など、エンドポイント・プロパティに値を割り当てることができます。

サポートされるエンドポイント・プロパティの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のエンドポイント・プロパティに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1841)を参照してください。

動的エンドポイント・プロパティ

このオプションを使用すると、リクエスト・パラメータをJCA準拠サービスに渡すことができます。たとえば、動的エンドポイント・プロパティを使用して、データベース問合せパラメータをデータベース用のOracle JCAアダプタに渡すことができます。

パラメータを使用する問合せの詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』のOracle JCA Adapter for Databaseに関する項(http://www.oracle.com/pls/as111170/lookup?id=TKADP2117)を参照してください。

指定する動的エンドポイント・プロパティごとに名前と値のペアを入力します。エンドポイント・プロパティ・キーが問合せパラメータ名と一致します。

このセクションを使用して、カスタム・アダプタのエンドポイント・プロパティを追加および構成します。

常にJCAファイルからの構成を使用

このオプションを使用して、「アクティブ化指定プロパティ」(プロキシ・サービス)および「相互指定プロパティ」(ビジネス・サービス)を常にJCAファイルから使用するかどうかを決定します。

このオプションが選択されている場合(デフォルト)、JCAトランスポートはJCAファイルのアクティブ化/相互指定プロパティを使用してJCAフレームワークと対話します。

このオプションが選択されていない場合は、アクティブ化/相互指定プロパティをオーバーライドできます。

このオプションを使用する際の再デプロイメントの影響の詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の「JCAトランスポート」、エンドポイントの再デプロイメントに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV940)を参照してください。

操作名

選択したWSDL操作の読取り専用の名前を表示します。操作は、「アクティブ化/対話の仕様プロパティ」フィールドで示すように、独自のアクティブ化/対話の仕様プロパティを持つことができます。

アクティブ化指定プロパティ/相互指定プロパティ

「アクティブ化指定プロパティ」はプロキシ・サービス用のフィールド名で、「相互指定プロパティ」はビジネス・サービス用のフィールド名です。

このサービスがEISアプリケーションによって呼び出されたインバウンド・サービスである場合、このフィールドには、「操作名」フィールドで示すように、JCAインバウンド操作のアクティブ化仕様プロパティが表示されます。

「常にJCAファイルからの構成を使用」を選択解除すると、アクティブ化/相互指定プロパティをオーバーライドできます。

注意: Oracle Adapter Suiteアダプタの場合、アクティブ化/相互指定プロパティが読取り専用として表示されます。Oracle Adapter Suiteアダプタには独自の構成が保存されています。これは、Oracle Adapter Suite管理ツールで変更する必要があります。

接続プロパティ(レガシー)

非管理対象モード接続プロパティ(このリリースでは非推奨)を使用するレガシーJCAサービスの場合、http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/jcatransport/transport.html#wp1105451の接続構成オプションを参照してください。

エンドポイントおよびアクティブ化/相互指定プロパティの詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。

3.1.13 JEJBトランスポート構成ページ(ビジネス・サービス)

このページでは、JEJB転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。

表3-13 ビジネス・サービスのためのJEJBトランスポート構成

オプション

説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

EJB仕様バージョン

リモートEJBインタフェースのEJBバージョンを選択します。

値でXMLBeansを渡す

トランスポートによってPOJO引数(XMLObject)のインラインXML表現を生成する場合は、このオプションを選択します。この引数のパラメータは、XQuery式でアクセスおよび操作できます。

注意: 値で渡されたXMLObjectの場合、型情報はインラインでは利用できません。このオプションを使用する場合、プロキシ・サービス・パイプラインのJavaコールアウトで型付きのXMLObjectを引数として渡すことはできません。

参照でPOJOを渡す場合は、このオプションを選択しないでください。こうすることでパフォーマンスも向上します。

呼出し元のサブジェクトを渡す

「サービス・アカウント」を選択するかわりに、このオプションを選択して、Oracle Service BusがEJBを呼び出すときにプロキシ・サービスの認証済サブジェクトを渡すようにします。

サービス・アカウント

「参照」をクリックし、表示されるリストでJNDIサービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。詳細は、4.19項「サービス・アカウント」を参照してください。

クライアントJar

「参照」をクリックし、表示されるリストからEJBクライアントJARリソースを選択します。クライアントJARには、リモート・サービスのリモートまたはビジネス・インタフェースが含まれます。クライアントJARは汎用アーカイブ・リソースとして登録されます。

ホーム・インタフェース

EJB 2.1専用 - JARによって挿入されるオプションから必要なEJBHomeインタフェースを選択します。

リモート・インタフェース

EJB 2.1のみ - このフィールドは、ホーム・インタフェースの構成に応じて、自動的に情報が表示されます。

ビジネス・インタフェース

EJB 3.0のみ - クライアントJARから、起動するビジネス・インタフェースを選択します。

対象ネームスペース

このフィールドにはJARからのピックアップされた情報が表示されます。

メソッド

必要なメソッドを選択します。「+」をクリックしてメソッドを展開すると、デフォルトのパラメータ値を編集できます。

任意のメソッドのデフォルトの操作名を変更できます。デフォルトでは、操作名はメソッド名です。EJBに同じ名前のメソッドが含まれている場合(オーバーロード)、一意になるように操作名を変更する必要があります。WSDLでは一意の操作名が必要です。

3.1.14 JEJBトランスポート構成ページ(プロキシ・サービス)

このページでは、JEJB転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成できます。

表3-14 プロキシ・サービスのためのJEJBトランスポート構成

オプション

説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

EJB仕様バージョン

リモートEJBインタフェースのEJBバージョンを選択します。

値でXMLBeansを渡す

トランスポートによってPOJO引数(XMLObject)のインラインXML表現を生成する場合は、このオプションを選択します。この引数のパラメータは、XQuery式でアクセスおよび操作できます。

注意: 値で渡されたXMLObjectの場合、型情報はインラインでは利用できません。このオプションを使用する場合、プロキシ・サービス・パイプラインのJavaコールアウトで型付きのXMLObjectを引数として渡すことはできません。

参照でPOJOを渡す場合は、このオプションを選択しないでください。こうすることでパフォーマンスも向上します。

トランザクション属性

トランザクションを処理するために次のいずれかのオプションを選択します。

- 「Supports」 - トランスポートは着信トランザクションを受け入れます。サービス品質は、操作がトランザクションで呼び出される場合は「必ず1回」、操作がトランザクション外部から呼び出される場合は「ベスト・エフォート」です。

- 「Required」 - トランスポートは着信トランザクションを受け入れます。発信トランザクションが存在しない場合、トランスポートが発信トランザクションを開始します。サービス品質は「必ず1回」です。

- 「RequiresNew」 - トランスポートは常に新しいトランザクションを開始し、進行中のトランザクションを中断します。サービス品質は「必ず1回」です。

- 「Mandatory」 - トランスポートは既存のトランザクションのメソッドを呼び出します。サービス品質は「必ず1回」です。

- 「NotSupported」 - トランスポートは既存のトランザクションを中断し、呼出し時に再開します。サービス品質は「ベスト・エフォート」です。

- 「Never」 - トランスポートはトランザクションのメソッドを呼び出しません。サービス品質は「ベスト・エフォート」です。

クライアントJar

「参照」をクリックし、表示されるリストからEJBクライアントJARリソースを選択します。クライアントJARには、リモートEJBのリモートまたはビジネス・インタフェースが含まれます。クライアントJARは汎用アーカイブ・リソースとして登録されます。

ホーム・インタフェース

EJB 2.1専用 - クライアントJARによって設定されるオプションから必須のEJBHomeインタフェースを選択します。

リモート・インタフェース

EJB 2.1のみ - このフィールドは、ホーム・インタフェースの構成に応じて、自動的に情報が表示されます。

ビジネス・インタフェース

EJB 3.0のみ - クライアントJARから、起動するビジネス・インタフェースを選択します。

対象ネームスペース

このフィールドにはJARからのピックアップされた情報が表示されます。

メソッド

必要なメソッドを選択します。「+」をクリックしてメソッドを展開すると、デフォルトのパラメータ値を編集できます。

任意のメソッドのデフォルトの操作名を変更できます。デフォルトでは、操作名はメソッド名です。EJBに同じ名前のメソッドが含まれている場合(オーバーロード)、一意になるように操作名を変更する必要があります。WSDLでは一意の操作名が必要です。

3.1.15 JMSトランスポート構成ページ(ビジネス・サービス)

このページを使用して、JMS転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成します。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のJMSトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1037)を参照してください。

表3-15 ビジネス・サービスのためのJMSトランスポート構成オプション

オプション

説明

宛先タイプ

JMSブリッジ宛先の種類を選択します。

- 「キュー」(ポイントツーポイントの場合)

- 「トピック」(パブリッシュ/サブスクライブの場合)

メッセージ・タイプ

次のいずれか1つを選択します:

- 「バイト」(未解釈バイトのストリームの場合)

- 「テキスト」(テキスト・メッセージの場合)

レスポンスにJavaのメッセージ・タイプを選択した場合、このオプションは無効です。

レスポンス・キュー

このオプションは、「宛先タイプ」フィールドで「キュー」が選択されている場合にのみ使用できます。

次のいずれかのレスポンス・オプションを選択します。

- 「なし」 - レスポンスが予期されません。このオプションは1方向の操作で設定します。

- 「すべてのリクエストURIに対して1つ」 - レスポンスを扱う1つのURIを入力し、他の詳細なレスポンス構成(エンコーディングやタイムアウトなど)も設定できます。また、オプションとして、JMS/JNDI資格証明を渡すために「JMSサービス・アカウント」を選択できます。

- 「リクエストURIごとに1つ」 - このオプションではレスポンス・フェイルオーバーが提供されます。各リクエストURIのレスポンスURIつまり宛先を指定できます。オプションとして、リクエストとレスポンスのペアごとにJMS/JNDI資格証明のサービス・アカウントを選択できます。

レスポンス・パターン

このオプションを使用できるのは、「レスポンス・キュー」フィールドでレスポンス・オプションを選択した場合のみです。

次のいずれか1つを選択します:

- Oracle WebLogic Serverで実行するJAX-RPCサービス以外のすべてのサービスの「JMSCorrelationID」を選択します。

- Oracle WebLogic Serverで実行するJAX-RPCサービスの「JMSMessageID」を選択します。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のJMSリクエスト/レスポンスのメッセージIDと相関IDパターンに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1051)を参照してください。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

たとえば、ビジネス・サービスがJMS転送プロトコルに対応している場合、ビジネス・サービスのエンドポイントは、そのディスパッチ・ポリシーに関連付けることのできるMDB (メッセージドリブンBean)のJARファイルになります。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

リクエストのエンコーディング

リクエストのエンコード用の文字セットを入力します。デフォルトは、UTF-8です。

レスポンスのエンコーディング

このオプションを使用できるのは、「レスポンス・キュー」フィールドでレスポンス・オプションの1つを選択した場合のみです。

レスポンスのエンコード用の文字セットを入力します。デフォルトは、UTF-8です。

レスポンス・タイムアウト

このオプションを使用できるのは、「レスポンス・キュー」フィールドでレスポンス・オプションの1つを選択した場合のみです。

レスポンスを待機する時間を秒単位で入力します。この時間が経過すると接続が切断されます。デフォルト値は0で、レスポンスのタイムアウトがありません。

クライアントJar

このオプションは、サービスが、Javaレスポンス・タイプのメッセージング・サービスのときに使用できます。Javaオブジェクトを含むメッセージのデキューに使用する、クライアントJARを選択します。クライアントJARの選択によって、それがクラスパス上にあることが確認されます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のメッセージでのJavaオブジェクトの送信および受信に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1874)を参照してください。

レスポンスURI

このオプションを使用できるのは、「すべてのリクエストURIに対して1つ」レスポンス・オプションと「JMSCorrelationID」レスポンス・パターンを選択した場合のみです。

レスポンスURIは次の形式で入力します。

jms://host:port/connection_factory/jndi_destination

複数のサーバーをターゲットとする場合は、次の形式を使用します。

jms://host1:port,host2:port/connection_factory/jndi_destination

レスポンスURIのホストとポートを省略することもできます。例:

jms:///connection_factory/jndi_destination

ホストとポートを省略すると、ローカル・サーバーで接続ファクトリや宛先ルックアップが発生します。これは、リクエストURIが外部接続ファクトリや宛先を指し、レスポンスをローカル・サーバーに送信する場合などに便利です。

注意: Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項(http://www.oracle.com/pls/as1111/lookup?id=WLACH)を参照してください。

レスポンスのリクエスト

このオプションを使用できるのは、「JMSCorrelationID」パターンに対して「リクエストURIごとに1つ」レスポンス・オプションを選択して、レスポンス・フェイルオーバーを提供する場合です。

前の「レスポンスURI」フィールドで説明しているように、全般的なトランスポートのページに入力したリクエストURIごとにレスポンスURIを入力します。

サービスがリクエスト・キューとレスポンス・キューの両方で使用するJMS/JNDI資格証明のためにオプションとして「サービス・アカウント」を選択できます。

対象 - レスポンス

このオプションを使用できるのは、「JMSMessageID」パターンに対して「すべてのリクエストURIに対して1つ」レスポンス・オプションを選択した場合のみです。

レスポンスを受信する「対象」サーバーの名前と「レスポンスURI」を、「レスポンスURI」フィールドの説明に従って入力します。

接続のリクエスト

このオプションを使用できるのは、「JMSMessageID」パターンに対して「リクエストURIごとに1つ」レスポンス・オプションを選択して、レスポンス・フェイルオーバーを提供する場合です。

「順序番号」フィールドで順序どおりに指定されているリクエストURIごとに、JMSの「接続ファクトリ」名をオプションで入力します。名前を入力しないと、JMSトランスポートではリクエストURIの接続ファクトリが使用されます。

サービスがリクエスト・キューとレスポンス・キューの両方で使用するJMS/JNDI資格証明のためにオプションとして「サービス・アカウント」を選択できます。

対象 - 宛先

このオプションを使用できるのは、「JMSMessageID」パターンに対して「リクエストURIごとに1つ」レスポンス・オプションを選択して、レスポンス・フェイルオーバーを提供する場合です。このフィールドは「接続のリクエスト」フィールドと組み合せて使用します。

クラスタ内の管理対象サーバーなど、各ターゲット・サーバー(現行ドメインのサーバーによって判別される)がリストされ、リクエストURIが「順序番号」(「接続のリクエスト」フィールドの番号に対応)順に表示されます。各ターゲットのリクエストURIごとに、レスポンスを受信するそのターゲット・サーバーの宛先キューを入力します。

注意: Oracle Service Bus開発環境では1サーバー環境しかサポートされないため、「対象」は1つしか表示されません。複数サーバー環境でこのフィールドを構成するには、このサービスを実行時環境にデプロイし、Oracle Service Bus管理コンソールでサービス構成を完了します。

JMSサービス・アカウント

このオプションを使用できるのは、「レスポンス・キュー」フィールドで「なし」または「すべてのリクエストURIに対して1つ」オプションを使用する場合です。

JMSサーバーによって管理されているJMSリソースに使用するサービス・アカウントを選択します。サービス・アカウントは、リクエストとレスポンスの両方に使用される、ユーザーIDとパスワードの別名リソースです。同じサービス・アカウントが、JMSとJNDIの両方に使用されます。

このフィールドは「呼出し元のサブジェクトを渡す」オプションと互いに排他的です。JMS/JNDI認証のためにいずれか1つを使用してください。

詳細は、2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

SSLを使用

リクエストがTLS/SSL接続を通して行われる場合にのみ、このオプションを選択します。

TLS/SSL (Secure Sockets Layer)では、ネットワークで接続される2つのアプリケーションが互いのIDを認証し、アプリケーション間で交換されるデータを暗号化できるようにすることによって、安全な接続が可能になります。認証を使用すると、サーバー(および必要に応じてクライアント)はネットワーク接続の相手側アプリケーションのIDを検証できます。また、宛先のJNDIエントリに対してアクセス制御が設定されていることにより、管理者から個々のJMS宛先(キューまたはトピック)へのアクセスが制限されている場合、JNDIツリー内でのルックアップ時に、サービスで認証を行う必要があります。「サービス・アカウント」または「呼出し元のサブジェクトを渡す」オプションを使用して認証します。

注意: JMSトランスポートでは、双方向SSLはサポートされません。

有効期限

メッセージが期限切れになるまでの時間間隔(ミリ秒単位)です。デフォルト値の0を指定すると、メッセージは無期限になります。

メッセージ永続性を有効にする

サービスが使用するJMS配信モードです。信頼性とスループットのバランスを取ることができます。メッセージ配信を保証するためにはこのオプションを選択します(デフォルト)。少数のメッセージの紛失が許容される場合は、このオプションを選択解除するとスループットが向上します。

順序単位

メッセージ順序単位を入力します。メッセージ順序単位により、メッセージ・プロデューサは処理順序に関して複数のメッセージを1つの単位にグループ化できるようになります。この順序単位のすべてのメッセージは、メッセージが作成された順序に従って処理する必要があります。

呼出し元のサブジェクトを渡す

Oracle Service Busがメッセージを送信するときに、認証されたサブジェクトを渡すには、このチェックボックスを選択します。

このフィールドを有効にしたときに、ビジネス・サービスの対象が別のドメインのJMSリソースである場合は、両方のドメインのグローバル信頼を有効にします。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のWebLogicドメインのセキュリティ構成に関する項(http://www.oracle.com/pls/as111170/lookup?id=SECMG402)を参照してください。

このフィールドは「サービス・アカウント」オプションと互いに排他的です。JMS/JNDI認証のためにいずれか1つを使用してください。

JNDIタイムアウト

JNDIツリーでの宛先または接続ファクトリの検索時に使用されるJNDI接続タイムアウト(秒)。

デフォルト値0では接続のタイムアウトは行われません。

3.1.16 JMSトランスポート構成ページ(プロキシ・サービス)

このページを使用して、JMS転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成します。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のJMSトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1037)を参照してください。

表3-16 プロキシ・サービスのためのJMSトランスポート構成オプション

オプション

説明

宛先タイプ

次のいずれか1つを選択します:

- 「キュー」(宛先タイプがポイントツーポイントの場合)

- 「トピック」(パブリッシュ/サブスクライブの宛先の場合)

レスポンスが必要

このオプションは、「宛先タイプ」フィールドで「キュー」が選択されている場合にのみ使用できます。

アウトバウンド・メッセージの送信後にレスポンスを受け取ることを指定する場合は、このオプションを選択します。

レスポンス・パターン

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

次のいずれか1つを選択します:

- Oracle WebLogic Serverで実行するJAX-RPCサービスの「JMSMessageID」を選択します。

- その他のすべてのサービスの場合は、「JMSCorrelationID」を選択します。このオプションを選択した場合、「レスポンスURI」にも入力する必要があります。

レスポンス・メッセージ・タイプ

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

次のいずれか1つを選択します:

- 「バイト」(未解釈バイトのストリームの場合)

- 「テキスト」(テキスト・メッセージの場合)

レスポンスにJavaのメッセージ・タイプを選択した場合、このオプションは無効です。

クライアントJar

このオプションは、サービスが、Javaリクエスト・タイプのメッセージング・サービスのときに使用できます。Javaオブジェクトを含むメッセージのデキューに使用する、クライアントJARを選択します。クライアントJARの選択によって、それがクラスパス上にあることが確認されます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のメッセージでのJavaオブジェクトの送信および受信に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1874)を参照してください。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

たとえば、ビジネス・サービスがJMS転送プロトコルに対応している場合、ビジネス・サービスのエンドポイントは、そのディスパッチ・ポリシーに関連付けることのできるMDB (メッセージドリブンBean)のJARファイルになります。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

リクエストのエンコーディング

リクエストのエンコード用の文字セットを入力します。デフォルトは、UTF-8です。

レスポンスのエンコーディング

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

レスポンスのエンコード用の文字セットを入力します。デフォルトは、UTF-8です。

レスポンスURI

このオプションは、「レスポンス相関パターン」で「JMSCorrelationID」が選択されている場合にのみ使用できます。

レスポンスURIは次の形式で入力します。

jms://host:port/connection_factory/jndi_destination

複数のサーバーをターゲットとする場合は、次の形式を使用します。

jms://host1:port,host2:port/connection_factory/jndi_destination

レスポンスURIのホストとポートを省略することもできます。例:

jms:///connection_factory/jndi_destination

ホストとポートを省略すると、ローカル・サーバーで接続ファクトリや宛先ルックアップが発生します。これは、リクエストURIが外部接続ファクトリや宛先を指し、レスポンスをローカル・サーバーに送信する場合などに便利です。

注意: Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項(http://www.oracle.com/pls/as1111/lookup?id=WLACH)を参照してください。

レスポンス接続ファクトリ

このオプションは、「レスポンス相関パターン」で「JMSMessageID」が選択されている場合にのみ使用できます。

レスポンス接続ファクトリURIを入力します。

接続ファクトリが指定されていない場合、リクエストの接続ファクトリがレスポンスに使用されます。

JMSサービス・アカウント

JMSサーバーによって管理されているJMSリソースに使用するサービス・アカウントを選択します。サービス・アカウントは、リクエストとレスポンスの両方に使用される、ユーザーIDとパスワードの別名リソースです。同じサービス・アカウントが、JMSとJNDIの両方に使用されます。

詳細は、2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

SSLを使用

リクエストがTLS/SSL接続を通して行われる場合にのみ、このオプションを選択します。

TLS/SSL (Secure Sockets Layer)では、ネットワークで接続される2つのアプリケーションが互いのIDを認証し、アプリケーション間で交換されるデータを暗号化できるようにすることによって、安全な接続が可能になります。認証を使用すると、サーバー(および必要に応じてクライアント)はネットワーク接続の相手側アプリケーションのIDを検証できます。また、宛先のJNDIエントリに対してアクセス制御が設定されていることにより、管理者から個々のJMS宛先(キューまたはトピック)へのアクセスが制限されている場合、JNDIツリー内でのルックアップ時に、サービスで認証を行う必要があります。

注意: JMSトランスポートでは、双方向SSLはサポートされません。

メッセージ・セレクタ

メッセージ・セレクタ式を入力します。

式に一致するプロパティを持つメッセージのみが処理されます。

JMSクライアントID

サブスクライバに使用するクライアントIDをトピックに対してのみ入力します。値を入力しないと、クライアントIDが自動的に生成されます。カスタムIDを割り当てると、サービスの監視時にこのコンポーネントを識別するのに役立ちます。これは、恒久サブスクライバにおいてのみ有効です。

JMSクライアントIDは、トピックのサブスクライバに対してサブスクライバ名およびクライアントID値を生成するために使用される複数のMDB記述子の1つです。JMSクライアントIDを定義すると、サブスクライバ名またはクライアントIDによって、特定のトピックのサブスクライバを簡単に識別して表示できます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の「プロキシ・サービスでのJMSクライアントIDの指定」(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1967)を参照してください。

恒久サブスクリプション

このオプションは、「宛先タイプ」で「トピック」が選択されている場合にのみ使用できます。

サブスクリプションが恒久である場合はこのチェック・ボックスを選択し、サブスクリプションが恒久でない場合は、このチェック・ボックスをブランクのままにします。

再試行回数

メッセージがエラー宛先に移されるまでに許可される配信の再試行回数を入力します。このフィールドは、Oracle WebLogic Server JMS宛先にのみ適用されます。

再試行間隔

ロールバックまたは復元されたメッセージが再配信されるまでの時間をミリ秒単位で入力します。このフィールドは、Oracle WebLogic Server JMS宛先にのみ適用されます。

エラー宛先

再配信制限に達したメッセージの宛先の名前を入力します。このフィールドは、Oracle WebLogic Server JMS宛先にのみ適用されます。

有効期限ポリシー

有効期限の経過したメッセージが宛先で検出されたときに使用する有効期限ポリシーを選択します。このフィールドは、Oracle WebLogic Server JMS宛先にのみ適用されます。

XAが必要

接続ファクトリがXAである場合は、このチェック・ボックスを選択します。

この値は、リモート接続ファクトリが使用できない場合に考慮されます。接続ファクトリが使用可能であり、この値がtrueである場合は、接続ファクトリがトランザクションとして定義されていることを確認してください。

トランザクション・タイムアウト

トランザクションが処理されるまでJMSプロキシ・サービスが待機する時間を秒単位で入力します。このオプションは、XA接続ファクトリを使用しているサービスにのみ適用されます。デフォルトは600秒です。

トピック・メッセージ配信

このオプションは、「宛先タイプ」に「トピック」を選択した場合に使用できます。

「トピック・メッセージ配信」には、インバウンドJMSメッセージの処理と高可用性およびフェイルオーバーの提供における様々なオプションがあります。

受信したJMSメッセージのメッセージドリブンBeanによる処理方法を判断する、次のいずれかのプロパティを選択します。

- アプリケーションごとに1コピー(デフォルト) - JMSプロキシ・サービスがクラスタにデプロイされる場合、このオプションでは、クラスタで使用可能なサーバー群の中の1つのサーバーのみでインバウンドJMSメッセージを処理することで、高い可用性と拡張性を提供します。

- サーバーごとに1コピー - クラスタのメンバーごとにプロキシ・サービスで受信されるトピックにインバウンドJMSメッセージをパブリッシュする場合に、このオプションを選択します。

- 互換性 - クラスタ内の特定の管理対象サーバーまたはすべての管理対象サーバーでインバウンドJMSメッセージを処理する場合は、このオプションを選択します。このプロパティを選択した場合は「対象」サーバーを選択します。

注意: リリース10.3.4より前のOracle WebLogic Serverでデプロイされたトピック宛先については、有効なオプションは「互換性」のみです。

「トピック・メッセージ配信」で選択した「1コピー」オプションは、JMSコネクション・ファクトリで構成された「サブスクリプション共有ポリシー」または「クライアントIDポリシー」(あるいはその両方)よりも優先されます。

対象

このオプションは、「トピック・メッセージ配信」オプションに「互換性」を選択した場合に、Oracle Service Busクラスタのみで使用できます。受信したJMSメッセージを処理するターゲット・サーバーを選択します。「トピック・メッセージ配信」で「1コピー」オプションのいずれかを選択した場合、このフィールドにはクラスタの名前が表示されます。

対象を設定しない場合は、クラスタ内の管理対象サーバーごとのJMSプロキシ・サービス・インスタンス(トピックからのメッセージの読取り)によってメッセージのコピーが取得されます。

JNDIタイムアウト

JNDIツリーで宛先ファクトリまたは接続ファクトリを検索する際にJNDI接続がタイムアウトするまでの時間(秒単位)。

3.1.17 MQトランスポート構成ページ(ビジネス・サービス)

MQトランスポートを使用する前に、MQ接続リソースを作成する必要があります。2.6項「MQ接続の操作」を参照してください。MQトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のMQトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1117)を参照してください。

このページを使用して、MQ転送プロトコルを使用してプロキシ・サービスのトランスポート設定を構成します。

表3-17 ビジネス・サービスのためのMQトランスポート構成オプション

オプション

説明

メッセージ・タイプ

次のいずれか1つを選択します:

- 「バイト」(未解釈バイトのストリームの場合)

- 「テキスト」(テキスト・メッセージの場合)

レスポンスが必要

アウトバウンド・メッセージの送信後にレスポンスを受け取ることを指定する場合は、このオプションを選択します。

レスポンス相関パターン

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

レスポンス相関パターンのベースとして次のいずれかを指定します。

- MessageID

- CorrelationID

- 「動的キュー」 - レスポンス相関のためにWebSphere MQ実装が動的キューを使用する場合はこのオプションを選択します。MQトランスポートでサポートされるのは一時的な動的キューのみです。

相関値の自動生成

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

このチェック・ボックスを選択して、CorrelationIDまたはMessageIDを自動的に生成します。

モデル・キュー

「動的キュー」のレスポンス相関パターン専用。動的キューを生成するために使用されるモデルの名前を入力します。

MQレスポンスURI

このオプションは、「レスポンスが必要」オプションが選択されている場合のみ使用できます。

レスポンスがパブリッシュされる宛先。次のようにエンドポイントURIと同じ形式でレスポンスURIを入力します。

mq://local_queue_name?conn=mq_connection_resource

または、次の動的キューを使用します。

mq://dynamic_queue_prefix?conn=mq_connection_resource

dynamic_queue_prefix(最長32文字)は、MQサーバーに動的キューを作成するために使用されます。キュー名は接頭辞に一意のIDを追加したものです。たとえば、dynamic_queue_prefixがexampleの場合、動的キューの名前はexample123129083821のようになります。

動的キューのレスポンスURIではワイルドカードとしてアスタリスク(*)も使用できます。例:

mq://dynamic_queue_prefix*?conn=mq_connection_resource

mq://dynamic_queue_prefix*

mq://*

URIにdynamic_queue_nameを指定しない場合、トランスポートはMQサーバーによって生成される動的キュー名を使用します。URIに明示的なmq_connection_resourceを指定しない場合(ベスト・プラクティス)、トランスポートはエンドポイントURIのmq_connection_resourceを使用します。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のMQトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1117)を参照してください。

レスポンス・タイムアウト

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

接続を切断するまでのレスポンスの待機時間を秒単位で入力します。デフォルトは300です。

ポーリング間隔

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

ポーリング間隔をミリ秒単位で入力します。デフォルト値は1000です。

ポーラー・ディスパッチ・ポリシー

ポーラー・スレッドに使用されるディスパッチ・ポリシー。

動的キュー・プーリング

「動的キュー」のレスポンス相関パターン専用。動的接続に対してプーリングされた接続をサービスで使用する場合は、このオプションを選択します。

動的キューに対して別の接続プールを使用する場合は、動的キューのために専用のMQ接続リソースを構成することを検討してください。

各リクエストに新しい動的キュー・インスタンスを作成する場合(レスポンスの後でキューを破棄する場合)は、このオプションを選択しないでください。

エンドポイントURI 'PUT'オプション

次の中からMQ PUTメッセージ・オプションを入力します。

- MQC.MQPMO_ALTERNATE_USER_AUTHORITY

- MQC.MQPMO_DEFAULT_CONTEXT

- MQC.MQPMO_FAIL_IF_QUIESCING

- MQC.MQPMO_LOGICAL_ORDER

- MQC.MQPMO_NEW_CORREL_ID

- MQC.MQPMO_NEW_MSG_ID

- MQC.MQPMO_NO_CONTEXT

- MQC.MQPMO_NO_SYNCPOINT

- MQC.MQPMO_NONE

- MQC.MQPMO_PASS_ALL_CONTEXT

- MQC.MQPMO_PASS_IDENTITY_CONTEXT

- MQC.MQPMO_RESOLVE_LOCAL_Q

- MQC.MQPMO_SET_ALL_CONTEXT

- MQC.MQPMO_SET_IDENTITY_CONTEXT

- MQC.MQPMO_SYNCPOINT

- MQC.MQPMO_VERSION_1

- MQC.MQPMO_VERSION_2

複数のオプションを区切るには、「|」または「+」を使用します。たとえば、次のように指定できます。

MQC.MQPMO_LOGICAL_ORDER | MQC.MQPMO_NEW_MSG_ID

MQ PUTメッセージ・オプションは、メッセージがアウトバウンド・キューに配置された場合に適用されます。

MQ認識できないレスポンスURI

認識できないレスポンス・メッセージの送信先のキューを示すURIを入力します。「相関値の自動生成」チェック・ボックスが選択された場合のみ、設定が有効になります。

このフィールドの値を指定しない場合、認証できないレスポンス・メッセージが削除されます。

RFH2ヘッダーのプロセス

メッセージ・ペイロードからWebSphere MQ RFH2ヘッダーを解析して、RFH2データを含むRFH2Headersトランスポート・ヘッダーを自動的に生成する場合はこのオプションを選択します。

このオプションを選択しない場合は、ペイロードはそのまま渡されます。

MQトランスポートによるRFH2ヘッダーの処理方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の「RFH2ヘッダーについて」(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1136)を参照してください。

ワーカー・スレッド・ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

3.1.18 MQトランスポート構成ページ(プロキシ・サービス)

MQトランスポートを使用する前に、MQ接続リソースを作成する必要があります。2.6項「MQ接続の操作」を参照してください。MQトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のMQトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1117)を参照してください。

このページを使用して、MQ転送プロトコルを使用してプロキシ・サービスのトランスポート設定を構成します。

表3-18 プロキシ・サービスのためのMQトランスポート構成オプション

オプション

説明

レスポンスが必要

アウトバウンド・メッセージの送信後にレスポンスを受け取ることを指定する場合は、このオプションを選択します。

レスポンス相関パターン

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

レスポンス相関パターンがMessageIDまたはCorrelationIDのいずれに基づく必要があるかを指定します。

MQレスポンスURI

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

レスポンスがパブリッシュされる宛先。レスポンスURIを、エンドポイントURIと同じ形式でmq://<local-queue-name>?conn=<mq-connection-resource-ref>のように入力します。

レスポンス・メッセージ・タイプ

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

次のいずれか1つを選択します:

- 「バイト」(未解釈バイトのストリームの場合)

- 「テキスト」(テキスト・メッセージの場合)

トランザクション・タイムアウト

プロキシ・サービスによって開始されたXAトランザクションがタイムアウトするまでに待機する時間を秒単位で入力します。このプロパティは、XAトランザクション用に構成されたMQ接続リソースを使用するサービスにのみ適用されます(つまり、MQ接続リソースに「XA有効」オプションが選択されます)。

デフォルト値は300秒です。

ポーリング間隔

ポーリング間隔をミリ秒単位で入力します。デフォルト値は1000です。

ポーラー・ディスパッチ・ポリシー

ポーラー・スレッドに使用されるディスパッチ・ポリシー。

バックアウトしきい値

「配信失敗メッセージURI」フィールドに指定したキューにパイプラインがメッセージをリダイレクトする前に、メッセージを再試行する回数を示す値を入力します。

このフィールドに値が指定されていない場合は、再試行を実行しないで、メッセージを配信失敗キューにリダイレクトします。

MQ配信失敗メッセージURI

「バックアウトしきい値」フィールドに指定した再試行回数を行った後、リクエスト・メッセージがリダイレクトされる配信失敗メッセージ・キューのURIを入力します。

このフィールドに値を指定しない場合、「バックアウトしきい値」フィールドに指定した再試行回数を行った後、メッセージがキューに戻され、各ポーリングでMQトランスポートによって無視されます。配信失敗メッセージURIの形式はエンドポイントURI形式と同じです。

エンドポイントURI 'GET'オプション

次のオプションでMQ GETメッセージ・オプションを入力します。

- MQC.MQGMO_ACCEPT_TRUNCATED_MSG

- MQC.MQGMO_ALL_MSGS_AVAILABLE

- MQC.MQGMO_BROWSE_FIRST

- MQC.MQGMO_BROWSE_NEXT

- MQC.MQGMO_COMPLETE_MSG

- MQC.MQGMO_CONVERT

- MQC.MQGMO_FAIL_IF_QUIESCING

- MQC.MQGMO_LOCK

- MQC.MQGMO_LOGICAL_ORDER

- MQC.MQGMO_MARK_BROWSE_CO_OP

- MQC.MQGMO_MARK_SKIP_BACKOUT

- MQC.MQGMO_NO_SYNCPOINT

- MQC.MQGMO_NONE

- MQC.MQGMO_NO_WAIT

- MQC.MQGMO_SYNCPOINT

- MQC.MQGMO_SYNCPOINT_IF_PERSISTENT

- MQC.MQGMO_UNLOCK

- MQC.MQGMO_UNMARK_BROWSE_CO_OP

- MQC.MQGMO_UNMARK_BROWSE_HANDLE

- MQC.MQGMO_UNMARKED_BROWSE_MSG

- MQC.MQGMO_VERSION_1

- MQC.MQGMO_VERSION_2

- MQC.MQGMO_VERSION_3

- MQC.MQGMO_WAIT

複数のオプションを区切るには、「|」または「+」を使用します。たとえば、次のように指定できます。

MQC.MQGMO_ACCEPT_TRUNCATED_MSG | MQC.MQGMO_LOCK

インバウンド・キューからのメッセージを読み込む場合、MQ GETメッセージ・オプションが適用されます。

RFH2ヘッダーのプロセス

メッセージ・ペイロードからWebSphere MQ RFH2ヘッダーを解析して、RFH2データを含むRFH2Headersトランスポート・ヘッダーを自動的に生成する場合はこのオプションを選択します。

このオプションを選択しない場合は、ペイロードはそのまま渡されます。

MQトランスポートによるRFH2ヘッダーの処理方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の「RFH2ヘッダーについて」(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1136)を参照してください。

返信先ヘッダーの無視

キュー・マネージャの返信先ヘッダーを無視する場合はこのオプションを選択します。

ワーカー・スレッド・ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

3.1.19 SBトランスポート構成ページ(ビジネス・サービス)

このページを使用して、SB (Service Bus)転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成します。SBトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のSBトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV997)を参照してください。

表3-19 ビジネス・サービスのためのSBトランスポート構成オプション

オプション

説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

タイムアウト

サービスがタイムアウトになる時間(秒単位)。

注意: サービス品質が「必ず1回」の場合、タイムアウトは無視されます。

サービス・アカウント

「参照」をクリックし、表示されるリストでサービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

3.1.20 SBトランスポート構成ページ(プロキシ・サービス)

このページを使用して、SB (Service Bus)転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成します。SBトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のSBトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV997)を参照してください。

表3-20 プロキシ・サービスのためのSBトランスポート構成オプション

オプション

説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

SSLを使用

指定されている場合、リクエストをSSL接続を使用して送信する必要があります。

ただし、非セキュアな接続が禁止されるわけではありません。管理者は、サーバーのすべての非セキュアなプロトコル(T3またはHTTPなど)を閉じて、セキュアなクライアント接続を厳格に実施する必要があります。

3.1.21 SFTPトランスポート構成ページ(ビジネス・サービス)

このページを使用して、SFTP転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成します。SFTPトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のSFTPトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV975)を参照してください。

表3-21 ビジネス・サービスのためのSFTPトランスポート構成オプション

オプション

説明

ユーザー認証

次のいずれか1つを選択します:

- 「ユーザー名パスワード」認証 - 静的なサービス・アカウントがこの認証方式に関連付けられていて、クライアントは提供された資格証明を使用して認証されることを指定します。

- 「ホスト・ベース」認証 - この認証方法を使用するには、ユーザー名とサービス・キー・プロバイダが必要とされることを指定します。既知のホストから接続するユーザーは、ホストの秘密鍵を使用して認証されます。

- 「公開鍵」認証 - この認証方法を使用するために、ユーザー名とサービス・キー・プロバイダが必要とされることを指定します。各ユーザーは固有の秘密鍵を持っています。

注意: Oracle Service Busサービスは、SFTPサーバーからの資格証明を認証するために、サービス・キー・プロバイダを使用することはありません。SFTPサーバーを認証する場合、known_hostsファイルのみを使用します。『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のSFTPトランスポートのトランスポート・レベルでのセキュリティの構成に関する項を参照してください。

サービス・アカウント

ユーザーのサービス・アカウントを入力するか、「参照」をクリックしてブラウザからサービス・アカウントを選択します。

サービス・キー・プロバイダ

このオプションは、「ホスト・ベース」認証または「公開鍵」認証が選択されている場合にのみ使用できます。

「サービス・キー・プロバイダ」フィールドに、サービス・キー・プロバイダを入力します。「参照」をクリックし、サービス・キー・プロバイダをブラウザから選択できます。このフィールドは必須です。

ユーザー名

このオプションは、「ホスト・ベース」認証または「公開鍵」認証が選択されている場合にのみ使用できます。

ユーザー名を入力します。

タイムアウト

接続が切断されるまでのソケット・タイムアウト間隔を秒単位で入力します。「0」を入力すると、タイムアウトは発生しません。デフォルト値は60です。

宛先ファイル名の接頭辞

トランスポートによってリモート・サーバー上のファイル名の先頭に付加される、省略可能な接頭辞を入力します。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

宛先ファイル名の接尾辞

トランスポートによってリモート・サーバー上のファイル名の末尾に付加される、省略可能な接尾辞を入力します。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

リクエストのエンコーディング

SFTPトランスポートでは、リクエストの文字セット・エンコーディングとしてデフォルトのUTF-8を受け入れます。

優先暗号スイート

サーバーと通信する際に使用する暗号スイートを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、サポートされる暗号スイートのリストがサーバーに送信され、一致が検出されるまで各暗号スイートが試行されます。

優先データ整合性アルゴリズム

データ整合性チェックに使用するバルク・ハッシュ・アルゴリズムを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムhmac-sha1が送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先公開鍵アルゴリズム

公開鍵暗号化のための非対称鍵アルゴリズムを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムssh-dssが送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先鍵交換アルゴリズム

メッセージの暗号化のためのセッション鍵のネゴシエーション用として、デフォルトの鍵交換プロトコルを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムdiffie-hellman-group1-sha1が送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先圧縮アルゴリズム

処理中のデータをzlibを使用して圧縮するかどうかを選択します。データを圧縮するにはzlibを、それ以外の場合は「なし」を選択します。デフォルトは、「None」。

3.1.22 SFTPトランスポート構成ページ(プロキシ・サービス)

このページを使用して、SFTP転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成します。SFTPトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のSFTPトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV975)を参照してください。

表3-22 プロキシ・サービスのためのSFTPトランスポート構成オプション

オプション

説明

ユーザー認証

次のいずれか1つを選択します:

- 「ユーザー名パスワード」認証 - 静的なサービス・アカウントがこの認証方式に関連付けられていて、クライアントは提供された資格証明を使用して認証されることを指定します。

- 「ホスト・ベース」認証 - この認証方法を使用するには、ユーザー名とサービス・キー・プロバイダが必要とされることを指定します。既知のホストから接続するユーザーは、ホストの秘密鍵を使用して認証されます。

- 「公開鍵」認証 - この認証方法を使用するために、ユーザー名とサービス・キー・プロバイダが必要とされることを指定します。各ユーザーは固有の秘密鍵を持っています。

注意: Oracle Service Busサービスは、SFTPサーバーからの資格証明を認証するために、サービス・キー・プロバイダを使用することはありません。SFTPサーバーを認証する場合、known_hostsファイルのみを使用します。『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のSFTPトランスポートのトランスポート・レベルでのセキュリティの構成に関する項を参照してください。

サービス・アカウント

ユーザーのサービス・アカウントを入力するか、「参照」をクリックしてブラウザからサービス・アカウントを選択します。

サービス・キー・プロバイダ

このオプションは、「ホスト・ベース」認証または「公開鍵」認証が選択されている場合にのみ使用できます。

「サービス・キー・プロバイダ」フィールドに、サービス・キー・プロバイダを入力します。「参照」をクリックし、サービス・キー・プロバイダをブラウザから選択できます。このフィールドは必須です。

ユーザー名

このオプションは、「ホスト・ベース」認証または「公開鍵」認証が選択されている場合にのみ使用できます。

ユーザー名を入力します。

参照渡し

このチェック・ボックスを選択すると、ファイルはアーカイブ・ディレクトリにステージングされ、ヘッダーに参照として渡されます。

リモート・ストリーミング

処理時にリモート・サーバーからSFTPファイルを直接ストリーミングする場合は、このチェック・ボックスを選択します。このオプションを選択した場合、アーカイブ・ディレクトリはリモートのSFTPサーバー上のリモート・ディレクトリになります。そのため、SFTPユーザー・ディレクトリを基準にした相対パスでアーカイブ・ディレクトリを指定する必要があります。

ファイル・マスク

選択されるファイルの正規表現を入力します。デフォルト値は*.*です。

管理対象サーバー

このフィールドは、クラスタ・ドメインでのみ使用できます。

ポーリング・サーバーとして機能させる管理対象サーバーを選択します。すべての管理対象サーバーがメッセージを処理できますが、メッセージをポーリングできるのは、1台のサーバーのみです。

ポーリング間隔

指定した場所からファイルをポーリングする間隔を秒単位で入力します。デフォルト値は 60 です。

読取り制限

ポーリング・スイープごとの読取りメッセージの最大数を指定します。無制限にするには0を入力します。デフォルトは10です。

読取り後のアクション

メッセージが読み込まれた後の動作を選択します。

- アーカイブ - メッセージはアーカイブされます。

- 「削除」 - メッセージが削除されます。

アーカイブ・ディレクトリ

「読取り後のアクション」オプションが「アーカイブ」に設定されている場合、アーカイブ場所へのパスを入力します。このフィールドは、「参照渡し」オプションが選択されている場合、必須です。

注意: アーカイブ・ディレクトリ、ダウンロード・ディレクトリ、およびエラー・ディレクトリは絶対パスであり、自動的に作成されます。相対パスを指定すると、ファイルはOracle WebLogic Serverを起動するJavaプロセスを基準にした相対的な位置に作成されます。

ダウンロード・ディレクトリ

ファイル転送時にファイルがダウンロードされる、ローカル・コンピュータのディレクトリを入力します。

注意: アーカイブ・ディレクトリ、ダウンロード・ディレクトリ、およびエラー・ディレクトリは絶対パスであり、自動的に作成されます。相対パスを指定すると、ファイルはOracle WebLogic Serverを起動するJavaプロセスを基準にした相対的な位置に作成されます。

エラー・ディレクトリ

問題が発生した場合にメッセージがポストされる場所を入力します。

注意: アーカイブ・ディレクトリ、ダウンロード・ディレクトリ、およびエラー・ディレクトリは絶対パスであり、自動的に作成されます。相対パスを指定すると、ファイルはOracle WebLogic Serverを起動するJavaプロセスを基準にした相対的な位置に作成されます。

リクエストのエンコーディング

SFTPトランスポートでは、リクエストの文字セット・エンコーディングとしてデフォルトのUTF-8を受け入れます。

優先暗号スイート

サーバーと通信する際に使用する暗号スイートを入力します。

デフォルト値「実行時のデフォルトの使用」を使用すると、サポートされる暗号スイートのリストがサーバーに送信され、一致が検出されるまで各暗号スイートが試行されます。

優先データ整合性アルゴリズム

データ整合性チェックに使用するバルク・ハッシュ・アルゴリズムを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムhmac-sha1が送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先公開鍵アルゴリズム

公開鍵暗号化のための非対称鍵アルゴリズムを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムssh-dssが送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先鍵交換アルゴリズム

メッセージの暗号化のためのセッション鍵のネゴシエーション用として、デフォルトの鍵交換プロトコルを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムdiffie-hellman-group1-sha1が送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先圧縮アルゴリズム

処理中のデータをzlibを使用して圧縮するかどうかを選択します。データを圧縮するにはzlibを、それ以外の場合は「なし」を選択します。デフォルトは、「None」。

サブディレクトリのスキャン

すべてのディレクトリを再帰的にスキャンする場合は、このチェック・ボックスを選択します。

到着順にソート

イベントを受信順に配信する場合は、このチェック・ボックスを選択します。

タイムアウト

接続が切断されるまでのソケット・タイムアウト間隔を秒単位で入力します。「0」を入力すると、タイムアウトは発生しません。デフォルト値は60です。

再試行回数

SFTP接続に失敗した場合の再試行回数を指定します。

3.1.23 SOA-DIRECTトランスポート構成ページ(ビジネス・サービス)

表3-23に、SOA-DIRECTトランスポートのトランスポート固有の構成オプションを示します。

表3-23 SOA-DIRECTトランスポート構成

プロパティ

説明

JNDIサービス・アカウント

オプション。ターゲットSOAサービスのJNDIルックアップのためのセキュリティ資格証明を指定します。サービス・アカウントは静的であることが必要です。「参照」をクリックして、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

ロール

必須。サービスが使用する通信パターンを指定します。次のいずれかのオプションを選択します。

- 同期クライアント(デフォルト) - このロールでは、非同期コールバックがないため、「コールバック・プロキシ」オプションは無効になります。「WS-Addressingのバージョン」オプションも無効です。

- 非同期クライアント - このロールでは、非同期コールバックが通常必要なため、「コールバック・プロキシ」を指定できます。また、「WS-Addressingのバージョン」を選択する必要があります。非同期オプションが有効になるのは、WSDLサービスのタイプがSOAPの場合のみです。

- サービス・コールバック - このロールは、外部サービス呼出しの後で非同期コールバックをSOAサービスに返すためのものです。

コールバック・サービスのロード・バランシングまたはフェイルオーバーはありません。

コールバック・プロキシ

オプション。「非同期クライアント」ロールのみで有効になります。

このオプションでは、コールバックを受信するプロキシ・サービスを指定できます。コールバック・プロキシを選択したとき、リクエストまたはプロキシ・サービス・パイプラインによってWS-Addressingが提供されない場合、Oracle Service BusはSOAPヘッダーのReplyToプロパティに自動的に値を設定します。SBトランスポート(RMI用)を使用するWSDLプロキシ・サービスを選択する必要があります。また、コールバック・プロキシ・サービスはWS-Addressingを認識する必要があります。

リクエストで送信されるWS-Addressingプロパティ、またはプロキシ・サービス・パイプラインで設定されるWS-Addressingプロパティが、このオプションで設定するコールバック・プロキシのかわりに使用されます。

「コールバック・プロキシ」を指定せず、リクエストにReplyToプロパティが含まれない場合は、プロキシ・サービス・パイプラインによってSOAPヘッダーにReplyToプロパティを提供する必要があります。

フォルト・プロキシ

このオプションは現在サポートされていません。非同期パターンでフォルトを処理するようにコールバック・サービスを構成する必要があります。

WS-Addressingのバージョン

必須。「非同期クライアント」ロールのみで有効になります。

リクエストまたはプロキシ・サービス・パイプラインでWS-Addressingが提供されないときに使用するデフォルトのWS-Addressingバージョンを指定します。リクエストで送信されるWS-Addressingプロパティまたはプロキシ・サービス・パイプラインで設定されるWS-Addressingプロパティは、このオプションで設定するWS-Addressingバージョンのかわりに使用されます。

環境ごとにWS-Addressingバージョンが異なる場合、プロキシ・サービス・パイプラインで必要な変換を実行します。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

呼出し元のサブジェクトを渡す

オプション。このオプションを選択すると、SOAサービスを呼び出すときに、Oracle Service Busがプロキシ・サービスの認証済サブジェクトを渡します。「呼出し元のサブジェクトを渡す」の代替オプションである「呼出しサービス・アカウント」オプションは、このオプションを選択すると無効になります。

注意: クライアントとターゲット・サーバーが別のドメインにある場合、それらの間でドメインの信頼が有効になっていることを確認します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のドメイン間セキュリティ・サポートの重要事項に関する項(http://www.oracle.com/pls/as111170/lookup?id=SECMG403)を参照してください。

呼出しサービス・アカウント

オプション。「呼出し元のサブジェクトを渡す」の代替オプションです。RMI呼出しのサービス・アカウントを選択することで、カスタム・セキュリティ資格証明を指定できます。任意のタイプのサービス・アカウントを指定できます(「パス・スルー」、静的、「マッピング)。

「参照」をクリックして、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

3.1.24 Tuxedoトランスポート構成ページ(ビジネス・サービス)

このページを使用して、Tuxedo転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成します。Tuxedoトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のTuxedoトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1200)を参照してください。

表3-24 ビジネス・サービスのためのTuxedoトランスポート構成オプション

オプション

説明

フィールド表クラス

受信されるFMLまたはFML32バッファを表すクラス名を入力します。これらは、フィールド名を要素名にマップするために、FMLまたはFML32からXMLへの変換ルーチンで使用されます。完全修飾クラス名をスペースで区切ってリストします。

Viewクラス

送受信されるVIEWまたはVIEW32バッファを表すクラス名を入力します。これらは、フィールド名を要素名にマップするために、VIEWからXMLまたはVIEW32からXMLへの変換ルーチンで使用されます。完全修飾クラス名をスペースで区切ってリストします。

クラスJar

このエンドポイント・オペレーションに必要なFML/FML32またはVIEW/VIEW32クラスを持つJARファイルを含むJARリソースを選択します。

リモート・アクセス・ポイント

使用可能なオプションのリストから、リモート・アクセス・ポイントを選択します。このリストには、WTCで構成されたリモート・アクセス・ポイントが含まれます。関連するリモート・アクセス・ポイントがない場合、ビジネス・サービスは作成できません。

リモート・アクセス・ポイントがない場合、または新規ポイントを作成する場合は「新規」を選択します。対応する「アクセス・ポイント名」と「ネットワーク・アドレス」を隣のフィールドに入力します。エンドポイントの検証時に、各WTCサーバーのWTC構成にアクセス・ポイントが追加されます。WTCサーバーがない場合は、新しいサーバーが作成されます。

複数のURIを指定した場合、URIごとに1つのリモート・アクセス・ポイントが存在し、そのURIが参照用に表示されます。複数のURIが存在している場合、各URIに異なるリモート・アクセス・ポイントが必要です。既存のWTCリソースに対応するURIがすでに指定されている場合、対応するリモート・アクセス・ポイントが表示されますが、編集することはできません。

ローカル・アクセス・ポイント

このフィールドは、「リモート・アクセス・ポイント」フィールドで 「新規」を選択した場合のみ表示されます。

リストから、新しく作成されたリモート・アクセス・ポイントと関連付けられるローカル・アクセス・ポイントを選択します。存在しない場合または新規作成する場合は、「新規」を選択します。対応する「ローカル・アクセス・ポイント名」と「ローカル・ネットワーク・アドレス」を隣のフィールドに入力します。

リクエスト・バッファ・タイプ

リモートTuxedoサービスが受信するバッファの種類を選択します。

リクエスト・バッファ・サブタイプ

このオプションが有効になるのは、上記の「リクエスト・バッファ・タイプ」の値がVIEWまたはVIEW32の場合です。リクエスト・バッファに関連付けるバッファのサブタイプを入力します。

レスポンスが必要

双方向の呼出しを指定する場合に選択します。選択しない場合、基礎になるtpcallがTPNOREPLYフラグで呼び出され、nullレスポンスが非同期的に返されます。

トランザクションを中断

トランザクションがある場合、このチェックボックスを選択してトランザクションを中断します。この機能は、リモート・サービスがトランザクションに対応していない場合に役立ちます。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

このワーク・マネージャは、1方向の呼出しでNULL応答を非同期にポストするために使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

リクエストのエンコーディング

Tuxedoトランスポートのリクエストのエンコーディングを設定する文字を指定します。

レスポンスのエンコーディング

Tuxedoトランスポートのレスポンスのエンコーディングを設定する文字を指定します。

タイムアウト

トランスポートのランタイムが返信を待機する最大時間(秒単位)を0以上の整数値で指定します。この値を設定しない、またはゼロ(デフォルト)に設定すると、BLOCKTIME (ローカルのWTCアクセス・ポイントが遮断コールを許可する最大秒数)でタイムアウトになります。

変換スタイル

次のいずれか1つを選択します:

- 「なし」 - (デフォルト)フィールドの順序を無視します。

- 「順序付け」 - すべてのフィールドを正しい順序で表示します。

- 順序付けとグループ別 - フィールドが論理的にレコード構造になっている場合、発生順に並べ替えられ、レコードごとにグループ化されます。

3.1.25 Tuxedoトランスポート構成ページ(プロキシ・サービス)

このページを使用して、Tuxedo転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成します。Tuxedoトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のTuxedoトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1200)を参照してください。

表3-25 プロキシ・サービスのためのTuxedoトランスポート構成オプション

オプション

説明

フィールド表クラス

受信されるFML/FML32バッファを表す(1つまたは複数の)クラスの名前を入力します。これらは、フィールド名を要素名にマップするために、FML/FML32からXMLへの変換ルーチンで使用されます。完全修飾クラス名をスペースで区切ってリストします。

Viewクラス

受信されるVIEW/VIEW32バッファを表す(1つまたは複数の)クラスの名前を入力します。これらは、フィールド名を要素名にマップするために、VIEWからXMLまたはVIEW32からXMLへの変換ルーチンで使用されます。完全修飾クラス名をスペースで区切ってリストします。

Tuxedoのバッファ・タイプX_C_TYPEとX_COMMONは、VIEW/VIEW32バッファと同様に処理されます。

受信リクエストにVIEWが含まれる場合、該当するVIEWクラスをOracle Service BusのCLASSPATHに指定する必要があります。

クラスJar

このエンドポイント・オペレーションに必要なFML/FML32またはVIEW/VIEW32クラスを持つJARファイルを含んだJARリソースを選択します。

ローカル・アクセス・ポイント

エクスポートに関連付けられたリストから、ローカル・アクセス・ポイントを選択します。このリストには、WTCで構成されたローカル・アクセス・ポイントが含まれます。関連するローカル・アクセス・ポイントがない場合、プロキシ・サービスは作成できません。

ローカル・アクセス・ポイントが存在しない場合、または、新しいローカル・アクセス・ポイントを作成する場合は、「新規」を選択します。対応する「ローカル・アクセス・ポイント名」と「ローカル・ネットワーク・アドレス」を隣のフィールドに入力します。エンドポイントの検証時に、各WTCサーバーのWTC構成にアクセス・ポイントが追加されます。WTCサーバーがない場合は、新しいサーバーが作成されます。

「新規」オプションを選択した後では、既存のアクセス・ポイント名を入力できます。この場合、既存の情報が新しいパラメータで更新されます。変更できるのは、ホスト名とポート番号に限られます。

リモート・アクセス・ポイント

このフィールドは、「ローカル・アクセス・ポイント」フィールドで「新規」を選択した場合にのみ表示されます。

リストから、新しく作成されたローカル・アクセス・ポイントと関連付けられるリモート・アクセス・ポイントを選択します。存在しない場合または新規作成する場合は、「新規」を選択します。対応する「アクセス・ポイント名」と「ネットワーク・アドレス」を隣のフィールドに入力します。

「新規」オプションを選択した後では、既存のアクセス・ポイント名を入力できます。この場合、既存の情報が新しいパラメータで更新されます。変更できるのは、ホスト名とポート番号に限られます。

リモート・アクセス・ポイントは、インバウンド・リクエストに対するWTC接続の認証プリンシパルにもなります。オプションとして、デフォルトのセキュリティ・レルムで同じアクセス・ポイントIDを持つユーザーを作成して、インバウンド呼出しを許可することができます。これを行うには、「ユーザーを作成しますか。」リストから「はい」を選択します。セキュリティ上の問題を回避するために、パスワードは一時変数を使用してランダムに作成されます。

応答バッファ・タイプ

このオプションは、「レスポンスが必要」フィールドが選択されている場合にのみ使用できます。

リモートTuxedoクライアントが受信するバッファのタイプを選択します。

応答バッファ・サブタイプ

このオプションは、「レスポンスが必要」オプションが選択されていて、「レスポンス・バッファ・タイプ」の値がVIEWまたはVIEW32の場合にのみ使用できます。

応答バッファに関連付けるバッファのサブタイプを入力します。

レスポンスが必要

このサービスにレスポンスの送信が想定されている場合は、このチェックボックスを選択します。

デフォルトのステータスでは、このオプションが選択されています。

サービスのタイプが「メッセージ・サービス」で、レスポンス・メッセージのタイプが「なし」の場合は、このオプションの選択が解除され、使用できません。

リクエストのエンコーディング

Tuxedoトランスポートのリクエストのエンコーディングを設定する文字を指定します。

レスポンスのエンコーディング

Tuxedoトランスポートのレスポンスのエンコーディングを設定する文字を指定します。

変換スタイル

次のいずれか1つを選択します:

- 「なし」 - (デフォルト)フィールドの順序を無視します。

- 「順序付け」 - すべてのフィールドを正しい順序で表示します。

- 順序付けとグループ別 - フィールドが論理的にレコード構造になっている場合、発生順に並べ替えられ、レコードごとにグループ化されます。

3.1.26 WSトランスポート構成ページ(ビジネス・サービス)

このページを使用して、WS転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成します。WSトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のWSトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1083)を参照してください。

表3-26 ビジネス・サービスのためのWSトランスポート構成オプション

オプション

説明

レスポンス・タイムアウト

レスポンスの待ち時間を秒数で指定します。

このフィールドを指定しない場合、レスポンスのタイムアウトは発生しません。ビジネス・サービスは、RMポリシーで構成されたシーケンス・タイムアウトの期間待機します。

ゼロ(0)の値を入力した場合は、タイムアウトなしです(タイムアウトしません)。

サービス・アカウント

サービス・アカウントを入力するか、「参照」をクリックして、表示されたリストからサービス・アカウントを選択します。

サービス・アカウントにより、このサービスにHTTP基本認証ポリシーがある場合に使用する資格証明が指定されます。

エラー・メッセージをキューに入れる

構成されたエラー・キューにエラー・メッセージを送信することを指定します。

エラー・キューURI

このオプションは、「エラー・メッセージをキューに入れる」チェック・ボックスが選択されている場合のみ有効です。

エラー・メッセージを格納するJMSキューのURIを次の形式で入力します。

jms://host:port/connFactoryJndiName/queueJndiName

注意: Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項(http://www.oracle.com/pls/as1111/lookup?id=WLACH)を参照してください。

JMSエラー・キューのサービス・アカウント

このオプションは、「エラー・メッセージをキューに入れる」チェック・ボックスが選択されている場合のみ有効です。

サービス・アカウントを入力するか、「参照」をクリックして、表示されたリストからサービス・アカウントを選択します。

サービス・アカウントにより、JNDI参照およびエラー・キューへのエラー・メッセージ送信用に使用する資格証明が指定されます。

エラー・キューにSSLを使用

このオプションは、「エラー・メッセージをキューに入れる」チェック・ボックスが選択されている場合のみ有効です。

エラー・キューへの接続にSSLを使用する場合に選択します。

3.1.27 WSトランスポート構成ページ(プロキシ・サービス)

このページを使用して、WS転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成します。WSトランスポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のWSトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1083)を参照してください。

表3-27 プロキシ・サービスのためのWSトランスポート構成オプション

オプション

説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のスケジュール済作業を最適化するワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=CNFGD112)を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1428)を参照してください。

再試行回数

パイプラインへのメッセージの配信の再試行回数を入力します。

プロキシ・サービスのリクエスト・パイプラインで処理されない例外が発生した場合、着信WSトランスポート・メッセージは、再試行回数で指定された回数まで、パイプラインに再配信されます。この値は、WSトランスポート・メッセージの信頼性の高い処理を実現するために重要です。

再試行の遅延

エラーの発生後に、パイプラインへのメッセージの配信を再試行するまでシステムが一時停止する秒数です。

4 ユーザー・インタフェース・リファレンス

この章では、Oracle Service Bus IDEにあるすべてのビュー、ダイアログ、ウィザードおよびその他のユーザー・インタフェース・オブジェクトについて説明します。

この章の内容は次のとおりです。

- 4.1項「アラート」

- 4.2項「ビジネス・サービスの構成」

- 4.3項「プロキシ・サービスの構成」

- 4.4項「Oracle Service Busの構成とプロジェクト」

- 4.5項「カスタム・リソース」

- 4.6項「エクスポート・ウィザード」

- 4.7項「インポート・ウィザード」

- 4.8項「JNDIプロバイダ」

- 4.9項「プロキシ・サーバー」

- 4.10項「メッセージ・フロー・デザイン・パレット」

- 4.11項「メッセージ・フロー・エディタ」

- 4.12項「JAR依存関係の変更ダイアログ」

- 4.13項「SMTPサーバー」

- 4.14項「「UDDIレジストリの構成」ページ」

- 4.15項「アウトライン・ビュー - Oracle Service Bus」

- 4.16項「リソース管理」

- 4.17項「新しいサービス・キー・プロバイダ・リソース」

- 4.18項「新しいWS-Policy」

- 4.19項「サービス・アカウント」

- 4.20項「式エディタ」

- 4.21項「新しいXSLトランスフォーメーション」

- 4.22項「分割-結合ユーザー・インタフェース・リファレンス」

4.1 アラート

次のページでは、アラートの管理を行うことができます。

- 4.1.1項「アラート宛先エディタ」

- 4.1.2項「電子メール受信者の編集ページ」

- 4.1.3項「JMS宛先の編集ページ」

4.1.1 アラート宛先エディタ

アラート宛先は、Oracle Service Busのアラート通知用の宛先アドレスです。このページでアラート宛先リソースを構成します。

表4-1 アラート宛先エディタのオプション

オプション

説明

説明

このアラート宛先の説明を入力します。

SNMPトラップ

「SNMPトラップ」を指定すると、アラートはSNMPトラップとして送信され、サードパーティのエンタープライズ管理システム(EMS)で処理できます。

レポート

「レポート」を指定すると、アラートはOracle Service Busの「レポート」モジュールに送信され、カスタム・レポート・プロバイダを使用して取得できます。カスタム・レポート・プロバイダは、Oracle Service BusでレポートAPIプロバイダを使用して開発できます。これにより、カスタムJavaコードを使用して、サード・パーティがアラートを受信および処理できます。

アラートのロギング

「はい」を選択すると、このアラート宛先に送信されるアラートがアラート・ログにロギングされます。

「アラート宛先の編集」ページで作業を続けます。アラート宛先に電子メールおよびJMS受信者を追加するには、「追加」をクリックします。次を参照:

- 4.1.2項「電子メール受信者の編集ページ」

- 4.1.3項「JMS宛先の編集ページ」

4.1.2 電子メール受信者の編集ページ

このページを使用して、電子メールで送信される(つまり、電子メール・トランスポートを使用する)アラートの宛先ターゲットを構成します。

表4-2 電子メール受信者のオプション

オプション

説明

電子メール受信者

電子メール受信者をmailto:username@hostnameの形式で入力します。

ユーザー名とホスト名の組合せをカンマ区切りリストの形式で入力すると、複数の電子メール受信者を指定できます。次に例を示します。mailto:username@hostname

[,username_1@hostname_1]...[,username_n@hostname_n]

最初のメール受信者のみ、先頭に「"mailto:"」というテキストを付ける必要があります。ただし、これはオプションで、省略した場合はコードによって追加されます。

SSLが必要

Secure Sockets Layerを使用して通信するには、このオプションを選択します。SSLを使用する場合のデフォルトのSMPTポート番号は、465です。

注意:

- SSLを有効にするには、Oracle Service Busトラストストアに電子メール・サーバーの証明書が存在している必要があります。

- TLSを使用している場合は、デフォルトのトラストストア($JAVA_HOME/jre/lib/security/cacerts)に信頼性のある証明書を配置するか、次に示すように、任意のトラストストアに証明書を配置して$DOMAIN_HOME/bin/setDomainEnv.*ファイルにそのパスを追加する必要があります。

set EXTRA_JAVA_PROPERTIES=%EXTRA_JAVA_PROPERTIES%
-Djavax.net.ssl.trustStore=<path to trustStore>

SMTPサーバー

送信電子メール用のSMTPサーバーの名前を選択します。このフィールドは、次の「メール・セッション」フィールドを選択する場合には必要ありません。この2つのフィールドは互いに排他的です。両方を構成するとエラーになります。

メール・セッション

使用できるメール・セッションを選択します。このフィールドは、前の「SMTPサーバー」フィールドを選択した場合には必要ありません。この2つのフィールドは互いに排他的です。両方を構成するとエラーになります。

送信元の名前

アラート通知対象の送信者の名前を指定します。このフィールドは省略可能です。

送信元アドレス

有効な電子メール・アドレスを指定します。「送信元の名前」フィールドに値を指定した場合、このフィールドは必須です。

返信先の名前

返信先の名前を指定します。このフィールドは省略可能です。

返信先アドレス

返信が送信される電子メール・アドレスを指定します。「返信先の名前」フィールドに値を指定した場合、このフィールドは必須です。

接続タイムアウト

タイムアウトまでに接続がサーバーからのレスポンスを待つ秒数を入力します。デフォルト値は0です。

リクエストのエンコーディング

文字セット・エンコーディングの値を入力します。デフォルトのエンコーディング値は、iso-8859-1です。

4.1.3 JMS宛先の編集ページ

このページを使用して、JMSで送信される(つまり、JMSトランスポートを使用する)アラートの宛先ターゲットを構成します。

表4-3 JMS宛先のオプション

オプション

説明

宛先URI

JMS宛先のURIを次の形式で入力します。

jms://host:port/connection_factory/jndi_destination

注意: Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項(http://www.oracle.com/pls/as1111/lookup?id=WLACH)を参照してください。

宛先タイプ

「キュー」または「トピック」を選択します。

メッセージ・タイプ

「バイト」または「テキスト」を選択します。

リクエストのエンコーディング

文字セット・エンコーディングの値を入力します。デフォルトのエンコーディング値は、iso-8859-1です。

4.2 ビジネス・サービスの構成

ビジネス・サービスを作成したら、ビジネス・サービス・エディタでビジネス・サービスを構成します。ビジネス・サービス・エディタでは、それらの設定を表示および変更できます。次のビジネス・サービス構成ページがあります。

- 4.2.1項「ビジネス・サービスの「全般的な構成」ページ」

- 4.2.2項「ビジネス・サービスの「メッセージ・タイプの構成」ページ」

- 4.2.3項「ビジネス・サービスの「SOAPバインド構成」ページ」

- 4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」

- 4.2.5項「ビジネス・サービスの「メッセージ処理構成」ページ」

- 4.2.6項「ビジネス・サービスの「サービス・ポリシー構成」ページ」

- 4.2.7項「ビジネス・サービスの「セキュリティ構成」ページ」

4.2.1 ビジネス・サービスの「全般的な構成」ページ

ビジネス・サービスの「全般的な構成」ページを使用して、ビジネス・サービスの全般的な構成設定を指定します。

4.2.1.1 ビジネス・サービス・エディタのオプション

次の表に、エディタのオプションを示します。

表4-4 ビジネス・サービス・エディタのオプション

オプション

説明

説明

このサービスの説明を入力または変更します。

サービスの種類(エディタのみ)

このオプションは、ビジネス・サービスのサービスの種類を示します。特定のサービスの種類の、特定のプロパティのみ変更できます。

- 「WSDL Webサービス」 - WSDLに基づくビジネス・サービスを作成するには、このオプションを選択します。パスで修飾されたWSDL名を入力します(たとえば、myProject/myFolder/myWSDL)。または、「参照」をクリックしてWSDLリソースを選択します。異なるWSDLを指定することもできます。この場合、効率的に新しいサービスを作成できます。ただし、新しいサービスとして構成する必要があります。
「(ポートまたはバインド)」 - ポート名(WSDLで定義)を入力して、実際のトランスポート・アドレスを指定します。またはバインド名(WSDLで定義)を入力してトランスポート・アドレスにマップします。前の説明のように「参照」を使用してWSDLを選択する場合は、「WSDL定義の選択」ダイアログにWSDLに定義されているすべてのポートとバインドが表示されます。前のページでポートまたはバインドを選択すると、選択した名前が「(ポートまたはバインド)」フィールドに設定されます。

- 「トランスポート型付きのサービス」 - EJB、JEJBまたはFlow(分割-結合)トランスポートを使用するサービスを作成するには、このオプションを選択します。

- 「メッセージ・サービス」 - 様々なコンテンツタイプのメッセージを交換するサービスを作成するには、このオプションを選択します。これらの交換は、リクエスト/レスポンスまたは一方向のいずれかです。HTTPトランスポートでHTTP 'GET'オプションを使用する場合は、リクエストのないレスポンスもあります。Webサービスとは異なり、リクエストとレスポンスのコンテンツタイプが同じである必要はありません。

- 「任意のSOAPサービス」 - 明示的に定義された具象インタフェースを持たないSOAPサービスを作成する場合は、このオプションを選択します。SOAPバージョン(SOAP 1.1またはSOAP 1.2)を変更できます。

- 任意のXMLサービス - 明示的に定義された具体的なインタフェースを持たないXMLサービスを作成する場合、このオプションを選択します。
HTTP GETは、メッセージング・サービスとこのサービス・タイプに対してのみサポートされます。

4.2.2 ビジネス・サービスの「メッセージ・タイプの構成」ページ

ビジネス・サービスの「メッセージ・タイプの構成」ページを使用して、タイプがメッセージ・サービスであるビジネス・サービスのメッセージ・タイプを構成します。

メッセージング・サービス用のバインディング定義は、交換されるメッセージのコンテンツ・タイプの構成で構成されています。レスポンスのコンテンツ・タイプは、リクエストのコンテンツ・タイプと同じである必要はありません。そのため、レスポンスは個別に構成されます(たとえば、サービスでMFLメッセージを受信し、XMLの受信確認を返すことも可能です)。

注意:

メッセージング・サービスの型を持つ電子メール、ファイル、FTP、またはSFTPトランスポート・ビジネス・サービスは、一方向のメッセージのみをサポートしており、「レスポンス・メッセージの種類」は「なし」である必要があります。「なし」以外のオプションを選択すると、ファイル、FTP、またはSFTPプロトコルを「トランスポート構成」ページで使用できません。

表4-5 メッセージ・タイプのビジネス・サービスのオプション

オプション

説明

リクエスト・メッセージ・タイプ

リクエスト・メッセージのメッセージの種類を次の中から選択します。

- 「なし」 - リクエスト・メッセージがない場合(HTTP GETなど)は、このオプションを選択します。

- 「バイナリ」 - メッセージのコンテンツタイプが不明か、重要でない場合は、このオプションを選択します。

- 「テキスト」 - メッセージをテキストのみに制限する場合は、このオプションを選択します。

- MFL - メッセージがMFL定義に準拠したバイナリ・ドキュメントの場合は、このオプションを選択します。MFLファイル名(そのパスで修飾されている)を入力するか、または「参照」をクリックして、ファイルを選択します。
構成できるMFLファイルは1つに限られます。

注意: 複数のMFLファイルをサポートするには、コンテンツをバイナリまたはテキストとして定義し、メッセージ・フローのMFLアクションを使用してXMLに変換します。

- XML - メッセージがXMLドキュメントの場合は、このオプションを選択します。XMLファイル名(そのパスで修飾されている)を入力するか、または「参照」をクリックして、ファイルを選択します。
必要に応じて、交換されるXMLドキュメントのXMLスキーマ型を(「要素またはタイプ」フィールドで)宣言して、一部の型情報を指定します。

- Java - Javaオブジェクトをリクエストで送信中の場合は、このオプションを選択します。JMSトランスポートがJavaオブジェクト・メッセージに対して使用されます。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のメッセージでのJavaオブジェクトの送信および受信に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1874)を参照してください。

レスポンス・メッセージ・タイプ

レスポンス・メッセージのメッセージ・タイプを次の中から選択します。

- なし - レスポンス・メッセージがない場合は、このオプションを選択します。

- 「バイナリ」 - メッセージのコンテンツタイプが不明か、重要でない場合は、このオプションを選択します。

- 「テキスト」 - メッセージをテキストのみに制限する場合は、このオプションを選択します。

- MFL - メッセージがMFL定義に準拠したバイナリ・ドキュメントの場合は、このオプションを選択します。MFLファイル名(そのパスで修飾されている)を入力するか、または「参照」をクリックして、ファイルを選択します。
構成できるMFLファイルは1つに限られます。

注意: 複数のMFLファイルをサポートするには、コンテンツをバイナリまたはテキストとして定義し、メッセージ・フローのMFLアクションを使用してXMLに変換します。

- XML - メッセージがXMLドキュメントの場合は、このオプションを選択します。XMLファイル名(そのパスで修飾されている)を入力するか、または「参照」をクリックして、ファイルを選択します。
必要に応じて、交換されるXMLドキュメントのXMLスキーマ型を(「要素またはタイプ」フィールドで)宣言して、一部の型情報を指定します。

- Java - Javaオブジェクトをレスポンスで受信中の場合は、このオプションを選択します。JMSトランスポートがJavaオブジェクト・メッセージに対して使用されます。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のメッセージでのJavaオブジェクトの送信および受信に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1874)を参照してください。

4.2.3 ビジネス・サービスの「SOAPバインド構成」ページ

ビジネス・サービスの「SOAPバインド構成」ページを使用して、WSDLに基づいたビジネス・サービスのSOAPバインドを構成します。

Web Services Interoperability Organizationで定義されたBasic Profileにサービスを準拠させるかどうかを指定する場合は、「WS-I準拠の適用」チェック・ボックスを選択または選択解除します。このオプションが有効になるのは、SOAP 1.1サービスの場合に限られます。

サービスをWS-I準拠として指定すると、サービス間で送受信されるメッセージの確認が行われます。

4.2.4 ビジネス・サービスの「トランスポート構成」ページ

ビジネス・サービスの「トランスポート構成」ページを使用して、サービスの転送プロトコルの選択、確認または変更、全般的なトランスポート構成設定の設定、確認または変更を行います。

アウトバウンド・トランスポートレベルのセキュリティは、Oracle Service Busのプロキシ・サービスとビジネス・サービスの間の接続に適用されます。トランスポートレベルのセキュリティに関する詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のトランスポートレベル・セキュリティの構成に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1557)を参照してください。

表4-6 ビジネス・サービスのトランスポート構成のオプション

オプション

説明

プロトコル

リストから転送プロトコルを選択します。使用可能なプロトコルは、サービスの種類によって異なります。

- 「WSDL Webサービス」: soa-direct、bpel-10g、dsp、http、jca、jms、sb、soa-direct、ws

- 「トランスポート型付きのサービス」: ejb、flow、jejb

- 「メッセージ・サービス」: email、file、ftp、http、jms、mq(使用できる場合)、sftp、tuxedo

- 「任意のSOAPサービス」: dsp、http、jms、sb

- 「任意のXMLサービス」: dsp、email、file、ftp、http、jms、mq(使用できる場合)、sb、sftp、tuxedo

ロード・バランシング・アルゴリズム

次のいずれかのロード・バランシング・アルゴリズムを選択します。

- 「ラウンドロビン」 - このビジネス・サービスに対して「エンドポイントURI」フィールドに入力したURLの順番を動的に設定します。最初のものに失敗した場合は次が試行され、次のものに失敗した場合はその次というように、再試行回数に達するまで続きます。
新しいメッセージごとに、URLの順番が新しく設定されます。

- 「ランダム」 - このビジネス・サービスに対して「エンドポイントURI」フィールドに入力した一連のURLの順番をランダムに設定します。最初のものに失敗した場合は次が試行され、次のものに失敗した場合はその次というように、再試行回数に達するまで続きます。

- 「ランダムな重みベース」 -このビジネス・サービスに対して「エンドポイントURI」フィールドに入力した一連のURLの順番をランダムに設定します。ただし、「重み」フィールドに入力した値に基づいて、一部のURLが他のURLよりも頻繁に再試行されます。

- 「なし」 - このビジネス・サービスに対して「エンドポイントURI」フィールドに入力した一連のURLの順番を上から順に設定します。

エンドポイントURI

「プロトコル」フィールドで選択した転送プロトコルに基づいた形式でエンドポイントURLを入力します。この後で、各トランスポートのURI形式を示します。省略できるURI要素は大カッコ[]で囲んでいます。トランスポートのURIの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の各トランスポートの章を参照してください。

- bpel-10g - protocol://host[:port] [/protocol-path]/domain/process[/version[/partnerlink/role]]

- dsp - t3://dsp-ip-address:port/dsp-app-name

- ejb - ejb:jndi_provider_name:ejb_jndi_name
このURIで、jndi_provider_nameはOracle Service Bus JNDIプロバイダ・リソースの名前、ejb_jndi_nameはEJBに対するJNDIサーバーのJNDI名です。

JNDIプロバイダが同じサーバーに配置されている場合、JNDIプロバイダを指定する必要はありません。この場合のURIはejb::ejb_jndi_nameとなります。

注意: EJBがIBM WebSphere上で実行中の場合は、ejb_jndi_nameを次の形式にしてください。

cell/nodes/node_name/servers/server_name/ejb_jndi_name

または

cell/clusters/cluster_name/ejb_jndi_name

詳細は次の場所にあるIBM WebSphereのドキュメントに記述されています。http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/rnam_example_prop3.html

- email - 次の形式を任意に組み合せて複数のエンドポイントURIを入力できます。
mailto:name@domain_name.com

mailto:name@domain_name.com?smtp=smtp_server_resource

mailto:name@domain_name.com?mailsession=jndi_mail_session

- file - file:///root-dir/dir1

- ftp - ftp://hostname:port/directory

- http - http://host:port/someService
HTTPトランスポートではHTTPエンドポイントとHTTPSエンドポイントの両方がサポートされます。

- jca - jca://<resource_adapter_jndi>

- jejb - jndi_provider_name:ejb_jndi_name
このURIで、jndi_provider_nameはOracle Service Bus JNDIプロバイダ・リソースの名前、ejb_jndi_nameはEJBに対するJNDIサーバーのJNDI名です。

EJB 2.1の例: jejb:myProvider:osb.jejb.myJejbBiz21

EJB 3.0の例: jejb:myProvider:myBiz31#osb.jejb.myJejbBiz

注意: EJBがIBM WebSphere上で実行中の場合は、ejb_jndi_nameを次の形式にしてください。

cell/nodes/node_name/servers/server_name/ejb_jndi_name

または

cell/clusters/cluster_name/ejb_jndi_name

詳細は次の場所にあるIBM WebSphereのドキュメントに記述されています。http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/rnam_example_prop3.html

エンドポイントURI(続き)

- jms - jms://host:port[,host:port]*/connection_factory/jndi_destination
JMS宛先に複数のサーバーを指定するには、jms://host1:port,host2:port/connection_factory/jndi_destinationという形式のURIを使用します。

ローカル・コンピュータで行われるルックアップの場合、ホストとポートをURIから省略することもできます。例:

jms:///connection_factory/jndi_destination

注意: Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項(http://www.oracle.com/pls/as1111/lookup?id=WLACH)を参照してください。

クラスタの場合: JMS URIのホスト名はクラスタ・サーバーのホスト名と正確に一致する必要があります。これは、クラスタ・サーバーのホスト名はWebLogic Serverに構成されているためです。

- mq - mq://local-queue-name?conn=mq-connection-resource-ref
local-queue-nameは、ビジネス・サービスがメッセージを読み取るMQキューの名前です。

mq-connection-resource-refは、MQ接続リソースの名前とパス(プロジェクト/フォルダ)です。たとえば、default/my_MQconnection。

注意: エンドポイントURIはスペースを含むことができないので、名前にスペースがあるMQ接続リソースまたはプロジェクト/フォルダを作成しないでください。

MQトランスポートをOracle Service Busで使用できるようにするには、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のMQトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1117)を参照してください。

- sb - sb://<jndi_provider_name/>service_name
jndi_provider_name(オプション)はOracle Service Bus JNDIプロバイダ・リソースの名前です。省略した場合は、デフォルトのコンテキストが使用されます。

service_nameはターゲット・サービスです。リモート・プロキシ・サービスURIに対応します。

- sftp - sftp://hostname:port/directory

- soa-direct - [protocol://authority]/default/compositeName[!versionNumber[*label]]/serviceName
SOAサービスがOracle Service Busと同じサーバーに配置されている場合、protocolとauthorityは省略できます。

- tuxedo - tuxedo:resourcename/remotename
tuxedo-queue:sendQSpace/sendQName[/[rcvQspace:]rvcQname][/failureQname]

URIに含まれるresourcenameはWTCインポート名に対応し、remotenameはリモートTuxedoドメインによりエクスポートされたサービス名に対応します。resourcenameは必須でremotenameは省略可能です。

複数のURIが指定されている場合、エンドポイントには一意のリソース名を付ける必要があります。リモート名が指定されていない場合は、その値がリソース名の値になります。リモート名が入力されていない、またはリモート名およびリソース名が同じである場合は、1つのURIのみを使用できます。この場合、リソース名とリモート名は同じ値です。これにより、すでに定義されたWTCインポートが、WTCロード・バランシングおよびフェイルオーバーを利用できるようになります。

- ws - http://host:port/someService
注意: Oracle Service Busでは、同じビジネス・サービス内でエンドポイントURIの重複はサポートされなくなりました。

「追加」をクリックして、1つまたは複数のURIを追加します。実行時に、「ロード・バランシング・アルゴリズム」フィールドで選択したロード・バランシング・アルゴリズムに基づいてURLが選択されます。

「ロード・バランシング・アルゴリズム」フィールドで「ランダムな重みベース」を選択した場合は、「エンドポイントURI」フィールドに重みを入力することもできます。デフォルト値は1です。

複数のエンドポイントを定義している場合に、「ロード・バランシング・アルゴリズム」フィールドで「なし」を選択すると、エンドポイントの順序が重要になります。上向き矢印と下向き矢印のボタンを使用して、エンドポイントの順序を変更することができます。

Oracle Service Busでは、同じビジネス・サービス内でエンドポイントURIの重複はサポートされなくなりました。

再試行回数

アウトバウンド・リクエストを送信する際の配信の失敗に備えて、各URLエンドポイントの再試行回数(フェイルオーバー試行回数)を指定します。

たとえば、ビジネス・サービスにURI (U1)を1つ構成し、再試行回数を3に設定したとします。最初の試行でU1が失敗すると、システムはU1エンドポイントにさらに3回試行します。

ビジネス・サービスに2つのURI (U1とU2)を構成し、再試行回数を3に設定した場合は、最初の試行(たとえばU1)が失敗すると、システムは次のURI (U2)を試行(フェイルオーバー)します。また失敗すると、システムはさらに2回(U1とU2を1回ずつ)試行します。

再試行の反復間隔

リストのすべてのエンドポイントURIを繰り返すまでのシステムの休止を秒単位で指定します。

たとえば、ビジネス・サービスに2つのURI (U1とU2)を構成し、再試行回数を2で、再試行間隔を5秒に設定したとします。最初の試行(U1)が失敗すると、システムはただちにU2を試行します。U2も失敗すると、5秒後にもう一度U1を試行します。

アプリケーション・エラーの再試行

「はい」または「いいえ」を選択します。

アウトバウンド・リクエストを送信する際の配信の失敗に備えて、アプリケーション・エラー(SOAPフォルトなど)に基づいてエンドポイントURIを再試行するかどうかを指定します。

4.2.5 ビジネス・サービスの「メッセージ処理構成」ページ

ビジネス・サービスの「メッセージ処理構成」ページを使用して、ビジネス・サービスから送信されるアウトバウンド・メッセージをOracle Service Busでエンコードする方法、およびアウトバウンド・レスポンス・メッセージの添付ファイルのコンテンツをメモリーにバッファせずにOracle Service Busでその添付ファイルをストリーミングする必要があるかどうかを指定します。

このページを使用して、ビジネス・サービスによるMTOM/XOP形式でのアウトバウンド・メッセージのエンコードを可能にすることができます。SOAP Message Transmission Optimization Mechanism (MTOM)は、Webサービス間でバイナリ・データを送受信する方法です。MTOMは、XML-binary Optimized Packaging (XOP)を使用してバイナリ・データを転送します。

このページを使用して、ビジネス・サービスでアウトバウンド・レスポンス・メッセージ内の添付ファイルをディスク・ファイルに格納し、添付ファイルのコンテンツをメモリーにバッファリングせずにストリーミング形式でデータを処理することもできます。これにより、ビジネス・サービスで、大きな添付ファイルを堅牢かつ効率的に処理できます。

表4-7 ビジネス・サービスのメッセージ処理のオプション

オプション

説明

XOP/MTOMサポート

Oracle Service Busでは、次のトランスポートを使用したXOP/MTOMがサポートされます。

- HTTP/S

- ローカル

- SB

「有効」チェック・ボックスを選択すると、ビジネス・サービスでアウトバウンド・メッセージをMTOM/XOP形式でエンコードできます。このオプションは、前のリリースの構成に基づくインポートされたビジネス・サービスに対しては無効になります。

「XOP/MTOMサポート」が有効になっている場合は、$headerおよび$bodyメッセージ・コンテキスト変数のバイナリ・データを処理する方法を次のオプションから選択します。

- 「参照によるバイナリ・データを含む」: (デフォルト)アウトバウンド・レスポンス・メッセージで、$bodyメッセージ・コンテキスト変数の設定時にxop:Include要素をctx:binary-content要素で置換します。

- 「値によるバイナリ・データを含む」:アウトバウンド・レスポンス・メッセージで、$bodyメッセージ・コンテキスト変数の設定時にxop:Include要素を対応するバイナリ・データのBase64エンコード・テキスト・バージョンで置換します。

「XOP/MTOMサポート」がビジネス・サービスに対して有効になっている場合は、すべてのアウトバウンド・メッセージがMTOM形式である必要はありません。かわりに、この設定はビジネス・サービスがMTOMペイロードを処理できることを指定します。

Oracle Service BusではMTOMとSwAの組合せがサポートされないため、Oracle Service Busがアウトバウンド・リクエストをビジネス・サービスにディスパッチしようとした場合、およびビジネス・サービスでMTOMとXOPの両方が有効で、$attachmentsメッセージ・コンテキスト変数がnullでない場合は、システムによってランタイム・エラーが発行されます。

添付ファイル

Oracle Service Busでは、HTTP/Sトランスポートを使用したMIME添付ファイルのストリーミングがサポートされます。

「添付ファイルのディスクへのページング」チェック・ボックスを選択すると、ビジネス・サービスがアウトバウンド・レスポンス・メッセージ内の添付ファイルをストリーミングできます。

「XOP/MTOMサポート」を有効にした場合、「添付ファイル」オプションは、「XOP/MTOMサポート」で「参照によるバイナリ・データを含む」オプションを選択した場合にのみ使用できます。添付ファイルを含むペイロードはRFC 822に準拠している必要もあります。具体的には、インターネット・ヘッダーを含む行は、CRLF(復帰改行)で終了する必要があります。

結果キャッシュ

いくつかの変更が結果に含まれるビジネス・サービスを呼び出す場合は、結果キャッシュを使用すると、ビジネス・サービスのパフォーマンスが向上します。外部サービスを直接呼び出すかわりにキャッシュした結果をクライアントに返すためです。

ビジネス・サービスで結果キャッシュを使用するには、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のグローバルでの結果キャッシュの有効化に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1294)で説明されているように、まず結果キャッシュをグローバルで有効にする必要があります。

次のガイドラインに従って、「詳細設定」セクションで結果キャッシュを構成します。

- 「サポートされています」オプションを選択します。こうすると、その他のフィールドが有効になります。

- 「キャッシュ・トークン式」 - Oracle Service Busは、取得や移入のためにキャッシュ・キーを使用してキャッシュ結果を識別します。キャッシュ・キーのキャッシュ・トークンの部分が一意の識別子として使用されます。式(キャッシュ・トークン式)を使用して、ビジネス・サービスのキャッシュ結果を一意に識別するキャッシュ・キーのキャッシュ・トークン部分を生成できます。「式」をクリックして式を作成します。
リクエストの値からキャッシュ・トークンを生成するには、メッセージの$body、$header、$operationまたは$transportMetaDataから値を取得する式を使用します($outbound/ctx:transport/ctx:requestまたは$outbound/ctx:transport/ctx:response)。たとえば、顧客IDのcache-tokenを$bodyに移入できます。

Service Result Caching Expressionビルダーでは、「ネームスペース定義」タブで式のネームスペースを選択することもできます。

キャッシュ・トークン式は、Stringか、単純なコンテンツの値(属性または子要素なしの要素)に解決される必要があります。式がNULLに評価されるか、エラーが発生すると、結果はキャッシュされません。

注意: ビジネス・サービス構成で「キャッシュ・トークン式」を設定しなくても、リクエストからキャッシュ・トークンを生成することもできます(ビジネス・サービスを呼び出すプロキシ・サービス・メッセージ・フローの場合)。このためには、プロキシ・サービス・パイプラインの$outbound/ctx:transport/ctx:request/ctx:cache-tokenに値を組み込みます。このcache-tokenの値が、ビジネス・サービス構成の「キャッシュ・トークン式」をオーバーライドします。

結果キャッシュ(続き)

- 「有効期限」 - 有効期限すなわち存続時間(TTL)は、ビジネス・サービスの結果キャッシュのエントリがいつ廃棄されるかを決定します。期間として0を設定すると有効期限はなしになります。負の数を指定するとキャッシュは行われません。次のいずれか1つを選択します:
「デフォルトの使用」 - デフォルトは、DOMAIN_HOME/config/osb/coherence/osb-coherence-config.xmlのexpiry-delayの値です。デフォルトは5分です。

「期間」 - 特定の長さの期間を設定します。

「XQuery式」 - 「有効期限」の値をリクエストまたはレスポンスから取得するXQuery式を入力できます。「リクエスト」または「レスポンス」を選択します。

リクエストまたはレスポンスの値から有効期限を生成するには、メッセージの$body、$header、$operationまたは$transportMetaDataから値を取得する式を使用します($outbound/ctx:transport/ctx:requestまたは$outbound/ctx:transport/ctx:response)。たとえば、Cache-Control HTTPヘッダーに設定した値を使用します。

Caching Expressionビルダーでは、「ネームスペース定義」タブを使用して式のネームスペースを選択することもできます。

有効期限は、Integer(秒数)、XQuery dayTimeDuration (XSD型)、または秒を表す単純なコンテンツの整数値(属性または子要素なしの要素)に解決される必要があります。式がNULLに評価されるか、エラーが発生すると、結果はキャッシュされません。

注意: ビジネス・サービス構成で「有効期限」を設定しなくても、リクエストから有効期限を生成することもできます。このためには、プロキシ・サービス・パイプラインの$outbound/ctx:transport/ctx:request/ctx:cache-ttlに値を組み込みます。このcache-ttl要素の値が、ビジネス・サービス構成の「有効期限」をオーバーライドします。

結果キャッシュの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のビジネス・サービスの結果キャッシュによるパフォーマンス改善に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG170)を参照してください。

4.2.6 ビジネス・サービスの「サービス・ポリシー構成」ページ

ビジネス・サービスの「サービス・ポリシー構成」ページを使用して、ビジネス・サービスのサービス・ポリシー設定を構成します。

注意: ポリシー・バインディング・モデルは相互排他的です。サービスでは1種類のポリシーのみを使用できます。サービスに直接ポリシーをバインドすると、すべてのWSDLベースのポリシーは無視されます。

表4-8 ビジネス・サービスのサービス・ポリシー構成のオプション

オプション

説明

OWSMポリシー・ストアから

ポリシーは、Oracle Enterprise Managerで管理されている中央のOracle Web Services Managerポリシー・ストアで定義されます。対象のポリシーはWS-Security 1.0/1.1、SAML 1.1/2.0、KerberosTokenプロファイル、およびその他の業界標準をサポートしています。

Oracle Web Services ManagerポリシーをIDEでサービスに追加するには、Oracle Web Services Managerが有効になっている実行中サーバーに接続している必要があります。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のOracle Web Services ManagerでのOracle Service Busの保護に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1681)を参照してください。

注意: Eclipseで複数のサーバーを操作するとき、EclipseはOracle Web Services Managerポリシーを取得するために、サーバー・リストの最初の有効なOracle Service Busサーバーを選択します。

カテゴリのフィルタ処理を使用すると、必要なポリシーを探すときに役立ちます。ビジネス・サービスの場合、クライアント側のポリシーのみが表示されます。

ビジネス・サービスの作成に使用したWSDLに組込み標準WS-Securityポリシーが含まれている場合、Oracle Service Busではエラーがスローされ、競合が表示されます。この競合を解決するには、「OWSMポリシー・ストアから」を選択し、互換性のあるポリシーの追加をクリックすることで、組込みWSDLポリシーを互換性のあるOracle Web Services Managerポリシーに置き換えます。Oracle Service Busでは、WSDLに組み込まれた標準ポリシーを基準として最も一致するポリシーをOracle Web Services Managerポリシー・ストアから探すことが、ベスト・エフォートで実施されます。このアルゴリズムで返される一致するポリシーはゼロ、1つまたは複数の場合があります。

互換性のあるポリシーの追加をクリックした後にOracle Service Busで互換性のあるポリシーが見つからなかった場合は、「追加」をクリックして適切なOracle Web Services Managerポリシーを選択します。Oracle Service Busが互換性のあるポリシーを複数返した場合は、使用しないポリシーを削除します。

ポリシーを追加した後で、「セキュリティ」ページでオーバーライドを指定できます。

WSDLから

サービス・ポリシーが、サービスの基準となるWSDLに関連付けられている場合は、このオプションを選択します。対象のポリシーはWS-Security 1.0、SAML 1.1およびその他の業界標準をサポートしています。

注意: Oracle Service BusでサポートされていないWS-Securityポリシーに関するビジネス・サービス構成でエラーが発生した場合は、「OWSMポリシー・ストアから」オプションを使用して、組込みWSDLポリシーを互換性のあるOracle WSMポリシーに置き換えます。

事前定義ポリシーまたはWS-Policyリソースから

サービス・レベル・ポリシー、操作レベル・ポリシー(この場合、ポリシーはリクエスト・メッセージおよびレスポンス・メッセージの両方に適用される)、リクエスト・ポリシー、およびレスポンス・ポリシーを直接追加するには、このオプションを選択します。

ポリシーはOracle WebLogic Serverで事前定義されるか、Oracle Service BusでWS-Policyリソースとともにユーザー定義されるかのいずれかです。対象のポリシーはWS-Security 1.0、SAML 1.1およびその他の業界標準をサポートしています。

4.2.7 ビジネス・サービスの「セキュリティ構成」ページ

「セキュリティ構成」ページを使用して、ビジネス・サービスで使用されるセキュリティ・ポリシーのオーバーライドを指定します。

表4-9 ビジネス・サービスのセキュリティ構成のオプション

オプション

説明

サービス・アカウント

「参照」をクリックし、表示されるリストでサービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

注意: このオプションは、Oracle Web Services Managerポリシーを使用するサービスでは選択できません。ユーザーの資格証明がオーバーライド・キーによって提供されるためです。

詳細は、4.19項「サービス・アカウント」を参照してください。

ポリシーのオーバーライド

Oracle WSMポリシーでは、許可されているオーバーライドを必要なだけ指定します。

詳細は、表4-8と、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のOracle Web Services ManagerでのOracle Service Busの保護に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1681)を参照してください。

4.3 プロキシ・サービスの構成

新しいプロキシ・サービスを作成したら、プロキシ・サービス・エディタで新しいプロキシ・サービスを構成します。プロキシ・サービス・エディタでは、それらの設定を表示および変更できます。次のプロキシ・サービス構成ページがあります。

- 4.3.1項「プロキシ・サービスの「全般的な構成」ページ」

- 4.3.2項「プロキシ・サービスの「メッセージ・タイプの構成」ページ」

- 4.3.3項「プロキシ・サービスの「操作選択構成」ページ」

- 4.3.4項「プロキシ・サービスの「メッセージ処理構成」ページ」

- 4.3.5項「プロキシ・サービスの「SOAPバインド構成」ページ」

- 4.3.6項「プロキシ・サービスの「トランスポート構成」ページ」

- 4.3.7項「プロキシ・サービスの「サービス・ポリシー構成」ページ」

- 4.3.8項「プロキシ・サービスの「セキュリティ構成」ページ」

4.3.1 プロキシ・サービスの「全般的な構成」ページ

プロキシ・サービスの「全般的な構成」ページを使用して、プロキシ・サービスの全般的な構成プロパティを設定または変更します。

4.3.1.1 プロキシ・サービス・エディタのオプション

次の表に、エディタのオプションを示します。

表4-10 プロキシ・サービス・エディタのオプション

オプション

説明

説明

このプロキシ・サービスの説明を入力します。

サービスの種類(エディタのみ)

このオプションはプロキシ・サービスのサービスの種類を示します。特定のサービスの種類の、特定のプロパティのみ変更できます。

- 「WSDL Webサービス」 - WSDLに基づくプロキシ・サービスを作成するには、このオプションを選択します。パスで修飾されたWSDL名を入力します(たとえば、myProject/myFolder/myWSDL)。または、「参照」をクリックしてWSDLリソースを選択します。同じWSDLの別のポートまたはバインドを入力できます(または、「参照」をクリックして選択できます)。異なるWSDLを指定することもできます。この場合、効率的に新しいサービスを作成できます。ただし、新しいサービスとして構成する必要があります。
「(ポートまたはバインド)」 - ポート名(WSDLで定義)を入力して、実際のトランスポート・アドレスを指定します。またはバインド名(WSDLで定義)を入力してトランスポート・アドレスにマップします。「参照」を使用してWSDLを選択する場合は、「WSDL定義の選択」ダイアログに定義されているすべてのポートとバインドが表示されます。

注意: 操作に「SOAP本体タイプ」を使用する場合は、WSDLに同じ入力メッセージで2つの操作がないことを確認してください。「SOAP本体タイプ」操作は、入力メッセージを調べて一意に識別することはできません。

- 「トランスポート型付きのサービス」 - JEJBプロキシ・サービスを作成するには、このオプションを選択します。

- 「メッセージ・サービス」 - あるデータ型のメッセージを受信し、別のデータ型のメッセージでレスポンスできるサービスを作成する場合は、このオプションを選択します。これらの交換は、リクエスト/レスポンスまたは一方向のいずれかです。
(HTTP GETをサポートしているサービス・タイプは、「任意のXMLサービス」と「メッセージング・サービス」のみです。)

- 「任意のSOAPサービス」 - 明示的に定義された具象インタフェースを持たないSOAPサービスを作成する場合は、このオプションを選択します。SOAPバージョン(SOAP 1.1またはSOAP 1.2)を変更できます。

- 任意のXMLサービス - 明示的に定義された具体的なインタフェースを持たないXMLサービスを作成する場合、このオプションを選択します。
(HTTP GETをサポートしているサービス・タイプは、「任意のXMLサービス」と「メッセージング・サービス」のみです。)

4.3.2 プロキシ・サービスの「メッセージ・タイプの構成」ページ

プロキシ・サービスの「メッセージ・タイプの構成」ページを使用して、タイプがメッセージ・サービスであるプロキシ・サービスのメッセージ・タイプを構成します。

メッセージング・サービス用のバインディング定義は、交換されるメッセージのコンテンツ・タイプの構成で構成されています。レスポンスのコンテンツ・タイプは、リクエストのコンテンツ・タイプと同じである必要はありません。そのため、レスポンスは個別に構成されます(たとえば、サービスでMFLメッセージを受信し、XMLの受信確認を返すことも可能です)。

注意:

メッセージング・サービスの型を持つ電子メール、ファイル、FTP、またはSFTPトランスポート・プロキシ・サービスは、一方向のメッセージのみをサポートしており、「レスポンス・メッセージの種類」は「なし」である必要があります。「なし」以外のオプションを選択すると、電子メール、ファイル、FTP、またはSFTPプロトコルを「トランスポート構成」ページで使用できません。

表4-11 プロキシ・サービスのメッセージ・タイプのオプション

オプション

説明

リクエスト・メッセージ・タイプ

リクエスト・メッセージのメッセージの種類を次の中から選択します。

- 「なし」 - リクエスト・メッセージがない場合は、このオプションを選択します。

- 「バイナリ」 - メッセージのコンテンツタイプが不明か、重要でない場合は、このオプションを選択します。

- 「テキスト」 - メッセージをテキストのみに制限する場合は、このオプションを選択します。

- MFL - メッセージがMFL定義に準拠したバイナリ・ドキュメントの場合は、このオプションを選択します。MFLファイル名(そのパスで修飾されている)を入力するか、または「参照」をクリックして、ファイルを選択します。
構成できるMFLファイルは1つに限られます。

注意: 複数のMFLファイルをサポートするには、コンテンツをバイナリまたはテキストとして定義し、メッセージ・フローのMFLアクションを使用してXMLに変換します。

- XML - メッセージがXMLドキュメントの場合は、このオプションを選択します。XMLファイル名(そのパスで修飾されている)を入力するか、または「参照」をクリックして、ファイルを選択します。
必要に応じて、交換されるXMLドキュメントのXMLスキーマ型を(「要素またはタイプ」フィールドで)宣言して、一部の型情報を指定します。

- Java - Javaオブジェクトをリクエストで送信中の場合は、このオプションを選択します。JMSトランスポートがJavaオブジェクト・メッセージに対して使用されます。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のメッセージでのJavaオブジェクトの送信および受信に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1874)を参照してください。

レスポンス・メッセージ・タイプ

レスポンス・メッセージのメッセージ・タイプを次の中から選択します。

- なし - レスポンス・メッセージがない場合は、このオプションを選択します。
注意: パイプラインで返信アクションを使用してサービスから呼出し元のクライアントに成功または失敗メッセージを伝播している場合、「なし」以外のオプションを選択します。「なし」オプションは、返信をブロックします。

- 「バイナリ」 - メッセージのコンテンツタイプが不明か、重要でない場合は、このオプションを選択します。

- 「テキスト」 - メッセージをテキストのみに制限する場合は、このオプションを選択します。

- MFL - メッセージがMFL定義に準拠したバイナリ・ドキュメントの場合は、このオプションを選択します。MFLファイル名(そのパスで修飾されている)を入力するか、または「参照」をクリックして、ファイルを選択します。
構成できるMFLファイルは1つに限られます。

注意: 複数のMFLファイルをサポートするには、コンテンツをバイナリまたはテキストとして定義し、メッセージ・フローのMFLアクションを使用してXMLに変換します。

- XML - メッセージがXMLドキュメントの場合は、このオプションを選択します。XMLファイル名(そのパスで修飾されている)を入力するか、または「参照」をクリックして、ファイルを選択します。
必要に応じて、交換されるXMLドキュメントのXMLスキーマ型を(「要素またはタイプ」フィールドで)宣言して、一部の型情報を指定します。

- Java - Javaオブジェクトをレスポンスで受信中の場合は、このオプションを選択します。JMSトランスポートがJavaオブジェクト・メッセージに対して使用されます。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のメッセージでのJavaオブジェクトの送信および受信に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1874)を参照してください。

4.3.3 プロキシ・サービスの「操作選択構成」ページ

プロキシ・サービスの「操作選択構成」ページでは、WS-I準拠を実行して(SOAP 1.1サービスのみ)、使用する選択アルゴリズムを選び、このプロキシ・サービスが呼び出す操作を決定します。このオプションは、WSDLに基づいて定義されたSOAPサービスまたはXMLサービスでのみ使用できます。

WSDL仕様では、受信するSOAPメッセージのタイプに基づいて呼び出す操作を計算するデフォルトのアルゴリズムが定義されています。ただし、その他の手段に基づいて操作を選択しなければならない場合もあります(パフォーマンスや、署名および暗号化に問題があったり、デフォルトのアルゴリズムが使用できない場合など)。

Oracle Service Busには、アルゴリズムが追加で用意されています。これらはそれぞれ同じパターンに従っており、式の評価に基づいて値を取得し、その値を使用して静的な表から対応する操作をルックアップします。

通常、Oracle Service Busは、インバウンド・メッセージが不明なデータで処理を判断できない場合や、データが有効な処理に対応していない場合にも、柔軟に対処します。どちらの場合も、$operationは空になります。Oracle Service Busでは、このようなメッセージをすべて拒否するのではなく、コンテキスト内のoperation変数を初期化せずに、メッセージの処理を続行します。

ただし、プロキシ・サービスがWSDLベースで、次の条件の1つ以上が当てはまる場合は、セキュリティ要件が適用されます。

- WSDLにWS-Securityポリシーが存在し、プロキシがアクティブな仲介になっています。

- プロキシにメッセージ・レベルのカスタム認証(カスタム・トークンまたはユーザー名/パスワード)が存在します。

これらの条件に該当する場合、操作選択アルゴリズムが有効な操作名を返すかどうかを確認する実行時チェックが行われます。操作選択アルゴリズムでnullまたはWSDLに存在しない操作が返された場合、メッセージは拒否され、エラーが発生します。

表4-12 プロキシ・サービスの操作選択のオプション

オプション

説明

WS-I準拠の適用

Web Services Interoperability Organizationで定義されたBasic Profileにサービスを準拠させるかどうかを指定する場合は、チェック・ボックスを選択または選択解除します。このオプションが有効になるのは、SOAP 1.1サービスの場合に限られます。

サービスをWS-I準拠として指定すると、サービス間で送受信されるメッセージの確認が行われます。

プロキシの場合、プロキシが受信したリクエスト・メッセージの確認が行われます。呼び出されるサービス(つまり、プロキシがサービス・コールアウト・アクションまたはルート・ノード経由で呼び出すサービス)の場合、それらのサービスから受信したレスポンス・メッセージの確認が行われます。呼び出されるサービスから受信したメッセージを確認するかどうかを決定するのは、呼び出されるサービス側のWS-I準拠プロパティであり、プロキシ側ではありません。呼び出されるサービスでWS-I準拠のテストを指定すると、メッセージ・フローによってレスポンス・エラーのfaultが生成されます。

選択アルゴリズム

次のいずれか1つを選択し、必要に応じて追加の手順を実行します。

- 「トランスポート・ヘッダー」 - ルックアップ値を含むトランスポート・ヘッダーを定義する場合は、このアルゴリズムを選択します。次に:

- 「ヘッダー名」フィールドに、呼び出される操作を選択するときにキーとして使用される値を抽出するトランスポート・ヘッダーを入力します。

- 「操作のマッピング」フィールドで、「値」フィールドに各操作の値を指定します。この値が操作のキーとして使用されます。

- 「SOAPActionヘッダー」 - このプロキシ・サービスに関連付けられたWSDLから自動的に操作のマッピングが行われるように指定する場合は、このアルゴリズムを選択します。

- 「WS-Addressing」 - ルックアップ値がSOAPメッセージのSOAPヘッダー内のWS-Addressing Actionタグに入るように指定するには、このアルゴリズムを選択します。その後で、「操作のマッピング」フィールドにある「値」フィールドに、各操作の値を指定します。この値が操作のキーとして使用されます。

- 「SOAPヘッダー」 - SOAPヘッダーに対して評価されるXPath式を定義するには、このアルゴリズムを選択します。これにより、ルックアップ値を取得できるようになります。次に:

- 「XPath式」フィールドに、呼び出される操作を選択するときにキーとして使用される値を抽出するXPath式を指定します。

- 「操作のマッピング」フィールドで、「値」フィールドに各操作の値を指定します。この値が操作のキーとして使用されます。

- 「SOAP本体タイプ」 - WSDL仕様で定義されたデフォルトのアルゴリズムです。受信するSOAPメッセージのタイプに基づいて呼び出す操作が計算されます。
プロキシ・サービスを構成するWebサービス・セキュリティのパススルー・シナリオで本体が暗号化されている場合は、このアルゴリズムを選択することはできません。パススルーの暗号化されたSOAPヘッダーについても同様です。

同じ入力メッセージで2つの操作のあるWSDLの場合、入力メッセージを調べて操作をユニークに識別できないため、このアルゴリズムを操作に選択しないでください。

- 「ペイロード・タイプ」 - WSDLポートまたはWSDLバインドに基づいたXMLサービスでのみ使用できます。

ヘッダー名

このオプションは、「選択アルゴリズム」オプションが「トランスポート・ヘッダー」に設定されている場合にのみ使用できます。

呼び出される操作を選択するときにキーとして使用される値を抽出するトランスポート・ヘッダーを入力します。

XPath式

このオプションは、「選択アルゴリズム」オプションが「SOAPヘッダー」に設定されている場合にのみ使用できます。

呼び出される操作を選択するときにキーとして使用される値を抽出するXPath式を指定します。

操作のマッピング

このオプションは、「選択アルゴリズム」オプションが「トランスポート・ヘッダー」、「WS-Addressing」または「SOAP本体タイプ」に設定されている場合にのみ使用できます。

「値」フィールドに、各操作の値を指定します。この値が操作のキーとして使用されます。

4.3.4 プロキシ・サービスの「メッセージ処理構成」ページ

プロキシ・サービスの「メッセージ処理構成」ページを使用して、表4-13で説明するメッセージ処理の様々な要素を指定します。

表4-13 プロキシ・サービスのメッセージ処理のオプション

オプション

説明

トランザクションが必要

Oracle Service Busがプロキシ・サービス・メッセージ・フローをトランザクションのコンテキスト内で実行するようにするには、このオプションを選択します。グローバル・トランザクションがすでに存在する場合は、(このオプションを選択していなくても)トランスポート・プロバイダがそのトランザクションをリクエストで伝播します。グローバル・トランザクションが存在しない場合は、メッセージ・フロー・ランタイムがトランザクションを開始します。メッセージ・フロー・ランタイムによってトランザクションが開始される場合、すべての処理と実行がトランザクション・コンテキストで行われるよう、サービス構成の検証や実行(セキュリティ・チェックやWS-I検証)より前、かつメッセージ・フローの実行前にトランザクション・コンテキストが開始されます。

メッセージ・フロー・ランタイムがトランザクションを開始する場合、サービス品質は「必ず1回」です。ただし、サービス・コールアウト・アクションまたはパブリッシュ・アクションのアウトバウンド・サービス品質パラメータが「ベスト・エフォート」(デフォルト)に設定されていると、Oracle Service Busはそれらのアクションをトランザクション・コンテキスト外で実行します。Oracle Service Busによってそれらのアクションを同じリクエスト・トランザクション・コンテキスト内で実行するためには、それらのアクションのサービス品質を「必ず1回」に設定します。

このオプションの設定に関係なく、サービスではメッセージ・パターン(同期、非同期、一方向)が維持されます。

トランザクションのタイムアウトに関しては、Oracle WebLogic Serverコンソールで構成されたグローバル・トランザクションのタイムアウト値が適用されます。

トランザクションの例外

Oracle Service Busは、トランザクションが失敗するとシステム・エラー・ハンドラを呼び出します。ユーザー構成のエラー・ハンドラでは失敗トランザクションの例外を取得できません。同期パターンの場合、トランザクション例外はレスポンスを介して返されます。非同期パターンの場合、リクエスト内でコミットするようにトランザクションが設計されているため、例外はリクエスト・スレッドに送り返されます。

非同期パターンでは、リクエストでトランザクションがコミットした後でレスポンスのエラーが発生してもトランザクションには影響しません。

レスポンスに同じトランザクション

このオプションは一方向および非同期のメッセージ・パターンのみに適用されます。

このオプションを選択すると、Oracle Service Busはトランザクション・コンテキストをリクエスト・スレッドからレスポンス・スレッドに伝播します。

このオプションを選択すると、メッセージ・パターンの初期設定(非同期または一方向など)にかかわらず、メッセージ・パターンは自動的に同期になります。

たとえば、リクエストのビジネス・サービスで、トランザクションをコミットした後でレスポンスを送信する必要がある場合(一方向パターンなど)には、このオプションを使用しないでください。

トランザクションのタイムアウトに関しては、Oracle WebLogic Serverコンソールで構成されたグローバル・トランザクションのタイムアウト値が適用されます。

コンテンツのストリーミング

メッセージ・コンテンツをメモリーに格納せずにストリーミングする場合は、このオプションを選択します。

「有効」チェック・ボックスを選択し、次の項目を選択します。

- 中間コンテンツをメモリー(「メモリー・バッファ」)またはディスク・ファイル(「ディスク・バッファ」)のいずれにバッファするか。

- 「圧縮」を有効にするかどうか

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の本文コンテンツのストリーミングに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG314)を参照してください。

XOP/MTOMサポート

SOAP Message Transmission Optimization Mechanism (MTOM)は、Webサービス間でバイナリ・データを送受信する方法です。MTOMは、XML-binary Optimized Packaging (XOP)を使用してバイナリ・データを転送します。

このオプションを使用して、MTOM/XOP形式のインバウンド・メッセージをデコードおよび解析し、該当する場合にMTOM/XOP形式を使用してレスポンスを送信します。

Oracle Service Busでは、次のトランスポートを使用したXOP/MTOMがサポートされます。

- HTTP/S

- ローカル

- SB

「有効」チェック・ボックスを選択して、該当する場合にプロキシ・サービスがMTOM/XOP形式でインバウンド・メッセージをデコードおよび解析し、MTOM/XOP形式を使用してレスポンスを送信できるようにすることもできます。このオプションは、前のリリースの構成に基づくインポートされたプロキシ・サービスに対しては無効になります。

「XOP/MTOMサポート」が有効になっている場合は、$headerおよび$bodyメッセージ・コンテキスト変数のバイナリ・データを処理する方法を次のオプションから選択します。

- 「参照によるバイナリ・データを含む」: (デフォルト)インバウンド・リクエスト・メッセージで、$headerおよび$bodyメッセージ・コンテキスト変数の設定時にxop:Include要素をctx:binary-content要素で置換します。

- 「値によるバイナリ・データを含む」:インバウンド・リクエスト・メッセージでの$headerと$bodyの各メッセージ・コンテキスト変数の設定時に、xop:Include要素をbase64エンコード・テキスト・バージョンの対応するバイナリ・データに置き換えます。

バイナリ・データに直接アクセスする必要がある場合、たとえばJavaコールアウトまたはMessage Format Language (MFL)転送にデータを渡す場合は、「値によるバイナリ・データを含む」を使用します。

「値によるバイナリ・データを含む」は次の場合に使用します。

- MTOMとMTOM以外のサービスの間にブリッジを作成する場合。たとえば、MTOM対応でないサービスにルーティングされるリクエストを受信するMTOM対応のプロキシ・サービスについて考えます。このオプションを使用すると、既存の標準に準拠してXMLのバイナリ・データをbase64エンコード形式で送信できます。

- バイナリ・データのかわりにbase64binary要素の使用を必要とするXMLスキーマに照らしてメッセージのコンテンツを検証する場合

「XOP/MTOMサポート」がプロキシ・サービスに対して有効になっている場合は、すべてのインバウンド・メッセージがMTOM形式である必要はありません。かわりに、この設定では、MTOM形式のメッセージが到着したときに、プロキシ・サービスでそれを適宜処理する必要があることを指定します。

「XOP/MTOMサポート」が有効になっていないプロキシ・サービスがMTOM形式のメッセージを受信した場合、サービスはメッセージを拒否し、ランタイム・エラーを発行することにも注意してください。

添付ファイル

このオプションを使用して、プロキシ・サービスでMIME添付ファイルのコンテンツをディスク・ファイルに格納し、添付ファイルのコンテンツをメモリーにバッファリングせずにストリーミング形式でデータを処理することもできます。これにより、プロキシ・サービスで、大きな添付ファイルを堅牢かつ効率的に処理できます。

Oracle Service Busでは、次のトランスポートを使用したMIME添付ファイルのストリーミングがサポートされます。

- HTTP/S

- ローカル(添付ファイルのストリーミングが有効になっているHTTPプロキシを通じてチェーンしている場合)

「添付ファイルのディスクへのページング」チェック・ボックスを選択すると、プロキシ・サービスがMIME添付ファイルをストリーミングできます。HTTPプロキシ・サービスに対して有効になっている場合、オプションはプロキシ・サービス・インバウンド・リクエスト・メッセージに適用されます。

「XOP/MTOMサポート」を選択した場合、「添付ファイル」オプションは、「XOP/MTOMサポート」で「参照によるバイナリ・データを含む」オプションを選択した場合にのみ使用できます。添付ファイルを含むペイロードはRFC 822に準拠している必要もあります。具体的には、インターネット・ヘッダーを含む行は、CRLF(復帰改行)で終了する必要があります。

4.3.5 プロキシ・サービスの「SOAPバインド構成」ページ

このページが表示されるのは、作成しているページに操作が含まれる場合のみです。

プロキシ・サービスの「SOAPバインディング構成」ページでは、WS-I準拠を実行して(SOAP 1.1サービスのみ)、使用する選択アルゴリズムを選び、このプロキシ・サービスが呼び出す操作を決定します。このオプションは、WSDLに基づいて定義されたSOAPサービスまたはXMLサービスでのみ使用できます。

WSDL仕様では、受信するSOAPメッセージのタイプに基づいて呼び出す操作を計算するデフォルトのアルゴリズムが定義されています。ただし、その他の手段に基づいて操作を選択しなければならない場合もあります(パフォーマンスや、署名および暗号化に問題があったり、デフォルトのアルゴリズムが使用できない場合など)。

Oracle Service Busには、アルゴリズムが追加で用意されています。これらはそれぞれ同じパターンに従っており、式の評価に基づいて値を取得し、その値を使用して静的な表から対応する操作をルックアップします。

通常、Oracle Service Busは、インバウンド・メッセージが不明なデータで処理を判断できない場合や、データが有効な処理に対応していない場合にも、柔軟に対処します。どちらの場合も、$operationは空になります。Oracle Service Busでは、このようなメッセージをすべて拒否するのではなく、コンテキスト内のoperation変数を初期化せずに、メッセージの処理を続行します。

ただし、プロキシ・サービスがWSDLベースで、次の条件の1つ以上が当てはまる場合は、セキュリティ要件が適用されます。

- WSDLにWS-Securityポリシーが存在し、プロキシがアクティブな仲介になっています。

- プロキシにメッセージ・レベルのカスタム認証(カスタム・トークンまたはユーザー名/パスワード)が存在します。

これらの条件に該当する場合、操作選択アルゴリズムが有効な操作名を返すかどうかを確認する実行時チェックが行われます。操作選択アルゴリズムでnullまたはWSDLに存在しない操作が返された場合、メッセージは拒否され、エラーが発生します。

表4-14 プロキシ・サービスのSOAPバインドのオプション

オプション

説明

WS-I準拠の適用

SOAP 1.1サービス専用です。

Web Services Interoperability Organizationで定義されたBasic Profileにサービスを準拠させるかどうかを指定する場合は、チェック・ボックスを選択または選択解除します。

サービスをWS-I準拠として指定すると、サービス間で送受信されるメッセージの確認が行われます。プロキシの場合、プロキシが受信したリクエスト・メッセージの確認が行われます。呼び出されるサービス(つまり、プロキシがサービス・コールアウト・アクションまたはルート・ノード経由で呼び出すサービス)の場合、それらのサービスから受信したレスポンス・メッセージの確認が行われます。呼び出されるサービスから受信したメッセージを確認するかどうかを決定するのは、呼び出されるサービス側のWS-I準拠プロパティであり、プロキシ側ではありません。呼び出されるサービスでWS-I準拠のテストを指定すると、メッセージ・フローによってレスポンス・エラーのfaultが生成されます。

4.3.6 プロキシ・サービスの「トランスポート構成」ページ

「プロキシ・サービス・トランスポート構成」ページを使用して、プロキシ・サービスの転送プロトコルを選択し、その他の全般的なトランスポート構成設定を設定します。

注意:

インバウンド・トランスポートレベル・セキュリティは、クライアント・アプリケーションおよびOracle Service Busプロキシ・サービスに適用されます。アウトバウンド・トランスポートレベルのセキュリティは、Oracle Service Busのプロキシ・サービスとビジネス・サービスの間の接続に適用されます。

表4-15 プロキシ・サービスのトランスポート構成のオプション

オプション

説明

プロトコル

リストから転送プロトコルを選択します。使用できるプロトコルは、作成しているサービスの種類によって異なります。

- 「WSDL Webサービス」: http、jca、jms、local、sb、ws

- 「トランスポート型付きのサービス」 - jejb

- 「メッセージ・サービス」: email、file、ftp、http、jms、local、mq(使用できる場合)、sftp、tuxedo

- 「任意のSOAPサービス」: http、jms、local、sb

- 「任意のXMLサービス」: email、file、ftp、http、jms、local、mq(使用できる場合)、sb、sftp、tuxedo

エンドポイントURI

上記の「プロトコル」フィールドで選択した転送プロトコルに基づいた形式で、エンドポイントURIを入力します。

- email - mailfrom:mail-server-host:port

- file - file:///root-dir/dir1

- ftp - ftp://hostname:port/directory

- http - /someName
HTTPトランスポートではHTTPエンドポイントとHTTPSエンドポイントの両方がサポートされます。

- jca - jca://<resource_adapter_jndi>

- jejb - URL形式はejb_jndi_nameです。JEJBプロキシ・サービスに対して構成されるURIは、JEJBトランスポートによって生成されるステートレス・セッションBeanをクライアントJARのリモート/ビジネス・インタフェースで探すためのグローバルJNDI名になります。
注意: EJB 3.0の場合、ejb_jndi_nameは生成されるBeanの@javax.ejb.Stateless注釈のmappedName属性です。生成されるEJBサービスのルックアップJNDI名の接尾辞は#interface_classであり、これはビジネス・インタフェースの完全修飾名です。

次のようにJEJBプロキシ・サービスにアクセスできます。

EJB 2.1 - protocol://host:port/_ejb_jndi_name

EJB 3.0 - protocol://host:port/ejb_jndi_name#interface_class

注意: EJBがIBM WebSphere上で実行中の場合は、ejb_jndi_nameを次の形式にしてください。

cell/nodes/node_name/servers/server_name/ejb_jndi_name

または

cell/clusters/cluster_name/ejb_jndi_name

詳細は次の場所にあるIBM WebSphereのドキュメントに記述されています。http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/rnam_example_prop3.html

- jms - jms://host:port[,host:port]*/connection_factory/jndi_destination
JMS宛先として複数のサーバーを指定するには、次のURI形式を使用します。

jms://host1:port,host2:port/QueueConnectionFactory/DestName

プロキシ・サービスを作成するとき、エンドポイントのサーバーが使用可能でない場合でも、JMSエンドポイントのURIを構成できます。ただし、JMSの場合は、セッションをアクティブ化する時点でエンドポイントが使用可能である必要があります。

ローカル・コンピュータで行われるルックアップの場合、ホストとポートをURIから省略することもできます。例:

jms:///connection_factory/jndi_destination

注意: Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項(http://www.oracle.com/pls/as1111/lookup?id=WLACH)を参照してください。

クラスタの場合: JMS URIのホスト名はクラスタ・サーバーのホスト名と正確に一致する必要があります。これは、クラスタ・サーバーのホスト名はWebLogic Serverに構成されているためです。

- local
このトランスポートではエンドポイントURIは必要ありません。

エンドポイントURI(続き)

- mq - mq://local-queue-name?conn=mq-connection-resource-ref
local-queue-nameは、プロキシ・サービスがメッセージを読み取るMQキューの名前です。

mq-connection-resource-refは、MQ接続リソースの名前とパス(プロジェクト/フォルダ)です。たとえば、default/my_MQconnection。

注意: エンドポイントURIはスペースを含むことができないので、名前にスペースがあるMQ接続リソースまたはプロジェクト/フォルダを作成しないでください。

MQトランスポートをOracle Service Busで使用できるようにするには、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のMQトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1117)を参照してください。

- sb - service_name
service_nameは、プロキシ・サービスの一意の識別子です。デフォルトでは、この名前がプロキシ・サービス名になります。

service_nameには、(http://www.ietf.org/rfc/rfc2396.txtのRFC2396で示されているように)URIで許可されている文字のみを含める必要があります。ただし、フォワード・スラッシュ(/)またはコロン(:)を含めることはできません。

- sftp - sftp://hostname:port/directory

- tuxedo - servicename
URI servicenameはリモートTuxedoドメインがTuxedoサービスとして識別するWTC Exportに一致します。

複数のURIが指定されている場合、エンドポイントには一意のリソース名を付ける必要があります。リモート名が指定されていない場合は、その値がリソース名の値になります。リモート名が入力されていない、またはリモート名およびリソース名が同じである場合は、1つのURIのみを使用できます。この場合、リソース名とリモート名は同じ値です。これにより、既に定義されたWTCインポートを使用しているユーザーは、WTCロード・バランシングおよびフェイルオーバーを使用できるようになります。

注意: 同一のURIを2つ構成すると、そのサービス名がすでに存在していることを通知するエラーが表示されます。

- ws - /contextPath
contextPathは、HTTPトランスポートまたはWSトランスポートを使用するプロキシ・サービスで一意である必要があります。

すべてのヘッダーを取得

トランスポートからすべてのヘッダーを取得する場合は「はい」を選択します。

定義された一連のヘッダーを取得する場合は「いいえ」を選択します。「いいえ」を選択した場合は、「ヘッダー」フィールドに一連のヘッダーを入力してから、「追加」をクリックします。この手順は、ローカル・トランスポートには該当しません。

注意: Oracle Service Busは、リクエストのHTTP認可ヘッダーをパイプラインに渡しません。セキュリティが脆弱になるためです。ユーザー名と暗号化されていないパスワードをログ・ファイルに書き込むログ・アクションを誤って作成するおそれがあります。パイプラインでHTTP認可ヘッダーが必要なパターンを設計する場合は、次の手順を実行してください。

1. Oracle Service Busの起動コマンドで、システム・プロパティcom.bea.wli.sb.transports.http.GetHttpAuthorizationHeaderAllowedをtrueに設定します。

2. Eclipseの「Transport Configuration」ページで、「Get All Headers」に「Yes」を選択するか、「No」を選択して「Authorization」を指定します。

3. Oracle Service Busを再起動します。

これで、Oracle Service Busは認可ヘッダーをパイプラインに渡すようになります。

4.3.7 プロキシ・サービスの「サービス・ポリシー構成」ページ

プロキシ・サービスの「サービス・ポリシー構成」ページを使用して、プロキシ・サービスのサービス・ポリシーを構成します。

表4-16 プロキシ・サービスのサービス・ポリシーのオプション

オプション

説明

OWSMポリシー・ストアから

ポリシーは、Oracle Enterprise Managerで管理されている中央のOracle Web Services Managerポリシー・ストアで定義されます。対象のポリシーはWS-Security 1.0/1.1、SAML 1.1/2.0、KerberosTokenプロファイル、およびその他の業界標準をサポートしています。

Oracle Web Services ManagerポリシーをIDEでサービスに追加するには、Oracle Web Services Managerが有効になっている実行中サーバーに接続している必要があります。

注意: Eclipseで複数のサーバーを操作するとき、EclipseはOracle Web Services Managerポリシーを取得するために、サーバー・リストの最初の有効なOracle Service Busサーバーを選択します。

カテゴリのフィルタ処理を使用すると、必要なポリシーを探すときに役立ちます。プロキシ・サービスの場合、サービス・ポリシーのみが表示されます。

ポリシーを追加した後で、「セキュリティ」ページでオーバーライドを指定できます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のOracle Web Services ManagerでのOracle Service Busの保護に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1681)を参照してください。

WSDLから

サービス・ポリシーが、サービスの基準となるWSDLに関連付けられている場合は、このオプションを選択します。対象のポリシーはWS-Security 1.0、SAML 1.1およびその他の業界標準をサポートしています。

事前定義ポリシーまたはWS-Policyリソースから

サービス・レベル・ポリシー、操作レベル・ポリシー(この場合、ポリシーはリクエスト・メッセージおよびレスポンス・メッセージの両方に適用される)、リクエスト・ポリシー、およびレスポンス・ポリシーを直接追加するには、このオプションを選択します。

ポリシーはOracle WebLogic Serverで事前定義されるか、Oracle Service BusでWS-Policyリソースとともにユーザー定義されるかのいずれかです。対象のポリシーはWS-Security 1.0、SAML 1.1およびその他の業界標準をサポートしています。

4.3.8 プロキシ・サービスの「セキュリティ構成」ページ

プロキシ・サービスの「メッセージ・レベル・セキュリティ構成」ページを使用して、プロキシ・サービスのセキュリティを構成します。

WLS 9.2ポリシーでは、メッセージレベルのカスタム・トークン、およびメッセージレベルのユーザー名とパスワードが次のバインド・タイプのプロキシ・サービスでサポートされます。

- WSDL-SOAP

- WSDL-XML

- 抽象SOAP

- 抽象XML

- 混合 - XML (リクエスト内)

- 混合 - MFL (リクエスト内)

カスタム・ユーザー名/パスワードとカスタム・トークンの構成は、ほぼ同じです。どちらの場合も、Oracle Service Busで必要な情報を検索できるようにするためのXPath式を指定します。これらのXPath式のルートは次のとおりです。

- サービスのバインドがAnySOAPまたはWSDL-SOAPの場合は、soap-env:Envelope/soap-env:Headerを使用します。

- サービスのバインドがSOAPベースでない場合はsoap-env:Bodyを使用します。

すべてのXPath式は有効なXPath 2.0形式である必要があります。使用するネームスペースをXPath式で宣言するには、次のようなXPathの"declare namespace"構文を使用します。

declare namespace ns='http://webservices.example.com/MyExampleService';)

表4-17 プロキシ・サービスのメッセージレベル・セキュリティのオプション

オプション

説明

サービス・キー・プロバイダ

サービスによって使用されるサービス・キー・プロバイダの名前です。

パス(プロジェクト/フォルダ)とサービス・キー・プロバイダの名前を入力するか、「参照」をクリックしてサービス・キー・プロバイダを選択します。

サービス・キー・プロバイダは、次のような特定の場合にのみ必要となります。

- 双方向のアウトバウンドTLS/SSLで、クライアント証明書認証を必要とするHTTPSサービスに対してプロキシ・サービスからメッセージをルーティングする場合。

- 一部のWebサービス・セキュリティのシナリオ(プロキシ・サービスでメッセージの暗号化を必要とする場合など)。

Webサービス・セキュリティ対応のプロキシ・サービスを追加するには、WS-Policyが付加されたWSDL (ポートまたはバインディング)からプロキシ・サービスを作成する必要があります。

ポリシーのオーバーライド

Oracle WSMポリシーでは、許可されているオーバーライドを必要なだけ指定します。

詳細は、表4-16と、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のOracle Web Services ManagerでのOracle Service Busの保護に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1681)を参照してください。

WS-Securityヘッダーの処理

クライアントのリクエストにWS-Securityセキュリティ・ヘッダーが含まれている場合、このヘッダーを処理するかどうかを指定します。

- 「はい」を選択すると、アクティブな仲介のシナリオで、クライアントは、WS-Securityをリクエスト・メッセージやレスポンス・メッセージに適用します。プロキシ・サービスが、セキュリティ・ヘッダーを処理してWS-Securityポリシーを適用します。
プロキシ・サービスがセキュリティ・ポリシーを備えるWSDLを基準とするとき、あるいは「サービス・ポリシー構成」ページのサービスにユーザーがポリシーを付加しているとき、このオプションは自動的に「はい」に設定されます。

- 「いいえ」を選択すると、WS-Securityパススルーのシナリオで、クライアントは、WS-Securityをリクエスト・メッセージやレスポンス・メッセージに適用します。プロキシ・サービスは、セキュリティ・ヘッダーを処理しません。そのかわりに、セキュアなリクエスト・メッセージをそのままビジネス・サービスに渡します。

カスタム認証設定

次のいずれか1つを選択します:

- 「なし」 - サービスでカスタム認証を使用しない場合。

- 「カスタム・ユーザー名とパスワード」 - サービスで、XPath式によって指定されたカスタム名とパスワードを使用する場合。

- 「カスタム・トークン」 - サービスでカスタム・トークンを使用する場合。

カスタム・ユーザー名とパスワード - ユーザー名XPath

XPath式として指定されたユーザー名です。

XPath式は、必要に応じて、メッセージ・ヘッダーまたはペイロードに対して評価されます。これにより、Oracle Service Busがカスタム認証用のユーザー名を取得できます。

カスタム・ユーザー名とパスワード - ユーザー・パスワードXPath

XPath式として指定されたパスワードです。

XPath式は、必要に応じて、メッセージ・ヘッダーまたはペイロードに対して評価されます。これにより、Oracle Service Busがカスタム認証用のパスワード値を取得できます。

カスタム・トークン - トークン・タイプ

カスタム・トークンの種類を入力します。Oracle WebLogic Server IDアサーション・プロバイダ用に構成されたアクティブ・トークン・タイプのみを使用できます。

カスタム・トークン - トークンXPath

カスタム・トークンのパスを指定するXPath式です。Oracle Service Busは、必要に応じて、メッセージ・ヘッダーまたはペイロードに対して「トークンXPath」式を評価して、カスタム認証用のトークンを取得します。

式を作成または編集するには、「<XPath>」(定義済の場合は、expression_fragment)をクリックして、XPath式エディタを表示します。

カスタム・ユーザー名とパスワード - コンテキスト・プロパティ

または

カスタム・トークン - コンテキスト・プロパティ

(オプション) 1つまたは複数のコンテキスト・プロパティを指定して、認証(「カスタム・ユーザー名とパスワード」)またはIDアサーション(「カスタム・トークン」)セキュリティ・プロバイダに追加コンテキスト情報を渡します。

「コンテキスト・プロパティ」により、セキュリティ・プロバイダがコンテキスト情報を得られるように、追加情報をWebLogicセキュリティ・フレームワークに渡す方法(ContextHandlerインタフェース)が提供されます。

「プロパティ名」をリテラル文字列で入力し、「値セレクタ」に有効なXPath式を入力します。(XPath式にリテラル文字列を使用することも可能です)。

XPath式は、カスタム・トークンまたはカスタム・ユーザー名/パスワードで使用されているのと同じメッセージ部に対して評価されます。つまり、「値セレクタ」のXPath式は、SOAPベースのプロキシ・サービスの場合はヘッダーに関して評価され、非SOAPベースのプロキシ・サービスの場合はペイロードに関して評価されます。

XPath式は、実行時に評価され、プロパティの値を生成します。ContextHandlerは名前と値のリストであるため、セキュリティ・プロバイダが検索対象の名前を認識している必要があります。そのため、セキュリティ・プロバイダがこれらのユーザー定義プロパティのいずれかの値を要求した場合にのみXPath式は評価されます。

「プロパティの追加」をクリックして、このコンテキスト・プロパティを追加します。複数のコンテキスト・プロパティを追加することができます。

4.4 Oracle Service Busの構成とプロジェクト

次を使用して、Oracle Service Bus構成およびプロジェクトの操作を行います。

- 4.4.1項「Oracle Service Busの「構成」ビュー」

- 4.4.2項「新しいOracle Service Bus構成プロジェクト・ウィザード」

- 4.4.4項「新しいOracle Service Busプロジェクト」

4.4.1 Oracle Service Busの「構成」ビュー

このビューでは、すべてのOracle Service Bus構成とそこに含まれるプロジェクトが階層状に一覧表示されます。4.4.2項「新しいOracle Service Bus構成プロジェクト・ウィザード」も参照してください。

構成ビューでは、次の作業を行うことができます。

- 構成を編集します。

1. 編集する構成を右クリックします。

2. メニューから「プロパティ」を選択します。

3. 必要に応じて、Oracle Service Bus構成ページで情報を変更します。

- 新しい構成を作成します。

1. ビュー内の任意の場所を右クリックします。

2. メニューから新しいOracle Service Bus構成を選択します。

3. 必要に応じて、Oracle Service Bus構成ページで情報を入力します。

- プロジェクトを移動元の構成から移動先の構成にドラッグして、構成間でプロジェクトを移動します。プロジェクト・エクスプローラからプロジェクトをドラッグすることもできます。

- 構成プロジェクトを削除します。

1. 削除する構成を右クリックします。

2. メニューから「削除」を選択します。

4.4.2 新しいOracle Service Bus構成プロジェクト・ウィザード

このウィザードを使用して、Oracle Service Bus構成プロジェクトを作成します。構成のオプションについては、4.4.3項「Oracle Service Bus構成ページ」を参照してください。

4.4.3 Oracle Service Bus構成ページ

Oracle Service Bus構成プロジェクトは、Oracle Service Busプロジェクトとサーバーで使用されるリソース、システム・リソースの場所(SMTP、UDDIなど)、および検証用のコンテナをグループ化したものです。たとえば、あるOracle Service Bus構成に関連付けられているプロジェクトのリソースは、別のOracle Service Bus構成に関連付けられているプロジェクトのリソースを参照できません。

このページを使用して、新しいOracle Service Bus構成プロジェクトを作成します(「新しいOracle Service Bus構成プロジェクト」ウィザード)。または、既存のOracle Service Bus構成プロジェクトを構成します(Oracle Service Bus構成エディタの「プロパティ」)。

予約ファイル、セッション・ファイル、およびカスタマイズ・ファイルの設定は、Oracle Service Bus構成をサーバーにパブリッシュする際に使用され、さらに、エクスポート・ウィザード - サーバーへエクスポート - リソースの選択ページを構成する際にデフォルトとして使用されます。

表4-18 Oracle Service Bus構成のオプション

オプション

説明

構成名

このOracle Service Bus構成の名前を入力するか、デフォルトをそのまま使用します。

環境変数値の保存

リソースを再インポートするが、既存のリソースの環境変数値は保存する場合はこのチェック・ボックスを選択します。

セキュリティとポリシーの設定の保存

セキュリティの構成(アクセス制御ポリシーを除く)と、(WSDLにバインドされるのではなく)サービスに直接バインドされるWS-Policyへの参照を保持するには、このチェック・ボックスを選択します。

資格証明(ユーザー名/パスワード) の保存

このチェック・ボックスは、サービス・キー・プロバイダのPKI資格証明情報、サービス・アカウントのユーザー名とパスワード、およびSMTPサーバー、JNDIプロバイダ、UDDIレジストリのユーザー名とパスワード資格証明情報を保存する場合にオンにします。

アクティブ化に失敗した場合にセッションを破棄

このチェック・ボックスは、競合などによってアクティブ化に失敗したときにセッションを破棄する場合にオンにします。

セッション名

セッション名です。

説明

セッションの説明です。

デプロイメント・カスタマイズ・ファイル

カスタマイズ・ファイル(.xml)を指定するか、「参照」をクリックしてファイルを探し開くをクリックします。カスタマイズの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のカスタマイズ・ファイルの作成に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1360)を参照してください。

キーストア・ファイル

キーストア・ファイル(.jks)ファイルを指定するか、「参照」をクリックしてファイルを探し、開くをクリックします。

キーストアの設定は、サービス・キー・プロバイダを構成するときに使用されます。

パスワード

キーストアへのアクセスをセキュリティで保護するために使用するパスワードを入力します。

サーバー

このOracle Service Bus構成に関連付けられるサーバーの名前です。選択対象のサーバーが1台のみの場合は、この設定は自動的に構成されます。同じOracle Service Bus構成に複数のサーバーが関連付けられている場合は、リストを使用して、このOracle Service Bus構成に関連付けるサーバーを選択します。

サーバー設定は、サーバーに接続することでトランスポートにメリットがある場合(たとえば、HTTPトランスポートでディスパッチ・ポリシー設定を構成する場合)に、トランスポート固有の構成でのみ使用されます。

4.4.4 新しいOracle Service Busプロジェクト

このページを使用して、新しいOracle Service Busプロジェクトを作成します。

表4-19 新しいOracle Service Busプロジェクトのオプション

オプション

説明

プロジェクト名

プロジェクトの一意の名前を入力します。

Oracle Service Bus構成

既存のOracle Service Bus構成を選択するか、「新規」をクリックして新しいOracle Service Bus構成プロジェクト・ウィザードを開きます。このウィザードを使用して、新しい構成を作成できます。

4.5 カスタム・リソース

「新しいカスタム・リソース」ウィザードおよびカスタム・リソース・エディタを使用して、次の項の説明に従ってOracle Service Busで使用するカスタム・リソースを定義します。

- 4.5.1項「新しいカスタム・リソース・ウィザード」

- 4.5.1項「新しいカスタム・リソース・ウィザード」

- 4.5.3項「新しいカスタム・リソース - 「リソース・タイプ」ページ」

4.5.1 新しいカスタム・リソース・ウィザード

このウィザードを使用して、新しいカスタム・リソースを作成します。

4.5.2 新しいカスタム・リソース・エディタ

このエディタはカスタム・リソースの構成を変更するために使用します。「全般」ページでカスタム・リソースの種類を指定します。「カスタム」ページには、カスタム・リソースの種類の構成を編集するためのオプションが用意されています。

4.5.3 新しいカスタム・リソース - 「リソース・タイプ」ページ

このページを使用して、作成するカスタム・リソースの種類を選択します。使用可能なリソースの種類のリストから、作成するカスタム・リソースの種類を選択します。

4.5.4 カスタムMQの「リソース構成」ページ

このページを使用して、カスタムMQ接続リソースを構成します。MQ接続リソースおよびMQトランスポートについては、次を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のMQ接続に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG909)

- 『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のMQトランスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1117)

表4-20 MQリソースのオプション

オプション

説明

接続タイプ

MQキュー・マネージャに接続するには、次のいずれかのモードを選択します。

- 「tcpモード」 - Oracle Service Busと同じコンピュータに存在しないキュー・マネージャに接続するには、TCP/IPを使用します。

- 「バインド・モード」 - Oracle Service Busと同じコンピュータに存在するキュー・マネージャに接続するには、バインド・モードを使用します。

MQホスト名

(「tcpモード」接続の場合のみ)

MQキュー・マネージャのホスト名を入力します。

MQポート番号

(「tcpモード」接続の場合のみ)

MQキュー・マネージャ・リスナーのポート番号を入力します。

MQキュー・マネージャ名

接続先のMQキュー・マネージャの名前を入力します。

キュー・マネージャCCSID

(「tcpモード」接続の場合のみ)

接続を確立するときに使用されるCCSID (coded character set identifier)です。CCSIDは、主に国際化をサポートする目的で使用されます。

詳細は、IBM WebSphere MQ Fundamentals(http://www.redbooks.ibm.com/redbooks/SG247128/wwhelp/wwhimpl/java/html/wwhelp.htm)を参照してください。

MQキュー・マネージャのチャネル名

(「tcpモード」接続の場合のみ)

キュー・マネージャのサーバー接続チャネル名を入力します。

SSLが必要

(「tcpモード」接続の場合)

このチェック・ボックスを選択すると、メッセージの送信にSSLが使用されます。「双方向SSLが必要」オプションが選択されていない場合、サーバー側のSSLのみが有効になります。

暗号セット

このオプションは、「SSLが必要」チェック・ボックスが選択されている場合のみ使用できます。

SSLで使用される暗号スイート・アルゴリズムを選択します。

暗号スイート・アルゴリズムは、WebSphere MQサーバーとWebSphere MQクライアントの間のメッセージ通信を暗号化および復号化する際に使用されます。そのため、SSLを使用してWebSphere MQサーバーと通信する場合は、暗号スイート・アルゴリズムを指定する必要があります。

双方向SSLが必要

このオプションは、「SSLが必要」チェック・ボックスが選択されている場合のみ使用できます。

このチェック・ボックスを選択すると、クライアント側およびサーバー側のSSL認証が両方とも有効になります。

サービス・キー・プロバイダへの参照

「双方向SSLが必要」を選択した場合は、適切なキーストアと信頼ストアの情報を取得するために、サービス・プロバイダへの参照を提供する必要があります。

サービス・キー・プロバイダのパス(プロジェクト/フォルダ)と名前を入力するか、「参照」をクリックして、「サービス・キー・プロバイダの選択」ページから選択します。

静的なサービス・アカウントへの参照

(「tcpモード」接続の場合のみ)

ユーザー名とパスワードによる認証に必要です。静的なサービス・アカウントのパス(プロジェクト/フォルダ)および名前を入力するか、「参照」をクリックし、ブラウザからサービス・アカウントを選択します。

WebSphere MQバージョン

WebSphere MQのバージョンを選択します。

- 5.3

- 6.0

- 7.0

注意: IBMでは、バージョン5.3および6.0はサポートされなくなりました。これらのバージョンは、Oracle Service Busでは非推奨です。

MQ接続プール・サイズ

MQ接続プールのサイズを入力します。

MQ接続タイムアウト

未使用の接続が破棄されるまでの時間間隔を秒単位で入力します。デフォルトは1800秒です。

MQ接続Max Wait

接続が利用可能になるまでに待機する最大時間(ミリ秒単位)を入力します。その時間内に接続が確立されない場合、Oracle Service Busが例外をスローします。デフォルトは、3000ミリ秒です。

XA有効

この接続によって処理されるトランザクションが分散(XA)トランザクションである場合は、このオプションを選択します。

4.6 エクスポート・ウィザード

「エクスポート」ウィザードには、次のページが含まれます。

- 4.6.1項「エクスポート・ウィザード - Oracle Service Bus構成JARエクスポート・ページ」

- 4.6.2項「エクスポート・ウィザード - サーバーにエクスポート - リソースの選択ページ」

- 4.6.3項「エクスポート・ウィザード - サーバーにエクスポート - リソースの確認ページ」

4.6.1 エクスポート・ウィザード - Oracle Service Bus構成JARエクスポート・ページ

このページを使用して、Oracle Service Busリソースを構成JARファイルにエクスポートします。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のリソースのエクスポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1320)を参照してください。

表4-21 構成JARのエクスポート・オプション

オプション

説明

Oracle Service Bus構成

エクスポートする既存のOracle Service Bus構成およびリソースを選択します。エクスポートしないリソースを選択解除します。

エクスポート・レベル

プロジェクトのエクスポートまたはリソースのエクスポートを選択します。

注意

システムプロジェクトは、プロジェクト・レベルでエクスポートできません。

フル・プロジェクトJARファイルをインポートすると、プロジェクトのエクスポートによりリソースが削除されることがあります。

依存関係を含める

リソースのエクスポートを選択した場合は、このチェック・ボックスをオンまたはオフにします。「依存関係を含める」オプションを使用すると、このリソースが参照している他のリソースをすべてエクスポートできます。

エクスポート先

エクスポートするJARファイルの完全修飾名を入力するか、または、「参照」をクリックして選択します。

4.6.2 エクスポート・ウィザード - サーバーにエクスポート - リソースの選択ページ

このページを使用して、エクスポートするプロジェクトまたはリソースを選択します。リソースをこのエクスポートに含めない場合は、リソースの横のチェック・ボックスをオフにします。

表4-22 リソースのエクスポート・オプション

オプション

説明

リソース

プロジェクトおよびリソースの名前です。

エクスポートしないリソースを選択解除します。

操作

作成または更新を選択します。リソースに対して行われる操作です。

依存関係を含める

リソース(プロジェクトではない)をエクスポートする場合に、関連するリソースをすべてエクスポートするときは、このチェック・ボックスをオンにします。

環境変数値の保存

エクスポートするリソースの環境変数値を保存する(上書きされないようにする)場合は、このチェック・ボックスをオンにします。

セキュリティとポリシーの設定の保存

セキュリティの構成(アクセス制御ポリシーを除く)と、(WSDLにバインドされるのではなく)サービスに直接バインドされるWS-Policyへの参照を保持するには、このチェック・ボックスを選択します。

資格証明(ユーザー名/パスワード) の保存

このチェック・ボックスは、サービス・キー・プロバイダのPKI資格証明情報、サービス・アカウントのユーザー名とパスワード、およびSMTPサーバー、JNDIプロバイダ、UDDIレジストリのユーザー名とパスワード資格証明情報を保存する場合にオンにします。

パブリッシュ後にセッションをアクティブ化

Oracle Service Bus管理コンソールでセッションを作成してアクティブ化する場合は、このチェック・ボックスを選択します。

アクティブ化に失敗した場合にセッションを破棄

このチェック・ボックスは、競合などによってアクティブ化に失敗したときにセッションを破棄する場合にオンにします。

説明

セッションの説明です。

カスタマイズ・ファイル

カスタマイズ・ファイルを指定するか、「参照」をクリックしてファイルを探し開くをクリックします。カスタマイズの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のカスタマイズ・ファイルの作成に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1360)を参照してください。

4.6.3 エクスポート・ウィザード - サーバーにエクスポート - リソースの確認ページ

このページを使用して、エクスポートするプロジェクトまたはリソースを選択します。

表4-23 リソースのエクスポート・オプション

オプション

説明

Oracle Service Bus構成

エクスポートする既存のOracle Service Bus構成およびリソースを選択します。

エクスポート・レベル

プロジェクトのエクスポートまたはリソースのエクスポートを選択します。

サーバー

リストからOracle Service Bus宛先サーバーを選択します。

セッション

セッション名です。

4.7 インポート・ウィザード

「インポート」ウィザードには、次のページが含まれます。

- 4.7.1項「インポート・ウィザード - 構成JARインポート - 「リソースのロード」ページ」

- 4.7.2項「インポート・ウィザード - 構成JARインポート - リソースの確認ページ」

- 4.7.3項「インポート・ウィザード - 構成ZIPインポート - 「リソースのロード」ページ」

- 4.7.4項「インポート・ウィザード - 構成ZIPのインポート - リソースの確認ページ」

- 4.7.5項「インポート・ウィザード - URLのインポート - 「リソースのロード」ページ」

- 4.7.6項「インポート・ウィザード - URLのインポート - リソースの確認ページ」

4.7.1 インポート・ウィザード - 構成JARのインポート - 「リソースのロード」ページ

このページを使用して、インポートする構成JARとインポート先を選択します。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のリソースのインポートに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG1312)を参照してください。

表4-24 構成JARのインポート

オプション

説明

Oracle Service Bus構成

既存のOracle Service Bus構成を選択するか、「新規」をクリックして新しいOracle Service Bus構成プロジェクト・ウィザードを開きます。このウィザードを使用して、新しい構成を作成できます。

JAR

他のOracle Service Busドメインからあらかじめエクスポートした完全なプロジェクトJARファイル、またはリソースJARファイルを選択します。

4.7.2 インポート・ウィザード - 構成JARのインポート - リソースの確認ページ

このページを使用して、操作(作成、更新または削除)の対象となるオブジェクトを選択します。リソースの削除は、インポートするJARがプロジェクト全体のJARであり、インポートするJARファイルに存在しないプロジェクト・リソースがインポート先システムに存在する場合にのみ行われます。リソースが削除されないようにするには、選択解除します。

表4-25 構成JARのインポート・オプション

オプション

説明

リソース

プロジェクトおよびリソースの名前です。

操作

リソースで実行される操作(作成、更新、削除)を表示するには、プロジェクト・フォルダを展開します。

リソースが削除されないようにするには、選択解除します。リソースの削除は、インポートするJARがプロジェクト全体のJARであり、インポートするJARファイルに存在しないプロジェクト・リソースがインポート先システムに存在する場合にのみ行われます。

依存関係を含める

リソースJARファイルをインポートして、すべての関連リソースがインポートされたのを保証したい場合は、チェック・ボックスを選択します。

パスフレーズ

データを暗号化するのに使用されたパスワードを入力します。

環境変数値の保存

リソースを再インポートするが、既存のリソースの環境変数値は保存する場合はこのチェック・ボックスを選択します。

セキュリティとポリシーの設定の保存

セキュリティの構成(アクセス制御ポリシーを除く)と、(WSDLにバインドされるのではなく)サービスに直接バインドされるWS-Policyへの参照を保持するには、このチェック・ボックスを選択します。

資格証明(ユーザー名/パスワード) の保存

このチェック・ボックスは、サービス・キー・プロバイダのPKI資格証明情報、サービス・アカウントのユーザー名とパスワード、およびSMTPサーバー、JNDIプロバイダ、UDDIレジストリのユーザー名とパスワード資格証明情報を保存する場合にオンにします。

4.7.3 インポート・ウィザード - 構成ZIPのインポート - 「リソースのロード」ページ

このページを使用して、インポートするリソースとインポート先を含むZIPファイルを選択します。

表4-26 構成ZIPのインポート

オプション

説明

Oracle Service Bus構成

既存のOracle Service Bus構成とインポート先(プロジェクトまたはフォルダ)を選択します。

ファイル名

インポートするZIPファイルの完全修飾名を入力するか、または、「参照」をクリックして選択します。

4.7.4 インポート・ウィザード - 構成ZIPのインポート - リソースの確認ページ

このページを使用して、インポートするオブジェクトを選択します。このインポートに含めないリソースは、横にあるチェック・ボックスを選択解除します。

表4-27 構成ZIPのインポート・オプション

オプション

説明

リソース

プロジェクトおよびリソースの名前です。

操作

作成または更新を選択します。リソースに対して行われる操作です。

ファイル名

拡張子付きのリソース・ファイル名です。

4.7.5 インポート・ウィザード - URLのインポート - 「リソースのロード」ページ

このページを使用して、Web上で入手できるWSDLまたはXMLスキーマなどのリソースをインポートします。ルート・リソースのURLを指定すると、すべての依存関係を含めてインポートできます。

表4-28 URLのインポート・オプション

オプション

説明

Oracle Service Bus構成

既存のOracle Service Bus構成とインポート先(プロジェクトまたはフォルダ)を選択します。

URL

ファイルが置かれている場所のURLを入力します。

ローカル・リソースを指定する場合は、fileプロトコルを使用し、パスで完全修飾されたファイル名を指定します(例: file:///c:/alsbresources/ForeachAction.jar)。

リソース名

リソースの名前を入力します。

リソース・タイプ

リストからリソースの種類を選択します。

4.7.6 インポート・ウィザード - URLのインポート - リソースの確認ページ

このページを使用して、インポートするオブジェクトを選択します。このインポートに含めないリソースは、横にあるチェック・ボックスを選択解除します。

表4-29 URLのインポート・オプション

オプション

説明

リソース

プロジェクトおよびリソースの名前です。

操作

作成または更新を選択します。リソースに対して行われる操作です。

URL

ファイルが置かれている場所のURLを入力します。

ローカル・リソースを指定する場合は、fileプロトコルを使用し、パスで完全修飾されたファイル名を指定します(例: file:///c:/alsbresources/ForeachAction.jar)。

4.8 JNDIプロバイダ

次を使用して、JNDIプロバイダの操作を行います。

- 4.8.1項「JNDIプロバイダ・エディタ」

- 4.8.2項「新しいJNDIプロバイダ・リソース・ウィザード」

4.8.1 JNDIプロバイダ・エディタ

このエディタを使用して、既存のJNDIプロバイダ構成を変更します。フィールドの詳細は、4.8.2項「新しいJNDIプロバイダ・リソース・ウィザード」を参照してください。

4.8.2 新しいJNDIプロバイダ・リソース・ウィザード

このページを使用して、新しいJNDIプロバイダ・リソースを構成します。

表4-30 新しいJNDIプロバイダ・リソースのオプション

オプション

説明

説明

JNDIプロバイダの説明を入力します。

JNDIキャッシュ

デフォルトの「有効」オプションのままにしておくか、または「無効」を選択します。

有効にすると、JNDIコンテキストおよびJNDIオブジェクトがローカルにキャッシュされ、オブジェクトのルックアップを行うときのパフォーマンスが向上します。JNDIキャッシュを有効にしておくことをお薦めします。

プロバイダURL

protocol://host:portの形式でJNDIプロバイダのURLを入力します。

次のように任意のプロトコルを使用できます。

http, https, t3, t3s, iiop, iiops

JNDIリクエスト・タイムアウト

JNDIリクエストのタイムアウト(ミリ秒)です。デフォルト値0ではタイムアウトが行われません。

ユーザー名

目的のJNDIプロバイダにアクセスするためにユーザー名およびパスワードが必要な場合、「ユーザー名」フィールドにユーザー名を入力して、関連するパスワードを「パスワード」および「パスワードの確認」フィールドに入力します。

これらのフィールドは省略可能です。JNDIツリーが保護されている場合にのみ必要となります。

パスワード

ユーザー名に関連付けられているパスワードを入力します。

パスワードの確認

「パスワード」フィールドに入力したものと同じパスワードを入力します。

4.9 プロキシ・サーバー

新しいプロキシ・サーバーを作成した後で、このページを使用してプロキシ・サーバー・リソースを構成および編集します。

表4-31 プロキシ・サーバー構成のオプション

オプション

説明

説明

プロキシ・サーバー・リソースの説明を入力します。

ユーザー名

プロキシ認証に使用するユーザー名を入力します。

パスワード

ユーザー名に関連付けられるパスワードを入力します。

パスワードの確認

「パスワード」フィールドに入力したものと同じパスワードを入力します。

ホスト-ポート・パラメータ

プロキシ・サーバー・ホストのリスト。各プロキシ・サーバー・リソースに複数のプロキシ・サーバーを構成できます。これにより、Oracle Service Busでロード・バランシングを実行し、プロキシ・サーバー・リソースにフォルト・トレランス機能を提供できます。

使用可能なオプションは次のとおりです。

- 「追加」をクリックして次の情報を指定して、リソースの新しいプロキシ・サーバーを構成します。

- サーバー・ホスト:プロキシ・サーバーのホスト名またはIPアドレス。
Oracle Service Busプロキシ・サーバーのサーバー・ホスト名は、実際のプロキシ・サーバーのサーバー・ホスト名と同じである必要です。

- クリア・テキスト・ポート:プロキシ・サーバーのクリア・テキスト・ポート番号。

- SSLポート:プロキシ・サーバーのSSLポート番号。

- リストでプロキシ・サーバーを選択し、「ホスト-ポート・パラメータ」を編集します。

- リストでプロキシ・サーバーを選択し、「削除」をクリックしてリソース構成からそのサーバーを削除します。

4.10 メッセージ・フロー・デザイン・パレット

メッセージ・フロー・デザイン・パレットには、プロキシ・サービス用のメッセージ・フローを構築するために使用できるすべてのノードとアクションが一覧表示されます。メッセージ・フローにノードまたはアクションを挿入するには、パレットからメッセージ・フロー・エディタへ項目をドラッグします。パレットに項目をドラッグすると、ドラッグしてきた項目をパレット内の位置にドロップできることを示す1つまたは複数のターゲット・アイコンが表示されます。項目をターゲット上にドラッグすると、ターゲット・アイコンが強調表示され、そこに項目をドロップできることがわかります。

メッセージ・フロー・エディタでオブジェクトを右クリックして、「挿入」、これに挿入またはこれの後ろに挿入サブメニューからノードやアクションを選択することにより、メッセージ・フローにノードとアクションを追加することもできます。また、「エラー・ハンドラの追加」コマンドを選択して、エラー・ハンドラを追加することもできます。これらのサブメニューおよびコマンドは、コンテキストに依存します。つまり、メッセージ・フローで選択されたコンテキストに項目を追加することが認められている場合にのみ表示されます。

メッセージ・フロー・デザイン・パレットについては、次のカテゴリに整理されています。

- 4.10.1項「メッセージ・フロー・ノード」

- 4.10.2項「メッセージ・フローのルート・アクション - 通信アクション」

- 4.10.3項「メッセージ・フローのルート・アクション - フロー制御アクション」

- 4.10.4項「メッセージ・フローのステージ・アクション - 通信アクション」

- 4.10.5項「メッセージ・フローのステージ・アクション - フロー制御アクション」

- 4.10.6項「メッセージ・フローのステージ・アクション - メッセージ処理アクション」

- 4.10.7項「メッセージ・フローのステージ・アクション - レポート・アクション」

4.10.1 メッセージ・フロー・ノード

メッセージ・フローに追加できるノードについて次の表で説明します。

表4-32 メッセージ・フロー・ノード

ノード

説明

条件付きブランチ

ブランチ・ノードを使用すると、可能ないくつかのパスのうちの1つに限定して処理を進ませることができます。

構成のプロパティは、4.11.3項「条件付きブランチ・ノードのプロパティ」を参照してください。

オペレーション・ブランチ

オペレーション・ブランチ・ノードでは、指定された操作に基づいてどのブランチに進むかが判断されます。

構成のプロパティは、4.11.17項「オペレーション・ブランチ・ノードのプロパティ」を参照してください。

パイプライン・ペア

パイプライン・ペア・ノードはリクエスト・パイプラインとレスポンス・パイプラインから成ります。

構成のプロパティは、4.11.18項「パイプライン・ペア・ノードのプロパティ」を参照してください。

ルート

ルート・ノード・アクションは、ルート・ノードを通過する際のメッセージの処理を定義します。

構成のプロパティは、4.11.27項「ルート・ノードのプロパティ」を参照してください。

ステージ

ステージ・ノードは、アクションのコンテナです。

構成のプロパティは、4.11.33項「ステージ・ノードのプロパティ」を参照してください。

エラー・ハンドラ

エラー・ハンドラは、メッセージ・フローでエラーを再送するロジックを提供します。

構成のプロパティは、4.11.7項「エラー・ハンドラ・ノードのプロパティ」を参照してください。

4.10.2 メッセージ・フローのルート・アクション - 通信アクション

メッセージ・フローのルートに追加できる通信アクションを次の表で説明します。

表4-33 メッセージ・フロー・ルート・ノードの通信アクション

アクション

説明

動的ルーティング

動的ルーティング・アクションは、XQueryリソースで入手できるルーティング情報に基づいて、メッセージのルートを割り当てます。

構成のプロパティは、4.11.6項「動的ルーティング・アクションのプロパティ」を参照してください。

ルーティング

ルーティング・アクションは、メッセージのターゲット・サービスを指定し、サービスにメッセージをルーティングする方法を構成します。

構成のプロパティは、4.11.28項「ルーティング・アクションのプロパティ」を参照してください。

ルーティング表

ルーティング表アクションは、切替え式の条件表に含まれた一連のルートを割り当てます。単一のXQuery式の結果に基づいて、異なるルートが選択されます。

構成のプロパティは、4.11.30項「ルーティング表アクションのプロパティ」を参照してください。

4.10.3 メッセージ・フローのルート・アクション - フロー制御アクション

メッセージ・フローのルートに追加できるフロー制御アクションを次の表で説明します。

表4-34 メッセージ・フロー・ルート・ノードのフロー制御アクション

アクション

説明

If-Then

If-Thenアクションは、XQuery式のブール結果に基づいて、1つまたは複数のアクションを条件付きで実行します。

構成のプロパティは、4.11.9項「If-Thenアクションのプロパティ」を参照してください。

4.10.4 メッセージ・フローのステージ・アクション - 通信アクション

メッセージ・フローのステージに追加できる通信アクションを次の表で説明します。

表4-35 メッセージ・フロー・ステージ・ノードの通信アクション

アクション

説明

動的にパブリッシュ

動的パブリッシュ・アクションは、XQuery式で指定されたサービスにメッセージをパブリッシュします。

構成のプロパティは、4.11.5項「動的パブリッシュ・アクションのプロパティ」を参照してください。

パブリッシュ

パブリッシュ・アクションは、静的に指定されたサービスにメッセージをパブリッシュします。

構成のプロパティは、4.11.19項「パブリッシュ・アクションのプロパティ」を参照してください。

パブリッシュ表

パブリッシュ表アクションは、ゼロまたはそれ以上の静的に指定されたサービスにメッセージをパブリッシュします。切替え式の条件ロジックを使用して、どのサービスをパブリッシュに使用するか実行時に決定します。

構成のプロパティは、4.11.20項「パブリッシュ表アクションのプロパティ」を参照してください。

ルーティング・オプション

ルーティング・オプション・アクションは、アウトバウンド・リクエストのURI、サービスの品質、モード、再試行パラメータ、メッセージ優先度のプロパティの一部またはすべてを変更します。

構成のプロパティは、4.11.29項「ルーティング・オプション・アクションのプロパティ」を参照してください。

サービス・コールアウト

サービス・コールアウト・アクションは、Oracle Service Busに登録済のプロキシ・サービスまたはビジネス・サービスの同期(ブロック)コールアウトを構成します。

構成のプロパティは、4.11.31項「サービス・コールアウト・アクションのプロパティ」を参照してください。

トランスポート・ヘッダー

トランスポート・ヘッダー・アクションは、メッセージのトランスポート・ヘッダーの値を設定します。

構成のプロパティは、4.11.34項「トランスポート・ヘッダー・アクションのプロパティ」を参照してください。

4.10.5 メッセージ・フローのステージ・アクション - フロー制御アクション

メッセージ・フローのステージに追加できるフロー制御アクションについて次の表で説明します。

表4-36 メッセージ・フロー・ステージ・ノードのフロー制御アクション

アクション

説明

For-Each

For-Eachアクションは、一連の値の反復処理およびアクションのブロックを実行します。

構成のプロパティは、4.11.8項「For-Eachアクションのプロパティ」を参照してください。

If-Then

If Thenアクションは、XQuery式のブール結果に基づき、1つまたは複数のアクションを条件付きで実行します。

構成のプロパティは、4.11.9.1項「IfアクションとElse-Ifアクションのプロパティ」を参照してください。

エラーの生成

エラーの生成アクションは、指定したエラー・コード(文字列)と説明を使用して例外を発生させます。

構成のプロパティは、4.11.21項「エラーの生成アクションのプロパティ」を参照してください。

返信

返信アクションは、呼出し元に即時に返信されるように指定します。

構成のプロパティは、4.11.24項「返信アクションのプロパティ」を参照してください。

スキップ

スキップ・アクションは、実行時に現在のステージの実行がスキップされて、処理がメッセージ・フローの次のステージに進むように指定します。

構成のプロパティは、4.11.32項「スキップ・アクションのプロパティ」を参照してください。

再開

再開アクションは、エラー・ハンドラによってエラーが処理された後で、メッセージ・フローを再開します。

構成のプロパティは、4.11.26項「再開アクションのプロパティ」を参照してください。

4.10.6 メッセージ・フローのステージ・アクション - メッセージ処理アクション

メッセージ・フローのステージに追加できるメッセージ処理アクションを次の表で説明します。

表4-37 メッセージ・フロー・ステージ・ノードのメッセージ処理アクション

アクション

説明

割当て

割当てアクションは、XQuery式の結果をコンテキスト変数に割り当てます。

構成のプロパティは、4.11.2項「割当てアクションのプロパティ」を参照してください。

削除

削除アクションは、コンテキスト変数や、XPath式で指定されたノードのセットを削除します。

構成のプロパティは、4.11.4項「削除アクションのプロパティ」を参照してください。

挿入

挿入アクションは、XPath式で選択されたノードを基準に指定された位置に、XQuery式の結果を挿入します。

構成のプロパティは、4.11.10項「挿入アクションのプロパティ」を参照してください。

Javaコールアウト

Javaコールアウト・アクションは、パイプラインからJavaメソッドを呼び出します。

構成のプロパティは、4.11.11項「Javaコールアウト・アクションのプロパティ」を参照してください。

MFL変換

MFL変換アクションは、パイプラインで、ある非XMLからXMLへの変換、またはその逆の変換を行います。

構成のプロパティは、4.11.16項「MFL変換アクションのプロパティ」を参照してください。

名前変更

名前変更アクションは、XPath式で選択された要素の名前を、コンテンツを変更することなく変更します。

構成のプロパティは、4.11.22項「名前変更アクションのプロパティ」を参照してください。

置換

置換アクションは、XPath式で指定されたノードまたはノードのコンテンツを置き換えます。

構成のプロパティは、4.11.23項「置換アクションのプロパティ」を参照してください。

検証

検証アクションは、XMLスキーマ要素またはWSDLリソースに照らして、XPath式で選択した要素を検証します。

構成のプロパティは、4.11.35項「検証アクションのプロパティ」を参照してください。

4.10.7 メッセージ・フローのステージ・アクション - レポート・アクション

メッセージ・フローのステージに追加できるレポート・アクションを次の表で説明します。

表4-38 メッセージ・フロー・ステージ・ノードのレポート・アクション

アクション

説明

アラート

アラート・アクションは、パイプラインのメッセージ・コンテキストに基づいてアラート通知を送信します。

構成のプロパティは、4.11.1項「アラート・アクションのプロパティ」を参照してください。

ログ

ログ・アクションは、ログに記録されるメッセージを構築します。

構成のプロパティは、4.11.12項「ログ・アクションのプロパティ」を参照してください。

レポート

レポート・アクションは、プロキシ・サービスに対してメッセージのレポートを有効にします。

構成のプロパティは、4.11.25項「レポート・アクションのプロパティ」を参照してください。

4.11 メッセージ・フロー・エディタ

このエディタは、プロキシ・サービスのメッセージ・フローを構築するために使用します。メッセージ・フローにノードまたはアクションを挿入するには、メッセージ・フロー・デザイン・パレットから項目をエディタにドラッグします。エディタに項目をドラッグすると、ドラッグしてきた項目をパレット内の位置にドロップできることを示す1つまたは複数のターゲット・アイコンが表示されます。項目をターゲット上にドラッグすると、ターゲット・アイコンが強調表示され、そこに項目をドロップできることがわかります。

メッセージ・フロー・エディタでオブジェクトを右クリックして、「挿入」、これに挿入またはこれの後ろに挿入サブメニューからノードやアクションを選択することにより、メッセージ・フローにノードとアクションを追加することもできます。また、「エラー・ハンドラの追加」コマンドを選択して、エラー・ハンドラを追加することもできます。これらのサブメニューおよびコマンドは、コンテキストに依存します。つまり、メッセージ・フローで選択されたコンテキストに項目を追加することが認められている場合にのみ表示されます。

エディタでノードまたはアクションを選択すると、その項目の構成ページがプロパティ・ビューに表示されます。このページでは構成プロパティの追加と変更を行うことができます。メッセージ・フローのノードおよびアクションのプロパティの構成ページを次に示します。

- 4.11.1項「アラート・アクションのプロパティ」

- 4.11.13項「メッセージ・フローのプロパティ - コメント」

- 4.11.2項「割当てアクションのプロパティ」

- 4.11.3項「条件付きブランチ・ノードのプロパティ」

- 4.11.3項「条件付きブランチ・ノードのプロパティ」

- 4.11.4項「削除アクションのプロパティ」

- 4.11.5項「動的パブリック・アクションのプロパティ」

- 4.11.6項「動的ルーティング・アクションのプロパティ」

- 4.11.7項「エラー・ハンドラ・ノードのプロパティ」

- 4.11.7項「エラー・ハンドラ・ノードのプロパティ」

- 4.11.8項「For-Eachアクションのプロパティ」

- 4.11.9.1項「IfアクションとElse-Ifアクションのプロパティ」

- 4.11.9項「If-Thenアクションのプロパティ」

- 4.11.10項「挿入アクションのプロパティ」

- 4.11.11項「Javaコールアウト・アクションのプロパティ」

- 4.11.12項「ログ・アクションのプロパティ」

- 4.11.16項「MFL変換アクションのプロパティ」

- 4.11.14項「メッセージ・フローのプロパティ - ネームスペース」

- 4.11.17項「オペレーション・ブランチ・ノードのプロパティ」

- 4.11.18項「パイプライン・ペア・ノードのプロパティ」

- 4.11.19項「パブリッシュ・アクションのプロパティ」

- 4.11.20項「パブリッシュ表アクションのプロパティ」

- 4.11.21項「エラーの生成アクションのプロパティ」

- 4.11.22項「名前変更アクションのプロパティ」

- 4.11.23項「置換アクションのプロパティ」

- 4.11.24項「返信アクションのプロパティ」

- 4.11.25項「レポート・アクションのプロパティ」

- 4.11.26項「再開アクションのプロパティ」

- 4.11.27項「ルート・ノードのプロパティ」

- 4.11.28項「ルーティング・アクションのプロパティ」

- 4.11.29項「ルーティング・オプション・アクションのプロパティ」

- 4.11.30項「ルーティング表アクションのプロパティ」

- 4.11.31項「サービス・コールアウト・アクションのプロパティ」

- 4.11.32項「スキップ・アクションのプロパティ」

- 4.11.33項「ステージ・ノードのプロパティ」

- 4.11.34項「トランスポート・ヘッダー・アクションのプロパティ」

- 4.11.35項「検証アクションのプロパティ」

- 4.11.15項「メッセージ・フローのプロパティ - 変数」

4.11.1 アラート・アクションのプロパティ

メッセージ・フローでは、アラート・アクションを使用して、パイプラインのメッセージ・コンテキストに基づいてアラートを生成し、アラート宛先に送信します。SLAアラートと異なり、アラート・アクションで生成された通知は、主にビジネスでの使用、またはエラーの報告を目的とし、システムの状態を監視するものではありません。このことを考慮して、アラートの宛先を構成および選択する必要があります。アラートの宛先の詳細は、4.1.1項「アラート宛先エディタ」を参照してください。

サービスに対してパイプライン・アラートが有効になっていない場合や、ドメイン・レベルでパイプライン・アラートが有効になっていない場合は、メッセージの処理中に、構成したアラート・アクションがバイパスされます。

メッセージ・フロー・エディタで、アラート・アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したアラート・アクションを構成します。ページは次のとおりです。

- アラート

- コメント

- ネームスペース

- 変数

「アラート」ページには、次のオプションが含まれます。

表4-39 アラート・アクションのオプション

オプション

説明

式

アラート・メッセージに追加されるメッセージ・コンテキストを指定するXQuery式です。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

サマリー

アラートの簡単な説明です。説明文は、電子メール通知の場合の件名になり、80文字以内である必要があります。説明文が存在しない場合、「ALSB Alert」というあらかじめ定義された件名がかわりに使用されます。

重大度

このアラートの重大度レベルです。リストからレベルを選択します。

宛先

アラートの宛先です。宛先を指定するには、「参照」をクリックして適切なリソースを選択します。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.2 割当てアクションのプロパティ

メッセージ・フローでは、割当てアクションを使用してXQuery式の結果をコンテキスト変数に割り当てます。

メッセージ・フロー・エディタで、割当てアクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した割当てアクションを構成します。ページは次のとおりです。

- 割当て

- コメント

- ネームスペース

- 変数

「割当て」ページには、次のオプションが含まれます。

表4-40 割当てアクションのオプション

オプション

説明

式

次に説明する「変数」フィールドで指定される変数に割り当てられるデータを作成する式です。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

変数

上で説明したXQuery式で作成した値を割り当てる変数です。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.3 条件付きブランチ・ノードのプロパティ

メッセージ・フローでは、条件付きブランチ・ノードを使用することで、XPath条件が返す結果に基づき、考えられる複数のパスの中の1つのみに沿ってメッセージ処理が進んでいくように指定します。

条件付きブランチ処理は、単純でありながらユニークな文字列値のタグが付いたブランチをまとめたルックアップ表を基準に行われます。メッセージ・コンテキストの変数をそのノードのルックアップ変数として指定し、実行時に、この値を使用してどのブランチに進むかが判断されます。ルックアップ変数に一致するブランチがない場合は、デフォルトのブランチに進みます。ブランチ・ノードに到達する前にルックアップ変数の値を設定するように、プロキシ・サービスを設定する必要があります。

メッセージ・フロー・エディタで、条件付きブランチ・ノードをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した条件付きブランチ・ノードを構成します。ページは次のとおりです。

- フロー

- 条件付きブランチ

「フロー」ページには、次のオプションが含まれます。

表4-41 フローのオプション

オプション

説明

名前

条件付きブランチ・ノードの名前を入力します。

説明

条件付きブランチ・ノードの説明を入力します。

「条件付きブランチ」ページには、次のオプションが含まれます。

表4-42 条件付きブランチのオプション

オプション

説明

XPath

進むべきブランチを決定するために評価される条件を定義するXPath式です。

XPath式を作成または編集するには、「<XPath>」(定義済の場合は、XPath式のフラグメント)をクリックして、XPath式エディタを表示します。

変数

コンテキスト変数を入力します。

また、条件付きブランチ・ノードには、1つまたは複数のブランチが必ず含まれており、ノードの一部として構成されます。

プロパティ・ビューのブランチ・プロパティ・ページを表示するには、条件付きブランチ・ノードにあるブランチ・アイコンをクリックします。このプロパティ・ページを使用して、メッセージ・フローで選択したブランチ・ノードを構成します。このページには、次のオプションがあります。

表4-43 ブランチのオプション

オプション

説明

ラベル

ブランチのラベルです。メッセージ・フロー・エディタのブランチのラベルとして、このラベルが表示されます。

演算子

次のフィールドの値と共に使用する演算子をリストから選択し、ブランチの基盤となる条件を作成します。

値

前のフィールドの演算子と共に使用する値を入力し、条件を作成します。

4.11.4 削除アクションのプロパティ

メッセージ・フローでは、削除アクションを使用して、コンテキスト変数やXPath式によって指定されたノードのセットを削除します。

メッセージ・フロー・エディタで、削除アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した削除アクションを構成します。ページは次のとおりです。

- 削除

- コメント

- ネームスペース

- 変数

「削除」ページには、次のオプションが含まれます。変数を削除するには「変数」を選択し、XPath式を削除するには「XPath」を削除します。

表4-44 削除アクションのオプション

オプション

説明

変数

コンテキスト変数を削除するには、このオプション・ボタンを選択します。削除するコンテキスト変数の名前を、横のテキスト・フィールドに入力します。

XPath

XPath式で選択されたすべてのノードを削除するには、このオプション・ボタンを選択します。次に:

- XPath式を作成または編集するには、「<XPath>」(定義済の場合は、XPath式のフラグメント)をクリックして、XPath式エディタを表示します。

- 式を保存したら、変数内フィールドに、XPath式で指定されたノードを含むコンテキスト変数を入力します。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.5 動的パブリッシュ・アクションのプロパティ

メッセージ・フローでは、動的パブリック・アクションを使用して、メッセージをXQuery式によって指定されたサービスへパブリッシュします。

メッセージ・フロー・エディタで、動的パブリッシュ・アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した動的パブリッシュ・アクションを構成します。ページは次のとおりです。

- 動的にパブリッシュ

- コメント

- ネームスペース

- 変数

「動的にパブリッシュ」ページには、次のオプションが含まれます。

表4-45 動的パブリッシュ・アクションのオプション

オプション

説明

サービス

メッセージがパブリッシュされるサービスを定義するXQuery式です。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

エディタで、XQuery式を入力するか、次のような結果になるXQueryリソースを選択します。

<ctx:route>
<ctx:service isProxy="false">project/folder/businessservicename</ctx:service>
<ctx:operation>foo</ctx:operation>
</ctx:route>

注意: operation要素は省略可能です。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.6 動的ルーティング・アクションのプロパティ

メッセージ・フローでは、動的ルーティング・アクションを使用して、XQueryリソースから入手可能なルーティング情報に基づいてメッセージのルートを割り当てます。

これは終端アクションなので、このアクションの後に別のアクションを追加することはできません。ただし、このアクションには、リクエストとレスポンスのアクションを含めることができます。

メッセージ・フロー・エディタで、動的ルーティング・アクションをクリックし、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した動的ルーティング・アクションを構成します。ページは次のとおりです。

- 動的ルーティング

- コメント

- ネームスペース

- 変数

「動的ルーティング 」 ページには次のオプションがあります。

表4-46 動的ルーティング・アクションのプロパティ

オプション

説明

サービス

メッセージがたどるルートを定義するXQuery式です。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

XQuery/XSLT式エディタで、XQuery式を入力します。結果は次の様な内容になります。

<ctx:route>
<ctx:service isProxy='true'>{$service}</ctx:service>
<ctx:operation>{$operation}</ctx:operation>
</ctx:route>

注意: プロキシ・サービスが呼び出されている場合は、isProxy属性をtrueに設定する必要があります。

- サービス名は完全修飾サービス名です。

- operation要素は省略可能です。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.7 エラー・ハンドラ・ノードのプロパティ

エラー・ハンドラを使用して、メッセージ・フロー内の指定の場所でエラーが発生した場合の処理を指定します。

エラー・ハンドラのすべての構成は、エラー・ハンドラに含まれる1つまたは複数のステージにあります。4.11.33項「ステージ・ノードのプロパティ」を参照してください。

4.11.8 For-Eachアクションのプロパティ

メッセージ・フローで、For-Eachアクションは、一連の値を反復処理してアクションのブロックを実行するために使用します。

メッセージ・フロー・エディタで、For-Eachアクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したFor-Eachアクションを構成します。ページは次のとおりです。

- For Each

- コメント

- ネームスペース

- 変数

「For Each」ページには次のオプションがあります。

表4-47 For-Eachアクションのプロパティ

オプション

説明

For Each変数

For-Eachアクションが実行されるコンテンツの変数の名前を入力します。

XPath

For Each変数フィールドで指定された変数の格納側コンテキスト変数の構造内での場所を指定するXPath式です。

XPath式を作成または編集するには、「<XPath>」(定義済の場合は、XPath式のフラグメント)をクリックして、XPath式エディタを表示します。

in変数

For-Eachアクションが実行されるコンテンツの変数を含むコンテキスト変数です。

index変数

ループ内の反復の現在の数を含む変数です。

count変数

反復の総数を含む変数です。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.9 If-Thenアクションのプロパティ

メッセージ・フローでは、If-Thenアクションを使用して、XQuery式のブール結果に基づき1つまたは複数のアクションを条件付きで実行します。

メッセージ・フロー・エディタで、If-Thenアクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このページを使用して、If-Thenアクションの全般的なプロパティを確認および構成します。ページは次のとおりです。

- コメント

- ネームスペース

- 変数

If-Thenアクションには、1つのIf条件と、ゼロ個以上のElse-If条件が必ず含まれており、If-Thenアクションの条件を定義できます。また、If-Thenアクションには必ずElse条件も含まれており、これによって他の条件のいずれにも合致しない場合のデフォルトのパスが定義されます。

If-ThenアクションにあるIf:conditionアイコンをクリックするか、またはElse-If:conditionアイコンをクリックして、そのプロパティをプロパティ・ビューに表示します。このプロパティ・ページを使用して、選択した条件を構成します。If条件のプロパティ・ページには、次のオプションがあります。

4.11.9.1 IfアクションとElse-Ifアクションのプロパティ

If-Thenアクションには、IfアクションとElse-Ifアクションとが必ず含まれます。メッセージは、trueを返す最初のIfアクションまたはElse-Ifアクションに関係付けられたパスに従います。

表4-48 IfアクションとElse-Ifアクションのオプション

オプション

説明

条件

フロー内の別のパスに従うかどうかを決めるテストの1つを含む、IfアクションまたはIf-Elseアクションにある条件です。

条件を追加または編集するには:

1. 「<条件>」(定義済の場合はcondition_fragment)をクリックして、条件エディタを表示します。If-Thenアクションで評価される条件を定義します。

2. 条件の編集が終了したら、条件がtrueと評価された場合に実行される1つまたは複数のアクションを追加します。アクションを追加するには、条件と関連付けるアクションを デザイン・パレット からドラッグします。

ルート・ノードでは、ルーティング・アクション、動的ルーティング・アクション、またはルーティング表アクションのみを選択できます。ただし、これらのアクションには、リクエストとレスポンスのアクションを含めることができます。

Else-If条件を追加するには、次の手順を実行します。

条件の追加をクリックします。上のIf条件で説明したように、このElse-If条件にも1つまたは複数のアクションを追加します。ロジックに応じて、Else-If条件を必要な数だけ追加します。

条件アクションはネストできます。

4.11.9.2 Elseアクションのプロパティ

Elseアクションには関連付けられたプロパティはありません。すべてのIf条件およびElse-If条件からfalseが返された場合、メッセージはElseアクションに関連付けられたパスに進みます。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.10 挿入アクションのプロパティ

メッセージ・フローで、XPath式で選択したノードを基準に、指定した位置にXQuery式の結果を挿入するには、挿入アクションを使用します。

メッセージ・フロー・エディタで、挿入アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した挿入アクションを構成します。ページは次のとおりです。

- 挿入

- コメント

- ネームスペース

- 変数

「挿入」ページには、次のオプションがあります。

表4-49 挿入アクションのオプション

オプション

説明

式

XQuery式を使用して、名前付き変数で指定した場所に挿入されるデータを作成します。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

場所

XPath式の結果を基準にした、挿入が実行される位置です。次のオプションがあります。

- 「の前に」 - XPath式で選択される各要素や属性の兄とします。

- 「の後ろに」 - XPath式で選択される各要素や属性の弟とします。

- 「の最初の子として」 - XPath式で指定される各要素の第1の子とします。XPathの結果が属性を返す場合はエラーが発生します。

- 「の最後の子として」 - XPath式で指定される各要素の最後の子とします。XPathが属性を返す場合はエラーが発生します。

XPath

有効な構成には、次の構成が含まれます。

- XQuery式とXPath式の両方が要素を返します。

- XQuery式とXPath式の両方が属性を返します。この場合、XQuery式は属性を返す必要があります。

XPath式を作成または編集するには、「<XPath>」(定義済の場合は、XPath式のフラグメント)をクリックして、XPath式エディタを表示します。

変数

上で定義したXPath変数によって内容が評価されるコンテキスト変数です。テキスト・フィールドに変数の名前を入力します。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.11 Javaコールアウト・アクションのプロパティ

メッセージ・フローからJavaメソッド、またはEJBビジネス・サービスを呼び出すには、メッセージ・フローでJavaコールアウト・アクションを使用します。

メッセージ・フロー・エディタで、Javaコールアウト・アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したJavaコールアウト・アクションを構成します。ページは次のとおりです。

- Javaコールアウト

- コメント

- ネームスペース

- 変数

「Javaコールアウト」ページには、次のオプションがあります。

表4-50 Javaコールアウト・アクションのオプション

オプション

説明

メソッド

メッセージ・フローから呼び出される外部Javaメソッドです。

「参照」をクリックして、アーカイブされたリソースからクラスと静的メソッドを選択します。クラスとメソッドを選択すると、Javaコールアウトの「プロパティ」ページに表が表示されます。

「名前」列には、すべてのメソッドの引数がリストされます。

「アクション」列の「<式>」または式のフラグメントはXQuery/XSLT式エディタにリンクされており、ここで引数に対する値を取得するための式を作成できます。

引数のデータ型は、次のいずれかである必要があります。

- Java.lang.String

- プリミティブ型および対応するクラス型(intとjava.lang.Integerなど)

- java.lang.BigDecimalおよびjava.lang.BigInteger(これらの型は、ラウンドオフ・エラーやオーバーフローが許容されない財務関連の計算で使用されます)

- org.apache.xbeans.XmlObjectのみ(型指定されたXML Beanはなし)

- byte[]

- java.lang.String[](入力のみ)

- XmlObject [ ](入力のみ)

- javax.activation.DataSource

入力値の型が宣言されている入力引数の型と一致しない場合、Oracle Service Busは入力値を入力引数の宣言された型に自動的に型キャストします。たとえば、入力引数の宣言された型がJavaプリミティブ「int」の場合、文字列値"123"は整数123に変換されます。

パラメータを参照として戻す

パラメータを参照として戻す: このオプションにより、jcidがパイプライン・オブジェクト・リポジトリのオブジェクトへのキーである実際のタイプに関係なく、Javaコールアウトの呼出しの戻り値を<java-content ref="jcid">参照要素にします。「結果」値フィールドに、java-content参照を含む変数の名前を入力します。このオプションを使用すると、パススルーを提供するか、Javaコールアウトおよびインライン・アクションでメッセージ情報追加を実行するか、Javaと非Javaトランスポート間でメッセージ変換を実行するために、パイプラインXMLに加えてメッセージ・フローで参照オブジェクトを処理できます。詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のメッセージでのJavaオブジェクトの送信および受信に関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBDV1874)を参照してください。

結果型

結果が割り当てられる変数です。このフィールドに対するラベルは、結果のデータ型を示します。

結果がバイト配列(唯一返される可能性のある配列)の場合は、バイナリ・コンテンツのXML要素が返されます。

サービス・アカウント

オプションのサービス・アカウントです。このJavaメソッドにセキュリティ・コンテキストが存在する場合に指定できます。

サービス・アカウントを選択するには、「参照」をクリックします。

固定およびマップされたサービス・アカウントの場合、そのサービス・アカウントのユーザーID/パスワードはローカル・システムとJavaコールアウトに伝播されたセキュリティ・コンテキストで認証されます。passthruの場合、セキュリティ・コンテキストはJavaコールアウトに伝播されます。(WS-Securityで)定義されている場合、このコンテキストは、メッセージ・レベルのコンテキストになります。そうでない場合は、トランスポート・レベルのコンテキストになります。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.12 ログ・アクションのプロパティ

メッセージ・フローでは、ログ・アクションを使用して、ログに記録されるメッセージを構築したり、メッセージと共にログに記録される一連の属性を定義したりします。

メッセージ・フロー・エディタで、ログ・アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したログ・アクションを構成します。ページは次のとおりです。

- ログ

- コメント

- ネームスペース

- 変数

「ログ」ページには、次のオプションが用意されています。

表4-51 ログ・アクションのオプション

オプション

説明

式

コンテキスト変数のXQuery式を通じてログに記録されるメッセージ・コンテキストです。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

注釈

このログ・アクションのメモです。これらのメモは、事前に定義された式の結果と一緒にログに記録されます。

重大度

ログ・メッセージの重大度です。次のオプションがあります。

- 「デバッグ」 - アプリケーションの開発中、アプリケーション内の下位レベルのアクティビティに関する詳細な説明を提供するメッセージの作成および使用が有用であることがあります。

- 「情報」 - 通常の処理をレポートするために使用する、低レベルの情報メッセージです。

- 「警告」 - 疑わしい処理や構成が実行されたが、通常の処理には影響を及ぼしません。

- 「エラー」 - ユーザー・エラーが発生しました。システムまたはアプリケーションでは、割込みをせず、一部のサービスの停止のみでエラーに対処できます。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.13 メッセージ・フローのプロパティ - コメント

メッセージ・フロー・エディタで、ノードまたはアクションをクリックし、プロパティ・ビューにそのプロパティを表示します。多くのノードやアクションでは、プロパティ・ページの1つとして「コメント」ページが(タブとして)表示されます。このページを使用して、メッセージ・フローで選択した項目についてのコメントをオプションとして追加できます。

4.11.14 メッセージ・フローのプロパティ - ネームスペース

メッセージ・フロー・エディタで、ノードまたはアクションをクリックし、プロパティ・ビューにそのプロパティを表示します。多くのノードやアクションでは、プロパティ・ページの1つとして「ネームスペース」ページが(タブとして)表示されます。このページを使用して、定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりできます。

4.11.15 メッセージ・フローのプロパティ - 変数

メッセージ・フロー・エディタで、ノードまたはアクションをクリックし、プロパティ・ビューにそのプロパティを表示します。多くのノードやアクションでは、プロパティ・ページの1つとして「変数」ページが(タブとして)表示されます。このページを使用して、事前定義されたコンテキスト変数およびユーザーによって定義されたコンテキスト変数のリストを表示します。新しい変数を定義するには、「追加」をクリックします。

4.11.16 MFL変換アクションのプロパティ

メッセージ・フローでは、MFL(メッセージ・フォーマット言語)変換アクションを使用して、メッセージ・パイプライン内でメッセージ・コンテンツをXMLとXML以外の形式との間で双方向に変換します。MFLは、バイナリ・データのレイアウトを記述するために使用する特別なXMLドキュメントです。Oracle独自の言語を使用して、フォーマットされたバイナリ・データをXMLデータに、またはXMLデータをバイナリ・データに変換するルールを定義します。

メッセージ・フロー・エディタで、MFL変換アクションをクリックし、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したMFL変換アクションを構成します。ページは次のとおりです。

- MFL変換

- コメント

- ネームスペース

- 変数

「MFL変換」ページには次のオプションがあります。

表4-52 MFL変換アクションのオプション

オプション

説明

変換の適用

適用される変換の種類です。

必要に応じて、「XMLから非XMLへ」または「非XMLからXMLへ」を選択します。

<式>

MFL変換アクションが実行される変数です。

「<式>」(定義済の場合はexpression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。このエディタでは、変数を指定できます。

この入力は、XMLへの変換の場合はテキストまたはバイナリ、XML以外への変換の場合はXMLでなければなりません。メッセージ・コンテキストのバイナリ・コンテンツは、バイナリ・コンテンツXML要素によって表されます。入力がバイナリでなければならない場合、このXMLはXquery式の結果となります。

リソース

静的なMFLリソースを使用してMFL変換アクションを実行するには、このオプションを選択します「参照」をクリックしてリソースを選択します。

リソース元

変換アクションを実行するMFLリソースを指定するには、このオプションを選択します。

「<式>」(定義済の場合はexpression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。このエディタでは、プロジェクト/フォルダ/MFLリソース名の形式で、アクションを実行するMFLリソースを指定できます。

変数

この変換アクションの結果が割り当てられる変数の名前です。結果は、バイナリ・コンテンツのXML要素になります。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.17 オペレーション・ブランチ・ノードのプロパティ

メッセージ・フローでは、オペレーション・ブランチ・ノードを使用して、WSDLで定義されているオペレーションに基づいてブランチを構成します。

メッセージ・フローでWSDLベースのプロキシ・サービスを定義する場合、オペレーション固有の処理が必要になります。Oracle Service Busでは、オペレーションに基づくブランチ・ノードを手動で構成するかわりに、オペレーションに基づいて自動的に分岐するブランチ・ノードが用意されています。つまり、オペレーション・ブランチ・ノードをメッセージ・フローに作成すると、Oracle Service Busプラグインでは、WSDLに定義されたオペレーションがオペレーション・ブランチ・ノード構成ページに表示されるため、これらのオペレーションに基づいて分岐ロジックをすばやく構築できます。

ブランチ・ノードを使用すると、可能ないくつかのパスのうちの1つに限定して処理を進めることができます。分岐は、XPathベースの切替え表に基づいて実行されます。表の各ブランチは、条件(たとえば、<500)を指定し、これが単一のXPath式(たとえば、$bodyの./ns: PurchaseOrder/ns:totalCost)に対してメッセージ・フローの降順に評価されます。最初に満たされた条件によって、進むべきブランチが決定されます。満たされる分岐条件がない場合は、デフォルトのブランチに進みます。ブランチ・ノードでは、メッセージ・フロー内にいくつかの子孫を持つことができます(デフォルトのブランチを含め各ブランチに1つずつ)。

メッセージ・フロー・エディタでオペレーション・ブランチ・ノードをメッセージ・フローに追加すると、図4-1に示すように、そのノードにはWSDLで定義された最初の操作に基づく初期の条件付きブランチと、デフォルトのブランチが含まれます。

図4-1 WSDLの「Submit」操作とデフォルト・ブランチを含むブランチ・ノード

プロパティ・ビューに「フロー」プロパティ・ページを表示するには、ノード自体(オペレーション・ブランチ・ノード・アイコン、またはアイコンに接続されている境界ボックス)をクリックします。このページではノードの名前と説明を指定できます。

オペレーション・ブランチ・ページにあるオペレーション・ブランチのプロパティを表示するには、オペレーション・ブランチ・アイコンをクリックします。ページには、WSDLで定義されているすべてのオペレーションが含まれるリストがあります。このブランチに対して異なるオペレーションを選択できます。メッセージ・フロー・エディタでオペレーション・ブランチ・ノードのプラス記号をクリックして、別のオペレーション・ブランチを追加することもできます。

すべてのブランチの追加が終了したら、ブランチにノードとステージを追加して各ブランチの処理を定義します。

4.11.18 パイプライン・ペア・ノードのプロパティ

メッセージ・フローでリクエストおよびレスポンス処理を定義するには、パイプライン・ペア・ノードを使用します。

メッセージ・フローには、パイプライン・ペア・ノード(プロキシ・サービス、またはサービスの処理用のリクエスト・パイプラインとレスポンス・パイプライン)と、ステージ、パイプライン、およびプロキシ・サービスに対して定義できるエラー・ハンドラをゼロ個以上入れることができます。パイプラインは、1つまたは複数のステージを持つことができ、ステージはアクションを持ちます。

パイプライン・ペアには、リクエスト・パイプラインとレスポンス・パイプラインが必ず含まれています。必要に応じて、パイプラインにステージとアクションを追加します。

メッセージ・フロー・エディタで、パイプライン・ペア・ノードをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したパイプライン・ペア・ノードを構成します。次のオプションがあります。

表4-53 パイプライン・ペア・ノードのオプション

オプション

説明

名前

パイプライン・ペア・ノードの名前を入力します。

説明

パイプライン・ペア・ノードの説明を入力します。

4.11.19 パブリッシュ・アクションのプロパティ

メッセージ・フローでは、パブリッシュ・アクションを使用して、静的に指定された、メッセージのターゲット・サービスを識別し、メッセージのパッケージ方法およびサービスへの送信方法を構成します。

メッセージ・フロー・エディタで、パブリッシュ・アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したパブリッシュ・アクションを構成します。ページは次のとおりです。

- パブリッシュ

- コメント

- ネームスペース

- 変数

「パブリッシュ」ページには、次のオプションが含まれます。

表4-54 パブリッシュ・アクションのオプション

オプション

説明

サービス

パブリッシュ・アクションのターゲット・サービスです。「参照」をクリックし、リストからプロキシ・サービスまたはビジネス・サービスを選択します。

呼出し

ターゲット・サービスで呼び出される操作です。

このオプションは、選択したサービスに操作が定義されている場合にのみ表示されます。

メッセージのパッケージとサービスへの送信方法を構成するために、「リクエスト・アクション」フィールドで「アクションの追加」をクリックします。その後で、サービスと関連付けるアクションを選択します。複数のアクションを追加することも可能です。

インバウンド操作のアウトバウンドでの使用

このオプションを選択すると、アウトバウンド操作がインバウンド操作と同じになります。

このオプションは、選択したサービスに操作が定義されている場合にのみ表示されます。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.20 パブリッシュ表アクションのプロパティ

メッセージ・フローで、ゼロまたはそれ以上の静的に指定されたサービスにメッセージをパブリッシュするには、パブリッシュ表アクションを使用します。切替え式の条件ロジックを使用して、どのサービスをパブリッシュに使用するか実行時に決定します。パブリッシュ表アクションには、デフォルトのパブリッシュ・アクションに進むデフォルトのパスに加えて、異なるパスに進むための条件を定義するケース・アクションが1つ以上含まれています。パブリッシュ表アクションを完全に定義するには、パブリッシュ表アクションと、そのケース・アクションとパブリッシュ・アクション(および追加したその他のアクション)を構成する必要があります。

メッセージ・フロー・エディタのメッセージ・フローにパブリッシュ表アクションを追加すると、図4-2に示すように、パブリッシュ表アクションにはパブリッシュ・アクションへのパスを持つケース・アクションの他に、デフォルトのパブリッシュ・アクションへのパスを持つデフォルトのケース・アクションが含まれます。条件の追加をクリックして、パブリッシュ表に別の条件を追加します。

図4-2 パブリッシュ表アクション

4.11.20.1 パブリッシュ表のプロパティ

メッセージ・フロー・エディタで、パブリッシュ表アクション自体(「パブリッシュ表」アイコン、またはアイコンに接続されている境界ボックス)をクリックして、プロパティ・ビューに「パブリッシュ表」プロパティ・ページを表示します。このプロパティ・ページを使用して、選択したパブリッシュ表アクションを構成します。ページは次のとおりです。

- パブリッシュ表

- コメント

- ネームスペース

- 変数

「パブリッシュ表」プロパティ・ページには、次のオプションがあります。

表4-55 パブリッシュ表のオプション

オプション

説明

式

実行時にルーティングの決定を行う値を返すXQuery式です。

XQuery式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.20.2 ケース・アクションのプロパティ

メッセージ・フロー・エディタで、ケース・アクションをクリックし、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページは、次に説明するように、選択したケース・アクションの構成に使用します。

表4-56 ケース・アクションのオプション

オプション

説明

「演算子」および「値」

リストから比較演算子を選択します。次に、パブリッシュ表アクションに対して定義されたXQuery式から返される値が評価される値を入力します。

4.11.20.3 パブリッシュ・アクションのプロパティ

4.11.19項「パブリッシュ・アクションのプロパティ」を参照してください。

4.11.21 エラーの生成アクションのプロパティ

メッセージ・フローでは、エラーの生成アクションを使用して、指定したエラー・コード(文字列)と説明と共に例外を発生させます。

メッセージ・フロー・エディタで、エラーの生成アクションをクリックし、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したエラーの生成アクションを構成します。ページは次のとおりです。

- エラーの生成

- コメント

- ネームスペース

- 変数

「エラーの生成」ページには、次のオプションが含まれます。

表4-57 エラーの生成アクションのオプション

オプション

説明

コード

発生させるエラー・コードです。

メッセージ

エラー・コードの説明です。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.21.1 トランザクション

サービスがトランザクションの場合、トリガーされたエラー発生アクションにより、非同期のリクエストのトランザクションまたは同期のリクエスト/レスポンスのトランザクションが中断されます。たとえば、メッセージを参照し、SOAPフォルトは発生せず、エラーを発生させるアクションによりトランザクションが中断された場合にも、エラーの生成アクションが実行する際の条件を決定できます。

4.11.22 名前変更アクションのプロパティ

メッセージ・フローでは、名前変更アクションを使用して、XPath式で選択された要素の名前を、要素のコンテンツを変更することなく変更します。

メッセージ・フロー・エディタで、名前変更アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した名前変更アクションを構成します。ページは次のとおりです。

- 名前変更

- コメント

- ネームスペース

- 変数

「名前変更」ページには、次のオプションが含まれます。

表4-58 名前変更アクションのオプション

オプション

説明

XPath

名前を変更する(名前付き変数内の)データの指定に使用されるXPath式です。

XPath式を作成または編集するには、「<XPath>」(定義済の場合は、XPath式のフラグメント)をクリックして、XPath式エディタを表示します。

in変数

名前を変更する要素を保持しているコンテキスト変数です。

このフィールドには変数の名前を入力します。

ローカル名

選択した要素の名前の変更に使用するローカル名です。

このフィールドにはローカル名を入力します。

ネームスペース

選択した要素の名前を変更するときに使用するネームスペースです。

このフィールドにはネームスペースを入力します。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.23 置換アクションのプロパティ

メッセージ・フローでは、置換アクションを使用して、XPath式で指定されたノードまたはノードのコンテンツを置き換えます。ノードまたはそのコンテンツは、XQuery式が返した値で置換されます。

置換アクションでは、単純な値、要素、属性を置き換えることができます。XQuery式から何も返されない状態は、アクションがノード全体を置き換えるか、ノードコンテンツのみを置き換えるかにより、識別されたノードを削除すること、または空のノードを作成することと同じです。

メッセージ・フロー・エディタで、置換アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した置換アクションを構成します。ページは次のとおりです。

- 置換

- コメント

- ネームスペース

- 変数

「置換」ページには、次のオプションが含まれます。

表4-59 置換アクションのオプション

オプション

説明

XPath

置換する(名前付き変数内の)データの指定に使用するXPath式です。

XPath式を作成または編集するには、「<XPath>」(定義済の場合は、XPath式のフラグメント)をクリックして、XPath式エディタを表示します。

変数

コンテキスト変数を入力します。

式

名前付き変数内でXPathによって指定されたデータを置換するデータの作成に使用するXQuery式です。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

ノード全体を置換

または

ノードのコンテンツを置換

XQuery式を編集したら、次のいずれかのオプションを選択します。

- 「ノード全体を置換」 - 定義したXPath式で選択したノードとそのすべてのコンテンツを置換するように指定します。

- 「ノードのコンテンツを置換」 - ノードは置換せず、そのコンテンツのみ置換するように指定します。

注意: 「ノード全体を置換」オプションを選択してXPathを「./*」に設定するよりも、「ノードのコンテンツを置換」オプションを選択して「XPath」フィールドを空白にする方が効率的です。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.24 返信アクションのプロパティ

メッセージ・フローでは、返信アクションを使用して、呼出し元に即時に返信されるように指定します。

返信アクションは、リクエスト・パイプライン、レスポンス・パイプライン、またはエラー・パイプラインで使用できます。成功時または失敗時に返信するように構成できます。HTTPインバウンド・トランスポートでの失敗時の返信の場合、返信アクションでは、呼出し元に即時に返信されるように指定します。

メッセージ・フロー・エディタで、返信アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した返信アクションを構成します。ページは次のとおりです。

- 割当て

- コメント

- ネームスペース

- 変数

「返信」ページには、次のオプションが含まれます。

表4-60 返信アクションのオプション

オプション

説明

成功時

または

失敗時

「成功時」を選択すると、メッセージが成功した場合に応答します。「失敗時」を選択すると、メッセージが失敗した場合に応答します。トランザクションがOracle Service Busによって起動されても、失敗時の応答によって中止されます。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.25 レポート・アクションのプロパティ

メッセージ・フローでは、レポート・アクションを使用して、プロキシ・サービスに対してメッセージ・レポートを有効にします。

メッセージ・フロー・エディタで、レポート・アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したレポート・アクションを構成します。ページは次のとおりです。

- レポート

- コメント

- ネームスペース

- 変数

「レポート」ページには次のオプションがあります。

表4-61 レポート・アクションのオプション

オプション

説明

式

レポートされるデータの作成に使用するXQuery式です。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

検索キー

XQuery式の編集が終了したら、「キーの追加」をクリックして、メッセージ・コンテキスト変数またはメッセージ・ペイロードからキー識別子を抽出するために使用される1つまたは複数のキー値のペアを追加します(残りのメッセージは無視されます)。キーは、メッセージを識別する便利な手段となります。

「キー名: 名前」フィールドにキーの名前を入力します。「キー値」列で「<XPath>」をクリックして、XPath式エディタでXPath式を作成します。in変数フィールドに、式の実行対象となる変数の名前を入力します。

たとえば、ステージのエラー・ハンドラで構成されたレポート・アクションを考えてみます。このアクションは、エラーが発生した場合に fault コンテキスト変数のコンテンツを報告します。レポート・アクションは次のように構成されます。

- キー名= errorCode

- キー値= ./ctx:errorCode(変数fault)

実行時にこのこのアクションが行われるたびに、データ・ストリームを通じてメッセージが報告されます。次の表は、レポート・アクションが2回実行された後の結果を示しています。

表4-62 レポート・アクションの実行結果

レポート・インデックス

DBタイムスタンプ

インバウンド・サービス

エラー・コード

errorCode=BEA-382505

04/26/07 9:45 AM

MortgageBroker/ProxySvcs/loanGateway3

BEA-382505

errorCode=BEA-382505

04/26/07 9:45 AM

同一

BEA-382505

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.26 再開アクションのプロパティ

メッセージ・フローでは、エラー・ハンドラによってエラーが処理された後、再開アクションを使用してメッセージ・フローを再開します。このアクションにパラメータはありません。このアクションはエラー・パイプラインでのみ使用できます。

メッセージ・フロー・エディタで、再開アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した再開アクションを構成します。ページは次のとおりです。

- コメント

- ネームスペース

- 変数

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.27 ルート・ノードのプロパティ

メッセージ・フローでは、ルート・ノードを使用して、ビジネス・サービスとの間でリクエスト・メッセージおよびレスポンス・メッセージのディスパッチを処理します。他のノードは、ルート・ノードに進むことはできません。

メッセージ・フロー・エディタで、ルート・ノードをクリックして、プロパティ・ビューにそのプロパティを表示します。プロパティ・ページは、選択したルート・ノードの構成に使用します。ページは次のとおりです。

- ルート

- ネームスペース

- 変数

「ルート」ページには、次のオプションが用意されています。

表4-63 ルート・ノードのオプション

オプション

説明

名前

ルート・ノードの名前を入力します。

説明

ルート・ノードの説明を入力します。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.28 ルーティング・アクションのプロパティ

メッセージ・フローでは、ルーティング・アクションを使用して、メッセージのターゲット・サービスを識別し、そのサービスにメッセージがルーティングされる方法を構成します。

これは終端アクションなので、このアクションの後に別のアクションを追加することはできません。ただし、このアクションには、リクエストとレスポンスのアクションを含めることができます。

メッセージ・フロー・エディタで、ルーティング・アクションをクリックし、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したルーティング・アクションを構成します。ページは次のとおりです。

- ルーティング

- コメント

- ネームスペース

- 変数

「ルーティング」ページには、次のオプションが含まれます。

表4-64 ルーティング・アクションのオプション

オプション

説明

サービス

ルーティング・アクションのターゲット・サービスです。「参照」をクリックし、リストからプロキシ・サービスまたはビジネス・サービスを選択します。

呼出し

ターゲット・サービスで呼び出される操作です。

このオプションは、選択したサービスに操作が定義されている場合にのみ表示されます。

メッセージのパッケージとサービスへの送信方法を構成するために、「リクエスト・アクション」フィールドで「アクションの追加」をクリックします。その後で、サービスと関連付けるアクションを選択します。複数のアクションを追加することも可能です。

インバウンド操作のアウトバウンドでの使用

このオプションを選択すると、アウトバウンド操作がインバウンド操作と同じになります。

このオプションは、選択したサービスに操作が定義されている場合にのみ表示されます。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.29 ルーティング・オプション・アクションのプロパティ

メッセージ・フローでは、ルーティング・オプション・アクションを使用してアウトバウンド・リクエストのプロパティ(URI、サービス品質、モード、再試行パラメータ、メッセージ優先度)の一部またはすべてを変更します。

メッセージ・フロー・エディタで、ルーティング・オプション・アクションをクリックし、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したルーティング・オプション・アクションを構成します。ページは次のとおりです。

- ルーティング・オプション

- コメント

- ネームスペース

- 変数

「ルーティング・オプション」ページには次のオプションがあります。

表4-65 ルーティング・オプション・アクションのプロパティ

オプション

説明

URI

アウトバウンド・メッセージのURIを設定するには、このオプションを選択します。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

URIを返す式を入力します。これで呼び出されたサービスのURIがオーバーライドされます。

注意: 別のプロキシ・サービスにルーティングする場合は、URIのオーバーライドは無効です。

QoS

サービス品質の要素を設定するには、このオプションを選択します。

リストからQoSオプションを選択します。これにより、デフォルトがオーバーライドされます。

モード

モードを「リクエスト」または「リクエスト - レスポンス」に設定するには、このオプションを選択します。

リストからモードを選択します。

注意: これは、通常、呼び出されたサービスのインタフェースに基づいて、自動的に設定されています。Any SoapまたはAny XMLサービスなどでは、設定されていない場合もあります。

再試行間隔

再試行間隔を設定するには、このオプションを選択します。

再試行間隔を秒数で指定します。これで呼び出されたサービスで構成されたデフォルトがオーバーライドされます。

再試行回数

再試行回数を設定するには、このオプションを選択します。

アクションを中断するまで再試行を行う回数を指定します。これで呼び出されたサービスで構成されたデフォルトがオーバーライドされます。

優先度

メッセージ優先度を設定するには、このオプションを選択します。

式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

正の整数を返す式を入力します。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.30 ルーティング表アクションのプロパティ

メッセージ・フローでは、ルーティング表を使用して、単一のXQuery式の結果に基づいて異なるルートを選択します。ルーティング表アクションは、切替え式の条件表にラップされた一連のルートを含みます。

これは終端アクションなので、このアクションの後に別のアクションを追加することはできません。ただし、このアクションには、リクエストとレスポンスのアクションを含めることができます。

メッセージ・フロー・エディタで、ルーティング表のアクションをメッセージ・フローに追加すると、ルーティング表アクションには、図4-3に示すように、ルーティング・アクションへのパスを持つケース・アクションと、デフォルトのルーティング・アクションへのパスを持つデフォルト・ケース・アクションが含まれます。条件の追加をクリックして、ルーティング表に別の条件を追加します。

図4-3 ルーティング表アクション

4.11.30.1 ルーティング表のプロパティ

メッセージ・フロー・エディタで、パブリッシュ表アクション自体(「パブリッシュ表」アイコン、またはアイコンに接続されている境界ボックス)をクリックして、プロパティ・ビューに「パブリッシュ表」プロパティ・ページを表示します。このプロパティ・ページを使用して、選択したパブリッシュ表アクションを構成します。ページは次のとおりです。

- ルーティング表

- コメント

- ネームスペース

- 変数

「ルーティング表」のプロパティ・ページには、次のオプションが含まれます。

表4-66 ルーティング表のオプション

オプション

説明

式

実行時にルーティングの決定を行う値を返すXQuery式です。

XQuery式を作成または編集するには、「<式>」(定義済の場合は、expression_fragment)をクリックして、XQuery/XSLT式エディタを表示します。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.30.2 ケース・アクションのプロパティ

メッセージ・フロー・エディタで、ケース・アクションをクリックし、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページは、次に説明するように、選択したケース・アクションの構成に使用します。

表4-67 ケース・アクションのオプション

オプション

説明

「演算子」および「値」

リストから比較演算子を選択します。次に、ルーティング表アクションに対して定義されたXQuery式から返される値が評価される値を入力します。

4.11.30.3 ルーティング・アクションのプロパティ

4.11.28項「ルーティング・アクションのプロパティ」を参照してください。

4.11.31 サービス・コールアウト・アクションのプロパティ

メッセージ・フローでは、サービス・コールアウト・アクションを使用して、Oracle Service Busに登録済のプロキシ・サービスまたはビジネス・サービスの同期(ブロック)コールアウトを構成します。

メッセージ・フロー・エディタで、サービス・コールアウト・アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したサービス・コールアウト・アクションを構成します。ページは次のとおりです。

- サービス・コールアウト

- コメント

- ネームスペース

- 変数

「サービス・コールアウト」ページには、次のオプションがあります。

表4-68 サービス・コールアウト・アクションのオプション

オプション

説明

サービス

サービス・コールアウト・アクションのターゲット・サービスです。「参照」をクリックし、リストからプロキシ・サービスまたはビジネス・サービスを選択します。

呼出し

ターゲット・サービスで呼び出される操作です。

このオプションは、選択したサービスがWSDLベースであり、サービスで呼び出すことができる操作がある場合にのみ表示されます。

注意: 様々な理由からOracle Service Busで必要とする操作を選択すると、選択した操作のみが呼び出されることは保証されません。たとえば、操作Aを選択した場合でも、メッセージに操作Bの呼び出しが含まれていると、操作Bも呼び出されます。

SOAP本体の構成

または

ペイロード・ドキュメントの構成

次のいずれかのオプションを選択して、リクエスト・メッセージとレスポンス・メッセージの構成方法を指定します。

- 「SOAP本体の構成」を選択して、SOAP本体を構成します。このオプションを選択すると、$bodyを直接使用できます。
このオプションでサポートしているSOAP-RPCエンコード形式は、ペイロードのパラメータやドキュメントを構成している場合はサポートされません。

- 「ペイロード・パラメータの構成」または「ペイロード・ドキュメントの構成」を選択して、ペイロードを構成します。

その後の構成オプションは、選択したサービスの種類およびそのサービスに対して選択した構成オプションの種類によって決まります。表4-69に、各種類のサービスで使用できるオプションを示します。

表4-69 SOAP本体、ペイロード・パラメータおよびペイロード・ドキュメントのオプション

選択したサービスのタイプ

「SOAP本体の構成」のオプション

「ペイロード・パラメータの構成」のオプションまたは「ペイロード・ドキュメントの構成」のオプション

SOAP RPC

次の表の「「SOAPリクエスト本体」および「SOAPレスポンス本体」」を参照してください。

(オプション)次の表の「「SOAPリクエスト・ヘッダー」および「SOAPレスポンス・ヘッダー」」を参照してください。

「「リクエスト・パラメータ」および「レスポンス・パラメータ」」を参照してください(オプション)。

(オプション)次の表の「「SOAPリクエスト・ヘッダー」および「SOAPレスポンス・ヘッダー」」を参照してください。

SOAPドキュメントおよび任意のSOAP

次の表の「「SOAPリクエスト本体」および「SOAPレスポンス本体」」を参照してください。

(オプション)次の表の「「SOAPリクエスト・ヘッダー」および「SOAPレスポンス・ヘッダー」」を参照してください。

次の表の「「リクエスト・ドキュメント」および「レスポンス・ドキュメント」」を参照してください。

(オプション)次の表の「「SOAPリクエスト・ヘッダー」および「SOAPレスポンス・ヘッダー」」を参照してください。

XML、任意のXMLおよびメッセージ

次の表の「「SOAPリクエスト本体」および「SOAPレスポンス本体」」を参照してください。

次の表の「「リクエスト・ドキュメント」および「レスポンス・ドキュメント」」を参照してください。

上の表で示した各オプションの手順を次の表に示します。

表4-70 SOAP本体、ペイロード・パラメータおよびペイロード・ドキュメントのオプションの説明

オプション

手順

「SOAPリクエスト本体」および 「SOAPレスポンス本体」

これらのオプションを構成するには:

- 「SOAPリクエスト本体」フィールドに、コールアウト・リクエストのSOAP本体要素のXMLを保持する変数の名前を入力します。

- 「SOAPレスポンス本体」フィールドに、レスポンスのSOAP本体要素のXMLがバインドされる変数の名前を入力します。

「SOAPリクエスト・ヘッダー」および 「SOAPレスポンス・ヘッダー」

これらのオプションを構成するには:

- 「SOAPリクエスト・ヘッダー」フィールドに、コールアウト・リクエストのSOAPヘッダー要素のXMLを保持する変数の名前を入力します。
SOAPリクエスト・ヘッダーの入力ドキュメントは、<soap-env:Header>...</soap-env:Header>でラップする必要があります。

- 「SOAPレスポンス・ヘッダー」フィールドに、レスポンスのSOAPヘッダー(存在する場合)のXMLがバインドされる変数の名前を入力します。

「リクエスト・パラメータ」および 「レスポンス・パラメータ」

オプションを構成するには:

- 「リクエスト・パラメータ」フィールドに、実行時に評価される、リクエスト・パラメータの値を指定する変数の名前を入力します。
入力変数にはコアのペイロード・ドキュメントだけを指定します。SOAPパッケージは、Oracle Service Busによって自動的に作成されます。そのため、入力ドキュメントを<soap-env:Body>...</soap-env:Body>でラップしません。

たとえば、このリクエスト・パラメータに使用されるbody入力変数を作成する場合は、$body (soap-env:Bodyラッパーが保持されます)ではなく、body/*(ラッパーsoap-env:Bodyを削除します)というXPath文を使用して、その変数のコンテンツを定義します。

- 「レスポンス・パラメータ」フィールドに、実行時にレスポンスを割り当てる変数の名前を入力します。

「リクエスト・ドキュメント」および 「レスポンス・ドキュメント」

これらのオプションを構成するには:

- 「リクエスト・ドキュメント変数」フィールドに、リクエスト・ドキュメントを割り当てる変数の名前を入力します。
SOAPドキュメント・タイプのサービスの場合、サービスに送信されるSOAPメッセージの本文を作成する変数は、実行時に評価されます。任意のXMLサービスの場合、サービスに送信されるXMLメッセージの本文を作成する変数は、実行時に評価されます。

SOAPドキュメント・タイプのサービスおよび任意のXMLサービスの場合、入力変数にはコアのペイロード・ドキュメントだけを指定します。SOAPパッケージは、Oracle Service Busによって自動的に作成されます。そのため、入力ドキュメントを<soap-env:Body>...</soap-env:Body>でラップしません。

たとえば、このリクエスト・パラメータに使用されるbody入力変数を作成する場合は、$body (soap-env:Bodyラッパーが保持されます)ではなく、body/*(ラッパーsoap-env:Bodyを削除します)というXPath文を使用して、その変数のコンテンツを定義します。

メッセージ・サービスの場合、メッセージの本文を作成する変数は、サービスが予期するデータ型に基づいて評価されます。次の制限は、メッセージ・サービスで使用される変数に適用されます。

- バイナリ・データを受信するサービスの場合は、変数にctx:binary-content要素が必要です。

- MFLデータを受信するサービスの場合は、変数に同等のXMLデータが必要です。

- テキスト・データを受信するサービスの場合、変数は文字列になります。

- 「レスポンス・ドキュメント変数」フィールドに、実行時にレスポンス・ドキュメントを割り当てる変数の名前を入力します。

必要に応じて、1つまたは複数のトランスポート・ヘッダー・アクションを追加します。トランスポート・ヘッダー・アクションの詳細は、4.11.34項「トランスポート・ヘッダー・アクションのプロパティ」を参照してください。

注意:

指定するトランスポート・ヘッダーに加え、その他のヘッダーがOracle Service Busバインディング・レイヤーによって追加されます。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

4.11.32 スキップ・アクションのプロパティ

メッセージ・フローでは、スキップ・アクションを使用して、実行時に現在のステージの実行をスキップし、メッセージ・フローの次のステージに処理が進むように指定します。このアクションにはパラメータがなく、リクエスト・パイプライン、レスポンス・パイプライン、エラー・パイプラインで使用できます。

メッセージ・フロー・エディタで、スキップ・アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したスキップ・アクションを構成します。ページは次のとおりです。

- コメント

- ネームスペース

- 変数

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.33 ステージ・ノードのプロパティ

メッセージ・フローでは、メッセージ・フローのアクションのコンテナとしてステージ・ノードを使用します。複数のステージをつなぎ合わせて、処理ロジックを区分できます。

メッセージ・フロー・エディタで、ステージ・ノードをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページは、選択したステージ・ノードの構成に使用します。ページは次のとおりです。

- ステージ

- ネームスペース

- 変数

「ステージ」ページには、次のオプションが含まれます。

表4-71 開始ノードのオプション

オプション

説明

名前

ステージ・ノードの名前を入力します。

説明

ステージ・ノードの説明を入力します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.34 トランスポート・ヘッダー・アクションのプロパティ

メッセージ・フローでは、トランスポート・ヘッダー・アクションを使用して、メッセージのヘッダー値を設定します。

メッセージ・フロー・エディタで、トランスポート・ヘッダー・アクションをクリックし、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択したトランスポート・ヘッダー・アクションを構成します。ページは次のとおりです。

- トランスポート・ヘッダー

- コメント

- ネームスペース

- 変数

「トランスポート・ヘッダー」ページには次のオプションがあります。

表4-72 トランスポート・ヘッダー・アクションのオプション

オプション

説明

方向

「のトランスポート・ヘッダーを設定」リストから、次のいずれかを選択して、どのメッセージ・コンテキストの場所を変更するかをランタイムに対して指定します。

- 「アウトバウンド・リクエスト」 - アウトバウンド・リクエスト(ルート、パブリッシュまたはサービス・コールアウト・アクションでプロキシ・サービスによって送信されるメッセージ)のトランスポート・ヘッダーの値を設定するには、このオプションを選択します。これらのヘッダー要素は、メッセージ・コンテキストの次の場所にあります。

$outbound/ctx:transport/ctx:request/tp:headers

- 「インバウンド・レスポンス」 - インバウンド・レスポンス(プロキシ・サービスがクライアントに返信するレスポンス・メッセージ)のトランスポート・ヘッダーの値を設定するには、このオプションを選択します。これらのヘッダー要素は、メッセージ・コンテキストの次の場所にあります。

$inbound/ctx:transport/ctx:response/tp:headers

すべてのヘッダーを渡す

インバウンド・メッセージからアウトバウンド・メッセージへ、またはアウトバウンド・メッセージからインバウンド・メッセージへ、すべてのヘッダーをそのまま渡すには、このオプションを選択します。ソース・ヘッダー・セットのすべてのヘッダーはターゲット・ヘッダー・セットにコピーされ、ターゲット・ヘッダー・セットの既存の値はすべて上書きされます。

ヘッダー

「ヘッダーの追加」をクリックして、ヘッダーをヘッダー表に追加します。次の手順に従って、各ヘッダーを構成します。

この表には、必要な数のヘッダーを追加することができます。ランタイムでは、対応するXMLの生成時に、ネームスペースを宣言し、適切な順序でヘッダー要素を配置するため、表のヘッダーの順序を指定する必要はありません。

ヘッダー: 名前:

次のいずれかを実行して、ヘッダーを指定します。

- 「名前」列のリストから、ヘッダー名を選択します。リストには、事前定義されたすべてのターゲット・トランスポートのヘッダー名が含まれています(たとえば、HTTPトランスポートの場合はContent-Type、JMSトランスポートの場合はJMSCorrelationIDなど)。

- 「その他」フィールドにヘッダー名を入力します。ヘッダー名がこのサービスのトランスポート用に事前定義されたいずれかのヘッダーでない場合、そのヘッダーはトランスポート仕様の定義のとおりユーザー・ヘッダーになります。

ヘッダー: アクション

次のいずれかのオプションを選択して、ヘッダーの値の設定方法を指定します。

- ヘッダーを式に設定
このオプションを選択すると、XQuery式またはXSLT式を使用して、ヘッダーの値を設定できます。「text/xml」などの簡単な式にすることも、複雑なXQuery式またはXSLT式にすることもできます。

Oracle Service Busトランスポート・レイヤーでは、すべてのヘッダーのXML表現を文字列値として定義するため、式の結果は、ヘッダーの値が設定される前に文字列に変換されます。何も返さない式のヘッダーの値は、空の文字列に設定されます。式を使用してヘッダーを削除することはできません。

注意: このアクションで指定できるすべてのヘッダーの設定が実行時に使用されるわけではありません。

- 「ヘッダーの削除」
リクエストまたはレスポンスのメタデータからヘッダーが削除されるように指定します。

- 「インバウンド・リクエストからヘッダーをコピー」(アウトバウンド・リクエストのトランスポート・ヘッダーを設定している場合)
または

「アウトバウンド・レスポンスからヘッダーをコピー」(インバウンド・レスポンスのトランスポート・ヘッダーを設定している場合)

このヘッダーがインバウンド・メッセージの同じ名前を持つ対応するヘッダーからアウトバウンド・メッセージに、またその逆に直接コピーされるように指定します。たとえば、アウトバウンド・リクエストのSOAPActionヘッダーを設定する場合は、「インバウンド・リクエストからヘッダーをコピー」を選択すると、ランタイムが$inboundのSOAPActionリクエスト・ヘッダーから値をコピーします。インバウンド・レスポンス・ヘッダーの場合、コピーするヘッダーのソースは、$outboundのレスポンス・ヘッダーです。

ソースに存在しないヘッダーについて「ヘッダーのコピー」オプションが選択された場合、このオプションは無視され、このヘッダーのターゲットではアクションが実行されません。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.11.35 検証アクションのプロパティ

メッセージ・フローでは、検証アクションを使用して、XMLスキーマ要素またはWSDLリソースに照らし、XPath式で選択した要素を検証します。検証できるのは、グローバル要素のみです。Oracle Service Busはローカル要素に対する検証に対応していません。

メッセージ・フロー・エディタで、検証アクションをクリックして、プロパティ・ビューにそのプロパティを表示します。このプロパティ・ページを使用して、選択した検証アクションを構成します。ページは次のとおりです。

- 検証

- コメント

- ネームスペース

- 変数

「検証」ページには、次のオプションが用意されています。

表4-73 検証アクションのオプション

オプション

説明

XPath

検証する要素を指定するXPath式です。

XPath式を作成または編集するには、「<XPath>」(定義済の場合は、XPath式のフラグメント)をクリックして、XPath式エディタを表示します。

in変数

検証する要素を保持する変数の名前です。変数の名前を入力するか、コンテンツ支援が有効になっている場合は [Ctrl]と[Space] を同時に押して、宣言済の変数のリストを表示します。

対象リソース

XPath式(上で説明した「XPath」フィールド)によって選択された要素の検証の対象となるXMLスキーマ要素またはWSDLリソースです。

変数の保存

または

エラーの生成

この検証の結果(ブール結果)を保存する場合は、変数の保存を選択し、結果を保存する変数の名前を入力します。

また、WSDLやXMLスキーマ要素に照らした要素の検証が失敗したときにエラーを発生させる場合は、「エラーの生成」を選択します。

必要であれば、「コメント」ページを使用してコメントを追加します。

定義済のネームスペースのリストを表示したり、新しいネームスペースを作成したりするには、「ネームスペース」ページを使用します。

定義されているコンテキスト変数のリストを表示したり、新しいコンテキスト変数を作成したりするには、「変数」ページを使用します。

4.12 JAR依存関係の変更ダイアログ

Oracle Service Busでは、別のJAR内の他のクラスに依存するクラスをJARリソースに格納できます。JAR依存関係の変更ページを使用して、参照されるJARリソースを追加または削除します。「上へ」ボタンと「下へ」ボタンを使用して、参照されるJARの階層構造の順序(優先順位)を変更します。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のJARに関する項(http://www.oracle.com/pls/as111170/lookup?id=OSBAG898)を参照してください。

表4-74 JAR依存関係の変更のプロパティ

オプション

説明

使用可能なJAR

プロジェクト名と、JARリソースがあるとフォルダの名前(該当する場合)です。この列には、現在のワークスペースで使用できるすべてのJARが表示されます。

JAR参照

参照されるJARリソースの名前とパスです。この列には、現在の構成で依存関係があるすべてのJARが表示されます。

4.13 SMTPサーバー

次のエディタおよびウィザードを使用して、SMTPサーバーの操作を行います。

- 4.13.1項「「SMTPサーバーの編集」ページ」

- 4.13.2項「新しいSMTPサーバー・リソース・ウィザード」

4.13.1 「SMTPサーバーの編集」ページ

このページを使用し、SMTPサーバーの詳細を表示し、必要であれば構成を編集します。フィールドの詳細は、4.13.2項「新しいSMTPサーバー・リソース・ウィザード」を参照してください。

SMTPリソースの名前を変更した場合、エンドポイントURIでSMTPリソースを参照するすべての電子メール・ビジネス・サービスで、新しい名前が自動的に更新されます。

4.13.2 新しいSMTPサーバー・リソース・ウィザード

このページを使用して、新しいSMTPサーバー・リソースを構成します。

表4-75 新しいSMTPサーバーのオプション

オプション

説明

説明

このSMTPサーバー・リソースの説明を入力します。

サーバーURL

SMTPサーバーを参照するURLを入力します。このフィールドは必須です。

ポート番号

SMTPサーバーのポート番号を入力します(デフォルト・ポートは25です)。このフィールドは必須です。

ユーザー名

目的のSMTPサーバーにアクセスするためにユーザー名およびパスワードが必要な場合は、「ユーザー名」フィールドにユーザー名を入力して、関連するパスワードを「パスワード」フィールドと「パスワードの確認」フィールドに入力します。

これらのフィールドは省略可能です。SMTPサーバーが保護されている場合のみ必要となります。

パスワード

ユーザー名に関連付けられているパスワードを入力します。

パスワードの確認

「パスワード」フィールドに入力したものと同じパスワードを入力します。

4.14 「UDDIレジストリの構成」ページ

このページでは、UDDIレジストリ・リソースを構成します。このページは、「新しいUDDIレジストリ・リソース」ウィザードおよびUDDI構成エディタに表示されます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「UDDI」(http://www.oracle.com/pls/as111170/lookup?id=OSBAG392)を参照してください。

表4-76 UDDIレジストリのオプション

オプション

説明

説明

レジストリの説明を入力します。

照会URL

サービスの検索とインポートで使用される照会APIエンドポイントのURLです。http://host:port/APPLICATION_SERVER_CONTEXT/uddi/inquiryの形式で照会URLを入力します。

パブリッシュURL

サービスのパブリッシュで使用されるパブリッシュAPIエンドポイントのURLです。http://host:port/APPLICATION_SERVER_CONTEXT/uddi/publishingの形式でパブリッシュURLを入力します。

セキュリティURL

レジストリへのパブリッシュを行うために必要な認証トークンの取得に使用される、セキュリティAPIエンドポイントのURLです。http://host:port/APPLICATION_SERVER_CONTEXT/uddi/securityの形式でセキュリティURLを入力します。

サブスクリプションURL

レジストリの変更へのサブスクリプション、レジストリのサブスクリプションの作成、インポート・サービスに変更がないかどうかのリスニングのために使用される、サブスクリプションAPIエンドポイントのURLです。次のフォーマットでサブスクリプションURLを入力します。

http://host:port/APPLICATION_SERVER_CONTEXT/uddi/subscription

インストーラのAPPLICATION_SERVER_CONTEXTのデフォルト値はregistryです。

ユーザー名

レジストリ・コンソールにログインする際のユーザー名を入力します。

パスワード(パスワードの確認)

レジストリ・コンソールにログインする際のパスワードを入力します。

検証

構成されたレジストリへの接続を作成できることを検証するには、「検証」をクリックします。

4.15 アウトライン・ビュー - Oracle Service Bus

このビューには、現在エディタ領域で開かれている構造化ファイルの階層ビュー(アウトライン)が表示されます。このビューの内容は、エディタに固有です。

Oracle Service Busで、プロキシ・サービス・エディタが起動しており、メッセージ・フロー・エディタが選択されている場合、アウトライン・ビューにはメッセージ・フローのノードとアクションが階層ビューとして表示されます。メッセージ・フロー・エディタが表示されている場合、サービスの階層ビューとサムネイル・ビューを切り替えることができます。

サムネイル・ビューでメッセージ・フロー全体がエディタに収まりきらない場合は、エディタに表示されているフローの部分を示す青いマスクがアウトライン・ビューに表示されます。フローの別の部分を表示するには、エディタに表示するフローの部分にマスクをドラッグします。

4.16 リソース管理

次を使用して、リソース管理を行います。

- 4.16.1項「「プリファレンス」ダイアログ - Oracle Service Bus - タイプの関連付けページ」

- 4.16.2項「参照ビュー」

- 4.16.3項「クローン・ターゲットの選択ダイアログ」

- 4.16.3項「クローン・ターゲットの選択ダイアログ」

4.16.1 「プリファレンス」ダイアログ - Oracle Service Bus - タイプの関連付けページ

このページでは、1つ以上のファイル拡張子をOracle Service Busリソース・タイプに関連付けます。

表4-77 タイプの関連付けのプロパティ

オプション

説明

リソース・タイプ

このペインには、使用できるすべてのOracle Service Busリソース・タイプが一覧表示されます。タイプを選択すると、そのタイプに関連付けられているファイル拡張子が表示されます。

4.16.2 参照ビュー

このページを使用して、リソースの依存関係を表示します。プロジェクト・エクスプローラとアクティブなエディタのどちらであっても、このビューでは、現在の選択内容が表示されます。

表4-78 参照の依存関係のプロパティ

オプション

説明

参照元

このプロジェクト/フォルダの中のリソース、またはこのリソースに依存するこのプロジェクト、フォルダ、またはリソースに対して外部のリソースのリストです。

参照

このプロジェクト/フォルダの中のリソース、またはこのリソースが依存するこのプロジェクト、フォルダ、またはリソースに対して外のリソースのリストです。

4.16.3 クローン・ターゲットの選択ダイアログ

このダイアログを使用して、新しいプロジェクトまたは別のプロジェクト内のフォルダとして、プロジェクトのクローンを作成する場所を指定します。

表4-79 プロジェクトのクローン作成のオプション

オプション

説明

名前

新しい(クローンとして作成する)プロジェクトの名前を入力します。

プロジェクトとして

または

場所内のフォルダとして

プロジェクトとしてを選択すると、別のプロジェクト(他のプロジェクトのピア)として、プロジェクトのクローンが作成されます。

場所内のフォルダとしてを選択すると、プロジェクト(およびその内容)が、プロジェクト内のフォルダに変換されます。このオプションを選択するときは、新しい場所も選択する必要があります。

4.16.4 リソースの選択ダイアログ

このダイアログを使用して、Oracle Service Busプラグインで作成またはOracle Service Busプラグインにインポートされている、コンテキストに適合するリソースを選択します。エディタまたはウィザードの「参照」をクリックすると、コンテキストに適した使用可能なリソースがこのダイアログに表示されます。ダイアログの名前は、「WSDLの選択」、「MFLの選択」、「XMLスキーマの選択」などのように、表示されるリソースのタイプによって異なります。ダイアログには、各リソースに含まれる項目の階層リストが表示される場合もあります。たとえば、「XMLスキーマの選択」ダイアログには、スキーマで定義されている要素とタイプが一覧表示されます。「WSDLの選択」ダイアログには、WSDLで定義されているポートとバインディングが表示されます。

場合によっては、「WSDLの選択」ダイアログなどでは消費ボタンをクリックすると、サービス消費ダイアログが開きます。このダイアログで、Oracle Enterprise Repository、ファイル・システム、UDDI、URI、ワークスペースなどのリソース・タイプからサービスを消費できます。

4.17 新しいサービス・キー・プロバイダ・リソース

サービス・キー・プロバイダ・リソースを作成した後に、このページを使用して構成します。

表4-80 新しいサービス・キー・プロバイダのオプション

オプション

説明

説明

サービス・キー・プロバイダの説明を入力します。

暗号化鍵

暗号化鍵を入力するには:

1. 「暗号化鍵」の横にある鍵チェック・ボックスを選択します。

2. 暗号化をサポートするX.509証明書にマップされたキー・エイリアスを入力するか、「参照」をクリックして、現在のレルムのPKI資格証明マッピングで使用中のキーストアからキー・エイリアスを表示します。

3. キーストアへのアクセスをセキュリティで保護するために使用するパスワードを入力します。(このパスワードはキーストアの作成時に設定します)。

このサービス・キー・プロバイダをプロキシ・サービスに関連付けると、Oracle Service BusによりX.509証明書がプロキシ・サービスのWSDLに組み込まれます。その後、プロキシ・サービスはこの証明書を使用してエンドポイントに送信するメッセージを暗号化します。プロキシ・サービスは、PKI資格証明情報に含まれる秘密鍵を使用して、エンドポイントから返されるメッセージを復号化します。

デジタル署名鍵

デジタル署名鍵を入力するには:

1. 「デジタル署名鍵」の横にある鍵チェック・ボックスを選択します。

2. キー・エイリアスを入力するか、「参照」をクリックして現在のレルムのPKI資格証明マッピングで使用中のキーストアからキー・エイリアスを表示します。

3. キーストアへのアクセスをセキュリティで保護するために使用するパスワードを入力します。(このパスワードはキーストアの作成時に設定します)。

SSLクライアント認証キー

SSLクライアント認証キーを入力するには:

1. 「SSLクライアント認証キー」の横にある鍵チェック・ボックスを選択します。

2. キー・エイリアスを入力するか、「参照」をクリックして現在のレルムのPKI資格証明マッピングで使用中のキーストアからキー・エイリアスを表示します。

3. キーストアへのアクセスをセキュリティで保護するために使用するパスワードを入力します。(このパスワードはキーストアの作成時に設定します)。

4.18 新しいWS-Policy

Web Services Policy Framework (WS-Policy)は、XMLベースの拡張フレームワークです。Webサービスの構成にドメイン固有のセキュリティ・アサーションを拡張し、Webサービスのセキュリティ要件、期待される条件、および機能を指定します。Oracle Service BusにおけるWS-Policyの主な使用方法の1つとして、プロキシ・サービスおよびビジネス・サービスでの、メッセージ・レベル・セキュリティの構成があります。

このページでは、新しいWS-Policyリソースの名前と場所を選択します。

表4-81 新しいWS-Policyのオプション

オプション

説明

親フォルダを入力または選択してください

新しいWS-Policyリソースを配置するプロジェクトまたはフォルダの名前を入力または選択します。

ファイル名

このWS-Policyの名前を入力します。

4.19 サービス・アカウント

次を使用して、サービス・アカウントの操作を行います。

- 4.19.1項「新しいサービス・アカウント・リソース」

- 4.19.2項「サービス・アカウント・エディタ - 「全般的な構成」ページ」

- 4.19.3項「サービス・アカウント・エディタ - 「静的ユーザー構成」ページ」

- 4.19.4項「サービス・アカウント・エディタ - 「ユーザー・マッピング構成」ページ」

4.19.1 新しいサービス・アカウント・リソース

サービス・アカウント・リソースを作成したら、サービス・アカウント・リソース・エディタを使用してサービス・アカウント・リソースを構成します。

表4-82 新しいサービス・アカウントのオプション

オプション

説明

説明

サービス・アカウントの説明を入力します。

リソース・タイプ

- 受信クライアント・リクエストで受け取ったユーザー名およびパスワードを提供するサービス・アカウントを作成するには、「パス・スルー」を選択し、「終了」をクリックします。

- サービス・アカウントの構成で保存するユーザー名およびパスワードを提供するサービス・アカウントを作成するには、「静的」を選択します。4.19.3項「サービス・アカウント・エディタ - 「静的ユーザー構成」ページ」の説明に従って作業を続けます。

- 1つまたは複数の認証されたクライアントから、指定するユーザー名およびパスワードにユーザー名をマップするサービス・アカウントを作成するには、「マッピング」を選択します。4.19.4項「サービス・アカウント・エディタ - 「ユーザー・マッピング構成」ページ」の説明に従って作業を続けます。

4.19.2 サービス・アカウント・エディタ - 「全般的な構成」ページ

このページを使用して、次の表に示すように、サービス・アカウント・リソースを構成します。

表4-83 サービス・アカウントの全般的なオプション

オプション

説明

説明

サービス・アカウントの説明を入力します。

リソース・タイプ

リソースの種類をそのままにするか、または別の種類を選択します。

- 「パス・スルー」タイプは、受信クライアント・リクエストで受け取ったユーザー名およびパスワードを提供します。

- 「静的」タイプは、サービス・アカウントの構成で保存するユーザー名およびパスワードを提供します。このタイプは、サービス・アカウント・エディタ - 「静的ユーザー構成」ページで構成します。

- 「マッピング」タイプは、1つまたは複数の認証されたクライアントから、指定するユーザー名およびパスワードにユーザー名をマップします。このタイプは、サービス・アカウント・エディタ - 「ユーザー・マッピング構成」ページで構成します。

4.19.3 サービス・アカウント・エディタ - 「静的ユーザー構成」ページ

このページを使用して、サービス・アカウントの構成にユーザー名とパスワードを保存します。サービス・アカウントはこのユーザー名とパスワードをアウトバウンド・リクエストでエンコードします。

表4-84 サービス・アカウントの静的ユーザーのオプション

オプション

説明

ユーザー名

このサービス・アカウントのユーザー名を入力します。

パスワード

ユーザー名に関連付けられているパスワードを入力します。

パスワードの確認

「パスワード」フィールドに入力したものと同じパスワードを入力します。

4.19.4 サービス・アカウント・エディタ - 「ユーザー・マッピング構成」ページ

このページを使用して、1つ以上のクライアントから指定するユーザー名およびパスワードにユーザー名をマップするサービス・アカウントを作成します。

表4-85 サービス・アカウントのユーザー・マッピングのオプション

オプション

説明

リモート・ユーザー

「リモート・ユーザー名」および「リモート・パスワード」フィールドに、アウトバウンド・リクエストで送信するユーザー名とパスワードを入力します。

(オプション)リモート・ユーザー表で、他のリモート・ユーザーを追加します。

ローカル・ユーザー・マッピング

「承認された」クライアントをリモートのユーザー名およびパスワードにマップするには、「ローカル・ユーザー名」フィールドに、インバウンド・リクエストで認証されたクライアントを識別する名前を入力します。

このユーザーをOracle Service Bus管理コンソールの「セキュリティ構成」モジュールに追加していない場合は、このマッピングを実行時環境で使用する前にユーザーを追加します。Oracle Service Busでは、存在しないローカル・ユーザーのマッピングを作成することができますが、このマッピングは認証されたユーザーに一致しないため使用されません。

「リモート・ユーザー名」リストから、「ローカル・ユーザー名」フィールドで指定した認証ユーザーに関するアウトバウンド・リクエストで送信するユーザー名を選択します。

匿名リクエストのマッピング

匿名のクライアントをリモートのユーザー名にマップするには、「匿名リクエストのマッピング」チェック・ボックスを選択します。

「リモート・ユーザーの選択」リストから、すべての匿名ユーザーに関するアウトバウンド・リクエストで送信するユーザー名を選択します。

4.20 式エディタ

次のエディタを使用して、サービスに使用する式を記述します。

- 4.20.1項「XQuery/XSLT式エディタ」

- 4.20.2項「XPath式エディタ」

- 4.20.3項「条件エディタ」

4.20.1 XQuery/XSLT式エディタ

「XQuery/XSLT式エディタ」ページでは、変数の構造の作成、ユーザーのネームスペースの定義、事前定義されたメッセージ・コンテキスト変数を使用したインラインXQuery式の作成、インラインXQuery式の手動での作成、およびインラインXQueryとして実行するXQueryまたはXSLTリソースの選択を行うことができます。

XQuery/XSLT式エディタには2つのパネルが含まれており、各パネルには3つのタブが用意されています。

左側のパネルを使用して、式の記述または作成を行います。パネルには、次のページ(タブ)が用意されています。

- 4.20.5項「「式」ページ」

- 4.20.6項「「XQueryリソース」ページ」

- 4.20.7項「XSLTリソース・ページ」

- 4.20.8項「「動的XQuery」ページ」

右側のパネルのタブを使用して、XQueryまたはXSLTの作成に使用できる変数、ネームスペース、およびXQuery関数を管理します。パネルには、次のページ(タブ)が用意されています。

- 4.20.9項「「変数の構造」ページ」

- 4.20.10項「「ネームスペース定義」ページ」

- 4.20.11項「「XQuery関数」ページ」

4.20.2 XPath式エディタ

XPath式エディタを使用して、XPath式を作成します。作成したXPath式は、その後、エディタを起動した場所に挿入されます。

XPath式エディタには、次のページが含まれます。

- 4.20.5項「「式」ページ」

- 4.20.9項「「変数の構造」ページ」

- 4.20.10項「「ネームスペース定義」ページ」

- 4.20.11項「「XQuery関数」ページ」

有効なXPath式を作成するには、「式」テキスト・フィールドに式を直接記述するか、「変数の構造」ページから変数をドラッグして「XQuery関数」ページからXQuery関数をドラッグできます。

式の作成が終了したら、「テスト」をクリックして、実行中のサーバーで式をテストできます。または、「OK」をクリックして、テストを行わずに式を挿入することもできます。

4.20.3 条件エディタ

条件エディタを使用して、インラインXQuery条件を作成します。

左側のパネルを使用して、条件の記述または作成を行います。パネルには、次に説明する各タブがあります。

- 4.20.5項「「式」ページ」

- 4.20.4項「「条件ビルダー」ページ」

右側のパネルのタブを使用して、条件の作成に使用できる変数、ネームスペース、およびXQuery関数を管理します。パネルには、次のタブがあります。これらのタブは、XQuery/XSLT式エディタの右側のパネルにあるタブと同じです。次のリンクは、XQuery/XSLT式エディタにあるこれらのタブについてヘルプを表示します。

- 4.20.9項「「変数の構造」ページ」

- 4.20.10項「「ネームスペース定義」ページ」

- 4.20.11項「「XQuery関数」ページ」

4.20.4 「条件ビルダー」ページ

「条件ビルダー」ページを使用して、インライン条件を作成します。このページは、条件エディタにのみ表示されます。

「条件ビルダー」で次のように式を作成します。

1. 比較式を作成するには「比較式」を選択します。または、単項式を作成するには「単項式」を選択します。

2. 「比較式」を選択した場合は、次の手順を実行します。

1. 「オペランド」フィールドに、値と比較するオペランドの名前を入力します。または、右側の「変数の構造」タブから「オペランド」フィールドに項目をドラッグします。

2. 「値」フィールドにそのオペランドの比較対象の値を入力します。または、右側の「変数の構造」タブから「値」フィールドに項目をドラッグします。

3. 「演算子」リストから比較演算子を選択します。

4. ステップ4に進みます。

3. 「単項式」を選択した場合は、次の手順を実行します。

1. 「NOT」チェック・ボックスを選択または選択解除して、式をtrueとして評価するか、trueではないとして評価するかを指定します(これにより、式をnot()で囲む必要があるかどうかを指定することになります)。

2. テキスト・フィールドに式を入力するか、または右側にある「変数の構造」タブから項目をドラッグして式を作成します。

4. 次のいずれかの操作を行います。

- 新しい文を「条件式」フィールドの式に追加するには、「追加」をクリックします。

- 文を変更するには、「条件式」フィールドでその文を選択してから、「更新」をクリックします。

5. 「テスト」をクリックして実行中のサーバーで式をテストするか、または「OK」をクリックして条件をメッセージ・フローに挿入します。

4.20.5 「式」ページ

このページは、XQuery/XSLT式エディタ、XPath式エディタおよび条件エディタに表示されます。

「式」ページには、式を作成できるテキスト・フィールドがあります。作成するには、フィールドに直接入力するか、またはエディタの右側にある「変数の構造」ページか「XQuery関数」ページから項目をドラッグします。

Oracle Service Busドメインの実行中のサーバーで式をテストするには、「テスト」クリックします。WebLogic ServerはOracle Service Busと共にパッケージ化されています。そのため、Oracle Service Busのインストールに含まれている組込みサーバーをテストの目的に使用できます。

4.20.6 「XQueryリソース」ページ

このページは、XQuery/XSLT式エディタにのみ表示されます。

プロキシ・サービスのメッセージ・フローでは、メッセージ・コンテキスト変数へのXQuery式の割り当て、XQuery式のブール結果に基づくif-then-elseアクションの割り当て、XPath式に対して相対的に指定した位置へのXQuery式の結果の挿入、コンテキスト変数のXQuery式を使用したログ用のメッセージ・コンテキストの指定などを実行できます。

「XQueryリソース」ページを使用して、XQueryトランスフォーメーションを構成し、プロキシ・サービスのメッセージ・フローで実行されるようにします。

表4-86 XQueryリソースのオプション

フィールド

説明

XQuery

実行されるXQueryリソースです。Oracle Service Busに登録されているXQueryリソースを検索して開くには、「参照」をクリックします。

変数のバインド

リソースを選択すると、トランスフォーメーションの各入力パラメータが表示されます。各ラベルはパラメータ名に相当し、各テキスト・ボックスはそのパラメータにマッピングされるXQuery式を定義するためのものです。マッピングはパラメータごとに定義する必要があります。式を直接入力するか、または右側のパネルから変数および構造をドラッグします。

4.20.7 「XSLTリソース」ページ

このページは、XQuery/XSLT式エディタにのみ表示されます。

「XSLTリソース」タブを使用して、XSLTトランスフォーメーションを構成し、プロキシ・サービスのメッセージ・フローで実行されるようにします。

表4-87 XSLTリソースのオプション

フィールド

説明

XSLT

実行するXSLTリソースです。Oracle Service Busに登録されたリソースを検索して開くには、「参照」をクリックします。

入力ドキュメント

トランスフォーメーションに対する入力ドキュメントのXQuery式です。たとえば、$bodyです。

変数のバインド

ラベルとそれに対応するテキスト・ボックスがトランスフォーメーションの入力パラメータごとに表示されます。各ラベルはパラメータ名に相当し、各テキスト・ボックスはそのパラメータにバインドされるXQuery式を定義するためのものです。バインドはパラメータごとに定義する必要があります。たとえば、XSLトランスフォーメーションにoneおよびtwoという入力パラメータがある場合、「変数名」フィールドには、「one」および「two」というラベルと、ラベルごとにXQuery式を入力するテキスト・ボックスが表示されます。

式を直接入力するか、または右側のパネルから変数および構造をドラッグします。

次のXQuery式は、このフィールドの有効な入力例です。

$body/*[1]
$body/po:PurchaseOrder

注意: 次の変数名はこのフィールドでは無効な入力となり、例外が発生します。

body

4.20.8 「動的XQuery」ページ

このページは、XQuery/XSLT式エディタにのみ表示されます。

事前登録されたXQueryリソースの名前に実行時に評価する動的XQuery式を指定することができます。Oracle Service Busは、要求されたトランスフォーメーションを作成するメッセージ・コンテキストに対して、省略可能な変数バインドでこのXQueryリソースを実行します。

「XQueryリソース」ページを使用して、プロキシ・サービスのメッセージ・フローで実行される動的XQueryトランスフォーメーションを構成します。

表4-88 動的XQueryのオプション

フィールド

説明

式

事前登録されたXQueryリソースの名前で、実行時に評価される動的XQuery式

XQueryリソース(リソースの完全な名前を表す)の構文は次のとおりです。

Project/folder1/folder2/XQueryResourceName

XQueryテンプレートの選択

問合せの形式のためのテンプレートとして機能するリソース(変数の番号と名前)。「参照」をクリックし、既存の登録されているリソースを選択します。テンプレートを選択した後、変数が「変数のバインド」領域に表示されます。テンプレートは構成で保持されることはありません。かわりに、テンプレートは、問合せに変数を指定するのに役立つクイック・スタートとして機能します。

カスタム変数の追加

トランスフォーメーションの入力パラメータ。「カスタム変数の追加」フィールドに変数名を入力して、「追加」をクリックします。

変数のバインド

カスタム変数を追加すると、それが「変数のバインド」領域に表示されます。同様に、XQueryテンプレートを選択すると、 トランスフォーメーションの各入力パラメータが表示されます。各ラベルはパラメータ名に相当し、各テキスト・ボックスはそのパラメータにマッピングされるXQuery式を定義するためのものです。マッピングはパラメータごとに定義する必要があります。式を直接入力するか、または右側のパネルから変数および構造をドラッグします。

4.20.9 「変数の構造」ページ

このページは、XQuery/XSLT式エディタ、XPath式エディタおよび条件エディタに表示されます。

「変数の構造」ページは、変数とそのコンテンツをツリーで表示します。これには、組込みのメッセージ・コンテキスト変数attachments、body、header、outboundおよびinboundに加えて、ユーザー定義変数が含まれています。faultは、式のコンテキストが該当する場合に含まれます(つまり、エラー・ハンドラ内に)。outbound変数は、すべてのコンテキストで有効ではない場合も必ず表示されます。outboundが無効なコンテキストで使用されると、検証時に報告されます。

変数の構造のマッピングでは、各エントリはラベルを持ち、変数または変数パスを1つまたは複数の構造にマップします。これらのマッピングのスコープは、ステージまたはルート・ノードです。

このページから項目をエディタの「式」ページにドラッグして、現在の式に挿入することができます。項目は、XPath式として挿入されます。

新しい変数を定義し、それを変数の構造ツリーに追加するには、「追加」をクリックして変数の構造の追加ダイアログを開きます。

4.20.10 「ネームスペース定義」ページ

このページは、XQuery/XSLT式エディタ、XPath式エディタおよび条件エディタに表示されます。

「ネームスペース定義」ページには、Oracle Service Busのデフォルト・ネームスペース、変数のネームスペース、およびユーザー定義ネームスペースが表示されます。新しいネームスペースを定義するには、「追加」をクリックします。定義されたネームスペースはユーザー定義ネームスペースのリストに追加されます。ユーザー定義ネームスペースを変更するには、リストから対象のネームスペースを選択して「編集」をクリックします。

4.20.11 「XQuery関数」ページ

このページは、XQuery/XSLT式エディタ、XPath式エディタおよび条件エディタに表示されます。

「XQuery関数」ページには、標準のXQuery関数のセットが表示されます。リストは、アルファベット順にタイプごとに整理されています。このページから関数をエディタの4.20.5項「「式」ページ」にドラッグして、現在の式に挿入することができます。関数を式に挿入するときは、指定の必要なパラメータの値にプレースホルダーが使用されます。

4.20.12 変数の構造の追加ダイアログ

このダイアログを使用して変数を定義し、それを式エディタの「変数の構造」ページで変数の構造ツリーに追加します。

設計の目的で変数の構造を定義するために、このダイアログで変数の構造を作成します。たとえば、XPath変数のXMLスキーマを確認するよりも、構造ビューでXPath変数を参照する方が容易です。変数の構造では、変数は作成されません。変数は、ステージでの割当てアクションの対象として実行時に作成されます。

次に基づいて、独自の変数の構造を宣言することができます。

- XMLタイプ(次のものを含みます)

- スキーマ要素

- WSDL要素

- スキーマ・タイプ

- WSDLタイプ

- MFL

- サービス・インタフェース

- 単純な型(文字列または任意のXML)

この機能は、すべてのユーザー定義変数と$inbound、$outboundおよび$faultに対して直接使用できます。ただし、この機能を使用して$attachmentsのXML添付ファイル、$headerのヘッダーまたは$bodyのドキュメントとRPCパラメータに直接アクセスすることはできません。例外として、WSDLプロキシ・サービスによって受信されたリクエスト・メッセージの$bodyのドキュメントとパラメータには直接アクセスできます。

変数の構造をXMLの型、MFL、またはサービス・インタフェースに基づいて作成する場合、ページ上部にあるフィールドに次の情報を入力する必要があります。

表4-89 変数の構造のオプション

オプション

説明

構造ラベル

作成する変数の表示名です。この表示名を使用すると、実行時には影響を及ぼさず設計時に構造を認識できるように、構造に意味のある名前を付けることができます。

構造パス

実行時の変数の構造のパスです。

4.21 新しいXSLトランスフォーメーション

トランスフォーメーション・マップは、2つのデータ型の間のマッピングを記述したものです。eXtensible Stylesheet Language Transformation (XSLT)マップでは、XMLからXMLへのマッピングを記述します。

このページでは、新しいXSLトランスフォーメーションの名前と場所を選択します。このウィザードを使用して、XSLTの骨組みを作成します。XSLTエディタで詳細を追加します。

表4-90 新しいXSLトランスフォーメーションのオプション

オプション

説明

親フォルダを入力または選択してください

新しいXSLトランスフォーメーションを配置するプロジェクトまたはフォルダの名前を入力または選択します。

ファイル名

この新しいXSLトランスフォーメーションの名前を入力します。

4.22 分割-結合ユーザー・インタフェース・リファレンス

次のセクションでは、Oracle Service Busでの分割-結合の作成および構成に関わるフィールドとユーザー・インタフェース・コンポーネントについて説明します。

- 4.22.1項「分割-結合デザイン・パレット」

- 4.22.2項「グローバル/開始ノードのプロパティ」

- 4.22.3項「変数のプロパティ」

- 4.22.4項「エラー・ハンドラのプロパティ」

- 4.22.5項「サービスの呼出しのプロパティ」

- 4.22.6項「返信のプロパティ」

- 4.22.7項「For Eachのプロパティ」

- 4.22.8項「Ifのプロパティ」

- 4.22.9項「IfとElse Ifのプロパティ」

- 4.22.10項「パラレルのプロパティ」

- 4.22.11項「エラーの生成のプロパティ」

- 4.22.12項「Repeat Untilのプロパティ」

- 4.22.13項「エラーの再生成のプロパティ」

- 4.22.14項「スコープのプロパティ」

- 4.22.15項「Whileのプロパティ」

- 4.22.16項「待機のプロパティ」

- 4.22.17項「割当てのプロパティ」

- 4.22.18項「コピーのプロパティ」

- 4.22.19項「削除のプロパティ」

- 4.22.20項「挿入のプロパティ」

- 4.22.21項「Javaコールアウトのプロパティ」

- 4.22.22項「ログのプロパティ」

- 4.22.23項「置換のプロパティ」

- 4.22.24項「受信のプロパティ」

- 4.22.25項「カウンタ変数ダイアログ」

- 4.22.26項「変数の作成/編集ダイアログ」

- 4.22.27項「メッセージ変数の作成ダイアログ」

- 4.22.28項「サービス・ブラウザ」

- 4.22.29項「SOAPフォルト変数ダイアログ」

- 4.22.30項「WSDLブラウザ」

- 4.22.31項「分割-結合ウィザード - 新しい分割-結合」

- 4.22.32項「分割-結合ウィザード - 操作の指定」

4.22.1 分割-結合デザイン・パレット

分割-結合デザイン・パレットは、分割-結合を構成するために使用できるすべての操作を示します。分割-結合にコントロールを挿入するには、アイコンをパレットから分割-結合エディタにドラッグします。エディタに項目をドラッグすると、ドラッグしてきた項目をエディタ内の位置にドロップできることを示す1つまたは複数のターゲット・アイコンが表示されます。項目をこのようなターゲット・アイコンにドラッグすると、アイコンが強調表示され、そこに項目をドロップできることがわかります。

4.22.1.1 操作

分割-結合デザインのパレットは、次のカテゴリに分類されます。

- 通信

- フロー制御

- 割当て操作

次の表では、分割-結合に追加できる操作について説明します。

表4-91 分割-結合の通信操作

操作

説明

サービスの呼出し

サービスを呼び出す操作は、WSDLベース、非トランスポート型ビジネス・サービス、WSDLベースのプロキシ・サービス、または分割-結合を呼び出します。

構成のプロパティは、4.22.5項「サービスの呼出しのプロパティ」を参照してください。

返信

返信コントロールは、レスポンスまたはフォルトをOracle Service Busメッセージ・フローに返送します。

構成のプロパティは、4.22.6項「返信のプロパティ」を参照してください。

表4-92 分割-結合のフロー制御操作

操作

説明

For Each

For Eachは、スコープ内で構成されているロジックを指定回数だけ実行します。

構成のプロパティは、4.22.7項「For Eachのプロパティ」を参照してください。

If

Ifコントロールは、分割-結合内で条件動作を提供します。

構成のプロパティは、4.22.8項「Ifのプロパティ」を参照してください。

パラレル

パラレル・コントロールは、固定数の構成済パラレル・ブランチを作成します。

構成のプロパティは、4.22.10項「パラレルのプロパティ」を参照してください。

エラーの生成

「エラーの生成」は、分割-結合の通常の処理を停止させるエラーを発生させます。エラー・ハンドラを使用せずにエラーが処理されると、分割-結合は終了し、Oracle Service Busメッセージ・フローにエラーが送信されます。

構成のプロパティは、4.22.11項「エラーの生成のプロパティ」を参照してください。

Repeat Until

Repeat Untilによって、分割-結合で条件がtrueに評価されるまで操作を繰り返すことができます。各ループが終了した後で、条件が評価されます。

構成のプロパティは、4.22.12項「Repeat Untilのプロパティ」を参照してください。

エラーの再生成

エラーを再発生させる操作は、エラー・ハンドラ・キャッチまたはCatchAllによって捕捉されたエラーを再発生することができます。

構成のプロパティは、4.22.13項「エラーの再生成のプロパティ」を参照してください。

スコープ

スコープは、それに含まれる操作の動きに影響を与えるコンテキストを作成します。

構成のプロパティは、4.22.14項「スコープのプロパティ」を参照してください。

While

Whileによって、分割-結合で条件がfalseに評価されるまで操作を繰り返すことができます。各ループが始まる前に、条件が評価されます。

構成のプロパティは、4.22.15項「Whileのプロパティ」を参照してください。

表4-93 分割-結合の割当て操作

操作

説明

割当て

XQuery式の結果を変数に割り当てることができます。

構成のプロパティは、4.22.17.1項「割当て操作のプロパティ」を参照してください。

コピー

XPath式で指定された情報を、ソース・ドキュメントから、宛先ドキュメントにコピーできます。

構成のプロパティは、4.22.18項「コピーのプロパティ」を参照してください。

削除

XPath式で指定されたノードのセットを削除できます。

構成のプロパティは、4.22.19項「削除のプロパティ」を参照してください。

挿入

XPath式で選択したノードを基準として特定された場所にXQuery式の結果を挿入できます。

構成のプロパティは、4.22.20項「挿入のプロパティ」を参照してください。

Javaコールアウト

検証、トランスフォーメーション、およびロギングなどのJavaで処理するカスタム・アクションのための分割-結合から静的Javaメソッドを呼び出すことができます。

構成のプロパティは、4.22.21項「Javaコールアウトのプロパティ」を参照してください。

ログ

管理者が適切なアクションを行うことができるように、指定された重大度でデータを記録します。

構成のプロパティは、4.22.22項「ログのプロパティ」を参照してください。

置換

XPath式で指定されたノードまたはノードのコンテンツを置き換えることができます。

構成のプロパティは、4.22.23項「置換のプロパティ」を参照してください。

操作には、ノードのラベル変更やコメント指定を行う全般プロパティ・タブがあります。

4.22.2 グローバル/開始ノードのプロパティ

分割-結合の開始ノードは、そのグローバル・プロパティを指定します。これらのプロパティの間で、グローバル変数および関連付けられた外部サービスを左向き矢印を展開して確認および構成できます。グローバル・エラー・ハンドラは、右側の矢印を展開して確認および構成できます。

選択した分割-結合のグローバル・プロパティを確認および構成するには、「プロパティ」ビューを使用します。

このページには、次の2つのタブがあります。

- インポート

- 全般

「インポート」タブには、次のオプションがあります。

表4-94 分割-結合の開始ノードのオプション - 「インポート」タブ

オプション

説明

WSDLのimport

分割-結合で使用されるWSDLインポートを表示します。

一覧からWSDLを選択し、右クリックして削除します。

スキーマのimport

分割-結合で使用されるスキーマ・インポートを表示します。

一覧からスキーマを選択し、右クリックして削除します。

「全般」タブには次のオプションがあります。

表4-95 分割-結合の開始ノードのオプション - 「全般」タブ

オプション

説明

ラベル

プロセス・ノードを定義するファイルのラベルを入力します。

ドキュメント

説明やコメントを入力します。

4.22.3変数のプロパティ

選択した分割-結合にある変数を確認および構成するには、「プロパティ」ビューを使用します。

表4-96 分割-結合の変数のオプション

オプション

説明

(ツリー)

変数の型の階層構造を表します。

編集

変数の作成/編集ダイアログを表示するためにクリックします。ここで、変数の名前およびタイプを変更することができます。

4.22.4 エラー・ハンドラのプロパティ

エラー・ハンドラは、分割-結合で発生したすべてのエラーを受信して処理します。

エラー・ハンドラは、キャッチおよびCatchAll操作を追加することができます。

分割-結合で選択したエラー・ハンドラを確認および構成するには、「プロパティ」ビューを使用します。

「キャッチ」タブには、次のオプションがあります。

表4-97 分割-結合のエラー・ハンドラのオプション - 「キャッチ」タブ

オプション

説明

SOAPフォルト変数名

SOAP (1.1または1.2)フォルトを格納する変数を定義します。呼び出された外部サービスから受信したSOAPフォルトによりエラー・ハンドラが実行された場合、受信したSOAPフォルトはこの変数に格納されます。

フォルト名-フォルトの定義

カスタム、ローカルなフォルトを定義できます。

ネームスペースおよびフォルト名を入力するには、フォルトの定義をクリックします。

フォルト名-事前定義済

既存のWSDL、アプリケーションや標準のフォルトを選択することができます。

既存のフォルトを選択するには、フォルトの選択をクリックします。

catchAllタブには次のオプションがあります。

表4-98 分割-結合のエラー・ハンドラのオプション - CatchAllタブ

オプション

説明

SOAPフォルト変数名

SOAP (1.1または1.2)フォルトを格納する変数を定義します。呼び出された外部サービスから受信したSOAPフォルトによりエラー・ハンドラが実行された場合、受信したSOAPフォルトはこの変数に格納されます。

4.22.5 サービスの呼出しのプロパティ

サービスを呼び出す操作は、WSDLベース、非トランスポート型ビジネス・サービス、WSDLベースのプロキシ・サービス、または他の分割-結合を呼び出します。

分割-結合で選択した「サービスを呼び出す」を確認および構成するには、「プロパティ」ビューを使用します。

「操作」タブには、次のオプションがあります。

表4-99 分割-結合の呼出しサービスのオプション - 「操作」タブ

オプション

説明

操作

サービスによって呼び出される操作です。

「参照」 をクリックして、呼び出す操作を選択します。

操作を選択すると、分割-結合エディタの外部サービスを指す青い破線が表示されます。

サービスの場所

呼び出されるサービスの場所です。

サービス・ファイルを開くために場所のパスをクリックします。

QoS

トランザクション・サポートを制御するサービス品質オプションです。次のいずれか1つを選択します:

- 「ベスト・エフォート」 - 操作は既存のトランザクションのコンテキストで実行しません。

- 「必ず1回」 - 操作は既存のトランザクションのコンテキストで実行します。

「入力変数」タブには、次のオプションがあります。

表4-100 分割-結合の呼出しサービスのオプション - 入力変数タブ

オプション

説明

メッセージ変数

操作の入力メッセージ・タイプとタイプが一致するメッセージ・タイプ変数のリストです。

新しいメッセージ変数を定義するには、メッセージ変数の作成を選択します。

注意: 操作の入力メッセージ・タイプとタイプが一致するメッセージ・タイプ変数が存在しない場合は、必要なタイプを持つメッセージ・タイプ変数を定義する必要があります。

メッセージ・タイプ・ネームスペース

操作の入力メッセージ・タイプのネームスペースです。

メッセージ・タイプ

操作の入力メッセージ・タイプです。

「出力変数」タブには、次のオプションがあります。

表4-101 分割-結合の呼出しサービスのオプション - 出力変数タブ

オプション

説明

メッセージ変数

操作の出力メッセージ・タイプとタイプが一致するメッセージ・タイプ変数のリストです。

新しいメッセージ変数を定義するには、メッセージ変数の作成を選択します。

注意: 操作の出力メッセージ・タイプとタイプが一致するメッセージ・タイプ変数が存在しない場合は、必要なタイプを持つメッセージ・タイプ変数を定義する必要があります。

メッセージ・タイプ・ネームスペース

操作の出力メッセージ・タイプのネームスペースです。

メッセージ・タイプ

操作の出力メッセージ・タイプです。

4.22.5.1 別の分割-結合の呼出し

分割-結合は、同じOracle Service Bus構成に別の分割-結合を呼び出します。この機能により、サービス設計において、より高い柔軟性が実現し、複雑な分割-結合を複数の分割-結合に分割し、分割-結合機能のコンポーネント化および再利用が可能になります。分割-結合間にデータのマーシャリングやアンマーシャリングはないので、パフォーマンスは保持できます。

循環的な分割-結合参照を作成しないようにする必要があります。Oracle Service Busは循環的な参照をチェックしません。

4.22.6 返信のプロパティ

返信コントロールは、レスポンスまたはフォルトをOracle Service Busメッセージ・フローに返送します。

分割-結合で選択した返信を確認および構成するには、「プロパティ」ビューを使用します。

「操作」タブには、次のオプションがあります。

表4-102 分割-結合の返信のオプション - 「操作」タブ

オプション

説明

操作

返信によって呼び出される操作です。

「変数」タブには、次のオプションがあります。

表4-103 分割-結合の返信のオプション - 「変数」タブ

レスポンスのオプション

説明

メッセージ変数

操作の出力メッセージ・タイプとタイプが一致するメッセージ変数のリストです。

新しいメッセージ変数を定義するには、メッセージ変数の作成を選択します。

注意: 操作の出力メッセージ・タイプとタイプが一致するメッセージ・タイプ変数が存在しない場合は、必要なタイプを持つメッセージ・タイプ変数を定義する必要があります。

メッセージ・タイプ・ネームスペース

操作の出力メッセージ・タイプのネームスペースです。

メッセージ・タイプ

操作の出力メッセージ・タイプです。

WSDLフォルト/SOAPフォルトの選択

フォルトの返信が、WSDLの操作で定義されているフォルト・メッセージか、または、明示的なSOAPフォルト・メッセージかを決定します。

WSDLフォルト名

WSDLの操作で定義されているフォルトのリストからフォルト名を選択します。

メッセージ変数

操作の出力メッセージ・タイプとタイプが一致するメッセージ変数のリストです。

新しいメッセージ変数を定義するには、メッセージ変数の作成を選択します。

注意: 操作の出力メッセージ・タイプとタイプが一致するメッセージ・タイプ変数が存在しない場合は、必要なタイプを持つメッセージ・タイプ変数を定義する必要があります。

メッセージ・タイプ・ネームスペース

操作の出力メッセージ・タイプのネームスペースです。

メッセージ・タイプ

操作の出力メッセージ・タイプです。

SOAPフォルト

SOAPフォルトを選択します。

4.22.29項「SOAPフォルト変数ダイアログ」を参照してください。

SOAPフォルトの伝播

エラー・ハンドラで定義されたSOAPフォルト変数にあるSOAPフォルトを伝播します。

4.22.4項「エラー・ハンドラのプロパティ」を参照してください。

返信には、フォルトを発生させずにフローのインスタンスを終了する暗黙的「終了」操作が自動的に含まれています。「終了」操作は、開発環境には表示されません。

4.22.7 For Eachのプロパティ

For Eachは、スコープ内で構成されているロジックを指定回数だけ実行します。

分割-結合で選択した「For Each」を確認および構成するには、「プロパティ」ビューを使用します。

「カウンタ変数」タブには、次のオプションがあります。

表4-104 分割-結合のFor Eachのオプション - カウンタ変数タブ

オプション

説明

パラレル

次のいずれかのオプションを選択します。

- 「はい」を選択すると、For Eachのそれぞれの反復が並行して実行されます。

- 「いいえ」を選択すると、For Eachのそれぞれの反復が順次実行されます。

カウンタ変数名

For Eachのスコープ内で、暗黙的な変数を定義します。For Eachのそれぞれの反復には、この変数の単独のインスタンスが含まれます。つまり、たとえば、最初の反復の値が開始カウンタ値に設定され、2つ目の反復が開始カウンタ値+1に設定されるといった具合に、すべてのインスタンスが、反復数に設定されます。

開始カウンタ値

For Eachの最初の反復のカウンタ変数の値です。XPath式の結果として決定されます。結果は1以上である必要があります(開始カウンタ値に0は使用できません)。

「参照」ボタンをクリックすると、式ビルダーが起動します。式は最初の開始カウント値に対して整数値を生成する必要があります。

最終カウンタ値

For Eachの最後の反復のカウンタ変数の値です。XPath式の結果として決定されます。結果は1以上である必要があります(最終カウンタ値に0は使用できません)。

「参照」ボタンをクリックすると、式ビルダーが起動します。式は最終カウント値に対して整数値を生成する必要があります。

「完了条件」タブには、次のオプションがあります。

表4-105 分割-結合のFor Eachのオプション - 完了条件

オプション

説明

完了したブランチの数

ブランチの作成がいつ停止するかを示す省略可能な式。分割-結合にあるコンテキストに応じて、式は子の実行を回避するか、子の早期終了を強制します。

「参照」ボタンをクリックすると、式ビルダーが起動します。

成功ブランチのみ?

完了条件が満たされるかどうかを判断する際に正常に終了したブランチのみをカウントする場合、このオプションを選択します。

4.22.8 Ifのプロパティ

Ifノードには、If、Else IfおよびElse操作が含まれます。4.22.9項「IfとElse Ifのプロパティ」を参照してください。

分割-結合で選択したIfを確認および構成するには、「プロパティ」ビューを使用します。

4.22.9 IfとElse Ifのプロパティ

IfとElse Ifの操作は、分割-結合内で条件動作を提供します。

分割-結合で選択したIfまたはElse Ifを確認および構成するには、「プロパティ」ビューを使用します。

IfとElse Ifには、次のオプションがあります。

表4-106 分割-結合のIfとElse Ifのオプション

オプション

説明

条件

trueまたはfalseに評価されるXPath式を定義します。条件がtrueに評価されると、関連するIfまたはElse Ifブランチが実行されます。

「参照」アイコンをクリックすると、式ビルダーが起動されます。

4.22.10 パラレルのプロパティ

パラレルによって、固定数のメッセージ・リクエストを処理する静的分割-結合を作成することができます。パラレルには、1つまたは複数のスコープ・ブランチがあります。

分割-結合で選択したパラレルを確認および構成するには、「プロパティ」ビューを使用します。

4.22.11 エラーの生成のプロパティ

エラーの発生によってエラー条件が確立し、プロセスの実行が停止します。

分割-結合で選択した「エラーの生成」を確認および構成するには、「プロパティ」ビューを使用します。

「エラーの生成」タブには、次のオプションが含まれます。

表4-107 分割-結合のエラー生成のオプション

オプション

説明

フォルトの定義

WSDLに含まれていないカスタム、ローカルなフォルトを指定することができます。

フォルトのネームスペースおよび名前を指定するには、「フォルト」リンクをクリックします。

WSDLからのフォルトの選択

WSDLに指定されている既存のフォルトを選択することができます。

WSDLフォルトを選択するには、フォルトの選択リンクをクリックします。

4.22.12 Repeat Untilのプロパティ

Repeat Untilによって、分割-結合で条件がtrueに評価されるまで操作を繰り返すことができます。各ループが終了した後で、条件が評価されます。

分割-結合で選択した「Repeat Until」を確認および構成するには、「プロパティ」ビューを使用します。

「条件」タブには、次のオプションがあります。

表4-108 分割-結合のRepeat Untilのオプション

オプション

説明

条件

trueまたはfalseに評価されるXPath式を定義します。Repeat Untilの操作は、条件がtrueに評価されるまで実行されます。

「参照」アイコンをクリックすると、式ビルダーが起動されます。

4.22.13 エラーの再生成のプロパティ

キャッチまたはCatchAllによって捕捉されたエラーを再発生させるには、エラー・ハンドラ内に「エラーを再発生させる」を使用します。プロパティ・ビューには、「エラーを再発生させる」ノードの名前を変更およびそれについてコメントを入力することができます。

分割-結合で選択した「エラーを再発生させる」を確認および構成するには、「プロパティ」ビューを使用します。

4.22.14 スコープのプロパティ

スコープは、それに含まれる操作の動きに影響を与えるコンテキストを作成します。スコープ内に定義されているローカル変数およびエラー・ハンドラは、このコンテキストに制限されます。

分割-結合で選択したスコープを確認し、構成するには、「プロパティ」ビューを使用します。

関連項目

4.22.26.1項「スコープと変数」

4.22.15 Whileのプロパティ

Whileによって、分割-結合で条件がfalseに評価されるまで操作を繰り返すことができます。各ループが始まる前に、条件が評価されます。

分割-結合で選択した「While」を確認および構成するには、「プロパティ」ビューを使用します。

「条件」タブには、次のオプションがあります。

表4-109 分割-結合のWhileのオプション

オプション

説明

条件

trueまたはfalseに評価されるXPath式を定義します。条件がtrueに評価されると、関連付けられた操作が実行されます。

「参照」アイコンをクリックすると、式ビルダーが起動されます。

4.22.16 待機のプロパティ

待機では、分割-結合フローに一時停止を挿入して、他の依存ジョブが完了するのを少しの間待機できるようにします。その後は、分割-結合の実行が継続されます。

分割-結合で選択した待機を確認および構成するには、「プロパティ」ビューを使用します。

「待機」タブには次のオプションがあります。

表4-110 分割-結合の待機のオプション

オプション

説明

期間

期間の型xsd:durationに評価されるXPath式を次の形式で定義します。

nYnMnDTnHnMnS(年、月、日、時、分、秒の数を指定し、日付と時刻はTで区切ります。)

式が正しい期間タイプに解決されるようにしてください。待機操作では式の結果は検証されません。

指定した期間に到達すると、待機により分割-結合の実行が再開されます。

「参照」アイコンをクリックすると、式ビルダーが起動されます。

4.22.17 割当てのプロパティ

割当て操作によって、変数の初期化や更新などのデータ操作を実行することができます。割当てノードでは、割り当て、コピー、削除、投入、Javaコールアウト、記録、および置換を行うことができます。

分割-結合で選択した割当てを確認および構成するには、「プロパティ」ビューを使用します。

4.22.17.1 割当て操作のプロパティ

「割当て」タブには、次のオプションがあります。

表4-111 分割-結合の割当て操作のオプション

オプション

説明

式

変数に割り当てるデータを作成する際に使用するXQuery式です。

式をクリックすると、XQueryエディタが起動します。

Oracle Service BusがインラインXQueryの変数をバインドするとき、型がxs:stringであると仮定します。このため、xs:stringと互換性のない定数の操作の場合に、解析エラーが発生する可能性があります。型の互換性を保証するためには明示的なXQueryキャストを使用します。たとえば、次のインラインXQueryは失敗します。$itemsTotalは型xs:doubleですが、xs:stringとしてバインドされ、10000でのテストで互換性がありません。

if ($itemsTotal < 10000) then . . .

このインラインXQueryが機能するようにするには、$itemsTotalをxs:doubleに明示的にキャストします。

if (($itemsTotal cast as xs:double) < 10000) then . . .

また、Stringの結果または変数への割当てアクションを作成するとき、式がString値を返すようにしてください。非String値をStringの結果またはStringのグローバル変数に割り当てると、WS-BPEL仕様で定められているようにMismatchedAssignmentFailure例外は発生しません。

変数

XQuery式の結果が割り当てられる変数です。

定義済の変数、カウンタ変数、およびSOAPフォルト変数(エラー・ハンドラ用)のみが使用できます。

QoS

トランザクション・サポートを制御するサービス品質オプションです。次のいずれか1つを選択します:

- 「ベスト・エフォート」 - 操作は既存のトランザクションのコンテキストで実行しません。

- 「必ず1回」 - 操作は既存のトランザクションのコンテキストで実行します。

分割-結合におけるOracle Service Busの割当て機能は、XPath/XQuery式を単純型の変数にすることで解決するWS-BPEL仕様に準拠しています。XPath/XQuery式を分割-結合にある変数にバインドするためのサポート対象の単純な型は、String、Boolean、およびFloatです。割当て操作は、型の値を定義された変数型に変換します。

例:

- Stringとして指定されたレスポンス変数に<foo><bar>4</bar></foo>を割り当てる場合、Oracle Service Busは子要素のコピーと値を使用して<result>にStringとして<bar>4</bar>を返します。

- <foo><bar>4</bar></foo>をString変数(myStrなど)に マップして、$myStrを$response.resultに割り当てると、Oracle Service Busは<result>4</result>を返します。これは、$response.resultのString変数に割り当てる前にまず$myStrの値を変換するためです。

4.22.18 コピーのプロパティ

コピー操作を使用すると、Xpath式で指定された情報を、ソース・ドキュメントから、宛先ドキュメントにコピーします。

「割当て」にコピー操作を構成するには、「プロパティ」ビューを使用します。次のガイダンスを使用して、「Select From」および「Select To」を構成してください。

「コピー」タブには、次のオプションがあります。

表4-112 分割-結合のコピーのオプション

オプション

説明

ソース要素の選択

値をソースから宛先にコピーするときに使用する要素名(ソースまたは宛先)を、決定することができます。

このオプションを選択しない場合、コピーした値を保持するために宛先に既存の要素名が使用されます。

このオプションを選択すると、コピーした値を保持するために宛先でソース要素名が使用されます。

たとえば、ソースにある<zipCode>80303</zipCode>から郵便番号の値をコピーしている場合、「ソース要素の選択」を選択すると、宛先に<zipCode>要素を使用します。このオプションを選択しないと、郵便番号の値が<pinCode>80303</pinCode>などの既存の宛先要素にコピーされます。

タイプの選択

目的のタイプ(変数、式、リテラル、またはXMLフラグメント)を選択できるようにします。リテラルおよびXMLフラグメントは、「Fromの選択」メニューでのみ使用できます。

タイプの選択 - 変数

変数のXPathを選択します。変数で単純なノードの選択が必要な場合は、このオプションを使用します。

変数ツリーを展開してノードを選択する場合、Xpath式が自動的に生成されます。

タイプの選択 - 式

変数からノードを選択するには、Xpath式を作成します。変数からノードを選択するために、さらに複雑なXpath(述部を持つ場合がある)を必要とする場合、このオプションを使用します。

XPath式ビルダーを使用するには、「式」リンクをクリックします。

注意: 入力したXpath式は、1つのXMLノードまたは要素にのみコピーする必要があります(そうしなければ、ランタイム・エラーが発生します)。

タイプの選択 - リテラル(Select Fromのみ)

ユーザーによって入力されるリテラル文字列

文字列を入力するには、「リテラル形式」リンクをクリックします。

タイプの選択 - XMLフラグメント(Select Fromのみ)

ユーザーによって入力されるXMLフラグメントです。

フラグメントを入力するには、XMLフラグメント・リンクをクリックします。

4.22.19 削除のプロパティ

削除操作は、XPath式によって指定された一連のノードを削除します。

「プロパティ」ビューを使用して「割当て」で削除操作を構成します。

注意:

プロキシ・サービスのメッセージ・フローの削除操作と異なり、分割-結合の削除操作は直接変数を削除することは許可されていません。

「削除」タブには、次のオプションがあります。

表4-113 分割-結合の削除のオプション

オプション

説明

XPath

削除するノードを選択するためのXPath式です。

式エディタを起動するには、「XPath」リンクをクリックします。

in変数

この変数に対してXPath式を実行し、削除するノードを選択します。

QoS

トランザクション・サポートを制御するサービス品質オプションです。次のいずれか1つを選択します:

- 「ベスト・エフォート」 - 操作は既存のトランザクションのコンテキストで実行しません。

- 「必ず1回」 - 操作は既存のトランザクションのコンテキストで実行します。

4.22.20 挿入のプロパティ

挿入操作は、XPath式で選択されたノードを基準に指定された位置に、XQuery式の結果を挿入します。

「割当て」に挿入操作を構成するには、「プロパティ」ビューを使用します。

「挿入」タブには、次のオプションがあります。

表4-114 分割-結合の挿入のオプション

オプション

説明

式

XQuery 式を使用して、変数で指定した場所に挿入されるデータを作成します。

式エディタを起動するには、「式」リンクをクリックします。

場所

XPath式に対して実行される挿入操作を制御するために使用される場所。次のオプションがあります。

- 「の前に」: Xpath式の結果で指定された要素の直前の要素に挿入します。

- 「の後ろに」: Xpath式の結果で指定された要素の直後の要素に挿入します。

- 「の最初の子として」: XPath式の結果で指定された要素の最初の子要素に挿入します。

- 「の最後の子として」: XPath式の結果で指定された要素に属する最後の子要素に挿入します。

XPath

選択するノードを決定するためのXPathです。

式エディタを起動するには、「XPath」リンクをクリックします。

変数

XPathによって評価される変数です。

QoS

トランザクション・サポートを制御するサービス品質オプションです。次のいずれか1つを選択します:

- 「ベスト・エフォート」 - 操作は既存のトランザクションのコンテキストで実行しません。

- 「必ず1回」 - 操作は既存のトランザクションのコンテキストで実行します。

4.22.21 Javaコールアウトのプロパティ

Javaコールアウト操作は、検証、トランスフォーメーション、およびロギングなどのJavaで処理するカスタム・アクションのための分割-結合から静的Javaメソッドを呼び出すことができます。

「割当て」にJavaコールアウト操作を構成するには、「プロパティ」ビューを使用します。

「Javaコールアウト」タブには、次のオプションがあります。

表4-115 分割-結合のJavaコールアウトのオプション

オプション

説明

メソッド

JavaクラスをOracle Service BusプロジェクトにあるJARファイルにパッケージ化できます。「参照」をクリックして、最初にJARを選択し、呼出しメソッドを選択します。

Javaコールアウト・メソッドについて、次のガイドラインに従います。

- メソッドは静的でなければなりません。
入力パラメータに対して次のJava型のみがサポートされます。

- boolean、byte、char、double、float、int、long、shortおよびこれらのタイプの配列

- java.lang.[Boolean | Byte | Character | Double | Float | Integer | Long | Short | String]およびこれらのタイプの配列

- java.math.[BigInteger | BigDecimal]およびこれらのタイプの配列

- org.apache.xmlbeans.XmlObjectおよびこれらのタイプの配列

メソッドの戻り値に対して次のJava型のみがサポートされます。

- 対応する配列を除く、入力パラメータに対してサポートされるすべての型

- void

式

XQuery式は、データをstatic Javaメソッドの入力パラメータにマップするために使用されます。式エディタを起動するには、「式」リンクをクリックします。

結果値

Javaメソッドの結果値を持つ変数を選択します。

サービス・アカウント

Javaコールアウトを実行する場合、適切なサブジェクトをスレッドに配置するためにサービス・アカウントを使用できます。

サービス・アカウントを選択するには、「参照」をクリックします。

QoS

トランザクション・サポートを制御するサービス品質オプションです。次のいずれか1つを選択します:

- 「ベスト・エフォート」 - 操作は既存のトランザクションのコンテキストで実行しません。

- 「必ず1回」 - 操作は既存のトランザクションのコンテキストで実行します。

Oracle Service Busでは、次のJavaコールアウトのエラーが提供されています。

- 2031350 - Javaへの変換時に1つの要素のみを受信する予定でしたが、複数の要素が受信されました。

- 2031351 - Javaに変換するときにXmlObjectでなく単純型が見つかりました。

- 2031352 -単純型に対応するJava型への変換エラー。

- 2031353 - Javaメソッドを呼び出す場合に、例外が発生しました。

- 2031354 -セキュリティ・コンテキストの設定エラー。

4.22.22 ログのプロパティ

ログ操作により、サーバー・ログ・ファイルに分割-結合データを特定の重大度で記録できます。管理者は、記録したデータの重大度に基づいて適切なアクションを行うために、ログ情報を使用できます。

「割当て」にログ操作を構成するには、「プロパティ」ビューを使用します。

「ログ」タブには、次のオプションがあります。

表4-116 分割-結合のログのオプション

オプション

説明

式

XQuery式は、ログされるデータを選択するために使用されます。

式エディタを起動するには、「式」リンクをクリックします。

注釈

必要に応じて、ログに関する注意を指定します。アノテーションは、式によって選択されたデータと共にログに記録されます。

重大度

ログに対して次のいずれかの重大度レベルを選択します。

- デバッグ

- 情報

- 警告

- エラー

4.22.23 置換のプロパティ

置換操作は、XPath式で指定されたノードまたはノードのコンテンツを置き換えることができます。

「割当て」に置換操作を構成するには、「プロパティ」ビューを使用します。

「置換」タブには、次のオプションがあります。

表4-117 分割-結合の置換のオプション

オプション

説明

XPath

置換する(変数内の)データの指定に使用するXPath式です。

式エディタを起動するには、「XPath」リンクをクリックします。

変数

置換されるデータを含む変数。

式

名前付き変数内でXPathによって指定されたデータを置換するデータの作成に使用するXQuery式です。

式エディタを起動するには、「式」リンクをクリックします。

ノード全体を置換

式によって選択されたノードをそのすべてのコンテンツとともに置き換えるように指定します。

ノードのコンテンツを置換

ノードが置換されないことを指定します。置換されるのはコンテンツのみです。

QoS

トランザクション・サポートを制御するサービス品質オプションです。次のいずれか1つを選択します:

- 「ベスト・エフォート」 - 操作は既存のトランザクションのコンテキストで実行しません。

- 「必ず1回」 - 操作は既存のトランザクションのコンテキストで実行します。

4.22.24 受信のプロパティ

割-結合で選択した受信を確認および構成するには、「プロパティ」ビューを使用します。

「操作」タブには、次のオプションがあります。

表4-118 分割-結合の受信のオプション - 「操作」タブ

オプション

説明

操作

受信によって呼び出される操作です。

WSDLブラウザからの操作を選択するために参照します。

「変数」タブには、次のオプションがあります。

表4-119 分割-結合の受信のオプション - 「変数」タブ

オプション

説明

メッセージ変数

操作の出力メッセージ・タイプとタイプが一致するメッセージ変数のリストです。

新しいメッセージ変数を定義するには、新しい変数の作成を選択します。

注意: 操作の出力メッセージ・タイプとタイプが一致するメッセージ・タイプ変数が存在しない場合は、必要なタイプを持つメッセージ・タイプ変数を定義する必要があります。

メッセージ・タイプ・ネームスペース

操作の出力メッセージ・タイプのネームスペースです。

メッセージ・タイプ

操作の出力メッセージ・タイプです。

4.22.25 カウンタ変数ダイアログ

このダイアログは、カウンタ変数を作成するために使用します。

表4-120 分割-結合のカウンタ変数のオプション

オプション

説明

カウンタ変数名

カウンタ変数の名前です。

4.22.26 変数の作成/編集ダイアログ

このダイアログは、分割-結合で変数を表示したり構成したりするために使用します。

4.22.26.1 スコープと変数

変数は定義されるスコープ内やそのスコープ内にネストされたすべてのスコープに表示できますが、外部のスコープに宣言される変数と同じ名前の変数が内部のスコープに宣言される場合、外部のスコープの変数が非表示になります。たとえば、外部のスコープ(So)にmyVarという変数を定義した後、外部のスコープにある内部のスコープ(Si)にもmyVar変数を定義する場合、内部のスコープ(Si)に定義したmyVarにのみアクセスできます。このmyVarにより、スコープSo.で定義されたmyVarがオーバーライドされます。

表4-121 分割-結合の変数のオプション

オプション

説明

名前

スコープ内でユニークな変数の名前を入力します。

変数の型の選択

次の変数の型の中から1つを選択します。

- 組込みタイプ

- スキーマ・タイプ

- メッセージ・タイプ

変数の型の選択 - 組込みタイプ

選択されている場合、組込みタイプの変数のみが表示されます。

変数の型の選択 - スキーマ・タイプ

選択すると、現在のOracle Service Bus構成にあるすべてのスキーマ・タイプが表示されます。

「この分割-結合に該当するスキーマ・タイプ/要素のみを表示」が選択されると、現在の分割-結合に直接適用できるスキーマ・タイプのみが表示されます。これはデフォルトでオンになっています。

変数の型の選択 - メッセージ・タイプ

選択すると、メッセージ・タイプのみが表示されます。

「この分割-結合に該当するスキーマ・タイプ/要素のみを表示」が選択されると、現在の分割-結合に直接適用できるメッセージ・タイプのみが表示されます。これはデフォルトでオンになっています。

種類

変数の型です。

ネームスペース

変数型のネームスペースです。

4.22.27 メッセージ変数の作成ダイアログ

このダイアログを使用して新しいメッセージ変数を作成します。

表4-122 分割-結合の新しいメッセージ変数のオプション

オプション

説明

名前

変数のユニークな名前を入力します。

種類

WSDLメッセージ、XSD要素、またはXSD型(単純、複合、組込み)のいずれかになります。

ネームスペース

変数型のネームスペースです。

4.22.28 サービス・ブラウザ

ツリーでビジネス・サービス、プロキシ・サービス、または分割-結合から操作を選択するには、このダイアログを使用します。

4.22.29 SOAPフォルト変数ダイアログ

このダイアログを使用して、SOAPフォルト変数を作成します。

表4-123 分割-結合のSOAPフォルト変数のオプション

オプション

説明

SOAPフォルト変数名

SOAPフォルト変数の名前を入力します。

4.22.30 WSDLブラウザ

このダイアログを使用して、ツリーを参照し、表示されたツリーのWSDLから操作を選択します。

4.22.31 分割-結合ウィザード - 新しい分割-結合

このページでは、新しい分割-結合の場所と名前を指定します。

表4-124 新しい分割-結合のオプション

オプション

説明

親フォルダを入力または選択してください

この分割-結合を格納しているフォルダの名前を入力するか、リストからフォルダを選択します。

ファイル名

この分割-結合を定義しているファイルの名前を入力します。

4.22.32 分割-結合ウィザード - 操作の指定

このページを使用して、新しい分割-結合の操作を選択します。

表4-125 新しい分割-結合のオプション - 操作の選択

オプション

説明

操作の選択

使用可能な操作をツリーから選択します。

消費

このボタンをクリックすると、現在のOracle Service Bus構成の外部からWSDLをインポートし、インポートしたWSDLを使用して操作を選択できます。

第II部

XQuery Mapper

XQuery Mapper IDEヘルプです。次の章が含まれます。

- 第5章「はじめに」

- 第6章「XQuery Mapperを使用したデータの変換」

- 第7章「例: XQuery Mapperを使用したデータ・トランスフォーメーション」

5 はじめに

この章では、Oracle XQuery Mapperの概要について説明します。

Oracle XQuery MapperはXML、非XML、およびJavaデータ型の間のデータ変換を可能にするグラフィカル・マッピング・ツールであり、異種アプリケーションの速やかな統合を実現します。たとえば、Oracle WebLogic Integration (WLI)でデータ・トランスフォーメーションをコントロールとしてパッケージ化し、複数のビジネス・プロセスやアプリケーションでそのコントロールを再利用できます。XQuery Mapperで作成した.xqファイルをOracle Service Busでリソースとして使用することもできます。

XQuery Mapperの出力はXQuery言語で記述された問合せです。XQuery言語はWorld Wide Web Consortium (W3C)により定義されています。W3CおよびXQuery言語の詳細は、http://www.w3.org/XML/Query/を参照してください。

5.1 XQuery Mapperの概要

XQuery Mapperを使用して、XML、非XML、およびJavaデータ型の間でデータを変換できます。たとえば、あるスキーマに対して有効なXMLを異なるスキーマに対して有効なXMLに変換できます。データは、XMLスキーマ、Web Service Definition Language (WSDL)ファイル、およびメッセージ・フォーマット言語(MFL)ファイルに基づいたデータを使用できます。

Simpleソース型を選択した場合、boolean、byte、double、float、int、long、short、String、Dateなどの標準的なスキーマ型を、必要なターゲット・データ形式に変換できます。

データ・トランスフォーメーションでは、複数の入力型を使用できますが、ターゲット型は1つのみです。たとえば次の図のように、2つのデータから1つのターゲットにデータを変換できます。

図5-1 複数のソースから1つのターゲットへのデータ・トランスフォーメーション

5.2 XQuery 2002および2004のサポート

Oracle Service Busは、次のバージョンのXQueryのデータ・トランスフォーメーションをサポートします。

- XQuery 2004: グラフィカル・デザイン・ビュー(XQuery Mapper)、ソース・ビュー、テスト・ビュー。

- XQuery 2002: ソース・ビューとテスト・ビュー。

注意:

XQuery 2002準拠のXQueryファイルの場合、ソース・ビューにコンパイル・エラーは表示されません。

XQuery 2002準拠のXQueryファイルを開いた場合、ファイルは自動的にXQuery 2002トランスフォーメーション・エディタで開きます。ソースおよびテストの各ビューは表示されますが、デザイン・ビューはありません。

5.2.1 XQueryのテスト・ビューに適用される制限

表5-1に、XQueryテスト・ビューの制限を示します。

表5-1 XQueryのテスト・ビューに適用される制限

制限

XQ2002への適用

XQ2004への適用

XQueryがJavaのユーザー関数を呼び出す場合、Javaのメソッドは静的でなければなりません。

はい

はい

XQueryに対するJava型の入力引数が抽象クラスまたはインタフェースである場合、テスト・ビューではその引数を処理できません。結果ビューにエラー・メッセージが表示されます。

はい

いいえ

入力されるJavaの型とメンバー変数(基本データ型、String型、java.sql.Date型、およびJava.util.Date型の場合を除く)は、標準のJava Beanガイドラインに準拠していなければなりません。

はい

いいえ

6 XQuery Mapperを使用したデータの変換

この章では、XQuery Mapperを使用してメッセージ・フローでデータ・トランスフォーメーションを実行する方法について説明します。

XQuery Mapperのグラフィカル・インタフェースでは、ソース・スキーマの要素をターゲット・スキーマの要素にマップして、データ・トランスフォーメーションを作成できます。XQuery MapperによりXQueryが作成され、 .xq ファイルとして保存されます。

次の項では、XQuery Mapperを使用してデータを変換する手順について説明します。

- 6.1項「XQuery Mapperの起動」

- 6.2項「XQuery Mapperサンプル・プロジェクトのインポート」

- 6.3項「XQuery Mapperプロジェクトの作成」

- 6.4項「スキーマ・ファイルのインポートと作成」

- 6.5項「ソースとターゲットのデータ型の選択」

- 6.6項「データ・トランスフォーメーションの作成」

- 6.7項「データ・トランスフォーメーションの編集」

- 6.8項「オプション要素の出力の制限」

- 6.9項「データ・トランスフォーメーションのテスト」

- 6.10項「「Design」ビューのグラフィカルな機能」

- 6.11項「XMLのグローバル要素、グローバル型、ローカル要素、および属性」

6.1 XQuery Mapperの起動

Oracle Enterprise Pack for EclipseのEclipseメニューで、「Window」→「Open Perspective」→「XQuery Transformation」を選択して、XQueryトランスフォーメーション・パースペクティブを開きます。

XQueryファイルを開くと、XQueryトランスフォーメーション・パースペクティブが自動的に起動します。ただし、XQuery Mapperが開いており、XQueryファイルが開いていない場合は、 XQueryトランスフォーメーション・パースペクティブを手動で起動する必要があります。

6.2 XQuery Mapperサンプル・プロジェクトのインポート

XQuery Mapperサンプル・プロジェクトにはサンプル・スキーマとXMLファイルが含まれています。第7章「例: XQuery Mapperを使用したデータ・トランスフォーメーション」の説明に従い、これらを使用してXQueryトランスフォーメーションを作成できます。

次の手順を実行して、サンプル・プロジェクトをインポートします。

1. Eclipseのメニュー・バーで「File」→「Import」を選択します。

2. Importウィンドウで「General」→「Existing Projects into Workspace」を選択し、「Next」をクリックします。

3. 「Select root directory」フィールドで「Browse」をクリックして、「OSB_ORACLE_HOME/eclipse/plugins/com.bea.alsb.common.mapper_version/samples」というフォルダを選択します。「OK」をクリックします。

4. Importウィンドウで「Copy projects into workspace」を選択し、「Finish」をクリックします。

5. サンプル・プロジェクトの名前を入力し、「Finish」をクリックします。
サンプル・プロジェクトが作成され、プロジェクト・エクスプローラ・ビューに表示されます。プロジェクトには次のフォルダが含まれています。

- 「schemas」フォルダ: サンプル・プロジェクトのXMLスキーマ(.xsd)ファイルが含まれています。

- 「XML」フォルダ: 一部のサンプルで必要なテストXMLファイルが含まれています。

- 「XQueryTransformations」フォルダ: このフォルダにサンプルのXQueryファイルが作成されます。

プロジェクトの作成およびそれらのプロジェクトで必要なファイルのインポートの詳細は、次の項を参照してください。

- 6.3項「XQuery Mapperプロジェクトの作成」

- 6.4項「スキーマ・ファイルのインポートと作成」

- 第7章「例: XQuery Mapperを使用したデータ・トランスフォーメーション」

注意:

プロジェクト固有のXMLスキーマ、Web Service Definition Language (WSDL)ファイル、およびメッセージ・フォーマット言語(MFL)ファイルを任意の場所からインポートできます。ビジネス・ニーズを満たすフォルダ構造を作成してからファイルをインポートしてください。詳細は、6.4項「スキーマ・ファイルのインポートと作成」を参照してください。

6.3 XQuery Mapperプロジェクトの作成

XQuery Mapperプロジェクトを作成するには:

1. 「Window」→「Open Perspective」→「XQuery Transformation」を選択して、XQueryトランスフォーメーション・パースペクティブに切り替えます。

2. 「File」→「New」→「Project」を選択します。
New Projectウィザードが開きます。

3. 「General」→「Project」を選択し、「Next」をクリックします。

4. プロジェクト名を入力します。

5. 「Use default location」チェック・ボックスが選択されていることを確認します。

6. 「Finish」をクリックします。

6.4 スキーマ・ファイルのインポートと作成

スキーマ・ファイルは任意の場所に作成またはインポートできます。次のスキーマ・タイプがサポートされています。

- XSD (XML Schema Definition): XMLスキーマでXMLファイルのデータを記述および制限します。XQuery Mapperでは複数のネームスペースがサポートされています。たとえば、特定のネームスペースで有効な2つのソースXMLファイルのデータを、別のネームスペースで有効なXMLファイルに変換できます。

- WSDL (Web Service Definition Language): WSDLファイルで定義されたXMLスキーマをデータ・トランスフォーメーションで使用できます。

- MFL(メッセージ・フォーマット言語): MFLファイルで非XMLファイルのデータを記述および制限します(たとえば、COBOLコピーブックやC構造定義など)。MFL要素のネームスペースは、MFLファイル名から派生します。
MFLファイルは、フォーマット・ビルダー・ツールを使用して作成されます。拡張子は.mflです。

6.4.1 XMLスキーマとMFLファイルのインポート

スキーマとMFLファイルをインポートするには:

1. 「Window」→「Open Perspective」→「XQuery Transformation」を選択して、XQueryトランスフォーメーション・パースペクティブに切り替えます。

2. 「Navigator」ビューで、XMLスキーマまたはMFLファイルをインポートするプロジェクトを選択します。

3. 「File」→「Import」を選択します。
Importウィザードが表示されます。

4. XMLスキーマおよびMFLファイルを様々なソースからインポートできます。適切なソースを選択し、「Next」をクリックします。

5. 必要なファイルを参照し、選択してから、「Finish」をクリックします。

インポートされたスキーマ・ファイルまたはMFLファイルは、New XQuery Transformationウィザードで使用できるようになります。

次の図に、New XQuery TransformationウィザードでのインポートされたXMLスキーマを示します。

図6-1 New XQuery Transformation

6.4.2 XMLスキーマの作成

XMLスキーマ・エディタを使用してXMLスキーマを作成できます。

1. 「Window」→「Open Perspective」→「XQuery Transformation」を選択して、XQueryトランスフォーメーション・パースペクティブに切り替えます。

2. 「Navigator」ビューで、スキーマ・ファイルを作成するプロジェクトを選択します。

3. 「File」→「New」→「Other」を選択します。
「New」画面が表示されます。

4. 「XML」ノードを展開します。

5. 「XML Schema」を選択し、「Next」をクリックします。

6. スキーマ・ファイルを作成する親フォルダを選択します。

7. スキーマ・ファイルの名前を入力し、「Finish」をクリックします。

指定したプロジェクトにスキーマ・ファイルが作成されます。これで、スキーマの詳細を指定し、ファイルを保存できます。

XMLスキーマ・エディタの使用の詳細は、http://www.eclipse.org/webtools/community/tutorials/XMLSchemaEditor/XMLSchemaEditorTutorial.htmlにある「XSDエディタの概要」を参照してください。

6.4.3 XMLスキーマからのXMLファイルの作成

スキーマからXMLファイルを作成するには:

1. 「Window」→「Open Perspective」→「XQuery Transformation」を選択して、XQueryトランスフォーメーション・パースペクティブに切り替えます。

2. 「Navigator」ビューで、スキーマ・ファイルを作成するプロジェクトを選択します。

3. 「File」→「New」→「Other」を選択します。
「New」画面が表示されます。

4. 「XML」ノードを展開します。

5. 「XML」を選択し、「Next」をクリックします。
「Create XML File」ダイアログ・ボックスが開きます。

6. 「Create XML file from an XML schema file」オプションを選択し、「Next」をクリックします。

7. XMLファイルを作成する親フォルダを選択します。

8. XMLファイルの名前を入力し、「Next」をクリックします。

9. XMLファイルを作成する基になるXMLスキーマを選択し、「Next」をクリックします。

10. XMLファイルのルート要素を選択し、「Finish」をクリックします。

指定したフォルダにXMLファイルが作成されます。これで、ファイルの詳細を指定し、保存できます。

XMLエディタの使用の詳細は、http://www.eclipse.org/webtools/community/tutorials/XMLWizards/XMLWizards.htmlにある「XMLファイル作成チュートリアル」を参照してください。

6.4.4 WSDLファイルの作成

WSDLファイルを作成するには:

1. 「Window」→「Open Perspective」→「XQuery Transformation」を選択して、XQueryトランスフォーメーション・パースペクティブに切り替えます。

2. 「Navigator」ビューで、WSDLファイルを作成するプロジェクトを選択します。

3. 「File」→「New」→「Other」を選択します。
Newウィザードが開きます。

4. 「XML」ノードを展開し、「WSDL」を選択し、「Next」をクリックします。

5. WSDLファイルを作成する親フォルダを選択します。

6. WSDLファイルの名前を入力し、「Next」をクリックします。

7. WSDLファイルのターゲット・ネームスペースおよび接頭辞を入力します。

8. 必要に応じて、「Create WSDL Skeleton」チェック・ボックスをオンにします。

9. プロトコルとバインディング・オプションを選択し、「Finish」をクリックします。

指定したプロジェクトにWSDLファイルが作成されます。

WSDLエディタの使用の詳細は、http://www.eclipse.org/webtools/community/tutorials/WSDLEditor/WSDLEditorTutorial.htmlにある「WSDLエディタの概要」を参照してください。

6.4.5 MFLファイルの作成

MFLファイルを作成するには、フォーマット・ビルダー・ツールを使用します。Eclipseでは、Oracle Service Busパースペクティブで「File」→「New」→「MFL」を選択します。

6.5 ソースとターゲットのデータ型の選択

データ・トランスフォーメーションを作成する前に、ソース・データ型とターゲット・データ型を定義する必要があります。ソースおよびターゲットの型には、非XML、XML、および単純データ型を指定できます。

1. ソースとターゲットのデータ型を選択するプロジェクトを選択します。

2. 右クリックし、「New」→「XQuery Transformation」を選択します。
New XQuery Transformationウィザードが開きます。

3. .xqファイル名を入力します。

4. 「次へ」をクリックします。
「Source Types」ダイアログ・ボックスが表示されます。

5. 「Available Source Types」ペインで、ソース・データ型を選択します。

- ソースがXMLデータの場合は、「XML」を選択します。

- ソースがMFLデータの場合は、「Non-XML」を選択します。

- ソース・データがboolean、String、intなどの標準型の場合は、「Simple」を選択します。

6. 必要なソースのデータ要素を選択します。

注意:

スキーマを「Available Source Types」ペインおよび「Available Target Types」ペインに表示するには、まずEclipseでこれらのスキーマを含むXMLファイルおよび非XMLファイルをインポートまたは作成する必要があります。

「Available Source Types」および「Available Target Types」ペインには、XQueryトランスフォーメーション・プロジェクトの/schemasフォルダに存在するスキーマのみが表示されます。スキーマを他のフォルダに格納するほうがよい場合は、プロジェクトのXMLBeansの設定で、そのフォルダのパスを指定する必要があります(「Project」→「Properties」を選択してから、「XMLBeans」ページの「Source Paths」タブを表示)。

たとえば、schemas/Dates.xsdから入力データを追加するには、次の図のように、スキーマでdate要素を入力要素として選択し、「Add」をクリックします。

図6-2 ソース型の選択

「Selected Source Types」ペインに、選択した要素を構成している要素と属性が表示されます。

7. 必要なソース型を選択したら、「Next」をクリックします。
「Target Types」ダイアログ・ボックスが表示されます。

8. 「Available Target Types」ペインでターゲット・データ型を選択し、「Add」をクリックします。
「Selected Target Type」 ペインに、選択した要素を構成している要素と属性が表示されます。

注意:

ターゲット・データ型は1つしか指定できません。

9. 「Finish」をクリックします。

「Design」ビューに.xqファイルが表示されます。選択したソースとターゲットのデータ型が示されています。

6.6 データ・トランスフォーメーションの作成

次の種類のデータ・トランスフォーメーションを実行できます。

- 基本的な要素トランスフォーメーション:ソース要素からターゲット要素へのマップ

- 基本的な属性トランスフォーメーション:ソース属性からターゲット属性へのマップ

- 複雑なトランスフォーメーション: 複雑なソース(たとえば、反復する要素)から複雑なターゲット(たとえば、非反復要素)へのマップ

6.6.1 基本的な要素トランスフォーメーションの作成

基本的な要素トランスフォーメーションでは、ソース要素をターゲット要素にマップします。ソースとターゲットの要素には同じ名前、型、またはスコープを指定できる場合があります。

実行できる基本的な要素トランスフォーメーションの種類について、いくつかの例を次に示します。

- 要素-要素: ソース要素がターゲット要素にマップされます。

- 要素結合: 複数のソース要素を結合して1つのターゲット要素を作成します。

- 要素分割: XQuery文字列関数を使用して、1つのソース要素を複数のターゲット要素に分割します。

6.6.1.1 前提条件

XQueryファイルが、6.5項「ソースとターゲットのデータ型の選択」に従って作成されています。

6.6.1.2 要素-要素リンクの作成

要素-要素リンクを作成するには:

1. 要素-要素リンクを作成するプロジェクトを選択し、トランスフォーメーションを格納するXQueryファイルを開きます。

2. 「Source」ペインの必要な要素を「Target」ペインのターゲット要素にドラッグします。
たとえば、ソース・スキーマのcustomer-name要素とターゲット・スキーマのcustomer-name要素の間にリンクを作成するには、customer-nameを「Source」ペインから「Target」ペインにドラッグします。次の図のように、2つの要素間に矢印が表示されます。

図6-3 要素-要素リンク

注意:

「Source」ペインから「Target」ペインへのドラッグ時、2つの要素の間には一時的な破線が表示されます。リンク・パターンの詳細は、6.10.2項「リンクのパターン」を参照してください。

3. 必要な要素-要素リンクを作成したら、変更を保存します。

6.6.2 基本的な属性トランスフォーメーションの作成

基本的な属性トランスフォーメーションでは、ソース属性をターゲット属性にマップします。ソースとターゲットの属性には同じ名前、型、またはスコープを指定できる場合があります。

基本的な属性トランスフォーメーションのいくつかの例を次に示します。

- 要素-属性: ソース要素がターゲット属性にマップされます。

- 属性-要素: ソース属性がターゲット要素にマップされます。

- 属性-属性: ソース属性が、属性名が同じターゲット属性にマップされます。

6.6.2.1 前提条件

XQueryファイルが、6.5項「ソースとターゲットのデータ型の選択」に従って作成されています。

6.6.2.2 属性-要素リンクの作成

属性-要素リンクを作成するには:

1. 属性-要素リンクを作成するプロジェクトを選択し、トランスフォーメーションを格納するXQueryファイルを開きます。

2. 「Source」ペインの必要な属性を「Target」ペインの適切な要素にドラッグします。
たとえば、ソース・スキーマのaddress要素のstreet属性とターゲット・スキーマのstreet要素の間にリンクを作成するには、次の図のように、street属性を「Source」ペインから「Target」ペインにドラッグします。

図6-4 属性-要素リンク

3. 必要なリンクを作成したら、変更を保存します。

同様に、要素-属性リンクおよび属性-属性リンクを作成できます。

6.6.3 複雑なトランスフォーメーションの作成

複雑なトランスフォーメーションでは、複雑なソース(たとえば、反復する要素)を複雑なターゲット(たとえば、非反復要素)にマップします。複雑なトランスフォーメーションのいくつかの例を次に示します。

- 反復グループ-反復グループ: ソースには要素のグループの可変個のインスタンスが含まれます。各ソース・インスタンスは、ターゲット・グループのインスタンスにマップされます。

- 反復グループ-非反復要素: ソースには要素のグループの可変個のインスタンスが含まれます。各ソース・インスタンスは、ターゲット要素のインスタンスにマップされます。

6.6.3.1 前提条件

XQueryファイルが、6.5項「ソースとターゲットのデータ型の選択」に従って作成されています。

6.6.3.2 複雑なトランスフォーメーションの作成

複雑なトランスフォーメーションを作成するには:

1. リンクを作成するプロジェクトを選択し、トランスフォーメーションを格納するXQueryファイルを開きます。

2. 「Source」ペインの必要な要素または属性を「Target」ペインの適当な要素または属性にドラッグします。
たとえば、product(ソース・スキーマの反復グループ)とproduct(ターゲット・スキーマの反復グループ)の間にリンクを作成するには、次の図のように、productを「Source」ペインから「Target」ペインにドラッグします。

図6-5 反復グループ-反復グループ・リンク

3. 必要なリンクを作成したら、変更を保存します。

6.7 データ・トランスフォーメーションの編集

「Design」ビューでデータ・トランスフォーメーションを作成した後は、「Source」ビューで直接コードを編集するか、「Design」ビューで複雑な式を追加して、XQueryコードを追加、変更、および削除できます。

注意:

XQuery言語の詳細は、http://www.w3.org/XML/Queryを参照してください。

この項の内容は次のとおりです。

- 6.7.1項「XQueryファイルの表示と編集」

- 6.7.2項「結合と和集合の作成」

- 6.7.3項「If-Then-Else式の作成」

- 6.7.4項「For-Let-Where-Order By-Return (FLWOR)式の作成」

- 6.7.5項「Typeswitch式の作成」

- 6.7.6項「XQuery関数の挿入」

- 6.7.7項「式の変数の挿入」

- 6.7.8項「スキーマ・プロパティの表示」

6.7.1 XQueryファイルの表示と編集

XQueryファイルを編集するには:

1. 編集するXQueryファイルが含まれているプロジェクトを選択します。

2. XQueryファイルをダブル・クリックします。

注意:

XQueryファイルがXQuery 2002準拠である場合、ファイルは自動的にXQuery 2002トランスフォーメーション・エディタで開きます。これには「Source」ビューと「Test」ビューのみが含まれています。詳細は、5.2項「XQuery 2002および2004のサポート」を参照してください。

3. 「Source」ビューを選択します。
XQueryコードが表示されます。無効なコードは赤い下線で示されます。

4. 必要な変更を加えます。

注意:

必要に応じて、ルート要素を除く関数内のすべてのコードを削除することで、「Source」ビューでデータ・トランスフォーメーションを削除できます。

5. 変更を保存します。

6.7.2 結合と和集合の作成

XQueryトランスフォーメーション・パースペクティブの「Constraints」ビューを使用すると、反復するソース要素とターゲット要素の間の関係を制限したり操作することができます。

「Constraints」ビューには「Constraint Type」オプションがあります。

- 「Repeatability/Join」オプション
反復する要素の間にトランスフォーメーションを作成すると、要素を反復処理するためのforループが作成されます。「Constraints」ビューの「Where Clause」ペインでforループにwhere句を追加することにより、反復するターゲット要素に制限や制約を付けることができます。

次のサンプル・コードのように、where句に対する複合条件(ORまたはAND演算子で結合された条件)を作成できます。

((data($PurchaseOrderDoc/partId) > 200 and data($PurchaseOrderDoc/partId) <= 400))

実行時に、複合条件を満たす反復要素のみがforループで反復処理されます。

「Constraints」ビューの使用に関する詳細な例は、7.4項「反復ソースと非反復ターゲットの間のトランスフォーメーションの作成」を参照してください。

- Union
7.3項「和集合の作成」を参照してください。

6.7.3 If-Then-Else式の作成

「Target Expression」ビューでは、if-then-else式を作成できます。

if-then-else式を含む問合せが実行されると、if式を構成する条件が評価されます。結果に応じて、異なる値がターゲット・ノードに返されます。

図6-6に、次のロジックの実装に使用できるXQueryコードを示します。

- quantityソース・ノードの値が500より大きい場合は、IDターゲット・ノードの値として4554が返されます。

- quantityが500以下の場合は、IDとして5894が返されます。

図6-6 If-Then-Else式の例

次の図のように、If条件に複数の式を追加できます。

図6-7 「Target Expression」ビューのIf-Then-Else式

条件の位置を変更するには、条件を選択して「Move Up」または「Move Down」ボタンをクリックします。条件を削除するには、条件を選択して「Remove」をクリックします。

注意:

[編集: If条件]ペインでは、[削除]ボタンを使ってすべての式を削除した場合でも、[ソース]ビューのif-then-else式がすべて削除されるわけではありません。次のコード・リストのように、if条件に関連付けられた式は削除されますが、thenおよびelseの式は保持されます。

<ns0:partId>
{
if (fn:boolean("true"))
then 4554
else 5894
}
</ns0:partId>

XQueryでは常にthen式が返されます。else式はコード内に保持されるため、必要に応じて後から再利用できます。

詳細は、7.6項「ネストされたIf-Then-Else式の作成」を参照してください。

6.7.4 For-Let-Where-Order By-Return (FLWOR)式の作成

「Target Expression」ビューでは、次の図のように、FLWOR式を作成できます。

図6-8 FLWOR式

次の表に、FLWOR式の構成要素を示します。

表6-1 FLWOR式の句

構成要素

説明

省略可能/必須

許可されたネスト式

For句

For句は一連の入力項目を反復処理し、項目ごとの値を返します。

最低1つのFor句またはLet句

- If-Then-Else

- FLWOR

- Typeswitch

Let句

Let句は変数を宣言し、その変数に値を代入します。

最低1つのFor句またはLet句

- If-Then-Else

- FLWOR

- Typeswitch

Where句

Where句は入力データを振り分ける基準を指定します。If句に似ています。

オプション

Order By句

Order By句は問合せ出力を並べ換える基準を指定します。

オプション

- If-Then-Else

- FLWOR

- Typeswitch

Return式

Return式は問合せの出力を定義します。

必須(1つのみ)

- If-Then-Else

- FLWOR

- Typeswitch

For、Let、Order By、Returnの下にネストされた式を挿入するには、これらを右クリックし、メニューから必要な式を選択します。

注意:

「デザイン」ビューで、反復要素の間にリンクを作成すると、For...Return式(暗黙的なFLWOR式)が「ソース」ビューに自動的に生成されます。「制約」ビューを使用して、このFLWOR式にWhere句を追加できますが、Let句とOrder By句は追加できません。暗黙的なFLWOR式は「対象の式」ビューに表示されません。

詳細は、7.7項「FLWOR式の作成」を参照してください。

6.7.5 Typeswitch式の作成

次の状況では、Typeswitch式が必要になる場合があります。

- XMLスキーマに<choice>要素が含まれており、<choice>宣言に定義されているいずれか1つの要素のみを含まれている要素に指定できる場合は、typeswitch式を使用して、ソースXMLファイルにある<choice>要素の型を判断し、これに応じて値を返します。

- XMLスキーマに代替グループが含まれており、ある要素を別の要素に置き換えることができる場合は、typeswitch式を使用して、実際にソースXMLファイルにある要素の型を判断し、これに応じて値を返します。

「Target Expression」ビューでは、次の図のように、typeswitch式を作成できます。

図6-9 Typeswitch式

表6-2に、typeswitch式の構成要素を示します。

表6-2 Typeswitch式の句

構成要素

説明

省略可能/必須

許可されたネスト式

Operand式

Operandは型が評価される式です。

必須(1つのみ)

Case句

各Case句は評価される型の名前と、評価が真の場合に返される式を指定します。

必須(最低1つ)

- If-Then-Else

- FLWOR

- Typeswitch

Default句

Default句は、Case句で指定されたどの型にもオペランド式の値が一致しない場合に使用する必要のあるReturn式を指定します。

必須(1つのみ)

- If-Then-Else

- FLWOR

- Typeswitch

6.7.6 XQuery関数の挿入

XQuery Mapperには、W3C標準のXQuery関数と演算子のセットが用意されています。XQueryファイルおよびデータ・トランスフォーメーション・ファイルに、標準XQuery関数またはユーザー定義関数を追加できます。たとえば、upper-case XQuery String関数を使用して、XML文字列値の文字を大文字に変換できます。

注意:

XQueryおよびXPathの関数と演算子(W3Cの作業草案、2004年7月23日)の詳細は、http://www.w3.org/TR/2004/WD-xpath-functions-20040723/を参照してください。

XQuery関数を挿入するには:

1. 「Window」→「Open Perspective」→「XQuery Transformation」を選択して、XQueryトランスフォーメーション・パースペクティブに切り替えます。
XQueryトランスフォーメーション・パースペクティブに「Expression Functions」ビューがあります。

2. XQuery関数を挿入するXQueryファイルを開きます。

3. 「Design」ビューで、関数呼出しを追加するリンクを選択または作成します。
リンクが緑色になります。

4. 「Target Expression」ビューを選択します。
「Target Expression」ビューが表示されていない場合は、「Window」→「Show View」→「Target Expression」を選択します。

「General Expression」ペインに、選択したターゲット・ノードとソース・ノードをリンクするXQueryコードが表示され、選択されます。このコードを選択したままにして、次の手順に進みます。

5. 「General Expression」ペインで既存のXQueryコードを削除します。

6. 「Expression Functions」ビューで挿入する関数を探します。
この例では、「String Functions」フォルダからupper-case関数を選択します。この関数はソース要素のすべての文字を大文字に変換します。

7. upper-case関数を「General Expression」ペインにドラッグします。
「General Expression」ペインで選択されている関数のパラメータ(この例では、upper-case関数の$string-varパラメータ)を選択されたままにしておきます。

注意:

Oracleによって定義されたXQuery関数(例: trim-left)にはfn-bea:という接頭辞が付いています。

「Expression Functions」ビューに表示されないXQuery関数でもXQuery仕様で定義されていれば、fn:接頭辞を付けて使用できます。

8. 次のいずれかの方法で、関数のソース・パラメータを選択します。

- 「Design」ビューの「Source」ペインからソース要素を選択し、「General Expression」ペインの$string-varパラメータの上にドラッグ・アンド・ドロップします。

- 「Expression Variables」ビューからソース変数を選択し、「General Expression」ペインの$string-varパラメータの上にドラッグ・アンド・ドロップします。

9. 必要な関数を挿入し、関数にパラメータを割り当てたら、「General Expression」ペインで「Apply」をクリックします。

6.7.7 式の変数の挿入

XQueryで使用可能な変数とその下位要素は、「Expression Variables」ビューに表示されています。

注意:

「Expression Variables」ビューが表示されていない場合は、「Window」→「Show View」→「Expression Variables」を選択します。

「Expression Variables」ビューには、次の種類の変数が表示されます。

- ソース: 「Expression Variables」ビューの「Source」ノードに表示されている変数は、New XQuery Transformationウィザードの「Source Types」ダイアログ・ボックスでトランスフォーメーションに選択された変数です。

- 構造的なリンク: 「Expression Variables」ビューの「Structural Link」ノードに表示されている変数は、構造的なリンクによって生成されたXQuery forループに関連付けられているループ反復変数です。
この変数のスコープは、構造的なリンクを持つノードのすべての下位要素です。

式の変数は、次の方法で挿入できます。

- ドラッグ・アンド・ドロップ
「Expression Variables」ビューから変数またはその下位要素をドラッグし、「Constraints」または「Target Expression」ビューにドロップします。

- 「$」を入力し、ポップアップ・メニューから変数を選択します。

1. ドル記号($)を必要なテキスト・フィールドに入力します。たとえば、「$」を「Target Expression」ビューの「General Expression」ペインに入力します。
使用可能な変数の一覧を含むポップアップ・メニューが表示されます。

2. 必要な変数を選択し、フォワード・スラッシュ(/)を入力します。
下位要素がある場合、使用可能な下位要素の一覧を含むポップアップ・メニューが表示されます。

3. 必要な下位要素を選択し、フォワード・スラッシュ(/)を入力します。
さらに下位要素がある場合、使用可能な下位要素の一覧を含むポップアップ・メニューが表示されます。

4. 必要な変数の入力が完了するまで、前の手順を繰り返します。

6.7.8 スキーマ・プロパティの表示

「Design」ビューでXQueryファイルを編集するときに、「Properties」ビューを使用すると、ソースとターゲットのXSDまたはMFLファイルを開かずに、現在のトランスフォーメーション内のノードのスキーマ・プロパティを表示できます。

「Properties」ビューを表示するには、「Window」→「Show View」→「Properties」を選択します。

- 「Source」、「Target」または「Expression Variable」ビューで要素または属性を選択すると、関連するスキーマ・プロパティが「Properties」ビューに表示されます。

- リンクを選択すると、そのリンクのターゲット要素とソース要素のスキーマ・プロパティが「Properties」ビューに表示されます。

- リンクと、そのリンクのターゲット・ノードとソース・ノードを選択解除するには、「Design」ビューの「Source」ペインと「Target」ペインの間にあるペインで空いている場所をクリックします。

注意:

要素または属性のスキーマ・プロパティを変更するには、対応するスキーマ・ファイル(XMLスキーマの場合はXSD、非XMLスキーマの場合はMFL)を編集します。

6.8 オプション要素の出力の制限

データ・トランスフォーメーションのターゲット・スキーマにオプション要素(minOccurs="0")が含まれている場合は、値が存在する場合(つまり、ソースXMLファイルの要素が空でない場合)にのみ出力XMLファイルに要素が含まれるように、要素へのリンクをデザインできます。

次のコード・リストのソースXMLデータがあるとします。

例6-1 オプション要素を含むXMLデータ

<address>
<Address_Line_1>1 Elm Street</Address_Line_1>
<Address_Line_2/>
<City>San Jose</city>
<State>California</State>
<Country>US</Country>
</address>

Address_Line_2要素はオプションであり、空です。Address_Line_2がターゲット・スキーマの対応する要素にマップされた場合は、デフォルトで、出力XMLファイルには空のAddress_Line_2要素が含まれます。

このようなオプション要素の出力を制限するには、次の図のように、リンクを右クリックし、「Remove Empty Node」を選択します。

図6-10 空のノードの削除

リンクの基になるXQueryコードは、トランスフォーメーションの結果の値が空でない場合にのみターゲット要素を生成するif-then-else式に囲まれます。

if-then-else式を削除するには、次の図のように、リンクを右クリックし、「Retain Empty Node」を選択します。

図6-11 空のノードの保持

注意:

「Remove Empty Node」(または「Retain Empty Node」)オプションは、オプションのターゲット要素へのリンクを右クリックした場合にのみ表示されます。

6.9 データ・トランスフォーメーションのテスト

「Design」ビューでXQueryトランスフォーメーションを作成したら、「Test」ビューで予期されたXMLまたは非XML出力が正しく生成されたかどうかをテストできます。

トランスフォーメーションのテストには、自動生成のXMLファイルまたはカスタムのXMLファイルおよび非XMLファイルを使用できます。

6.9.1 「Test」ビューの機能

次の図に、「Test」ビューの機能を示します。

図6-12 「Test」ビュー

- Source Variable

「Source Variables」リストに表示されている変数は、テストするトランスフォーメーションのソースXMLスキーマに基づいています。これらのスキーマのいずれかを選択すると、XMLファイルが自動生成され、表示されます。

注意:

これらのXMLファイルは自動で保存されないため、これらのファイルを保存するには、「Export」アイコンをクリックします。

トランスフォーメーションのテストにカスタムXMLファイル(自動生成XMLファイルのかわり)または非XMLファイル(MFLなど)を使用する場合は、「Import」アイコンをクリックするとファイルをインポートできます。

- Generate Data
「Test」ビューを選択すると、XQuery Mapperによってサンプル・データの初期セットが生成され、「Source Data」ペインに表示されます。

サンプル・データを再生成するには、「Generate Data」をクリックします。たとえば、編集を行った結果、XMLデータが入力スキーマに対して無効になった場合に、新しいサンプル・データでテストをやり直す必要があります。

テスト対象のXQueryに複数のソース型が含まれている場合は、「Source Variable」リストで必要なソース型を選択し、「Generate Data」アイコンをクリックして、各ソース型のサンプル・データを生成できます。

生成されたXMLデータを手動で編集することもできます。

注意:

複合入力スキーマの場合、生成されるXMLデータがスキーマに準拠していないこともあります。検証エラーには、「ソース・データ」タブで黄色の下線が付きます。エラーの上にマウス・ポインタを置くと、エラーの詳細が表示されます。入力スキーマに準拠するように、生成されたXMLデータを修正することができます。

- Import File
XML (または非XML)ファイルのデータをインポートし、そのデータを使用してトランスフォーメーションをテストできます。

また、テスト対象のXQueryに複数のソース型が含まれている場合は、「Source Variable」リストで必要なソース型を選択し、「Import File」アイコンをクリックして、各ソース型のサンプル・データをインポートできます。

「Auto Validate」オプションが選択されている場合は、データをインポートするときに、関連付けられたスキーマに対してデータが検証されます。エラーは黄色い下線で示されます。エラーの上にマウス・ポインタを置くと、エラーの詳細が表示されます。

注意:

グローバル・タイプまたはローカル要素のXMLデータをインポートできますが、グローバル・タイプまたはローカル要素は検証されず、無効なデータのエラーや警告のレポートは生成されません。詳細は、6.11項「XMLのグローバル要素、グローバル型、ローカル要素、および属性」を参照してください。

- Export to File: 「Source Data」ペインのデータまたは「Result Data」ペインのトランスフォーメーションの結果をXMLファイルに保存できます。

- Test XQuery: このオプションを選択すると、「Source Data」ペインのデータに対してXQueryが実行され、「Results Data」ペインにトランスフォーメーションの結果が表示されます。

- デザイン時の検証オプション
「Source Data」ペインの「Auto Validate」オプションと「Result Data」ペインの「Validate」オプションは、ソース・パラメータまたは結果データがXMLグローバル要素の場合にのみ有効になります。

次のデータ型の場合、検証オプションは無効です。

- 型なし非XML

注意:

型なしの非XML (ロー)データはデータ・トランスフォーメーションで一切使用できません。

- XMLグローバル型

- XMLローカル要素

詳細は、6.11項「XMLのグローバル要素、グローバル型、ローカル要素、および属性」を参照してください。

「Auto Validate」オプションを選択すると、データが変更されるたびにソース・データがソース・スキーマに対して自動的に検証されます。

「Validate」オプションを使用すると、トランスフォーメーションの結果をターゲット・スキーマに対して検証できます。

注意:

「テスト」ビューでデザイン時に行う検証は、実行時に行われるスキーマ検証とは異なります。デザイン時の検証では結果のXMLドキュメントは変更されません。ただし、スキーマで要求される要素および属性の定義に関するチェックが行われます。

6.9.1.1 関連項目

5.2.1項「XQueryのテスト・ビューに適用される制限」

6.10 「Design」ビューのグラフィカルな機能

この項では、XQuery Mapperのグラフィカルな機能や、XQuery Mapperの「Design」ビューのグラフィカルな表現を使用するために役立つ情報について説明します。

6.10.1 右クリック・メニュー・オプション

次の表に、リンクまたは要素を右クリックしたときにXQuery Mapperの「Design」ビューで使用できるオプションの一覧を示します。

表6-3 右クリック・メニュー・オプション

メニュー・オプション

表示するには

結果

View Code

任意のリンクまたはターゲット要素を右クリックします。

「Source」ビューに表示が切り替わり、リンクのXQueryコードが選択されます。

Create Constant

任意の単純型のターゲット要素を右クリックします。

ターゲット要素に定数値を割り当てます。

「ターゲット・ノードの無効化」

任意のリンクまたはターゲット要素を右クリックします。

選択したリンクのXQueryコードの周りにブロック用のXQueryコードが追加されます。ブロック・コードによって実行時にリンクのXQueryコードが実行されなくなります。

注意: 「Disable Target Node」メニュー・オプションはターゲット型のルート・ノードでは使用できません。

「ターゲット・ノードの有効化」

無効なリンクまたはターゲット要素を右クリックします。

選択したリンクからブロック用のXQueryコードが削除されて、実行時にリンクのXQueryコードが実行されます。

「空のノードの削除」

オプションのターゲット要素へのリンクを右クリックします。

トランスフォーメーションの結果の値が空でない場合にのみターゲット要素を生成するif-then-else式でリンクが囲まれます。

「空のノードの保持」

すでに「Remove Empty Node」オプションが選択されている(オプションのターゲット要素への)リンクを右クリックします。

トランスフォーメーションの結果の値が空でない場合にのみターゲット要素を生成するif-then-else式を削除します。

「ワイルドカード・ノードの再定義」

ソースまたはターゲットのワイルドカード要素(any型)を右クリックします。

ワイルドカード要素の特定のデータ型を指定します。

注意: ワイルドカード・ノードを再定義(つまり、特定のデータ型を定義)した後に、[Ctrl]+[Z]を使用してany型に戻すことはできません。

「ワイルドカード・ノードに戻す」

すでに「Redefine Wildcard Node」オプションを使用して特定のデータ型を指定した、ソースまたはターゲットのワイルドカード要素(any型)を右クリックします。

要素のデータ型が以前指定した特定の型からワイルドカード(any型)に変更されます。

Induce Map

構造的なリンクを右クリックします。

リンクのソースおよびターゲットの子要素が同じサブスキーマ型を持つ場合、選択した構造的なリンクの子ノード間にデータ・リンクまたはデータの構造的なリンクが作成されます。

注意: 「Induce Map」オプションで子リンクを作成するには、ターゲットとソースの子要素が同じ名前とデータ型を持ち、同じ順序である必要があります。

Delete Link

任意のリンクを右クリックします。

- 「Design」ビュー: リンクが削除されます。

- 「Source」ビュー: リンクの基になるXQueryコードが削除されます。

「すべてのリンクを削除」

「Source」ペインと「Target」ペインの間にあるペインの空いている場所を右クリックします。

- 「Design」ビュー: ソースとターゲットの要素/属性の間にあるトランスフォーメーションを表す線が削除されます。

- 「Source」ビュー: 生成されたXQueryコードが削除されます。

注意: 「Source」ペインと「Target」ペインの間にあるペインの空いている場所を右クリックすると、すべてのノードの選択が解除されます。

6.10.2 リンクのパターン

XQuery Mapperでは、リンクの異なる種類を区別しやすくするため、様々な色とパターンのリンクが表示されます。次の表に、XQuery Mapperで作成されるリンクのグラフィカルな表現を示します。

表6-4 リンクのパターン

リンクのタイプ

説明

表現

データ・リンク

ソース・ノードの値をターゲット・ノードの値に直接変換するリンク。

リンクが選択されていません。

リンクが選択されています。

暗黙的なリンク

基になるXQueryコードが変更されたデータ・リンク。

XQueryコードがXQuery Mapperによって解釈できないリンク。

例:

- 「Target Expression」ビューの「General Expression」セクションを使用して、fn:upper-case XQuery関数を挿入したリンク。

- 2つの構造的なリンクのセットに和集合の制約が適用された場合に、2番目の子ノードのセット間に生成されるデータ・リンク。子ノードは同じサブスキーマのものでなければなりません。

リンクが選択されていません。

リンクが選択されています。

構造的なリンク

データを直接マップしない、2つの親構造の間のリンク。

リンクが選択されていません。

リンクが選択されています。

データ構造的なリンク

データの構造的なリンクは、データ・リンクと構造的なリンクを組み合せたものです。

例: 反復要素のオプションの子要素の間のリンク。

リンクが選択されていません。

リンクが選択されています。

制約リンク

ソースの親構造間の結合の結果データに制約や制限を付けるリンク。制約リンクは2つのソース・ノードで作成されます。

例: 特定のソース要素の値が互いに等しい場合にのみデータを返す2つのソース反復要素の結合。

リンクが選択されていません。

リンクが選択されています。

コピー・リンク

2つの同一のスキーマ・サブ構造の間のリンク。実行時に、ソース・データはターゲット・データにブロックごと直接コピーされます。

型なしのXMLノードと型付きのXML複合型ノードの間のマッピングを行うと、コピー・リンクも生成されます。

リンクが選択されていません。

リンクが選択されています。

6.10.3 リンクの色

「Source」ペインのノードを「Target」 ペインにドラッグすると、2つのノードの間に一時的なリンク(破線)が表示されます。線の色は、ソース・ノードとターゲット・ノードの間の互換性によって変わります。

- 赤色: ソース・ノードとターゲット・ノードの間にリンクは作成できません。これは、ターゲット・ノードのデータ型をソース・ノードのデータ型に変換できないためです。たとえば、データ型がXML Stringであるノードは、反復するXMLノードに変換できません。ソース・ノードをターゲット・ノードにドラッグすると、エラー・メッセージが表示されます。

- オレンジ色: ソース・ノードとターゲット・ノードの間にリンクを作成できますが、データ型に完全な互換性はありません。ソース・ノードをターゲット・ノードにドラッグすると、非互換性または必要な変換を示す警告メッセージが表示されます。

- 緑色: ソース・ノードとターゲット・ノードの間にリンクを作成できます。ターゲット・ノードのデータ型は、ソース・ノードのデータ型と互換性があります。

リンクの作成が完了すると、ターゲット・ノードとソース・ノードに応じて、破線または実線が表示されます。

6.11 XMLのグローバル要素、グローバル型、ローカル要素、および属性

XMLスキーマ型または要素は、schema要素の直接の子である場合はグローバル、schema要素の直接の子でない場合(他の要素にネストされている場合)はローカルと見なされます。

次のXMLスキーマの例で、この違いを示します。

例6-2 グローバル要素とローカル要素を含むXMLスキーマ

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.acme.org/globalExample"
xmlns="http://www.acme.org/globalExample"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="globalElement">
<xs:complexType>
<xs:sequence>
<xs:element name="localElement"
minOccurs="1" maxOccurs="1"
type="xs:string" />
</xs:sequence>
<xs:attribute name="attribute"
type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="globalType">
<xs:sequence>
<xs:element name="anotherLocalElement"
minOccurs="0" maxOccurs="unbounded"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>

上のXMLスキーマの例では、globalElementはschema要素の直接の子であるためグローバルです。localElementはglobalElementの子であるためローカルです。

上のXMLスキーマの下のほうにあるglobalType要素のように、グローバル・タイプを定義することもできます。XMLスキーマに含めることのできるグローバル要素は1つだけですが、単一のXMLスキーマ内に同じグローバル・タイプを持つ複数の要素を(異なる名前で)宣言できます。

表6-5に、これらの異なるXML構成要素のXQuery Mapperにおけるグラフィカルな表現を示します。

表6-5 XML構成要素のグラフィカルな表現

構成要素

グラフィカルな表現

上記のXMLスキーマ例での名前

グローバル要素

globalElement

ローカル要素

localElement

グローバル型

globalType

属性

globalElementに定義されているattribute

7 例: XQuery Mapperを使用したデータ・トランスフォーメーション

この章では、XQuery Mapperでデータ・トランスフォーメーションを実行するためのチュートリアルを示します。

ここで説明している例は、プロジェクトに含まれているサンプル・プロジェクトに基づいています。サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

次のシナリオの例が用意されています。

- 7.1項「異なるスキーマからのデータの結合」

- 7.2項「反復する要素のマップと結合の作成」

- 7.3項「和集合の作成」

- 7.4項「反復ソースと非反復ターゲットの間のトランスフォーメーションの作成」

- 7.5項「非反復ソースと反復ターゲットの間のトランスフォーメーションの作成」

- 7.6項「ネストされたIf-Then-Else式の作成」

- 7.7項「FLWOR式の作成」

- 7.8項「再帰的なスキーマの使用」

- 7.9項「キー・フィールドによるデータのグループ」

7.1 異なるスキーマからのデータの結合

次の図のように、XQuery Mapperを使用して、2つの異なるスキーマのコンテンツを結合できます。

図7-1 異なるスキーマからのデータ結合

この例では、(CustInfo.xsdで有効な)顧客データが(PO.xsdで有効な)反復する要素line-itemsと結合されて、POCustInfo.xsdスキーマに対して有効な単一のXMLドキュメントになります。

1. Eclipseを起動して、サンプル・プロジェクトを開きます。

- Eclipseの起動の詳細は、6.1項「XQuery Mapperの起動」を参照してください。

- サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

2. [ XQuery Transformations ]フォルダを右クリックします。

3. 「New」→「XQuery Transformation」を選択します。

4. 親フォルダの名前を確認します。この例では、親フォルダは/XQuery Transformation/XQueryTransformationsです。

5. ファイル名として「combineData」と入力し、「Next」をクリックします。

6. 次のソース要素を選択し、「Next」をクリックします。

- CustInfo.xsd\customer

- PO.xsd\purchase-order

7. ターゲット要素としてPOCustInfo.xsd\purchase-orderを選択し、「Finish」をクリックします。
/XQuery Transformation/XQueryTransformationsフォルダに、combineData.xqファイルが作成されます。

次の図のように、選択したソースとターゲットの要素が「Design」ビューに表示されます。

図7-2 XQueryトランスフォーメーションの「Design」ビュー

8. 「Source」ペインの要素を「Target」ペインにドラッグして、次のソース要素とターゲット要素の間のリンクを作成します。

ソース要素

リンクのイメージ

ターゲット要素

customer1

purchase-order\customer

customer1\customer-id

purchase-order\customer\customer-id

customer1\customer-name

purchase-order\customer\customer-name

customer1\customer-address

purchase-order\customer\customer-address

purchase_order1\line-items\line-item

purchase-order\line-items\line-item

purchase-order1\line-items\line-item\part-no

purchase-order\line-items\line-item\part-no

purchase-order1\line-items\line-item\quantity

purchase-order\line-items\line-item\quantity

注意:

破線は 構造的な リンクを表します。このリンクは、データを直接マップせず、親構造間に作成されます。

実線は データ リンクを表します。このリンクは、ソース・ノードの値をターゲット・ノードの値に直接変換します。

詳細は、6.10項「「Design」ビューのグラフィカルな機能」を参照してください。

ソース要素とターゲット要素の間のリンクが、次の図のように示されます。

図7-3 「デザイン」ビューのデータ・トランスフォーメーション

9. 変更を保存します。

XQueryトランスフォーメーションのテストの詳細は、6.9項「データ・トランスフォーメーションのテスト」を参照してください。

7.2 反復する要素のマップと結合の作成

異なるスキーマ(この例では、PriceQuote.xsd、AvailableQuote.xsd、およびtaxrate.xsd)に対して有効なXMLファイルのデータを結合し、単一のスキーマQuote.xsdに対して有効なファイルを作成します。

この例では、次の手順を示します。

- 7.2.1項「ステップ1. XQueryファイルの作成」

- 7.2.2項「ステップ2. 制約の追加」

- 7.2.3項「ステップ3. 要素を返すデータの追加」

- 7.2.4項「ステップ4. 見積り値を計算する関数の追加」

- 7.2.5項「ステップ5. 複数の条件を持つ制約の追加」

- 7.2.6項「XQueryのテスト」

7.2.1 ステップ1. XQueryファイルの作成

この手順では、AvailQuote.xsd、PriceQuote.xsdおよびtaxrate.xsdスキーマを使用して、XQueryトランスフォーメーションを作成します。その後、複数のpriceQuoteおよびavailRequestソース要素を対応するターゲット要素にマップします。

1. Eclipseを起動して、サンプル・プロジェクトを開きます。

- Eclipseの起動の詳細は、6.1項「XQuery Mapperの起動」を参照してください。

- サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

2. 「XQuery Transformations」フォルダを右クリックします。

3. 「New」→「XQuery Transformation」を選択します。

4. 親フォルダの名前を確認します。この例では、親フォルダは/XQuery Transformation/XQueryTransformationsです。

5. ファイル名として「Join」と入力し、「Next」をクリックします。

6. 次のソース要素を選択し、「Next」をクリックします。

- PriceQuote.xsd\priceQuote

- PriceQuote.xsd\taxRate

- AvailQuote.xsd\availRequest

7. ターゲット要素としてQuote.xsd\quoteを選択し、「Finish」をクリックします。
XQueryTransformation/XQueryTransformationsフォルダにJoin.xqファイルが作成されます。

8. 「Source」ペインの要素を「Target」ペインにドラッグして、次のソース要素とターゲット要素の間のリンクを作成します。

ソース要素

ターゲット要素

priceQuote1\customerName

quote\name

priceQuote1\shipAddress\street

quote\address

priceQuote1\shipAddress\city

quote\address

priceQuote1\shipAddress\state

quote\address

priceQuote1\shipAddress\zip

quote\address

priceQuote1\priceRequests\priceRequest

quote\quoteResponse

availRequest1

quote\quoteResponse

次の図のようなリンクが表示されます。

図7-4 「デザイン」ビューのデータ・トランスフォーメーション

9. 変更を保存します。

7.2.2 ステップ2. 制約の追加

priceQuote/priceRequestsおよびavailRequestソース要素は、共通の要素widgetIdを共有しています。この手順では、availRequestスキーマのwidgetIdがpriceQuote/priceRequests要素のwidgetIdと等しい場合に、問合せがターゲット反復要素quoteResponseを返す必要のある制限を追加します。

1. 「Design」ビューでJoin.xqを開きます。

2. 「Source」ペインのpriceQuote1/priceRequests/priceRequest/widgetId要素をドラッグし、「Source」ペインのavailRequest1/widgetId要素にドロップします。
次の図のように、 「Source」ペインの2つのwidgetIdノードの間を結ぶ線が表示されます。

図7-5 制約の追加

3. 変更を保存します。

4. 「Source」ビューで変更を確認します。
2つのwidgetIdノードの間のリンクはforループのwhere句で表されます。where句は、where句がtrueの場合にのみforループで式の結果が返される必要があることを指定します。この例では、availRequest要素のwidgetIdがpriceRequest要素のwidgetIdと等しい場合にのみ、quoteResponse要素で指定されたXMLデータが式によって返されます。

注意:

[制約]ビューでwhere句を表示することもできます。

現在、quoteResponse要素は空です。次の手順で要素のコンテンツを追加します。

7.2.3 ステップ3. 要素を返すデータの追加

この手順では、quoteResponseターゲット要素にデータ・リンクを追加します。

「Design」ビューでJoin.xqを開き、次のソース要素とターゲット要素の間のリンクを作成します。

ソース要素

ターゲット要素

priceQuote1\priceRequests\priceRequest\widgetid

quote\quoteResponse\widgetid

priceQuote1\priceRequests\priceRequest\price

quote\quoteResponse\unitprice

availRequest1\requestedQuantity

quote\quoteResponse\requestedQuantity

availRequest1\quantityAvail

quote\quoteResponse\fillOrder

availRequest1\shipDate

quote\quoteResponse\shipDate

ソース要素とターゲット要素の間のリンクが、次の図のように示されます。

図7-6 QuoteResponse要素のデータの追加

7.2.4 ステップ4. 見積り値を計算する関数の追加

この手順では、見積りの合計値を計算する関数を追加します。

1. 「Source」ビューでJoin.xqファイルを開きます。

2. ソース・コードのネームスペース宣言とJoin関数呼出しの間の任意の場所に、次の関数定義を挿入します。たとえば、Join関数宣言の直前に挿入できます。

例7-1 calculateTotalPrice関数

declare function xf:calculateTotalPrice(
$taxRate as xs:float,
$quantity as xs:float,
$price as xs:float)
as xs:float {
let $taxQuantity := ($taxRate * $quantity)
let $totalTax := ($taxQuantity * $price)
let $costNoTax := ($quantity * $price)
let $totalCost := ($totalTax + $costNoTax)
return $totalCost
};

3. 「Design」ビューに切り替えます。

注意:

Join.xqには2つの関数宣言calculateTotalPriceおよびJoinが含まれるようになります。XQueryファイルに複数の関数が含まれる場合は、XQファイルと同じ名前の関数が「Design」ビューに表示されます。この場合、Join関数が「Design」ビューに表示されます。

4. 「Target」ペインで、totalCostノードを選択します。次の手順に向けて、このノードを選択したままにしておきます。

5. 「Target Expression」ビューを選択し、「General」オプションを選択します。

6. 「General Expression」ペインに次のコードを挿入します。

xf:calculateTotalPrice($taxRate1,$availRequest/ns1:requestedQuanity,$priceRequest/ns0:price)

7. 「Apply」をクリックします。
式がXQueryのtotalCost要素に追加されます。

8. 変更を保存します。
「Design」ビューにtotalCostターゲット要素の計算が表示されます。

図7-7 「Design」ビューでのtotalCostの計算

7.2.5 ステップ5. 複数の条件を持つ制約の追加

「Constraints」ビューの「Where Clause」ペインを使用して制約を作成すると、XQueryで返されるターゲット反復要素を制限できます。実行時には、where句の条件を満たす反復要素のみがXQueryのforループで反復処理されます。

この手順では、forループのwhere句に別の条件を追加して(つまり、複合条件となる)、forループで返されるデータをさらに制限します。

1. join.xqファイルを開きます。

2. 「Design」ビューで、availRequest1ソース要素とquote\quoteResponseターゲット要素の間のリンクを選択します。
where句を構成する1つの条件が「Constraints」ビューの「Where Clause」ペインに表示されます。

data($priceRequest/ns0:widgetId) = data($availRequest/ns1:widgetId)

3. 「Source」ペインのavailRequest1/requestedQuanity要素をドラッグし、「Where Clause」ペインの「Left Hand Expression」領域にドロップします。
where句に、次の左辺の式が作成されます。

data($availRequest/ns1:requestedQuanity)

4. <演算子を選択します。

5. 「Where Clause」ペインの「Right Hand Expression」領域にあるテキストを削除し、「"50"」と入力します。

注意:

引用符で囲まれた数字50を入力します(50ではなく、"50")。

6. 「Join Type」フィールドから「AND」オプションを選択します。
「Join Type」は、where句を構成する条件が実行時に評価される方法を決定します。

7. 「Add」をクリックします。forループのwhere句に、2つ目の条件が追加されます。

8. 変更を保存します。
この手順により、次のwhere句の作成が完了します。

例7-2 where句

where (data($availRequest/ns1:widgetId) = data($priceRequest/ns0:widgetId)
and data($availRequest/ns1:requestedQuanity) < "50")

7.2.6 XQueryのテスト

次の手順を実行して、where句の条件が両方とも満たされた場合にXQueryが動作することを確認します。

1. 「Test」ビューに切り替えます。

2. 「Test」ビューの「Source Data」ペインで、「Source Variable」フィールドのpriceQuoteを選択し、「Generate Data」アイコンをクリックします。

3. テストXMLデータのwidgetId要素の値を書き留めておきます。

<ns0:widgetId>value</ns0:widgetId>

4. 「Source Data」ペインで、「Source Variable」フィールドのavailRequestを選択し、「Generate Data」アイコンをクリックします。

5. テストXMLデータpriceQuoteに表示された値と一致するように、テストXMLデータのwidgetId要素の値を編集します。

<ns0:widgetId>value</ns0:widgetId>

6. requestedQuanity要素を探し、50より小さい数に値を編集します。
例: <ns0:requestedQuanity>25</ns0:requestedQuanity>

7. 「Result Data」ペインで、「Test XQuery」アイコンをクリックし、XQueryの結果を表示します。

7.3 和集合の作成

この例では、「Constraints」ビューの「Union」オプションを使用して、同じ型のデータを大きなデータ・セットにマップするXQueryを作成します。

1. Eclipseを起動して、サンプル・プロジェクトを開きます。

- Eclipseの起動の詳細は、6.1項「XQuery Mapperの起動」を参照してください。

- サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

2. 「XQuery Transformations」フォルダを右クリックします。

3. 「New」→「XQuery Transformation」を選択します。

4. 親フォルダの名前を確認します。この例では、親フォルダは/XQuery Transformation/XQueryTransformationsです。

5. ファイル名として「union」と入力し、「Next」をクリックします。

6. 「Source Types」ダイアログ・ボックスで、PO.xsd\purchase-orderを2回選択し、「Next」をクリックします。

注意:

同じ要素を2回以上追加するには、パラメータ名を変更する必要があります。

7. ターゲット型としてOrder.xsd\orderを選択し、「Finish」をクリックします。
union.xqファイルが作成されます。

8. 次のソース要素とターゲット要素の間のリンクを作成します。

ソース要素

ターゲット要素

purchase-order1\line-items\line-item

order\items\item

purchase-order2\line-items\line-item

order\items\item

「Design」ビューに、次のリンクが表示されます。

図7-8 和集合の作成

9. $purchase-order1/line-items/line-itemソース要素とorder/items/itemターゲット要素の間のリンクを選択します。

10. 「Constraints」ビューの「Constraint Type」ペインで、「Union」を選択します。

11. 次のソース要素とターゲット要素の間のリンクを作成します。

ソース要素

ターゲット要素

purchase-order1\line-items\part-no

order\items\item\part-number

purchase-order1\line-items\quantity

order\items\item\quantity-number

注意:

同じ名前のソース要素とターゲット要素の間にリンクを作成するには、手動でリンクを作成するかわりに、「Induce Map」オプションを使用できます。詳細は、6.10.1項「右クリック・メニュー・オプション」を参照してください。

2つの構造的なリンクには和集合の制約が適用されているため、図7-9に示すように、下位要素の2番目のセット間に暗黙的なデータ・リンクが生成されます。灰色の実線は、制約の種類として「Union」を選択して作成された暗黙的なリンクを示します。

図7-9 暗黙的なリンクの作成

12. 変更を保存します。

XQueryトランスフォーメーションのテストの詳細は、6.9項「データ・トランスフォーメーションのテスト」を参照してください。

7.4 反復ソースと非反復ターゲットの間のトランスフォーメーションの作成

この例では、反復するソースXML要素を、反復しないターゲットXML要素にマップします。

次の図に、この例で作成したトランスフォーメーションを示します。

図7-10 反復ソースから非反復ターゲットへのトランスフォーメーション

1. Eclipseを起動して、サンプル・プロジェクトを開きます。

- Eclipseの起動の詳細は、6.1項「XQuery Mapperの起動」を参照してください。

- サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

2. 「XQuery Transformations」フォルダを右クリックします。

3. 「New」→「XQuery Transformation」を選択します。

4. 親フォルダの名前を確認します。この例では、親フォルダは/XQuery Transformation/XQueryTransformationsです。

5. ファイル名として「repeatToNonRepeat」と入力し、「Next」をクリックします。

6. ソース・スキーマとしてDates.xsd\datesを選択し、「Next」をクリックします。

7. ターゲット・スキーマとしてPODate.xsd\PODateを選択し、「Finish」をクリックします。
次の図のように、 repeatToNonRepeat.xq ファイルが作成され、表示されます。

図7-11 反復ソースから非反復ターゲットへのデータ・トランスフォーメーション

8. 「Source」ペインのdates1/date反復要素と「Target」ペインのPODate/billing-date要素の間のリンクを作成します。
次の手順に向けて、このリンクを選択したままにしておきます。

9. 「Constraints」ビューを選択します。

10. 「Source」ペインのdates1/date/type要素を「Constraints」ビューの「Where Clause」ペインの「Left Hand Expression」領域にドラッグします。

11. =演算子を選択します。

12. 「Right Hand Expression」領域で、(引用符も含めて)「"BILLING"」と入力し、「Add」をクリックします。

13. 「Source」ペインのdates1/date/value要素と「Target」ペインのPODate/billing-date要素の間のリンクを作成します。
前の手順で作成した制約により、XMLドキュメントのdates1/date/type要素の値が値「"BILLING"」と比較するように指定されます。

実行時は、dates1/date/type要素の値が「"BILLING"」である場合に、XQueryでdates1/date/valueの値がbilling-dateの値として返されます。

14. 「Source」ペインのdates1/date反復要素と「Target」ペインのPODate/delivery-date要素の間のリンクを作成します。
次の手順に向けて、このリンクを選択したままにしておきます。

15. 「Source」ペインのdates1/date/type要素を「Constraints」ビューの「Where Clause」ペインの「Left Hand Expression」領域にドラッグします。

16. =演算子を選択します。

17. 「Right Hand Expression」領域で、(引用符も含めて)「"DELIVERY"」と入力し、「Add」をクリックします。

18. 「Source」ペインのdates1/date/value反復要素と「Target」ペインのPODate/delivery-date要素の間のリンクを作成します。
前の手順で作成した制約により、XMLドキュメントのdates1/date/type要素の値が値「"DELIVERY"」と比較するように指定されます。

実行時は、dates1/date/type要素の値が「"DELIVERY"」である場合に、XQueryでdates1/date/valueの値がdelivery-dateの値として返されます。

図7-12 反復ソースから非反復ターゲットへのデータ・トランスフォーメーション

19. 変更を保存します。

XQueryファイルのテストの詳細は、6.9項「データ・トランスフォーメーションのテスト」を参照してください。

7.5 非反復ソースと反復ターゲットの間のトランスフォーメーションの作成

この例では、反復しないソース要素を、反復するターゲット要素にマップします。

次の図に、この例で作成したトランスフォーメーションを示します。

図7-13 非反復ソースから反復ターゲットへのトランスフォーメーション

1. Eclipseを起動して、サンプル・プロジェクトを開きます。

- Eclipseの起動の詳細は、6.1項「XQuery Mapperの起動」を参照してください。

- サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

2. 「XQuery Transformations」フォルダを右クリックします。

3. 「New」→「XQuery Transformation」を選択します。

4. 親フォルダの名前を確認します。この例では、親フォルダは/XQuery Transformation/XQueryTransformationsです。

5. ファイル名として「nonRepeatToRepeat」と入力し、「Next」をクリックします。

6. ソース・スキーマとしてPODate.xsd\PODateを選択し、「Next」をクリックします。

7. ターゲット・スキーマとしてDates.xsd\datesを選択し、「Finish」をクリックします。

8. 「Design」ビューに、nonRepeatToRepeat.xqファイルが作成され、表示されます。

9. 次のソース要素とターゲット要素の間のリンクを作成します。

ソース要素

ターゲット要素

pODate1/billing-date

dates/date

pODate1/delivery-date

dates/date

次の例は、生成されるXQueryコードを示します。

<ns1:dates>
{
for $PODate in $PODate1/ns0:billing-date union $PODate1/ns0:delivery-date
return
<ns1:date/>
}
</ns1:dates>

実行時に、forループが2回実行されます。最初の実行時に、反復変数$PODateは和集合の最初の要素$PODate1/ns0:billing-dateと等しくなります。2回目の実行では、$PODateは$PODate1/ns0:delivery-dateと等しくなります。

XQueryはタグ<ns1:date/>を持つ2つの空XML要素を返します。

以降の手順では、請求日と納期を問合せに返すXQueryコードを追加します。

10. 「Design」ビューに切り替えます。

11. pODate1/billing-dateソース要素と「Target」ペインのdates/valueターゲット要素の間のリンクを作成します。
次の図のように、2つのデータ・リンクが作成されます。

図7-14 構造的なリンクの結合の作成

pODate1/billing-dateからdates/valueへのリンクを作成したときに、次の構造的なリンクが結合されています。

- pODate1/billing-dateからdates/date

- pODate1/delivery-dateからdates/date

pODate1/delivery-date要素とdates/value要素の間の2番目のデータ・リンクが自動的に作成されます。

12. pODate1/billing-dateソース要素とdates/typeターゲット要素の間のリンクを作成します。
2つのデータ・リンクが作成されます。

次の手順に向けて、pODate1/billing-dateからdates/typeへのリンクを選択したままにしておきます。

13. 「Target Expression」ビューを選択します。

14. 「If Then Else」オプションを選択します。
次のXQuery if-then-else式がリンクに追加されます。

if (fn:boolean("true")) then
data($PODate)
else
()

15. この手順では、if-then-else式のifセクションの条件を追加します。

1. 「Expression Structure」領域で「If Condition」を選択します。
「Edit If Condition」ペインが表示されます。

2. 「Expression Functions」ビューで、「Node Functions」を展開します。

3. local-name関数を、「Edit If Condition」ペインの「Left Hand Expression」領域にドラッグします。関数の$node-var引数を選択したままにしておきます。

4. 「Expression Variables」ビューを選択します。

5. PODate構造リンク変数を、「Edit If Condition」ペインの「Left Hand Expression」領域のlocal-name関数の$node-var引数にドラッグします。

6. =演算子を選択します。

7. 「Edit If Condition」ペインの「Right Hand Expression」領域で、(引用符も含めて)「"billing-date"」と入力し、「Add」をクリックします。
if-then-else式のifセクションに、次の条件が追加されます。

fn:local-name($PODate)="billing-date"

16. 「Expression Structure」領域で「Then Expression」を選択します。
「Edit Then Condition」ペインが表示されます。

17. 既存のテキストを(引用符も含めて)「"BILLING"」で置き換え、「Apply」アイコンをクリックします。

18. 「Expression Structure」領域で「Else Expression」を選択します。
「Edit Else Condition」ペインが表示されます。

19. 既存のテキストを(引用符も含めて)「"DELIVERY"」で置き換え、「Apply」アイコンをクリックします。

20. 「Expression Structure」領域で「If Then Else」を選択します。
「Expression Structure」ペインに、次のXQueryコードが表示されます。

if (fn:local-name($PODate) = "billing-date") then
"BILLING"
else
"DELIVERY"

21. 変更を保存します。

XQueryファイルのテストの詳細は、6.9項「データ・トランスフォーメーションのテスト」を参照してください。

7.6 ネストされたIf-Then-Else式の作成

この例では、ウィジェットIDと州税率に基づいて価格を計算するXQueryトランスフォーメーションを作成します。次のロジックを表すif-then-else式を作成します。

- ウィジェットIDが0 - 200の場合は、価格が$10.00

- ウィジェットIDが201 - 400の場合は、価格が$20.00

- ウィジェットIDが401 - 600の場合は、価格が$30.00

この例では、次の手順を示します。

- 7.6.1項「ステップ1. XQueryトランスフォーメーションの作成」

- 7.6.2項「ステップ2. 最初の「If」条件の作成」

- 7.6.3項「ステップ3. 最初のネストされたIf-Then-Else条件の作成」

- 7.6.4項「ステップ4. 2つ目のネストされたIf-Then-Else条件の作成」

7.6.1 ステップ1. XQueryトランスフォーメーションの作成

この手順では、 PurchaseAgree.xsd および Supplier.xsd スキーマを使用してXQueryトランスフォーメーションを作成します。

1. Eclipseを起動して、サンプル・プロジェクトを開きます。

- Eclipseの起動の詳細は、6.1項「XQuery Mapperの起動」を参照してください。

- サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

2. 「XQuery Transformations」フォルダを右クリックします。

3. 「New」→「XQuery Transformation」を選択します。

4. 親フォルダの名前を確認します。この例では、親フォルダは/XQuery Transformation/XQueryTransformationsです。

5. ファイル名として「ifthenelse」と入力し、「Next」をクリックします。

6. ソース型としてSupplier.xsd\Supplierを選択し、「Next」をクリックします。

7. ターゲット型としてPurchaseAgree.xsd\PurchaseOrderを選択し、「Finish」をクリックします。
ifThenElse.xqファイルが作成されます。

8. 次のソース要素とターゲット要素の間のリンクを作成します。

ソース要素

ターゲット要素

supplier1/products/product

PurchaseOrder/products/product

supplier1/products/product/price

PurchaseOrder/products/product/price

次の図のようなリンクが表示されます。

図7-15 If-Then-ElseサンプルのXQueryトランスフォーメーション

7.6.2 ステップ2. 最初の「If」条件の作成

この手順では、ウィジェットIDが0 - 200の場合に価格を$10.00に指定するIf式を作成します。

1. supplier1/products/product/priceソース要素とPurchaseOrder/products/product/priceターゲット要素の間のリンクを選択します。

2. 「Target Expression」ビューを選択します。

3. 「If Then Else」の式タイプを選択します。

4. 「Expression Structure」ペインで、「If Condition」を選択します。
「Edit If Condition」ペインが表示されます。

5. 「Source」ペインのsupplier1\products\product\widgetID要素をドラッグし、「Left Hand Expression」ペインにドロップします。

6. >=演算子を選択します。

7. 「Right Hand Expression」ペインで、(引用符も含めて)「"0"」と入力し、「Add」をクリックします。

8. <=演算子を選択します。

9. 「Right Hand Expression」ペインで、「"200"」と入力します。

10. 「Update」ボタンの横の矢印をクリックし、「Add」を選択します。

11. 「Expression Structure」ペインで、「Then Condition」を選択します。
「Edit Then Condition」ペインが表示されます。

12. 「Edit Then Expression」ペインで、既存のデータを削除し、「"$10.00"」と入力します。

13. 「Apply」アイコンをクリックします。

14. 「Expression Structure」ペインで、「If Then Else」を選択します。
次のコード・リストに示すようなif-then式が表示されます。

例7-3 If-Then式

if ((xs:string(data($product/ns0:widgetId)) >= "0"
and xs:string(data($product/ns0:widgetId)) <= "200")) then
"$10.00"
else
()

7.6.3 ステップ3. 最初のネストされたIf-Then-Else条件の作成

この手順では、ウィジェットIDが201 - 400の場合に価格を$20.00にするネストされたIf式を作成します。このためには、前の手順で作成したElse式の内部にネストされたif-then-else式を挿入します。

1. 「Expression Structure」ペインで、「Else Expression」を右クリックし、「Insert Nested If-Then-Else」を選択します。

2. ネストされた「If-Then-Else」式で、「If Condition」を選択します。

3. 「Source」ペインのwidgetID要素をドラッグし、「Left Hand Expression」ペインにドロップします。

4. >=演算子を選択します。

5. 「Right Hand Expression」ペインで、(引用符も含めて)「"201"」と入力し、「Add」をクリックします。

6. <=演算子を選択します。

7. 「Right Hand Expression」ペインで、「"400"」と入力します。

8. 「Update」ボタンの横の矢印をクリックし、「Add」を選択します。

9. 「Expression Structure」ペインで、「Then Expression」を選択します。

10. 「Edit Then Expression」ペインで、「"$20.00"」と入力します。

11. 「Apply」アイコンをクリックします。

12. 「Expression Structure」ペインで、「If Then Else」を選択します。
次のコード・リストに示すようなif-then-else式が表示されます。

例7-4 ネストされたIf-Then-Else式

if ((xs:string(data($product/ns0:widgetId)) >= "0"
and xs:string(data($product/ns0:widgetId)) <= "200")) then
"$10.00"
else
if ((xs:string(data($product/ns0:widgetId)) >= "201"
and xs:string(data($product/ns0:widgetId)) <= "400")) then
"$20.00"
else
()

7.6.4 ステップ4. 2つ目のネストされたIf-Then-Else条件の作成

この手順では、ウィジェットIDが401 - 600の場合に価格を$30.00にするネストされたIf式を作成します。このためには、前の手順で作成したElse式の内部にネストされたif-then-else式を挿入します。

1. 「Expression Structure」ペインで、ネストされたif-then-else式のElse句を選択します。この句は、7.6.3項「ステップ3.最初のネストされたIf-Then-Else条件の作成」で作成されています。

2. 右クリックし、「Insert Nested If-Then-Else」を選択します。

3. 作成したばかりのネストされたif-then-else式のIf条件を選択します。

4. 「Source」ペインのwidgetIDをドラッグし、「Left Hand Expression」ペインにドロップします。

5. >=演算子を選択します。

6. 「Right Hand Expression」ペインで、「"401"」と入力し、「Add」をクリックします。

7. <=演算子を選択します。

8. 「Right Hand Expression」ペインで、「"600"」と入力し、「Add」をクリックします。

9. 「Expression Structure」ペインで、「Then Expression」を選択します。

10. 「Edit Then Expression」ペインで、「"$30.00"」と入力し、「Apply」アイコンをクリックします。

11. 「Expression Structure」ペインで、「If Then Else」を選択します。
次のコード・リストに示すようなネストされたif-then-else式が表示されます。

例7-5 ネストされたIf-Then-Else式

if ((xs:string(data($product/ns0:widgetId)) >= "0"
and xs:string(data($product/ns0:widgetId)) <= "200")) then
"$10.00"
else
if ((xs:string(data($product/ns0:widgetId)) >= "201"
and xs:string(data($product/ns0:widgetId)) <= "400")) then
"$20.00"
else
if ((xs:string(data($product/ns0:widgetId)) >= "401"
and xs:string(data($product/ns0:widgetId)) <= "600")) then
"$30.00"
else
()

XQueryファイルのテストの詳細は、6.9項「データ・トランスフォーメーションのテスト」を参照してください。

7.7 FLWOR式の作成

この例では、For-Let-Where-Order By-Return式を使用して、合計値が2000を超えるアイテムについて、見積りからウィジェットIDを抽出します。

1. XQueryファイルを作成します。

1. Eclipseを起動して、サンプル・プロジェクトを開きます。

- Eclipseの起動の詳細は、6.1項「XQuery Mapperの起動」を参照してください。

- サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

2. 「XQuery Transformations」フォルダを右クリックします。

3. 「New」→「XQuery Transformation」を選択します。

4. 親フォルダの名前を確認します。

5. ファイル名として「flwor」と入力し、「Next」をクリックします。

6. ソース型としてQuote.xsd\quoteを選択し、「Next」をクリックします。

7. ターゲット型としてQuote.xsd\quoteを選択し、「Finish」をクリックします。
次の図のように、 flwor.xq ファイルが作成されます。

図7-16 XQueryサンプル - FLWOR式

2. Let句をデザインします。

注意:

この例では、let句は必須ではありません。ここではXQuery Mapperでのデザイン方法を示すためにのみ使用しています。

1. 「Expression Structure」ペインで、「Let Clause」を選択します。
「Edit Let Clause」ペインが表示されます。

2. 「Variable」フィールドで、既存の値をwidgetで置き換えます。

3. 「Expression Variables」ビューを選択します。

4. 「Structural Link」フォルダで、quoteノードを展開します。

5. 「Expression Variables」ビューのquote/widgetIDをドラッグし、「Single Expression」フィールドにドロップします。

6. 「Update」をクリックします。

3. Where句をデザインします。

1. 「Expression Structure」ペインで、「For...Return」を右クリックし、「Insert Where Clause」を選択します。

2. 「Where Clause」を選択します。
「Edit Where Condition」ペインが表示されます。

3. 「Expression Variables」ビューの「Structural Link」フォルダのquote/totalCostをドラッグし、「Left Hand Expression」フィールドにドロップします。

4. >演算子を選択します。

5. 「Right Hand Expression」領域に、「2000」と入力します。

6. 「Add」をクリックします。

4. Order By句をデザインします。

1. 「Expression Structure」ペインで、「For...Return」を右クリックし、「Insert Order By Clause」を選択します。

2. 「Order By Clause」を選択します。
「Edit Order By Clause」ペインが表示されます。

3. 「Sort Order」フィールドで、「ascending」を選択します。

4. 「Single Expression」フィールドで、「$widget」と入力します。これは、let句で宣言された変数の名前です。

5. 「Update」をクリックします。

5. Return式をデザインします。

1. 「Expression Structure」ペインで、「Return Expression」を選択します。

2. 「Expression Variables」ビューで、「Structural Link」フォルダを展開します。

3. 「Expression Variables」ビューのquoteをドラッグし、「Single Expression」フィールドにドロップします。

4. 「Apply」アイコンをクリックします。

6. 変更を保存します。

「Expression Structure」ペインで「For...Return」を選択すると、FLWOR式のソース・コードを表示できます。次のコード・リストに示すようなコードが作成されます。

例7-6 FLWOR式のコード

for $quote in ($quote1/quoteResponse)
let $widget := ($quote/widgetId)
where $quote/totalCost > 2000
order by $widget ascending
return
$quote

XQueryトランスフォーメーションのテストの詳細は、6.9項「データ・トランスフォーメーションのテスト」を参照してください。

7.8 再帰的なスキーマの使用

この例では、再帰的な要素を含むスキーマを使用してデータ・トランスフォーメーションを作成します。

スキーマの要素は、例7-7に示すように、親と同じタイプの子要素を含んでいる場合に再帰的と見なされます。この例では、product要素が再帰的な要素です。これは、この要素のタイプがproductTypeであり、productTypeにはタイプが同じproductTypeであるchild-product要素が含まれているためです(productTypeは自身を参照)。

例7-7 再帰的なスキーマの例

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.acme.org/Product"
xmlns="http://www.acme.org/Product" elementformDefault="qualified"
attributeFormDefault="unqualified">
<xs:complexType name="productType">
<xs:sequence>
<xs:element name="part-description" minOccurs="0"
maxOccurs="unbounded" type="xs:string" />
<xs:element name="child-product" minOccurs="0"
maxOccurs="unbounded" type="producttype" />
</xs:sequence>
</xs:complexType>
<xs:element name="product" type="productType">
</xs:element>
</xs:schema>

再帰的なスキーマを使用してトランスフォーメーションを作成するには、次の手順を実行します。

1. Eclipseを起動して、サンプル・プロジェクトを開きます。

- Eclipseの起動の詳細は、6.1項「XQuery Mapperの起動」を参照してください。

- サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

2. 「XQuery Transformations」フォルダを右クリックします。

3. 「New」→「XQuery Transformation」を選択します。

4. 親フォルダの名前を確認します。この例では、親フォルダは/XQuery Transformation/XQueryTransformationsです。

5. ファイル名として「recursive」と入力し、「Next」をクリックします。

6. ソース・スキーマとしてSupplierAcme.xsd\supplier_acmeを選択し、「Next」をクリックします。

7. ターゲット・スキーマとしてProduct.xsd\productを選択し、「Finish」をクリックします。
recursive.xqファイルが作成されます。

8. 次のソース要素とターゲット要素の間のリンクを作成します。

ソース要素

ターゲット要素

supplier_acme1\part-description-00100

product\part-description

supplier_acme1\part-description-00101

product\child-product\part-description

supplier_acme1\part-description-00101

product\child-product\child-product\part-description

次の図に、ソース要素と再帰的なchild-productターゲット要素の間のリンクを示します。

図7-17 再帰的な要素のマッピング

9. 変更を保存します。

XQueryファイルのテストの詳細は、6.9項「データ・トランスフォーメーションのテスト」を参照してください。

7.9 キー・フィールドによるデータのグループ

「Group by Key Fields」機能を使用して、1つまたは複数のキー値に基づいてデータをグループ化できます。

注意:

Group-By機能はXQuery Mapperではグラフィカルにサポートされておらず、「Design」ビューにはXQueryの表現はありません。「Source」ビューでGroup-By式を記述する必要があります。

この例では、入力XMLドキュメントとして次のコード・リストを使用します。

例7-8 入力XMLドキュメントのサンプル

<input-warehouse-inventory xmlns="http://www.creditpo.org/repkeyin">
<input-line-item>
<input-warehouse-id>Warehouse1</input-warehouse-id>
<input-location-desc>Location1</input-location-desc>
<input-part-no>1</input-part-no>
<input-quantity>10</input-quantity>
</input-line-item>
<input-line-item>
<input-warehouse-id>Warehouse2</input-warehouse-id>
<input-location-desc>Location2</input-location-desc>
<input-part-no>2</input-part-no>
<input-quantity>20</input-quantity>
</input-line-item>
<input-line-item>
<input-warehouse-id>Warehouse1</input-warehouse-id>
<input-location-desc>Location1</input-location-desc>
<input-part-no>3</input-part-no>
<input-quantity>30</input-quantity>
</input-line-item>
</input-warehouse-inventory>

この例では、input-warehouse-id要素とinput-location-desc要素をキー・フィールドとして使用し、出力ドキュメントのデータをグループ化します。

反復する要素input-line-itemの最初のインスタンスと3つ目のインスタンスには、input-warehouse-id要素とinput-location-desc要素の同じ値(それぞれWarehouse1とLocation1)が含まれます。

この例の目的は、明細の最初のインスタンスと3つ目のインスタンスをグループ化するXQueryを作成することです。これには、例7-9に示すように、出力ドキュメントのWarehouse1キーとLocation1キーを使用します。

例7-9 出力XMLドキュメントのサンプル

<ns0:output-inventory xmlns:ns0="http://www.creditpo.org/repkeyout";>
<ns0:output-warehouse-inventory>
<ns0:output-warehouse-id>Warehouse1</ns0:output-warehouse-id>
<ns0:output-location-desc>Location1</ns0:output-location-desc>
<ns0:output-line-item>
<ns0:output-part-no>1</ns0:output-part-no>
<ns0:output-quantity>10</ns0:output-quantity>
</ns0:output-line-item>
<ns0:output-line-item>
<ns0:output-part-no>3</ns0:output-part-no>
<ns0:output-quantity>30</ns0:output-quantity>
</ns0:output-line-item>
</ns0:output-warehouse-inventory>
<ns0:output-warehouse-inventory>
<ns0:output-warehouse-id>Warehouse2</ns0:output-warehouse-id>
<ns0:output-location-desc>Location2</ns0:output-location-desc>
<ns0:output-line-item>
<ns0:output-part-no>2</ns0:output-part-no>
<ns0:output-quantity>20</ns0:output-quantity>
</ns0:output-line-item>
</ns0:output-warehouse-inventory>
</ns0:output-inventory>

Group-By式を作成するには、次の手順を実行します。

1. Eclipseを起動して、サンプル・プロジェクトを開きます。

- Eclipseの起動の詳細は、6.1項「XQuery Mapperの起動」を参照してください。

- サンプル・プロジェクトを開くための詳細は、6.2項「XQuery Mapperサンプル・プロジェクトのインポート」を参照してください。

2. 「XQuery Transformations」フォルダを右クリックします。

3. 「New」→「XQuery Transformation」を選択します。

4. 親フォルダの名前を確認します。この例では、親フォルダは/XQuery Transformation/XQueryTransformationsです。

5. ファイル名として「groupby」と入力し、「Next」をクリックします。

6. ソース・スキーマとしてregroupKeyFldIn.xsd\input-warehouse-inventoryを選択し、「Next」をクリックします。

7. ターゲット・スキーマとしてregroupKeyFldOut.xsd\output-inventoryを選択し、「Finish」をクリックします。
groupby.xqファイルが作成されます。

8. 「Source」ビューを選択します。

9. 次のコード・リストのコードを使用して、既存のコードを置き換えます。

例7-10 Group-By式のXQueryコード

declare namespace ns0 = "http://www.creditpo.org/repkeyin";
declare namespace ns1 = "http://www.creditpo.org/repkeyout";
declare function Regrouping($input-warehouse-inventory as
element(ns0:input-warehouse-inventory))
as element(ns1:output-inventory) {
<ns1:output-inventory>
{
for $input-line-item in $input-warehouse-inventory/ns0:input-line-item
group $input-line-item as $group by
$input-line-item/ns0:input-warehouse-id as $key0,
$input-line-item/ns0:input-location-desc as $key1
return
<ns1:output-warehouse-inventory>
<ns1:output-warehouse-id>{ data($key0) }</ns1:output-warehouse-id>
<ns1:output-location-desc>{ data($key1) }</ns1:output-location-desc>
{
for $group0 in $group return
<ns1:output-line-item>
<ns1:output-part-no>{xs:byte(data($group0/ns0:input-part-no))}
</ns1:output-part-no>
<ns1:output-quantity>{xs:byte
(data($group0/ns0:input-quantity)) }
</ns1:output-quantity>
</ns1:output-line-item>
}
</ns1:output-warehouse-inventory>
}
</ns1:output-inventory>
};
declare variable $input-warehouse-inventory as element(ns0:input-warehouse-inventory) external;
Regrouping($input-warehouse-inventory)

10. 変更を保存します。
変更内容は 「デザイン」 ビューには表示されません。

11. 「Source」ビューでgroupby.xqファイルを開いた状態で、「Test」ビューを選択します。

12. 「Source Data」ペインで、「Import」アイコンをクリックします。

13. ( XML Transformation/XML/ フォルダから)サンプル・プロジェクトで提供されている Regrouping.xml ファイルをインポートします。

14. 「Result Data」ペインで、「Test XQuery」アイコンを選択します。
例7-9に示すように、XQueryの結果が表示されます。

第III部

Format Builder

Format Builder IDEヘルプです。次の章が含まれます。

- 第8章「はじめに」

- 第9章「Format Builderのメイン・ウィンドウ」

- 第10章「メッセージ・フォーマットの詳細ウィンドウ」

- 第12章「フィールドの詳細ウィンドウ」

- 第11章「グループの詳細ウィンドウ」

- 第13章「参照の詳細ウィンドウ」

- 第14章「コメントの詳細ウィンドウ」

- 第15章「Format Builderのオプション」

- 第16章「メタデータのインポート」

- 第17章「Format Tester」

- 第18章「Format Builderのメニュー」

- 第19章「操作方法」

- 第20章「パレットの使用」

- 第21章「Format Builderのサポート対象のデータ型」

8 はじめに

この章では、Format Builderの概要について説明します。

Format Builderツールを使用すると、非XMLデータ・レコードの記述を簡単に作成できます。Format Builderでは、非XMLデータのレイアウトと階層を、XMLと相互に変換できるように記述できます。また、バイト・シーケンスをフィールドとして記述できます。各フィールドには、データ型(浮動小数点、文字列など)、データ・サイズ、フィールド名の記述を含めます。Format Builderではさらに、フィールドのグループ化(グループ)、フィールドやグループの繰返し、および集約を定義できます。

Format Builderで作成した記述は、メッセージ・フォーマット言語(MFL)と呼ばれるXML文法で保存されます。MFLドキュメントは、非XMLデータ・レコードのインスタンスをXMLドキュメントのインスタンス(またはその逆)に変換するために実行時に使用されます。

8.1 概要

次のヘルプ・トピックでは、Format Builderを使用して非XMLドキュメントのスキーマを定義する方法を説明します。定義したスキーマをXquery Mapperツールで使用すると、XMLフォーマットと非XMLフォーマットとの間で自動的にデータを変換できるようになります。

次の内容について説明します。

- 第9章「Format Builderのメイン・ウィンドウ」

- 第10章「メッセージ・フォーマットの詳細ウィンドウ」

- 第11章「グループの詳細ウィンドウ」

- 第14章「コメントの詳細ウィンドウ」

- 第13章「参照の詳細ウィンドウ」

- 第14章「コメントの詳細ウィンドウ」

- 第15章「Format Builderのオプション」

- 第17章「Format Tester」

- 第16章「メタデータのインポート」

- 第18章「Format Builderのメニュー」

- 第20章「パレットの使用」

- 第19章「操作方法」

- 第21章「Format Builderのサポート対象のデータ型」

9 Format Builderのメイン・ウィンドウ

この章では、Format Builderのメイン・ウィンドウのユーザー・インタフェース・リファレンスを提供します。

Format Builderのメイン・ウィンドウは2つのペインに分かれています。左ペインには、データ・フォーマットの構造情報が表示されます。右ペインには、左ペインで選択した項目の詳細が表示されます。

次の方法でメイン・ウィンドウ内を移動したり、メイン・ウィンドウからコマンドを実行することができます。

- 9.1項「メニュー・バーの使用」

- 9.2項「ツールバーの使用」

- 9.3項「ツリー・ペインの使用」

- 9.4項「ショートカット・メニューの使用」

9.1 メニュー・バーの使用

メニュー・バーには、メニューの見出しが表示されます。使用できるメニューは、左ペインで選択されている項目に応じて異なります。メニューを開くには、メニュー・バーを使用するか、「Alt」を押しながらメニュー見出しのアンダースコア文字を押します。たとえば、「Alt」+「F」を押すと「File」メニューが開きます。

メニュー・コマンドの詳細は、第18章「Format Builderのメニュー」を参照してください。

9.2 ツールバーの使用

Format Builderのツール・バーには、頻繁に使用する一部のメニュー・コマンドにアクセスするためのボタンがあります。使用できないコマンドのボタンは「グレー表示」されます。

次にFormat Builderのツール・バーのボタンの説明を示します。

表9-1 ツール・バーのボタンのリスト

ツールバー・ボタン名

説明

新規

新しいメッセージ・フォーマットを作成します。

開く/取得

既存のメッセージ・フォーマットを開きます。

保存/格納

現在のメッセージ・フォーマットを保存します。

切取り

左ペインで現在選択されている項目とその子オブジェクトをツリーから切り取ります。

注意: メッセージ・フォーマット(ルート)項目が選択されている場合、このコマンドは使用できません。

コピー

左ペインで現在選択されている項目をツリーの他の場所に挿入するために、コピーを作成します。

注意: メッセージ・フォーマット(ルート)項目が選択されている場合、このコマンドは使用できません。

兄弟として貼付け

切り取った、またはコピーした項目を、選択した項目の兄弟オブジェクトとして挿入します。

参照として貼付け

切り取った、またはコピーした項目の参照を、選択した項目の兄弟オブジェクトとして挿入します。

元に戻す

直前の操作を取り消します。ツール・チップは取消し可能な操作を反映して変化します。たとえば、フィールドの名前を「Field1」に変更して「適用」をクリックすると、ツール・チップに「元に戻す 適用 フィールド Field1」と表示されます。

注意: Format Builderでは、複数レベルの取消し操作とやり直し操作がサポートされています。

再実行

「元に戻す」コマンドの結果を取り消します。ツール・チップはやり直し可能な操作を反映して変化します。たとえば、フィールドの名前を「Field1」に変更してからその操作を取り消すと、ツール・チップに再実行 適用 フィールド Field1と表示されます。

注意: Format Builderでは、複数レベルの取消し操作とやり直し操作がサポートされています。

フィールドの挿入

フィールドを、ツリー・ペインで選択した項目の兄弟として挿入します。

グループの挿入

グループを、ツリー・ペインで選択した項目の兄弟として挿入します。

コメントの挿入

コメントを、ツリー・ペインで選択した項目の兄弟として挿入します。

上に移動

選択した項目を、その親の中でポジションを1つ上に移動します。

下に移動

選択した項目を、その親の中でポジションを1つ下に移動します。

項目の昇格

選択した項目を、ツリー内のすぐ上のレベルに昇格させます。たとえば、Field1がGroup1の子オブジェクトであるとします。Field1を選択して昇格ツールをクリックすると、そのフィールドはGroup1の兄弟になります。

項目の降格

選択した項目を、ツリー内のすぐ下のレベルに降格させます。たとえば、Group1がField1の兄弟であるとします。ツリー内でField1はGroup1のすぐ次にあります。Field1を選択して降格ツールをクリックすると、そのフィールドはGroup1の子になります。

すべて開く

ツリー・ペイン内のすべての項目を展開し、子項目を表示します。

すべて閉じる

ツリー・ペインを折りたたんで、最初のレベルの項目のみを表示します。

Format Tester

第17章「Format Tester」のウィンドウを開きます。

9.3 ツリー・ペインの使用

ツリー・ペインには、ツリー内の非XMLデータのフォーマットに関する階層情報および構造情報が表示されます。ツリーのルート・ノードは、作成中または編集中のMFLドキュメントに対応します。ルート・ノードはメッセージ・ノードと呼ばれます。子ノードには、グループ名またはフィールド名が付けられます。フィールドは、ツリーではリーフ・ノードで表されます。グループにはフィールドまたは他のグループが含まれ、ツリーでは非リーフ・ノードで表されます。

各ノードのアイコンは、ノードに関する情報をカプセル化したものです。このアイコンによって、ノードがどの要素(メッセージ、グループ、フィールド、コメント、参照のいずれか)を表しているかがわかります。また、グループまたはフィールドが繰返し要素であるかどうか、グループがグループ選択であるかどうか、およびグループまたはフィールドが省略可能か必須かどうかもわかります。さらに、ツリーのノードを追加、削除、移動、コピー、および名前変更することができます。これらの操作には、メニューまたはツール・バーを使用します(9.1項「メニュー・バーの使用」、9.2項「ツールバーの使用」および9.4項「ショートカット・メニューの使用」を参照してください)。

次の表に、ツリー・ペインに表示されるアイコンの説明を示します。

表9-2 ツリー・アイコンの説明

ツリー・アイコン名

説明

メッセージの書式

最上位の要素。

グループ

何らかの関連があるフィールド、コメント、および他のグループまたは参照の集合(たとえば、PAYDATEフィールド、HOURSフィールドおよびRATEフィールドをPAYINFOグループに入れることができます)。そのグループに含まれるすべての項目のフォーマットを定義します。

省略可能なグループ

メッセージ・フォーマットに任意で含めることができるグループ。

繰返しグループ

1回または複数回出現するグループ。

省略可能な繰返しグループ

任意で使用できるが、使用する場合は複数回出現するグループ。

グループ参照

グループの別のインスタンスがデータ内に存在することを示します。参照グループのフォーマットは元のグループと同じですが、参照グループのOptional設定とOccurrence設定は変更できます。

グループ選択

当該グループ内の1項目のみを、メッセージ・フォーマットに取り込むことを示します。

フィールド

アプリケーションにとって何らかの意味を持つバイト・シーケンス(たとえば、フィールドEMPNAMEには、従業員名が入力されます)。フィールドのフォーマットを定義します。

省略可能なフィールド

該当するメッセージ・フォーマットに任意で使用できるフィールド。

繰返しフィールド

1回または複数回出現するフィールド。

フィールド参照

フィールドの別のインスタンスがデータ内に存在することを示します。参照フィールドのフォーマットは元のフィールドと同じですが、参照フィールドのOptional設定とOccurrence設定は変更できます。

省略可能な繰返しフィールド

該当するメッセージ・フォーマットに任意で使用できるが、使用する場合は複数回出現するフィールド。

コメント

メッセージ・フォーマット、またはメッセージ・フォーマットによって変換されたデータについてのメモが含まれます。

閉じる

オブジェクトの横のマイナース記号は、そのオブジェクトを折りたためることを示します。

開く

オブジェクトの横のプラス記号は、そのオブジェクトを展開して他のオブジェクトを表示できることを示します。

9.4 ショートカット・メニューの使用

標準メニューを使用して必要なコマンドを表示するかわりに、左ペインの項目を右クリックできます。表示されるメニューには、その項目で最もよく使用されるコマンドが含まれます。

ショートカット・メニュー・コマンドの詳細は、18.7項「ショートカット・メニュー」を参照してください。

9.5 ドラッグ・アンド・ドロップの使用

Format Builderのドラッグ・アンド・ドロップ機能を使用して、ツリー・ビューの項目をコピーおよび移動できます。

ドラッグ・アンド・ドロップで項目を移動するには:

1. 移動する項目を選択します。

2. マウスの左ボタンを押したまま項目を目的の場所にドラッグします。

3. 項目を適切な場所まで移動したら、マウスの左ボタンを離します。項目が目的の場所に移動します。

ドラッグ・アンド・ドロップで項目をコピーするには:

1. コピーする項目を選択します。

2. 「Ctrl」を押したままにします。

3. 「Ctrl」を押したままマウスの左ボタンを押し、そのまま選択した項目を目的の場所までドラッグします。

4. 項目を適切な場所まで移動したら、マウスの左ボタンと「Ctrl」を離します。項目のコピーが新しい場所に配置されます。

9.6 有効な名前

メッセージ・フォーマット、フィールド、およびグループは、名前によって識別されます。この名前は、非XMLデータがXMLに変換されるときにXMLタグとして使用されます。そのため、名前はXMLの命名規則に準拠する必要があります。

次に名前フォーマットのガイドラインを示します。

- 先頭は文字またはアンダースコアでなければなりません。

- 文字、数字、コロン、ピリオド記号、ハイフン記号、およびアンダースコア記号を使用できます。

次に有効な名前の例を示します。

MyField
MyField1
MyField_again
MyField-again

次に無効な名前の例を示します。

1MyField - 先頭に数字を使用できません。

My>Field - 不等号(>)は無効な文字です。

My Field - スペースは使用できません。

My/Field - バック・スラッシュ(/)は無効な文字です。

My\Field - フォワード・スラッシュ(\)は無効な文字です。

My:Field - セミコロン(;)は無効な文字です。

10 メッセージ・フォーマットの詳細ウィンドウ

この章では、Format Builderのメッセージ・フォーマットの詳細のユーザー・インタフェース・リファレンスを提供します。

メッセージ・フォーマット(メッセージ・フォーマット・ファイルのルート・ノード)を作成するためのデータを定義します。

表10-1 メッセージ・フォーマット

フィールド

説明

名前/XMLルート

メッセージ・フォーマットの名前。この値は変換後のXMLドキュメントのルート要素として使用されます。この名前はXML要素の命名規則に準拠する必要があります。

Apply Button

メッセージ・フォーマット・ドキュメントに変更を保存します。

リセット・ボタン

詳細ウィンドウでの変更を破棄し、すべてのフィールドを最後に保存された値にリセットします。

ヘルプ・ボタン

この詳細ウィンドウのオンライン・ヘルプ情報を表示します。

注意:

「適用」ボタンと「リセット」ボタンは、詳細パネルのコンポーネントを変更するまで使用できません。

11 グループの詳細ウィンドウ

この章では、Format Builderのグループの詳細ウィンドウのユーザー・インタフェース・リファレンスを提供します。

メッセージ・フォーマットに含まれるグループを定義します。グループとは、何らかの関連があるフィールド、コメント、およびその他のグループまたは参照の集合です(たとえば、フィールドPAYDATE、HOURS、およびRATEをPAYINFOグループに入れることができます)。グループを、メッセージ・フォーマット項目の子、別のグループの子、あるいはグループまたはフィールドの兄弟として作成できます。

表11-1 メッセージ・フォーマットのグループ - グループの説明

フィールド

説明

名前

グループの名前。この名前はXML要素の命名規則に準拠する必要があります(詳細は9.6項「有効な名前」を参照)。

オプション

省略可能なグループの場合は「オプション」を選択します。

子の選択

当該グループ内の1項目のみをメッセージ・フォーマットに取り込む場合に「子の選択」を選択します。

表11-2 メッセージ・フォーマットのグループ - グループの出現回数

フィールド

説明

出現回数

メッセージ・フォーマット内でこのグループが出現する回数を示すオプションを1つ選択します。

- 1回 - グループが1回だけ出現することを示します。

- デリミタまで繰返し - 指定されたデリミタが見つかるまでグループが繰返し出現することを示します。

- フィールドの繰返し - 実行時の繰返しフィールドの値は、フィールドの繰返し回数を示します。

- 繰返し回数 - 指定された回数だけグループが繰返し出現することを示します。

- 「Unlimited」 - グループの出現回数に制限がないことを示します。

注意: 省略可能として定義されている場合を除いて、すべてのグループが少なくとも1回出現します。

表11-3 メッセージ・フォーマットのグループ - グループの属性

フィールド

説明

タグ付きグループ

タグ付きグループの場合はこのオプションを選択します。タグ付きの場合、データの先頭にリテラルが付加されて、そのデータが存在することを示します。

タグ付きグループ・オプションを選択した場合、チェック・ボックスの右にあるテキスト・ボックスにタグを入力します。

表11-4 メッセージ・フォーマットのグループ - グループのデリミタ

フィールド

説明

なし

グループにデリミタがない場合はこのオプションを選択します。

デリミタ

グループの終了点をデリミタで指定できます。デリミタは、フィールドのグループの終わりをマークする文字列。グループは、デリミタが見つかるまで続きます。

グループの終わりをデリミタでマークする場合はこのオプションを選択します。

「値」 - フィールド・グループの終わりをマークするデリミタを入力します。

注意: 通常、グループにはデリミタを使用しません。グループは通常、内容に基づいて解析されます(グループはすべての子オブジェクトの解析が完了した時点で終了します)。

デリミタは非オプション

グループが存在しない場合でも、バイナリ・データにデリミタを含めるかどうかを示します。

デリミタ・フィールド

グループの終了点を、デリミタの文字列を含むフィールドで指定できます。デリミタは、グループの終わりをマークする文字列。グループは、指定したフィールドに含まれるデリミタの文字列が見つかるまで続きます。

- 「フィールド」 - デリミタの文字列を含むフィールドを選択します。リストに有効なフィールドの一覧が表示されます。

- 「デフォルト」 - デフォルトのデリミタを入力します。上のフィールドで指定されたフィールドがデータに存在しない場合、この値が使用されます。この値は必須。

デリミタの詳細は、19.12項「キャラクタ・デリミタ」を参照してください。

デリミタの共有

デリミタによって、データのグループの終わりおよびグループ内での最後のフィールドの終わりがマークされることを示します。このデリミタは、当該グループ内およびグループ内の最後のフィールドによって共有され、データの終わりを区切ります。

表11-5 メッセージ・フォーマットのグループ - グループの更新ボタン

フィールド

説明

適用

メッセージ・フォーマット・ドキュメントに変更を保存します。

複製

現在表示されているグループのコピーを作成します。複製グループには複製元のグループと同じ値が含まれます。複製グループの名前は、複製元のグループ名の先頭に「New」という単語が追加された名前になります。たとえば、「Group1」というグループを複製したグループの名前は「NewGroup1」になります。

名前に数値を含む項目を複製した場合、新しい項目の名前に含まれる数値は、連続する次の数値になります。たとえば、「NewGroup1」を複製したグループの名前は「NewGroup2」になります。

リセット

詳細ウィンドウでの変更を破棄し、すべてのフィールドを最後に保存された値にリセットします。

ヘルプ

この詳細ウィンドウのオンライン・ヘルプ情報を表示します。

注意:

「適用」ボタンと「リセット」ボタンは、詳細パネルのコンポーネントを変更するまで使用できません。

12 フィールドの詳細ウィンドウ

この章では、Format Builderのフィールドの詳細ウィンドウのユーザー・インタフェース・リファレンスを提供します。

メッセージ・フォーマットに含まれるフィールドを定義します。フィールドとは、アプリケーションにとって何らかの意味を持つバイト・シーケンスです(たとえば、フィールドEMPNAMEには、従業員名が入力されます)。フィールドは、メッセージ・フォーマット項目の子、グループの子、あるいはグループまたは別のフィールドの兄弟として作成できます。

表12-1 メッセージ・フォーマットのフィールド - フィールドの説明

フィールド

説明

名前

フィールドの名前。この名前はXML要素の命名規則に準拠する必要があります(詳細は9.6項「有効な名前」を参照)。

オプション

省略可能なフィールドの場合はこのオプションを選択します。省略可能とは、当該フィールドのデータが入力に存在する可能性があることを意味します。

あるファイルで「オプション」オプションを選択した場合は、「フィールド属性」ペインのタグ付きフィールド・オプションも設定できます。さらに、タグ付きフィールド・テキスト・ボックスに、グループ内の省略可能なフィールドごとに一意の値を入力します。複数のグループで同じタグ値を使用できますが、グループ内の省略可能なフィールドごとのタグ値は一意であることが必要です。

種類

リストから当該フィールドのデータ型を選択します。デフォルトはStringです。

注意: 選択したフィールドのデータ型によって、ダイアログに表示されるフィールド・データのオプションが決まります。

Format Builderでサポートされるデータ型のリストについては、第21章「Format Builderのサポート対象のデータ型」を参照してください。

表12-2 メッセージ・フォーマットのフィールド - フィールドの出現回数

フィールド

説明

出現回数

メッセージ・フォーマット内でこのフィールドが出現する回数を示すオプションを1つ選択します。

- 1回 - フィールドが1回だけ出現することを示します。

- デリミタまで繰返し - 指定されたデリミタが見つかるまでフィールドが繰返し出現することを示します。

- フィールドの繰返し - 実行時の繰返しフィールドの値は、フィールドの繰返し回数を示します。

- 繰返し回数 - 指定された回数だけフィールドが繰返し出現することを示します。

- 「無制限」 - フィールドの出現回数に制限がないことを示します。

注意: 省略可能として定義されていないかぎり、フィールドは少なくとも1回出現します。

詳細ウィンドウの次のセクションにあるフィールドは、選択したフィールドのデータ型に応じて異なります。

表12-3 メッセージ・フォーマットのフィールド - フィールドのデータ・オプション

フィールド

説明

データ・ベース・タイプ

フィールドが日付または時刻のフィールドである場合、ベース・タイプ(Base Type)はデータを構成する文字の型(ASCII、EBCDIC、またはNumeric)を示します。

年号カットオフ

日付フィールドに年号が2桁で入力されている場合、年号カットオフにより、2桁で表された年号を4桁の年号に変換できます。年号を表す2桁の数値が年号カットオフ値と等しいかそれを上回る場合は、年号の値に「19」という接頭辞が付加されます。それ以外の場合は「20」という接頭辞が付加されます。

コード・ページ

文字列フィールド・データの文字エンコーディング。

値

リテラル・フィールドに表示される値。

表12-4 メッセージ・フォーマットのフィールド - フィールドの属性

フィールド

説明

タグ付きフィールド

タグ付きフィールドの場合はこのオプションを選択します。タグ付きでは、データの先頭にリテラルが付加されています。たとえば、SUP:ACME INCの場合、SUP:はタグです。ACME INCはフィールド・データです。

タグ付きフィールド・オプションを選択した場合は、チェック・ボックスの右にあるテキスト・ボックスにタグを入力します。

フィールドのデフォルト値

フィールドにデフォルト値がある場合はこのオプションを選択します。次に、チェック・ボックスの右にあるテキスト・ボックスにデフォルト値を入力します。

表12-5 メッセージ・フォーマットのフィールド - 終了

フィールド

説明

長さ

可変長のデータ型に固定長を割り当てることができます。これにより、デリミタを使用してフィールドの終了点を指定する必要がなくなります。

- 「長さ」 - 長さフィールドが可変長の場合、長さフィールドのバイト数を入力します。

- 先頭または末尾のデータの削除 - データの先頭または末尾から指定されたデータを削除します。

- 文字列の長さ(文字数) - デフォルトでは、文字列の長さはバイト単位です。文字列がマルチ・バイト・エンコーディングされていて、長さをバイト単位ではなく文字数単位で計算する場合は、このチェック・ボックスを選択します。

- 埋込み - データが指定の長さよりも短い場合、適切な長さになるまでデータに埋め込む値を入力します。フィールドの後ろに埋込みを追加する場合は、末尾オプションを選択します。フィールドの前に埋込みを追加する場合は、先頭オプションを選択します。

- 「切捨て」 - フィールドから指定した文字数を削除します。フィールドの頭の部分から指定した文字数を削除する場合は、「先頭から切捨て」オプションを選択します。フィールドの後の部分から指定した文字数を削除する場合は、「末尾から切捨て」オプションを選択します。

両方の切捨てオプションを選択した場合は、まず「先頭から切捨て」オプションが実行され、続いて残りの文字数に対して「末尾から切捨て」オプションが適用されます。

埋込み長

可変長のデータ型の終了点を埋め込み長で指定できます。埋め込み長はデータ・フィールドに先行して、データに含まれるバイト数を示します。

- 説明 - 使用可能なオプションのリストから型を選択します。次に、選択したデータ型に応じて、「長さ」を選択してバイト数を入力するか、「デリミタ」を選択してデリミタを入力します。

- タグ/長さの順序 - タグ・フィールドと「長さ」フィールドの両方が存在する場合、その順序を指定します。デフォルトでは、タグが「長さ」に先行します。

- 先頭または末尾のデータの削除 - データの先頭または末尾から指定されたデータを削除します。

- 「切捨て」 - フィールドから指定した文字数を削除します。切捨ての詳細は、「長さ」フィールドを参照してください。。

デリミタ

可変長のデータ型の終了点をデリミタで指定できます。デリミタとは、フィールドの終わりをマークする文字。フィールド・データはデリミタが見つかるまで続きます。

- 「値」 - フィールド・データの終わりをマークするデリミタを入力します。

- 先頭または末尾のデータの削除 - データの先頭または末尾から指定されたデータを削除します。

- 「切捨て」 - フィールドから指定した文字数を削除します。切捨ての詳細は、「長さ」フィールドを参照してください。。

デリミタ・フィールド

可変長のデータ型の終了点を、デリミタを含むフィールドで指定できます。デリミタとは、フィールドの終わりをマークする文字。フィールド・データはデリミタを含むフィールドが見つかるまで続きます。

- 「フィールド」 - デリミタを含むフィールドを選択します。

- 「デフォルト」 - デリミタを入力します。デフォルト値を指定する必要があります。このデフォルトはデリミタ・フィールドがない場合に使用されます。

- 先頭または末尾のデータの削除 - データの先頭または末尾から指定されたデータを削除します。

- 「切捨て」 - フィールドから指定した文字数を削除します。切捨ての詳細は、「長さ」フィールドを参照してください。。

デリミタの詳細は、19.12項「キャラクタ・デリミタ」を参照してください。

小数の桁数

小数点の左側の桁数(0 - 16)を指定します。

表12-6 メッセージ・フォーマットのフィールド - リテラル

フィールド

説明

値

リテラル値を指定します。リテラル値は、単一の値として定義することも、リテラル・セパレータで分離された値のリストとして定義することもできます。「値 」が値のリストの場合、バイナリ・データのリテラル・フィールドのデータはリストにある値のうちのいずれかになります。

リテラル・セパレータ

リテラル値の列挙をサポートします。MFL定義のリテラル型の「Field」で、「Field」に値の複数の選択肢が必要な場合、リテラル・セパレータを指定できます。

たとえば、EDIFACTおよびX12 EDI標準でサポートされるセグメント・ターミネータは、\r\n\、\r、\n、`、および~です。ただし、Format Builderを使用することでその他のすべてのカスタム・ターミネータをサポートできます。また、リテラル値の既存のリストにカスタム・ターミネータを追加することも、リテラル・セパレータとしてカンマ(,)を使用して複数のカスタム値を分離することも可能です。

MFLファイルには、次の構造が必要です。

<FieldFormat name='ISA_Terminator' type='Literal' value='\r\n,\r,\n,~,|' literalSeparator=','/>

表12-7 メッセージ・フォーマットのフィールド - フィールド更新ボタン

フィールド

説明

適用

メッセージ・フォーマット・ファイルに変更を保存します。

複製

現在表示されているフィールドのコピーを作成します。複製フィールドには複製元のフィールドと同じ値が含まれます。複製フィールドの名前は、複製元のフィールド名の先頭に「New」という単語が追加された名前になります。たとえば、「Field1」というフィールドを複製したフィールドの名前は「NewField1」になります。

名前に数値を含む項目を複製した場合、新しい項目の名前に含まれる数値は、連続する次の数値になります。たとえば、「NewField1」を複製したフィールドの名前は「NewField2」になります。

リセット

詳細ウィンドウでの変更を破棄し、すべてのフィールドを最後に保存された値にリセットします。

ヘルプ

この詳細ウィンドウのオンライン・ヘルプ情報を表示します。

注意:

「適用」ボタンと「リセット」ボタンは、詳細パネルのコンポーネントを変更するまで使用できません。

13 参照の詳細ウィンドウ

この章では、Format Builderの参照の詳細ウィンドウのユーザー・インタフェース・リファレンスを提供します。

参照を使用して、フィールドまたはグループ・フォーマットの別のインスタンスがデータ内に存在することを示します。参照フィールドまたは参照グループのフォーマットは元のフィールドまたはグループと同じですが、参照フィールドまたは参照グループのOptional設定とOccurrence設定は変更できます。たとえば、「請求先」住所と「届け先」住所がデータに含まれる場合、住所フォーマットの定義は1回で済みます。「請求先」住所定義を作成し、「届け先」住所には参照を作成します。

注意:

参照には、元の項目と同じ名前が付けられます。たとえば、「請求先」住所定義と「届け先」住所定義には同じ名前が付けられます。

表13-1 参照の詳細ウィンドウ - 参照の説明

フィールド

説明

名前

この参照の元のフィールドまたはグループの名前が表示されます。この値は変更できません。

オプション

参照フィールドまたは参照グループが省略可能であれば、このオプションを選択します。

表13-2 参照の詳細ウィンドウ - フィールドの出現回数

フィールド

説明

出現回数

メッセージ・フォーマット内でこの参照フィールドまたは参照グループが出現する回数を示すオプションを1つ選択します。

- 1回 - 参照が1回だけ出現することを示します。

- デリミタまで繰返し - 指定されたデリミタが見つかるまで参照が繰返し出現することを示します。デリミタの詳細は、19.12項「キャラクタ・デリミタ」を参照してください。

- フィールドの繰返し - 実行時の繰返しフィールドの値は、フィールドの繰返し回数を示します。

- 繰返し回数 - 指定された回数だけ参照が繰返し出現することを示します。

- 「無制限」 - 参照の出現回数に制限がないことを示します。

表13-3 参照の詳細ウィンドウ - フィールド更新ボタン

フィールド

説明

適用

メッセージ・フォーマット・ドキュメントに変更を保存します。

参照の編集

元の項目の詳細ウィンドウを表示して、参照先のフィールドまたはグループの詳細を編集できるようにします。

リセット

詳細ウィンドウでの変更を破棄し、すべてのフィールドを最後に保存された値にリセットします。

ヘルプ

この詳細ウィンドウのオンライン・ヘルプ情報を表示します。

注意:

「適用 」ボタンと「リセット 」ボタンは、詳細パネルのコンポーネントを変更すると有効になります。

14 コメントの詳細ウィンドウ

この章では、Format Builderのコメントの詳細ウィンドウのユーザー・インタフェース・リファレンスを提供します。

コメントは、メッセージ・フォーマットまたはメッセージ・フォーマットによって変換されるデータについてのメモです。コメントはメッセージ・フォーマット定義に含まれますが、情報提供のみを目的とします。コメントは、任意のメッセージ・フォーマット、グループ、またはフィールドの子または兄弟として作成できます。

表14-1 メッセージ・フォーマットに関するコメント

フィールド

説明

コメントの詳細

コメント・テキストを入力します。

適用

メッセージ・フォーマット・ドキュメントに変更を保存します。

リセット

詳細ウィンドウでの変更を破棄し、すべてのフィールドを最後に保存された値にリセットします。

ヘルプ

この詳細ウィンドウのオンライン・ヘルプ情報を表示します。

注意:

「適用」ボタンと「リセット」ボタンは、詳細パネルのコンポーネントを変更するまで使用できません。

15 Format Builderのオプション

この章では、Format Builderのオプションのユーザー・インタフェース・リファレンスを提供します。

Format Builderのオプションを定義します。これらのオプションでFormat Builderの動作全体を制御します。次のオプションを呼び出すには、Format Builderのメニューからツール→「オプション」を選択します。

表15-1 Format Builderのオプション

フィールド

定義

デフォルトのメッセージ・フォーマット・バージョン

新しいドキュメントの作成時に使用するMFLバージョンを選択します。

注意: メッセージ・フォーマットには、メッセージ・フォーマット・ペインで指定された独自のフォーマット・バージョンが含まれます。

表15-2 Format Builderのオプション - 文字エンコーディングのオプション

フィールド

定義

デフォルトのメッセージ・フォーマット(MFL)エンコーディング

エンコーディング名と説明のリストから、メッセージ・フォーマット・レイアウト(MFL)のデフォルトの文字エンコーディングを選択します。これにより、MFLドキュメントとXML出力のフォーマットが定義されます。

デフォルトのフィールド・コード・ページ

非XMLフォーマットのリストからデフォルトのフィールド・コード・ページを選択します。これがMFLドキュメントに作成する各フィールドのデフォルト・コード・ページになります。コード・ページは、各フィールドの非XMLデータの文字エンコーディングを指定します。

表15-3 Format Builderのオプション - XMLフォーマットのオプション

フィールド

定義

最初のインデント

XMLドキュメントの先頭行のインデントに使用するスペースの数を入力します。

改行時のインデント

XMLドキュメントの新しい子の行のインデントに使用するスペースの数を入力します。

表15-4 Format Builderのオプション - XMLコンテンツ・モデルのオプション

フィールド

定義

自動生成DTD

MFLドキュメントの保存時にDTDドキュメントを生成します。このドキュメントをファイルに保存する場合、メッセージ・フォーマットと同じディレクトリに配置されます。

16 メタデータのインポート

この章では、Format Builderにメタデータをインポートする方法について説明します。

Format Builderには次のユーティリティが含まれており、これらのユーティリティを使用して、COBOLコピーブックやgXMLガイドライン・ファイルをインポートしたり、C構造体定義をMFLメッセージ定義に変換したりできます。

- 16.1項「ガイドラインXMLファイルのインポート」

- 16.2項「XMLスキーマのインポート」

- 16.3項「COBOLコピーブックのインポート」

- 16.4項「C構造体のインポート」

- 16.8項「FMLフィールド表クラスのインポート」

16.1 ガイドラインXMLファイルのインポート

Format Builderには、ガイドラインXML (gXML)ファイルをインポートしてメッセージ定義に変換する機能があり、メッセージ定義は、ユーザーがニーズに合わせて変更およびカスタマイズできます。gXMLは、XMLを使用するビジネス・ドキュメント(発注書、請求書など)の電子商取引ガイドラインの交換を促進するために設計されたオープンな仕様です。このリリースではgXMLバージョン0.71がサポートされています。

gXMLファイルをインポートするには:

1. ツール→「インポート」→EDI Importerを選択します。EDI Importerダイアログが表示されます。

2. 次の表に従って、フィールドにデータを入力します。

表16-1 「EDI Importer」のオプション

フィールド

説明

gXMLファイル名

インポートするgXMLファイルの完全なパスと名前を入力します。

参照

クリックして、インポートするgXMLファイルの場所に移動します。

「OK」ボタン

指定したgXMLファイルをインポートします。

「取消」ボタン

インポートせずにダイアログを閉じてFormat Builderに戻ります。

バージョン情報ボタン

バージョンなどEDI Importerの情報を表示します。

16.2 XMLスキーマのインポート

Format Builderには、非XMLドキュメントのXML表現を適切に表すXMLスキーマをインポートする機能があります。この機能により、非XMLドキュメントのフォーマットを指定する作業をすぐに始めることができます。

XMLスキーマをインポートするには:

1. ツール→「インポート」→XML Schema Importerを選択します。XML Schema Importerダイアログが表示されます。

2. 次の表に従って、フィールドにデータを入力します。

表16-2 XML Schema Importerのオプション

フィールド

説明

XMLスキーマ定義

インポートするファイルのパスと名前を入力します。

参照

クリックして、インポートするファイルの場所に移動します。

ルート要素

この値は変換後のXMLドキュメントのルート要素として使用されます。この名前はXML要素の命名規則に準拠する必要があります。

MFLフィールド・デリミタのデフォルト

デリミタとは、フィールドの終わりをマークする文字。フィールド・データはデリミタを含むフィールドが見つかるまで続きます。

「OK」ボタン

定義した設定を使用してXMLスキーマをインポートします。

「取消」ボタン

インポートせずにダイアログを閉じてFormat Builderに戻ります。

16.3 COBOLコピーブックのインポート

Format Builderには、COBOLコピーブックをFormat Builderにインポートして、COBOLデータを変換するためのメッセージ定義を作成する機能があります。コピーブックのインポート時には、インポートされるコピーブックとそれに含まれるグループおよびフィールドを説明するためにコメントが使用されます。

COBOLコピーブックをインポートするには:

1. ツール→「インポート」→COBOL Copybook Importerを選択します。COBOL Copybook Importerダイアログが表示されます。

2. 次の表に従って、フィールドにデータを入力します。

表16-3 COBOL Copybook Importerのオプション

フィールド

説明

ファイル名

インポートするファイルのパスと名前を入力します。

参照

クリックして、インポートするファイルの場所に移動します。

表16-4 COBOL Copybook Importerのオプション - バイト・オーダー

フィールド

説明

ビッグ・エンディアン

バイト・オーダーをビッグ・エンディアンに設定する場合はこのオプションを選択します。

注意: このオプションは、IBM 370、Motorola、および大半のRISC設計(IBMメインフレームやほとんどのUNIXプラットフォーム)に使用されます。

リトル・エンディアン

バイト・オーダーをリトル・エンディアンに設定する場合はこのオプションを選択します。

注意: このオプションは、Intel、VAXおよびUnisysプロセッサ(Windows、VMS、Digital、UNIXおよびUnisys)に使用されます。

表16-5 COBOL Copybook Importerのオプション - 文字セット

フィールド

説明

EBCDIC

文字セットをEBCDICに設定する場合に、このオプションを選択します。

注意: これらの値は、インポート元のホスト・コンピュータの属性です。

US-ASCII

文字セットをUS-ASCIIに設定する場合に、このオプションを選択します。

注意: これらの値は、インポート元のホスト・コンピュータの属性です。

その他

フィールド・データの文字エンコーディング。

表16-6 COBOL Copybook Importerのオプション - アクション・ボタン

フィールド

説明

OK

定義した設定を使用してCOBOLコピーブックをインポートします。

取消

インポートせずにダイアログを閉じてFormat Builderに戻ります。

バージョン情報

COBOL Copybook Importerのバージョンやサポートされているコピーブック機能などの情報を表示します。

インポートしたコピーブックは、他のメッセージ・フォーマット定義と同じように使用できます。コピーブックにエラーやサポートされていないデータ型が含まれている場合は、エラーを通知するメッセージが表示されます。エラーを表示するか、または今後の参考にエラーをログ・ファイルに保存するかを選択できます。

16.4 C構造体のインポート

Format Builderには、MFLまたはCコード出力を生成してC構造体定義をMFLメッセージ定義に変換するためのC Struct Importerユーティリティが含まれています。

- 16.5項「C Structure Importerの起動」

- 16.6項「MFLデータの生成」

- 16.7項「Cコードの生成」

16.5 C Structure Importerの起動

C Struct Importerを起動するには:

1. Format Builderのメイン・ウィンドウから、ツール→「インポート」→C Struct Importerを選択します。C Struct Importerダイアログが表示されます。

2. 「C Struct Importer」ダイアログには、デフォルトの出力として「MFL」が指定されており、次のフィールドが含まれています。

表16-7 C Structure Importerのオプション - 入力

フィールド

説明

入力ファイル

インポートするファイルのパスと名前を入力します。「参照」ボタンをクリックして、インポートするファイルを指定することも可能です。

構造体

このリスト・ボックスには、入力ファイルの解析後、検出された構造体のリストが表示されます。入力ファイルが解析されない場合、リスト・ボックスは空になります。

解析

解析をクリックして入力ファイルを解析します。解析に成功すると、入力ファイル内の構造体リストが構造体リスト・ボックスに表示されます。

表16-8 C Structure Importerのオプション - 出力

フィールド

説明

名前

ファイル名を入力するか、または「Browse」ボタンを使用して、既存のプロファイルを指定します。

MFL

MFLを生成するために、ターゲット・コンピュータ上でコンパイルが必要なデータを指定します。

Cコード

Cコードを生成するために、ターゲット・コンピュータ上でコンパイルが必要なデータを指定します。

16.6 MFLデータの生成

MFLデータを生成するには、次の手順に従います。

1. 入力ファイル・フィールドにファイル名を入力するか、「参照」をクリックしてファイルを選択します。

2. 解析をクリックしてファイルを解析します。
解析が完了すると、入力ファイル内の構造体リストが「Structure」リスト・ボックスに表示されます。

3. 目的の構造体を構造体リスト・ボックスから選択します。
MFLを直接生成するためには、この時点でプロファイルの構成データを入力する必要があります。これらのデータ入力は、ハードウェア・プロファイルを新しく作成するか、または既存のプロファイルを指定して行うことができます。

4. 既存のプロファイルを指定する、または新たにプロファイルを作成するには、次の手順を実行します。

- 既存のプロファイルを指定する場合は、ハードウェア・プロファイルの「名前」フィールドにファイル名を入力するか、「参照」をクリックしてファイルを選択します。プロファイル・パラメータを参照または編集するには、「編集」をクリックしてハードウェア・プロファイル・エディタを開きます。

- 新しいハードウェア・プロファイルを作成する場合は、「New」をクリックします。デフォルト・パラメータがロードされたハードウェア・プロファイル・エディタが開きます。プロファイル名と説明を指定し、基本データ型とバイト・オーダーを必要に応じて変更します。

5. 「OK」をクリックしてハードウェア・プロファイルの変更を保存し、C Struct Importerダイアログ・ボックスに戻ります。

6. 「OK」をクリックしてMFLを生成します。生成が成功すると、Format Builderに戻り、ナビゲーション・ツリーにMFLオブジェクトが表示されています。生成されたMFLオブジェクトには、解析で使用された入力ファイルの名前が反映されます。
生成プロセスでエラーが検出された場合は、「MFL Generation Errors」ダイアログが表示されます。このダイアログを使用して、エラー・ログを表示するかまたはファイルとして保存することができます。

7. エラー・ログの表示をクリックしてエラーを表示するか、エラー・ログの保存をクリックして指定した場所にエラー・ログを保存するか、「取消」をクリックしてMFL生成エラー・ダイアログ・ボックスを閉じます。

発生したエラーを確認したら、「C Struct Importer」に戻って前の手順を繰り返すことができます。

16.7 Cコードの生成

Cコードを生成するには、次の手順に従います。

1. 入力ファイル・フィールドにファイル名を入力するか、「参照」をクリックしてファイルを選択します。

2. 解析をクリックしてファイルを解析します。
解析が完了すると、入力ファイル内の構造体リストが「Structure」リスト・ボックスに表示されます。

3. 目的の構造体を構造体リスト・ボックスから選択します。

4. Cコード・オプション・ボタンを選択します。

5. MFL生成フィールドまたはデータ生成フィールドにファイル名を入力するか、「参照」をクリックしてファイルを選択します。

6. 「OK」をクリックします。既存ファイルの上書きに関する警告と、コード生成の成功または失敗を通知するメッセージが表示されます。

7. 生成されたソース・コードを対象のプラットフォームにコピーし、ソース・コードをコンパイルして実行します。

注意:

構造体の宣言を含む入力ファイルもコピーする必要があります。コンパイルが完了すると、両方のプログラムで出力ファイル名の引数が取り込まれます。

8. 生成されたMFLまたはデータを、Format Builderを実行しているプラットフォームにコピーします。

16.8 FMLフィールド表クラスのインポート

FML Field Table Class Importerは、WebLogic Tuxedo ConnectorとBusiness Process Management (BPM)機能の統合を促進します。WebLogic Tuxedo ConnectorのFML/XML Translator機能によって、Tuxedoアプリケーション・バッファがXMLとの間で相互に変換されます。

TuxedoをBPM機能と統合するには、WebLogic Tuxedo Connector Translatorとプロセス・エンジンとの間で受け渡しされるXMLを作成する必要があります。必要なXMLを作成するには、FML Field Table Class Importerと、Format TesterのXML生成機能を使用します。

16.8.1 FML Field Table Class Importerの前提条件

Format Builderを起動する前に、次の手順を実行します。

1. FMLバッファと関連付けられているフィールド表を、TuxedoシステムからOracle WebLogic Server/WebLogic Tuxedo Connector環境に移動します。

2. weblogic/wtc/jatmi/mkfldclassユーティリティを使用して、フィールド表を表すJavaソース・コードを構築します。FMLフィールド表の管理は、Oracle WebLogic Serverのドキュメントを参照してください。

3. ソース・コードをコンパイルします。生成されるクラス・ファイルは、FldTblインタフェースを実装するため、fldtblクラスと呼ばれます。これらのクラスは、FML Field Table Class Importerダイアログで選択できるJARファイルにパッケージする必要があります。

WLI_HOME\samples\di\fmlディレクトリには、サンプルとして使用できる複数のfldtblクラス・フィールドがあります。これらのサンプルを使用すると、この3つの手順を実行せずにFormat Builderを起動することができます。

注意:

ほとんどのユーザーはWebLogic Tuxedo Connectorを構成するときにこの手順を実行するため、これらのクラス・ファイルがすでに存在していることがあります。

16.8.2 サンプルのFMLフィールド表クラス・ファイル

次の表は、FML Field Table Class Importer用にインストールされたサンプル・ファイルのリストと説明です。すべてのファイルは、WLI_HOME\samples\di\fmlディレクトリにあります。

表16-9 FMLフィールド表クラスのサンプル・ファイル

フィールド

説明

bankflds.class

FML Field Table Class Importerへの入力として使用される、コンパイル済のソース・ファイル

bankflds.java

mkfldclassユーティリティで生成されるfldtblソース・ファイル

crdtflds.class

FML Field Table Class Importerへの入力として使用される、コンパイル済のソース・ファイル

crdtflds.java

mkfldclassユーティリティで生成されるfldtblソース・ファイル

tBtest1flds32.class

FML Field Table Class Importerへの入力として使用される、コンパイル済のソース・ファイル

tBtest1flds32.java

mkfldclassユーティリティで生成されるfldtblソース・ファイル

16.8.3 FML Field Table Class ImporterでのXMLの作成

注意:

WebLogic Tuxedo Connectorを使用してJavaクラスを作成する場合、.classファイルは\extディレクトリに置くことができます。こうしておくと、FML Field Table Class Importerダイアログ・ボックスから使用可能なフィールド・リストに自動的にデータを入力できます。

FML Field Table Class ImporterでXMLドキュメントを作成するには:

1. ツール→「インポート」→EDI Importerを選択します。FML Field Table Class Importerダイアログが表示されます。

2. 次の表に従って、フィールドにデータを入力します。

表16-10 FML Field Table Class Importerのオプション

フィールド

説明

フィールド表Jarファイル

「選択」をクリックして、fldtblクラスを含むJARファイルを選択します。JARファイルを選択すると、すべてのfldtblクラスがClassesリストに表示されます。選択したJARファイルにfldtblクラスが含まれない場合、エラー・メッセージが表示され、フィールド表Jarファイル・フィールドと「クラス」フィールドがクリアされます。

「クラス」セクションには、現在選択されているJARファイルのすべてのfldtblクラスのリストが含まれます。1つのFMLバッファに複数のフィールド表のフィールドが含まれる可能性があるため、リストの1つ以上のfldtblクラス名を選択できます。選択したクラスのすべてのフィールドが、使用可能なフィールド・リストに表示されます。

表16-11 FML Field Table Class Importerのオプション - FMLフィールド・セレクタ

フィールド

説明

使用可能なフィールド

フィールド表の名前のリストが表示されます。「Available Fields」リストで必要なフィールドを選択し、「追加」をクリックします。

「Available Fields」リストでは、重複する名前は表示されません。別のフィールド表に同じ名前のフィールドがあっても、リストには1つしか表示されません。

選択されたフィールド

選択したフィールドのリストが表示されます。

このリストからフィールドを削除するには、フィールドを選択し、「削除」をクリックします。

表16-12 FML Field Table Class Importerのオプション - アクション・ボタン

フィールド

説明

追加

「Available Fields」リストで選択したフィールドを「Selected Fields」リストに移動します。

削除

「Selected Fields」リストで選択したフィールドを削除して、「Available Fields」リストに戻します。

OK

選択されたフィールド・リストの指定が終了したら、「OK」をクリックします。ダイアログ・ボックスが閉じ、生成されたMFLの名前がFormat Builderのナビゲーション・ツリーに追加されます。選択したフィールドは、選択されたフィールド・リストと同じ順序で表示されます。

取消

インポートせずにダイアログを閉じてFormat Builderに戻ります。

3. 作成されたMFLドキュメントを編集し、Business Process Management (BMP)からWebLogic Tuxedo Connector FML/XML Translatorに渡されるXMLドキュメント内のフィールドの順序と出現数を指定します。

4. ツール→「テスト」を選択し、Format Testerツールを表示します。

5. Format Testerのメニュー・バーで「生成」→「XML」を選択し、Format Builder内のMFLドキュメントに準拠するXMLドキュメントを作成します。

6. XMLドキュメントのフィールドのデータ・コンテンツを必要に応じて編集します。

7. Format Testerのメニュー・バーで、「ファイル」→XMLの保存を選択し、ファイルの名前と場所を指定してXMLドキュメントを保存します。

XMLインスタンス・エディタを使用すると、作成したXMLをインポートして、Business Process Management機能で使用できます。XMLのインポートについては、BPMのドキュメントを参照してください。

17 Format Tester

この章では、Format BuilderのFormat Testerのユーザー・インタフェース・リファレンスを提供します。

フォーマット定義を構築したら、Format Testerを使用してテストできます。Format Testerでは、データを解析して再フォーマットする検証テストを行い、サンプルの非XMLデータまたはXMLデータを生成します。このサンプル・データを編集、検索、およびデバッグして、目的のデータにすることができます。

- 17.1項「Format Testerウィンドウ」

- 17.2項「Format Testerのメニュー」

17.1 Format Testerウィンドウ

次の項では、Format Testerのメイン・ウィンドウの項目について説明し、Format Testerのメイン・ウィンドウ内で移動したりコマンドを実行する方法を示します。

- 17.9項「非XMLウィンドウの使用」

- 17.12項「XMLウィンドウの使用」

- 17.13項「デバッグ・ウィンドウの使用」

- 17.14項「サイズ変更バーの使用」

17.2 Format Testerのメニュー

Format Testerには次のメニューがあります。キーボードの[Alt]と下線付き文字を同時に押すと、Format Testerのメニューを展開できます。[Ctrl]と文字を組み合せて押して実行できるメニュー・コマンドもあります。

- 17.3項「「ファイル」メニュー」

- 17.4項「「編集」メニュー」

- 17.5項「「表示」メニュー」

- 17.6項「「生成」メニュー」

- 17.7項「「変換」メニュー」

- 17.8項「ショートカット・メニュー」

17.3 「ファイル」メニュー

「ファイル」メニューには次のコマンドがあります。

表17-1 「ファイル」メニューのコマンド

メニュー・コマンド

説明

非XMLを開く

「非XML」ウィンドウに表示する非XMLファイルを選択できます。

注意: 非XMLファイルのデフォルトのファイル拡張子は.DATAです。

XMLを開く

「Format Tester」ウィンドウの「XML」セクションに表示するファイルを選択できます。

注意: XMLファイルのデフォルトのファイル拡張子は.XMLです。

非XMLの保存

「非XML」ウィンドウの内容を保存できます。

XMLの保存

「XML」ウィンドウの内容を保存できます。

デバッグ・ログ

デバッグ情報をテキスト・ファイルに保存できます。

閉じる

「Format Tester」ウィンドウを閉じます。

17.4 「編集」メニュー

「編集」メニューには次のコマンドがあります。

表17-2 「編集」メニューのコマンド

メニュー・コマンド

説明

切取り

現在選択されているテキストを切り取り、別の場所へ貼り付けられるようにクリップ・ボードに格納します。

コピー

現在選択されているテキストをコピーし、別の場所へ貼り付けられるようにクリップ・ボードに格納します。

貼付け

切り取ったテキストやコピーしたテキストをカーソル位置に挿入します。

検索

非XMLデータの16進値またはテキスト値を検索できます。

次を検索

指定した値の次のインスタンスを続けて検索します。

移動

「非XML」エディタの指定のバイト・オフセットにカーソルを移動できます。

17.5 「表示」メニュー

「表示」メニューには次のコマンドがあります。

表17-3 「表示」メニューのコマンド

メニュー・コマンド

説明

XML

「XML」データ・パネルの表示と非表示を切り替えることができます。非表示にすると、非XMLデータ・ウィンドウが横に拡大してTester全体に表示されます。XMLボタンは表示されたままですが、分割線は非表示になります。

デバッグ

「Debug」出力ウィンドウの表示と非表示を切り替えることができます。

「クリア」→非XML

「非XML」データ・ウィンドウのコンテンツを空の状態にリセットします。

「クリア」→「XML」

「XML」ウィンドウのコンテンツを空の状態にリセットします。

「クリア」→「デバッグ」

「Debug」ウィンドウのコンテンツを空の状態にリセットします。

16進数→16進数としてオフセット

オフセット値を16進数として表示します。このオプションを選択すると、10進数としてオフセットの表示が無効になります。

16進数→10進数としてオフセット

オフセット値を10進数として表示します。このオプションを選択すると、Offset as Hexadecimalの表示が無効になります。

17.6 「生成」メニュー

「生成」メニューには次のコマンドがあります。

表17-4 「生成」メニューのコマンド

メニュー・コマンド

説明

非XML

現在のフォーマット仕様に適合する非XMLデータを生成します。

XML

現在のフォーマット仕様に適合するXMLデータを生成します。

データの生成中にプロンプト

選択した場合、生成プロセスの間に、省略可能なフィールドまたはグループを生成するかどうか、生成する子、および繰返しグループの反復回数を指定するためのメッセージが表示されます。

17.7 「変換」メニュー

「変換」メニューには次のコマンドがあります。

表17-5 「変換」メニューのコマンド

メニュー・コマンド

説明

非XMLからXML

「非XML」ウィンドウのコンテンツをXMLに変換します。

XMLから非XML

「XML」ウィンドウのコンテンツを非XMLデータに変換します。

17.8 ショートカット・メニュー

標準メニューを使用して必要なコマンドを表示するかわりに、マウスを右クリックしてポップアップ・ショートカット・メニューを使用できます。

ショートカット・メニューには次のコマンドがあります。

注意:

マウス・ポインタが置かれている現在の表示パネルによっては、使用できないコマンドもあります。

表17-6 ショートカット・メニューのコマンド

メニュー・コマンド

説明

切取り

現在選択されているテキストを切り取り、別の場所へ貼り付けられるようにクリップ・ボードに格納します。

コピー

現在選択されているテキストをコピーし、別の場所へ貼り付けられるようにクリップ・ボードに格納します。

貼付け

切り取ったテキストやコピーしたテキストをカーソル位置に挿入します。

クリア

「非XML」ウィンドウまたは「XML」ウィンドウのコンテンツを空の状態にリセットします。

生成

現在のフォーマット仕様に適合する非XMLデータまたはXMLデータを生成します。

XML

「非XML」ウィンドウのコンテンツをXMLに変換します。

非XML

「XML」ウィンドウのコンテンツを非XMLデータに変換します。

17.9 非XMLウィンドウの使用

「非XML」データ表示パネルは、選択したタブに応じて16進数エディタまたはテキスト・エディタとして使用できます。

16進数エディタ・パネルには、データ・オフセット、個々のバイトの16進値、および対応するテキストが表示されます。対応するテキストは、必要に応じてASCII文字またはEBCDIC文字として表示できます。このエディタで、16進バイトまたはテキスト値を編集できます。16進データ値が変更されると、それに対応するテキスト値が更新され、テキスト値が変更された場合は16進データ値が更新されます。

関連項目

- 17.10項「データ・オフセット機能の使用」

- 17.11項「テキスト機能の使用」

17.10 データ・オフセット機能の使用

16進数エディタのデータ・オフセット機能を使用すると、データ・オフセットを16進数または10進数で表示できます。

データ・オフセットを変更するには:

「表示」→「16進数」を選択します。次の2つのデータ・オフセット・オプションが表示されます。

- 16進数としてオフセット

- 10進数としてオフセット

必要に応じた表示オプションをクリックします。「非XML」ウィンドウのデータ・オフセット・パネルは、選択したオプションに合わせて動的に変更されます。

17.11 テキスト機能の使用

テキスト機能を使用するには、「非XML」ウィンドウ内で「Text」タブを選択します。キャリッジ・リターンなどの出力可能な文字がすべて表示されます。これらは改行付きテキストとして「Text」ウィンドウに表示されます。

17.12 XMLウィンドウの使用

「XML」データ・パネルには、「非XML」パネルのコンテンツから変換されたXMLデータが表示されます。「XML」パネルのコンテンツは、必要に応じて消去したり編集することができます。

このウィンドウでは、非XMLフォーマットに変換するXMLデータを入力または生成することもできます。

17.13 デバッグ・ウィンドウの使用

デバッグ・ウィンドウには、トランスフォーメーション処理で行われた操作、発生したエラー、およびフィールドとグループの値とデリミタが表示されます。エラーの場所を特定するには、最後に正しく解析されたフィールドを特定し、その次のフィールドの仕様をFormat Builderの9.3項「ツリー・ペインの使用」で調べます。

Format Testerを開くと、非XMLウィンドウとXMLウィンドウだけが表示されます。デバッグ・ウィンドウを開くには、「表示」→「デバッグ」を選択してデバッグ・ウィンドウの表示と非表示を切り替えます。デバッグ・ウィンドウは、非XMLウィンドウとXMLウィンドウの下に表示されます。

注意:

デバッグ出力は、最新の64KBまでのメッセージに制限されます。ファイルには、完全なデバッグ情報を保存できます。詳細は、17.18項「デバッグ・ログの使用」を参照してください。

17.14 サイズ変更バーの使用

サイズ変更バーは、「非XML」ウィンドウ、「XML」ウィンドウ、「Debug」ウィンドウの間にあります。これらのサイズ変更バーを使用して、各ウィンドウのサイズを必要な大きさに変更できます。1つのウィンドウを拡大して他のウィンドウを縮小するには、各サイズ変更バーを選択し、上下または左右に必要なだけドラッグします。

また、各サイズ変更バーには方向を示す2つのボタンがあり、クリックして3つのウィンドウのいずれか1つを拡大または縮小することもできます。

17.15 フォーマット定義のデバッグ

次の項では、データのデバッグと修正に使用できる様々なFormat Testerユーティリティについて説明します。

- 17.16項「値の検索」

- 17.17項「オフセットの検索」

- 17.18項「デバッグ・ログの使用」

17.16 値の検索

検索機能を使用して、非XMLデータ内の16進値やテキスト値を検索できます。「検索」ダイアログには次のフィールドがあります。

表17-7 「検索」のオプション

フィールド

説明

値

検索する値を入力します。

テキスト

テキスト値を検索する場合はこのオプションを選択します。

16進数

16進値を検索する場合はこのオプションを選択します。

次へ

選択した場所から下に向かってドキュメントを検索する場合はこのオプションを選択します。

前へ

選択した場所から先頭に向かってドキュメントを検索する場合はこのオプションを選択します。

ファイルの先頭

ファイルの先頭から検索を開始する場合はこのオプションを選択します。

現在位置

現在のカーソル位置から検索を開始する場合はこのオプションを選択します。

ファイルの末尾

ファイルの末尾から検索を開始する場合はこのオプションを選択します。

「OK」ボタン

検索操作を開始します。

「取消」ボタン

検索を実行せずに「検索」ダイアログを閉じます。

17.17 オフセットの検索

移動機能を使用して、非XMLエディタのカーソルを指定したバイト・オフセットに移動できます。「移動」ダイアログには次のフィールドがあります。

表17-8 「移動」のオプション

フィールド

説明

オフセット

検索するオフセット値を入力します。

10進数

10進値に移動する場合はこのオプションを選択します。

16進数

16進値に移動する場合はこのオプションを選択します。

次へ

選択した場所から下に向かってドキュメントを検索する場合はこのオプションを選択します。

前へ

選択した場所から先頭に向かってドキュメントを検索する場合はこのオプションを選択します。

ファイルの先頭

ファイルの先頭から検索を開始する場合はこのオプションを選択します。

現在位置

現在のカーソル位置から検索を開始する場合はこのオプションを選択します。

ファイルの末尾

ファイルの末尾から検索を開始する場合はこのオプションを選択します。

「OK」ボタン

検索操作を開始します。

「取消」ボタン

検索を実行せずに「移動」ダイアログを閉じます。

17.18 デバッグ・ログの使用

デバッグ・ログでは、デバッグ情報をテキスト・ファイルに保存できます。

デバッグ・ログを使用するには、「ファイル」→デバッグ・ログを選択します。表示されたダイアログで、デバッグ情報の保存先として新しいパスとファイル名を入力するか、既存のファイルを選択できます。

注意:

既存のファイルを選択した場合、新しいデバッグ情報は、ファイルの最後に追加されます。

18 Format Builderのメニュー

この章では、Format Builderのメニューのユーザー・インタフェース・リファレンスを提供します。

Format Builderには次のメニューがあります。

- 18.1項「「ファイル」メニュー」

- 18.2項「「編集」メニュー」

- 18.3項「「挿入」メニュー」

- 18.4項「「ビュー」メニュー」

- 18.5項「ツール・メニュー」

- 18.7項「ショートカット・メニュー」

18.1 「ファイル」メニュー

「ファイル」メニューには次のコマンドがあります。

表18-1 「ファイル」メニューのコマンド

メニュー・コマンド

説明

新規

新しいメッセージ・フォーマット・ドキュメントを作成します。

開く

既存のメッセージ・フォーマット・ドキュメントを開きます。

閉じる

現在のメッセージ・フォーマット・ドキュメントを閉じます。

保存

現在のメッセージ・フォーマット・ドキュメントを保存します。

別名保存

現在のメッセージ・フォーマット・ドキュメントを別の名前で保存します。

プロパティ

選択したファイルまたはメッセージ・フォーマットのプロパティ・ウィンドウを開きます。選択した項目のMFLエンコーディングまたはMFLバージョンを変更できます。

終了

アプリケーションを閉じます。

18.2 「編集」メニュー

「編集」メニューには次のコマンドがあります。

注意:

行った操作によっては使用できないコマンドもあります。

表18-2 「編集」メニューのコマンド

メニュー・コマンド

説明

元に戻す

直前の操作を取り消します。「編集」メニューの「元に戻す」コマンドは、取消し可能な操作を反映して変化します。たとえば、フィールドの名前を「Field1」に変更して「適用」をクリックすると、。「編集」メニューに「元に戻す 適用 フィールド Field1」と表示されます。

再実行

「元に戻す」コマンドの結果を取り消します。「編集」メニューの「再実行」コマンドは、やり直し可能な操作を反映して変化します。たとえば、フィールドの名前を「Field1」に変更してからその操作を取り消すと、「編集」メニューに再実行 適用 フィールド Field1と表示されます。

切取り

左ペインで現在選択されている項目とその子オブジェクトをツリーから切り取ります。

メッセージ・フォーマット(ルート)項目が選択されている場合、このコマンドは使用できません。

コピー

左ペインで現在選択されている項目をツリーの他の場所に挿入するために、コピーを作成します。

注意: メッセージ・フォーマット(ルート)項目が選択されている場合、このコマンドは使用できません。

貼付け

コピーした項目を挿入します。「Paste」を選択すると、追加メニューが表示されます。項目は、選択した項目の子または兄弟として貼り付けることができます。また、選択した項目の兄弟として参照を貼り付けることもできます。

複製

ツリーで選択した項目のコピーを作成します。複製項目には複製元の項目と同じ値が含まれます。複製項目の名前は、複製元の項目名の先頭に「New」という単語が追加された名前になります。たとえば、「Field1」という項目を複製した項目の名前は「NewField1」になります。

名前に数値を含む項目を複製した場合、新しい項目の名前に含まれる数値は、連続する次の数値になります。たとえば、「NewGroup1」を複製したグループの名前は「NewGroup2」になります。

削除

ツリー内で選択されている項目とその項目の子オブジェクトすべてを削除します。

上に移動

選択した項目を、その親の中でポジションを1つ上に移動します。

下に移動

選択した項目を、その親の中でポジションを1つ下に移動します。

昇格

選択した項目を、ツリー内のすぐ上のレベルに昇格させます。たとえば、Field1がGroup1の子オブジェクトであるとします。Field1を選択して昇格ツールをクリックすると、そのフィールドはGroup1の兄弟になります。

降格

選択した項目を、ツリー内のすぐ下のレベルに降格させます。たとえば、Group1がField1の兄弟であるとします。ツリー内でField1はGroup1のすぐ次にあります。Field1を選択して降格ツールをクリックすると、そのフィールドはGroup1の子になります。

18.3 「挿入」メニュー

「Insert」メニューには次のコマンドがあります。

表18-3 「Insert」メニューのコマンド

メニュー・コマンド

説明

フィールド

新しいフィールドを挿入します。ツリー内で選択した項目の子または兄弟としてフィールドを挿入できます。

グループ

新しいグループを挿入します。ツリー内で選択した項目の子または兄弟としてグループを挿入できます。

コメント

コメントを挿入します。ツリー内で選択した項目の子または兄弟としてコメントを挿入できます。

18.4 「ビュー」メニュー

「View」メニューには次のコマンドがあります。

表18-4 「View」メニューのコマンド

メニュー・コマンド

説明

パレットの表示

パレット・ウィンドウを表示します。パレットの詳細は、第20章「パレットの使用」を参照してください。

すべて開く

ツリー・ペイン全体を展開し、ツリー内の全項目の子オブジェクトを表示します。

すべて閉じる

ツリー・ペイン全体を折りたたんで、ルートのメッセージ・フォーマットのみを表示します。

18.5 ツール・メニュー

「Tools」メニューには次のコマンドがあります。

表18-5 「Tools」メニューのコマンド

メニュー・コマンド

説明

インポート

インストールされているImporterのリストを表示します。メッセージのインポートに使用するImporterを選択します。

テスト

Format Testerを開きます。詳細は、第17章「Format Tester」を参照してください。

オプション

「Format Builder Options」ダイアログを表示します。詳細は、第15章「Format Builderのオプション」を参照してください。

18.6 「ヘルプ」メニュー

「Help」メニューには次のコマンドがあります。

表18-6 「Help」メニューのコマンド

メニュー・コマンド

説明

ヘルプ・トピック

ヘルプのメイン画面を表示します。

操作方法

Format Builderで基本的な作業を行うための手順が表示されます。

バージョン情報

Format Builderのバージョンと著作権情報が表示されます。

18.7 ショートカット・メニュー

ショートカット・メニューには次のコマンドがあります。ショートカット・メニューにアクセスするには、ツリーの項目を右クリックします。

注意:

ツリーで選択した項目によっては、使用できないコマンドもあります。

表18-7 ショートカット・メニューのコマンド

メニュー・コマンド

説明

切取り

左ペインで現在選択されている項目とその子オブジェクトをツリーから切り取ります。

コピー

左ペインで現在選択されている項目をツリーの他の場所に挿入するために、コピーを作成します。

貼付け

切り取った項目やコピーした項目を挿入します。「Paste」を選択すると、追加メニューが表示されます。項目は、選択した項目の子または兄弟として貼り付けることができます。さらに、切り取った項目やコピーした項目の参照を、選択した項目の兄弟として貼り付けることもできます。

グループの挿入

新しいグループを挿入します。グループは、選択した項目の子または兄弟として貼り付けることができます。

フィールドの挿入

新しいフィールドを挿入します。フィールドは、選択した項目の子または兄弟として貼り付けることができます。

コメントの挿入

コメントを挿入します。コメントは、選択した項目の子または兄弟として貼り付けることができます。

複製

現在選択されている項目のコピーを作成します。複製項目には複製元の項目と同じ値が含まれます。複製項目の名前は、複製元の項目名の先頭に「New」という単語が追加された名前になります。たとえば、「Group1」というグループを複製したグループの名前は「NewGroup1」になります。

名前に数値を含む項目を複製した場合、新しい項目の名前に含まれる数値は、連続する次の数値になります。たとえば、「NewGroup1」を複製したグループの名前は「NewGroup2」になります。

削除

選択した項目を削除します。

19 操作方法

この章では、Format Builderで一般的なタスクを実行する方法について説明します。

この項の内容は次のとおりです。

- 19.1項「メッセージ・フォーマットの作成」

- 19.2項「グループの作成」

- 19.3項「フィールドの作成」

- 19.4項「コメントの作成」

- 19.5項「参照の作成」

- 19.6項「ドキュメントの保存」

- 19.7項「Format Testerの使用」

- 19.8項「フォーマット定義のデバッグ」

- 19.9項「値の検索」

- 19.10項「オフセットの検索」

- 19.11項「デバッグ・ログの使用」

- 19.12項「キャラクタ・デリミタ」

- 19.13項「デリミタの指定」

- 19.14項「デリミタの一致ルール」

19.1 メッセージ・フォーマットの作成

メッセージ・フォーマット定義ファイルを作成するには、まず、メッセージ・フォーマット(メッセージ・フォーマット・ファイルのルート・ノード)を作成します。

メッセージ・フォーマットを作成するには:

1. 「ファイル」→「新規」を選択します。メッセージ・フォーマットの詳細ウィンドウが右ペインに表示されます。

2. フィールドに適切なデータを入力します。フィールドの定義については、「メッセージ・フォーマットの詳細ウィンドウ」を参照してください。

19.2 グループの作成

グループは、何らかの関連がある複数のフィールドを定義します(たとえば、PAYDATEフィールド、HOURSフィールド、RATEフィールドをPAYINFOグループに入れることができます)。グループを、メッセージ・フォーマット項目の子、別のグループの子、あるいはグループまたはフィールドの兄弟として作成できます。

グループを作成するには:

1. 左ペインのツリー・ビューで項目を選択します。

2. 次のいずれか1つを実行します。

- メッセージ・フォーマットまたは別のグループの子としてグループを作成する場合、「挿入」→「グループ」→子としてを選択します。

- 別のグループまたはフィールドの兄弟としてグループを作成する場合、「挿入」→「グループ」→兄弟としてを選択します。
グループの詳細ウィンドウが右ペインに表示されます。

3. フィールドに適切なデータを入力します。フィールドの定義については、「グループの詳細ウィンドウ」を参照してください。

4. 「適用」をクリックしてメッセージ・フォーマット・ファイルへの変更を保存するか、「リセット」をクリックして詳細ウィンドウへの変更を破棄し、すべてのフィールドを最後に保存された値にリセットします。

注意:

「適用」ボタンと「リセット」ボタンは、詳細パネルのコンポーネントを変更するまで使用できません。

19.3 フィールドの作成

フィールドとは、アプリケーションにとって何らかの意味を持つバイト・シーケンスです(たとえば、フィールドEMPNAMEには、従業員名が入力されます)。フィールドは、メッセージ・フォーマット項目の子、グループの子、あるいはグループまたは別のフィールドの兄弟として作成できます。

フィールドを作成するには:

1. 左ペインのツリー・ビューで項目を選択します。

2. 次のいずれか1つを実行します。

- メッセージ・フォーマットまたはグループの子としてフィールドを作成する場合、「挿入」→「フィールド」→子としてを選択します。

- 別のグループまたはフィールドの兄弟としてフィールドを作成する場合、「挿入」→「フィールド」→兄弟としてを選択します。
フィールドの詳細ウィンドウが右ペインに表示されます。

3. フィールドに適切なデータを入力します。フィールドの定義については、「フィールドの詳細ウィンドウ」を参照してください。

4. 「適用」をクリックしてメッセージ・フォーマット・ファイルへの変更を保存するか、「リセット」をクリックして詳細ウィンドウへの変更を破棄し、すべてのフィールドを最後に保存された値にリセットします。

注意:

「適用」ボタンと「リセット」ボタンは、詳細パネルのコンポーネントを変更するまで使用できません。

19.4 コメントの作成

コメントは、メッセージ・フォーマットまたはメッセージ・フォーマットによって変換されるデータについてのメモです。コメントはメッセージ・フォーマット定義に含まれますが、情報提供のみを目的とします。コメントは、任意のメッセージ・フォーマット、グループ、またはフィールドの子または兄弟として作成できます。

コメントを作成するには:

1. 左ペインのツリー・ビューで項目を選択します。

2. 次のいずれか1つを実行します。

- 選択した項目の子としてコメントを作成する場合、「挿入」→「コメント」→子としてを選択します。

- 選択した項目の兄弟としてコメントを作成する場合、「挿入」→「コメント」→兄弟としてを選択します。
コメントの詳細ウィンドウが右ペインに表示されます。

3. 必要なコメント・テキストを入力します。詳細は、「コメントの詳細ウィンドウ」を参照してください。

4. 「適用」をクリックしてメッセージ・フォーマット・ファイルへの変更を保存するか、「リセット」をクリックして詳細ウィンドウへの変更を破棄し、すべてのフィールドを最後に保存された値にリセットします。

注意:

「適用」ボタンと「リセット」ボタンは、詳細パネルのコンポーネントを変更するまで使用できません。

19.5 参照の作成

参照では、データを再入力しないで、事前に定義したフィールドまたはグループ・フォーマットの記述を再使用することを指定します。参照フィールドまたは参照グループのフォーマットは元のフィールドまたはグループと同じですが、参照フィールドまたは参照グループのOptional設定とOccurrence設定だけは変更できます。たとえば、「請求先」住所と「届け先」住所がデータに含まれ、その住所フォーマットが同じである場合、住所フォーマットの定義は1回で済みます。「請求先」住所定義を作成し、「届け先」住所には参照を作成します。

注意:

参照には、元の項目と同じ名前が付けられます。たとえば、「請求先」住所定義と「届け先」住所定義には同じ名前が付けられます。グループ定義を再使用する場合、汎用的なグループを作成し、そのグループを特定のグループに埋め込みます。たとえば、前の例では、「請求先」グループ内に「住所」グループを作成し、「届け先」グループ内で「住所」グループを参照します。

参照を作成するには:

1. ツリー・ペインでフィールドまたはグループを選択します。

2. 「編集」→「コピー」を選択します。

3. ツリーで正しい兄弟を選択します。

4. 「編集」→「貼付け」→参照としてを選択します。

5. フィールドに適切なデータを入力します。フィールドの定義については、第13章「参照の詳細ウィンドウ」を参照してください。

6. 「適用」をクリックしてメッセージ・フォーマット・ファイルへの変更を保存するか、「リセット」をクリックして詳細ウィンドウへの変更を破棄し、すべてのフィールドを最後に保存された値にリセットします。

注意:

「適用」ボタンと「リセット」ボタンは、詳細パネルのコンポーネントを変更するまで使用できません。

19.6 ドキュメントの保存

メッセージ・フォーマット・ファイルを初めて保存するには:

1. 「ファイル」→「別名保存」を選択します。「別名保存」ダイアログが表示されます。

2. ファイルの保存先のディレクトリに移動します。

3. 「ファイル名」テキスト・ボックスに、ファイルに割り当てる名前を入力します。

4. 拡張子が指定されていない場合、Format Builderによって自動的に拡張子.MFLがメッセージ・フォーマット・ファイルに割り当てられます。

5. 「別名保存」をクリックして、ファイルを指定した場所に指定した名前と拡張子で保存します。

同じ名前でメッセージ・フォーマット・ファイルを保存する場合、「ファイル」→「保存」を選択します。ファイルは同じ場所に同じ名前と拡張子で保存されます。

別の名前でメッセージ・フォーマット・ファイルを保存する場合、「ファイル」→「別名保存」を選択して上記のステップ1から5に従います。

19.7 Format Testerの使用

Format Testerでは、データを解析して再フォーマットする検証テストを行います。Format Testerを使用して、Format Builderで構築中のメッセージのフォーマットに問題がないことを確認します。

Format TesterはFormat Builderから使用できます。

Format Testerを起動するには:

1. Format Builderでメッセージ・フォーマット・ドキュメント(MFLファイル)を開きます。

注意:

Format Testerを実行するには、Format Builderでメッセージ・フォーマット・ドキュメントが開いている必要があります。

2. Format Builderのメニュー・バーでツール→「テスト」を選択します。

3. Format Testerダイアログ・ボックスが表示されます。

注意:

Format Testerでは、現在ロードされているメッセージ定義ドキュメントが使用されます。

詳細は、第17章「Format Tester」を参照してください。

19.8 フォーマット定義のデバッグ

- 19.9項「値の検索」

- 19.10項「オフセットの検索」

- 19.11項「デバッグ・ログの使用」

19.9 値の検索

検索機能を使用して、非XMLデータ内の16進値やテキスト値を検索できます。

値を検索するには:

1. Format Tester内で「ファイル」→非XMLを開くを選択して、検索する非XMLデータ・ファイルを開きます。

2. 「編集」→「検索」を選択します。「検索」ダイアログが開きます。

3. フィールドに適切なデータを入力します(詳細は19.9項「値の検索」 を参照してください)。

4. 「OK」をクリックして検索操作を開始します。

19.10 オフセットの検索

移動機能を使用して、非XMLエディタのカーソルを指定したバイト・オフセットに移動できます。

指定したオフセットに移動するには:

1. 「編集」→「検索」を選択します。移動ダイアログが開きます。

2. フィールドに適切なデータを入力します(詳細は19.10項「オフセットの検索」 を参照してください)。

3. 「OK」をクリックして検索操作を開始します。

19.11 デバッグ・ログの使用

デバッグ・ログでは、デバッグ情報をテキスト・ファイルに保存できます。

デバッグ・ログを使用するには、「ファイル」→デバッグ・ログを選択します。表示されたダイアログで、デバッグ情報の保存先として新しいパスとファイル名を入力するか、既存のファイルを選択できます。

注意:

既存のファイルを選択した場合、新しいデバッグ情報は、ファイルの最後に追加されます。

19.12 キャラクタ・デリミタ

Format Builderで正しい構文を入力して、デリミタを指定できます。たとえば、タブ文字(\u009)をデリミタとして指定する場合、これに一致する構文\tを入力します。

表19-1 キャラクタ・デリミタ

構文

一致する文字

x

文字x

\\

バックスラッシュ

\0n

8進値0n (<= n <= 7)を含む文字

\0nn

8進値0nn (0 <= n <= 7)を含む文字

\0mnn

8進値0mnn (0 <= m <= 3、0 <= n <= 7)を含む文字

\xhh

16進値0xhhを含む文字

\uhhhh

16進値0xhhhhを含む文字

\xff

ファイルの末尾(OEF)の文字

\t

タブ文字(\u0009)

\n

改行(ライン・フィード)文字(\u000A)

\r

キャリッジ・リターン文字(\u000D)

\f

改ページ文字(\u000C)

\a

アラート(ベル)文字(\u0007)

\e

エスケープ文字(\u001B)

\cx

xに対応する制御文字

詳細は、http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.htmlを参照してください。

19.13 デリミタの指定

デリミタは参照または値によって指定できます。

可変長のデータ型の終了点をデリミタで指定できます。デリミタとは、フィールドの終わりをマークする文字。フィールド・データはデリミタが見つかるまで続きます。

19.13.1 参照による指定

デリミタ文字を含む1つまたは複数のフィールドを指定します。フィールドが一覧表示されている順序でデリミタのマッチングが行われます。参照フィールド・ボタンをクリックすると、参照フィールドの選択ダイアログ・ボックスが開きます。このダイアログ・ボックスでは、参照フィールドを選択して、デリミタのマッチングを行う順序を設定します。

図19-1 参照フィールドの選択

図19-1では、左ペインに参照として使用できるフィールドが表示されます。フィールドをクリックして選択してから、二重矢印ボタンをクリックすると、フィールドが追加されます。フィールドを選択した後に、フィールドの順序を並べ替えることができます。それには、右ペインでフィールドを選択し、上矢印ボタンまたは下矢印ボタンをクリックして、フィールドを上下に移動します。「OK」をクリックします。選択したフィールド名が参照フィールド・ボタンの右側のフィールドに表示されます。図19-2を参照してください。

図19-2 参照フィールド

19.13.2 値による指定

1つまたは複数のデリミタを、指定したセパレータ文字で区切って入力します。参照フィールドと「値」の両方を指定した場合は、「Ref Fields」の方が優先されます。一致するデリミタが見つからない場合は、指定されたデリミタの値を使用して、デリミタのマッチングが行われます。値とセパレータの例は次のとおりです。

「値」= ,|~|;

セパレータ= |

このフィールドのデリミタはカンマ、ティルダ、またはセミコロンになります。

フィールドが省略可能である場合は、「オプション」チェック・ボックスがデフォルトで選択されて有効になっています。フィールドが存在しない場合でもバイナリ・データにデリミタが含まれるようにするには、「オプション」チェック・ボックスを選択解除する必要があります。

19.14 デリミタの一致ルール

フィールド・データ内に出現したデリミタをスキップして、デリミタではなくフィールド・データとして扱われるように、ルールを指定することができます。たとえば、デリミタ文字が;(セミコロン)で、フィールド・データがA;Bである場合、AとBの間にある;文字は、デリミタではなく、フィールド・データの一部として認識される必要があります。デリミタの一致ルールを指定するために、次のオプションを指定できます。

- データ区切り文字

- エスケープ文字

- なし

19.14.1 データ区切り文字

フィールド・データの最初と最後に置かれる文字を指定します。たとえば、Data Delim Charが"(二重引用符)である場合、データは"A;B";となります。図19-3を参照してください。

図19-3 データ区切り文字

19.14.2 エスケープ文字

フィールド・データ内に出現するデリミタの前に置かれるエスケープ文字を指定します。エスケープ文字の値は参照フィールドを通じて取得されます。エスケープ文字フィールドに値を指定します。たとえば、エスケープ文字が\\である場合、データはA\\;B;となります。図19-4を参照してください。

図19-4 エスケープ文字

注意:

そのフィールドが構造内で最後のフィールドでなくても、フィールド・デリミタ、および親構造のすべての共有デリミタがスキップされます。たとえば、次のようなMFL構造を考えてみます。

Root Element
Group1 with shared delimiter *
Field1 with delimiter ,
Field2 with delimiter "
Group2 with shared delimiter ~
Field3 with delimiter ,
Optional field4 with delimiter ~

この例では、Field3データには*、~または,が含まれる可能性があります。これらのデリミタは、そのフィールドがGroup2の最後のフィールドでなくても、指定されたエスケープ文字によってスキップされます。

19.14.3 なし

デリミタの一致ルールが必要ない場合は、このオプションを選択します。

20 パレットの使用

この章では、Format Builderのパレットのユーザー・インタフェース・リファレンスを提供します。

Format Builderのパレットを使用すると、よく使用するメッセージ・フォーマット項目を格納したり、格納されている項目をメッセージ・フォーマット定義に挿入することができます。これらの項目はXMLドキュメントに保存され、Windowsの標準のドラッグ・アンド・ドロップ機能を使用してパレットからメッセージ・フォーマット定義に項目をコピーできます。

パレットには、一般的な日付フォーマット、リテラルおよび文字列が含まれています。作成するメッセージ・フォーマットでこれらの項目を使用することも、独自の項目をパレットに追加することもできます。

- 20.1項「パレット・ウィンドウの表示」

- 20.2項「パレットへの項目の追加」

- 20.3項「メッセージ・フォーマットへのパレットの項目の追加」

- 20.4項「「ファイル」メニューの使用」

- 20.5項「ショートカット・メニューの使用」

20.1 パレット・ウィンドウの表示

パレットの表示と非表示を切り替えるには、「表示」→パレットの表示を選択します。パレットが現在表示されていない場合は、Format Builderウィンドウの横に別のウィンドウとしてパレットが開きます。パレットが現在表示されている場合は、そのウィンドウが閉じます。

20.2 パレットへの項目の追加

パレットに項目を追加するには:

1. ナビゲーション・ツリーで、パレットに追加する項目を選択します。

2. 項目をクリックし、左マウス・ボタンを押したまま項目をパレット・ウィンドウにドラッグします。

3. 項目を配置する位置(選択した項目の兄弟として挿入される)までドラッグしたら、マウス・ボタンを離します。ナビゲーション・ツリーの項目がパレット・ウィンドウにコピーされます。

注意:

別のノードの有無に依存するノードをパレットに追加することはできません。たとえば、フィールドまたはグループの参照を追加することはできません。また、繰返しフィールドが定義されている項目を追加することもできません。

コメントの追加は可能ですが、コメントはユニークな名前を持たないのでパレット上で区別が付きにくいため、追加しないことをお薦めします。

20.3 メッセージ・フォーマットへのパレットの項目の追加

メッセージ・フォーマットにパレットの項目を追加するには:

1. パレット・ウィンドウで、メッセージ・フォーマットに追加する項目を選択します。

2. 項目をクリックし、左マウス・ボタンを押したまま項目を「Format Builder」ウィンドウの左ペインにドラッグします。

3. 項目を配置する位置(目的の項目の子または兄弟として挿入される)までドラッグしたら、マウス・ボタンを離します。パレットの項目がメッセージ・フォーマットにコピーされます。

20.4 「ファイル」メニューの使用

パレットの「ファイル」メニューには次のコマンドがあります。

表20-1 「ファイル」メニューのコマンド

メニュー・コマンド

説明

開く

既存のメッセージ・フォーマットを開きます。

保存

パレットに追加したメッセージ・フォーマット項目または変更した既存の項目を保存します。

パレットの非表示

パレット・ウィンドウを閉じます。

20.5 ショートカット・メニューの使用

パレットのショートカット・メニューには次のコマンドがあります。ショートカット・メニューにアクセスするには、パレット・ウィンドウ内を右クリックします。

注意:

ツリーで選択した項目によっては、使用できないコマンドもあります。

表20-2 ショートカット・メニューのコマンド

メニュー・コマンド

説明

挿入

パレットに新しいグループを挿入します。このコマンドを選択すると、新しいグループの名前を入力するウィンドウが表示されます。

名前変更

グループの新しい名前を入力するウィンドウが表示されます。

削除

選択した項目を削除します。

上に移動

選択した項目を、その親の中でポジションを1つ上に移動します。

下に移動

選択した項目を、その親の中でポジションを1つ下に移動します。

昇格

選択した項目を、ツリー内のすぐ上のレベルに昇格させます。たとえば、Field1がGroup1の子オブジェクトであるとします。Field1を選択して昇格ツールをクリックすると、そのフィールドはGroup1の兄弟になります。

降格

選択した項目を、ツリー内のすぐ下のレベルに降格させます。たとえば、Group1がField1の兄弟であるとします。ツリー内でField1はGroup1のすぐ次にあります。Field1を選択して降格ツールをクリックすると、そのフィールドはGroup1の子になります。

21 Format Builderのサポート対象のデータ型

この章では、Format Builderでサポートされるデータ型について説明します。

この項の内容は次のとおりです。

- 21.1項「MFLのデータ型」 - この項では、非XMLからXMLへの変換またはXMLから非XMLへの変換に使用されるサポート対象のメタデータのデータ型を示します。

- 21.2項「COBOL Copybook Importerのデータ型」 - Format Builderツールには、COBOLコピーブックをMFLファイルに変換するためのユーティリティがあります。この節では、メタデータのデータ型に変換できるサポート対象のCOBOLのデータ型を示します(この変換は設計時に行われます)。

- 21.3項「サポートされていないC言語機能」 - Format Builderツールには、C構造体をMFLファイルに変換するためのユーティリティがあります。この項では、メタデータのデータ型に変換できないC言語構造体を示します(この変換は設計時に行われます)。

21.1 MFLのデータ型

表21-1は、データ・トランスフォーマでサポートされているMFLのデータ型を示します。これらのデータ型はFieldFormat要素のtype属性で指定します。

表21-1 サポートされるMFLデータ型

データ型

説明

Binary (Base64エンコーディング)

任意の文字の値を入力できます。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドが必要です。このフィールドの変換後のXMLデータはbase-64でエンコードされています。

Binary (16進数エンコーディング)

任意の文字の値を入力できます。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドが必要です。このフィールドの変換後のXMLデータはbase-16でエンコードされています。

Date: DD-MMM-YY

日付を定義する文字列(例: 22-JAN-00)。

Date: DD-MMM-YYYY

日付を定義する文字列(例: 22-JAN-2000)。

Date: DD/MM/YY

日付を定義する文字列(例: 22/01/00)。

Date: DD/MM/YYYY

日付を定義する文字列(例: 22/01/2000)。

Date: DDMMMYY

日付を定義する文字列(例: 22JAN00)。

Date: DDMMMYYYY

日付を定義する文字列(例: 22JAN2000)。

Date: MM/DD/YY

日付を定義する文字列(例: 01/22/00)。

Date: MM/DD/YYYY

日付を定義する文字列(例: 01/22/2000)。

Date: MMDDYY

日付を定義する6桁の数字列(例: 012200)。

Date: MMDDYYYY

日付を定義する8桁の数字列(例: 01222000)。

Date: MMM-YY

日付を定義する文字列(例: JAN-00)。

Date: MMM-YYYY

日付を定義する文字列(例: JAN-2000)。

Date: MMMDDYYYY

日付を定義する文字列(例: JAN222000)。

Date: MMMYY

日付を定義する文字列(例: JAN00)。

Date: MMMYYYY

日付を定義する文字列(例: JAN2000)。

Date: Wed Nov 15 10:55:37 CST 2000

Javaプラットフォームのデフォルトの日付フォーマット(例: 'WED NOV 15 10:55:37 CST 2000')。

Date: YY-MM-DD

日付を定義する文字列(例: 00-01-22)。(文字列00-01-22は、2000年1月22日の日付を定義します。)

Date: YY/MM/DD

日付を定義する文字列(例: 00/01/22)。(文字列00/01/22は、2000年1月22日の日付を定義します。)

Date: YYMMDD

日付を定義する文字列(例: 000122)。(文字列000122は、2000年1月22日の日付を定義します。)

Date: YYYY-MM-DD

日付を定義する文字列(例: 2000-01-22)。(文字列2000-01-22は、2000年1月22日の日付を定義します。)

Date: YYYY/MM/DD

日付を定義する文字列(例: 2000/01/22)。(文字列2000/01/22は、2000年1月22日の日付を定義します。)

Date: YYYYMMDD

YYYYMMDDフォーマットの8バイトの数字列。文字エンコーディングを表すStringまたはEBCDICの基本データ型を指定できます。

DateTime: DD/MM/YY hh:mm

日付と時刻を定義する文字列(例: 22/01/00 12:24)。

DateTime: DD/MM/YY hh:mm AM

日付と時刻を定義する文字列(例: 22/01/00 12:24 AM)。

DateTime: DD/MM/YY hh:mm:ss

日付と時刻を定義する文字列(例: 22/01/00 12:24:00)。

DateTime: DD/MM/YY hh:mm:ss AM

日付と時刻を定義する文字列(例: 22/01/00 12:24:00 AM)。

DateTime: MM/DD/YY hh:mm

日付と時刻を定義する文字列(例: 01/22/00 12:24)。

DateTime: MM/DD/YY hh:mi AM

日付と時刻を定義する文字列(例: 01/22/00 12:24 AM)。

DateTime: MM/DD/YY hh:mm:ss

日付と時刻を定義する文字列(例: 01/22/00 12:24:00)。

DateTime: MM/DD/YY hh:mm:ss AM

日付と時刻を定義する文字列(例: 01/22/00 12:24:00 AM)。

DateTime: MMDDYYhhmm

日付と時刻を定義する数字列(例: 0122001224)。

DateTime: YYYYMMDDhhmmss

YYYYMMDDHHMISSフォーマットの14バイトの数字列。基本データ型を指定できます。

DateTime: MMDDYYhhmmss

日付と時刻を定義する数字列(例: 012200122400)。

EBCDIC

IBMのExtended Binary Coded Decimal Interchange Codeの文字列。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドが必要です。

Filler

XMLに変換されないバイト・シーケンス。非XMLデータからXMLへの変換では、このフィールドはスキップされます。XMLから非XMLデータへの変換では、このフィールドはスペースのシーケンスとしてバイナリ出力ストリームに書き込まれます。

FloatingPoint: 4バイト、ビッグ・エンディアン

IEEE標準754に準拠する4バイト・ビッグ・エンディアンの浮動小数点数。

FloatingPoint: 4バイト、リトル・エンディアン

IEEE標準754に準拠する4バイト・リトル・エンディアンの浮動小数点数。

FloatingPoint: 8バイト、ビッグ・エンディアン

IEEE標準754に準拠する8バイト・ビッグ・エンディアンの浮動小数点数。

FloatingPoint: 8バイト、リトル・エンディアン

IEEE標準754に準拠する8バイト・リトル・エンディアンの浮動小数点数。

Integer: 符号付き、1バイト

1バイトの符号付き整数(例: 56は0x38)。

Integer: 符号なし、1バイト

1バイトの符号なし整数(例: 128は0x80)。

Integer: 符号付き、2バイト、ビッグ・エンディアン

ビッグ・エンディアン・フォーマットの2バイトの符号付き整数(例: 4660は0x1234)。

Integer: 符号付き、4バイト、ビッグ・エンディアン

ビッグ・エンディアン・フォーマットの4バイトの符号付き整数(例: 4660は0x00001234)。

Integer: 符号付き、8バイト、ビッグ・エンディアン

ビッグ・エンディアン・フォーマットの8バイトの符号付き整数(例: 4660は0x0000000000001234)。

Integer: 符号なし、2バイト、ビッグ・エンディアン

ビッグ・エンディアン・フォーマットの2バイトの符号なし整数(例: 65000は0xFDE8)。

Integer: 符号なし、4バイト、ビッグ・エンディアン

ビッグ・エンディアン・フォーマットの4バイトの符号なし整数(例: 65000は0x0000FDE8)。

Integer: 符号なし、8バイト、ビッグ・エンディアン

ビッグ・エンディアン・フォーマットの8バイトの符号なし整数(例: 65000は0x000000000000FDE8)。

Integer: 符号付き、2バイト、リトル・エンディアン

リトル・エンディアン・フォーマットの2バイトの符号付き整数(例: 4660は0x3412)。

Integer: 符号付き、4バイト、リトル・エンディアン

リトル・エンディアン・フォーマットの4バイトの符号付き整数(例: 4660は0x34120000)。

Integer: 符号付き、8バイト、リトル・エンディアン

リトル・エンディアン・フォーマットの8バイトの符号付き整数(例: 4660は0x3412000000000000)。

Integer: 符号なし、2バイト、リトル・エンディアン

リトル・エンディアン・フォーマットの2バイトの符号なし整数(例: 65000は0xE8FD)。

Integer: 符号なし、4バイト、リトル・エンディアン

リトル・エンディアン・フォーマットの4バイトの符号なし整数(例: 65000は0xE8FD0000)。

Integer: 符号なし、8バイト、リトル・エンディアン

リトル・エンディアン・フォーマットの8バイトの符号なし整数(例: 65000は0xE8FD000000000000)。

Literal

value属性の内容によって決定されるリテラル値。非XMLデータからXMLへの変換時、指定されたリテラルが非XMLデータに存在するかどうかがWLXTによって検証されます。リテラルは読み込まれるがXMLデータには変換されません。XMLデータから非XMLフォーマットへの変換で、リテラルが非XMLフォーマットの一部として定義されている場合、リテラルは変換後の非XMLバイト・ストリームに書き込まれます。

Numeric

数値(0 - 9)のみの文字列。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドが必要です。

Packed Decimal: 符号付き

IBMの符号付きパック形式。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドを指定する必要があります。長さまたは長さフィールドでは、このフィールドのサイズをバイト単位で指定する必要があります。

Packed Decimal: 符号なし

IBMの符号なしパック形式。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドを指定する必要があります。長さまたは長さフィールドでは、このフィールドのサイズをバイト単位で指定する必要があります。

String

文字列。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドが必要です。Stringデータ型に長さ、長さフィールド、デリミタのいずれも指定されていない場合は、「\x00」(NUL文字)が指定されているものと見なされます。

String: NULで終了

固定長フィールド内に含まれ、必要に応じてNUL (\x00)で終了される文字列。このフィールドのデータ型には、読み込むデータ量を決定する長さ属性または長さフィールドが必要です。このデータのNULデリミタの有無が調べられます。デリミタが検出されるとそれ以降のデータが破棄されます。NULデリミタが存在しない場合、固定長データがフィールドの値として使用されます。

Time: hhmmss

時刻を定義する文字列(例: 122400)。

Time: hh:mm AM

時刻を定義する文字列(例: 12:24 AM)。

Time: hh:mm

時刻を定義する文字列(例: 12:24)。

Time: hh:mm:ss AM

時刻を定義する文字列(例: 12:24:00 AM)。

Time: hh:mm:ss

時刻を定義する文字列(例: 12:24:00)。

Zoned Decimal: 先行符号

符号付きゾーン10進数形式(US-ASCIIまたはEBCDIC)。符号は最初のニブルに含まれます。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドを指定する必要があります。長さまたは長さフィールドでは、このフィールドのサイズをバイト単位で指定する必要があります。

注意: このデータ型はMessage Format Languageバージョン2.02のUS-ASCIIデータでのみサポートされます。

Zoned Decimal: 先行分離符号

符号付きゾーン10進数形式(US-ASCIIまたはEBCDIC)。符号は最初のバイトに含まれます。最初のバイトには符号のみが含まれ、数値とは分離されています。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドを指定する必要があります。長さまたは長さフィールドでは、このフィールドのサイズをバイト単位で指定する必要があります。

注意: このデータ型はMessage Format Languageバージョン2.02のUS-ASCIIデータでのみサポートされます。

Zoned Decimal: 符号付き

符号付きゾーン10進数形式(US-ASCIIまたはEBCDIC)。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドを指定する必要があります。長さまたは長さフィールドでは、このフィールドのサイズをバイト単位で指定する必要があります。

注意: このデータ型はMessage Format Languageバージョン2.02のUS-ASCIIデータでのみサポートされます。

Zoned Decimal: 後続分離符号

符号付きゾーン10進数形式(US-ASCIIまたはEBCDIC)。符号は最後のバイトに含まれます。最後のバイトには符号のみが含まれ、数値とは分離されています。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドを指定する必要があります。長さまたは長さフィールドでは、このフィールドのサイズをバイト単位で指定する必要があります。

注意: このデータ型はMessage Format Languageバージョン2.02のUS-ASCIIデータでのみサポートされます。

Zoned Decimal: 符号なし

符号なしゾーン10進数形式(US-ASCIIまたはEBCDIC)。長さ、長さフィールド、デリミタ、またはデリミタ・フィールドを指定する必要があります。長さまたは長さフィールドでは、このフィールドのサイズをバイト単位で指定する必要があります。

注意: このデータ型はMessage Format Languageバージョン2.02のUS-ASCIIデータでのみサポートされます。

21.2 COBOL Copybook Importerのデータ型

表21-2は、COBOLのデータ型とImporterによるサポートの有無を示します。これらのデータ型のサポートには制限があります。次のフォーマット:

05 pic 9(5) comp-5
05 pic 9(5) comp-x

は、4バイトの符号なし整数に変換されます。一方、次のフォーマットではエラーが生成されます:

05 pic X(5) comp-5
05 pic X(5) comp-x

これらの例では、pic x(5)のかわりにpic9(5) を使用できます。

表21-2 COBOLのデータ型

COBOLの型

サポート

BLANK WHEN ZERO (ゾーン10進数)

サポートされます

COMP-1、COMP-2(浮動小数点)

サポートされます

COMP-3、PACKED-DECIMAL

サポートされます

COMP、COMP-4、バイナリ(整数)

サポートされます

COMP、COMP-4、バイナリ(固定長)

サポートされます

COMP-5、COMP-X

サポートされます

DISPLAY(英数字)

サポートされます

DISPLAY数値(ゾーン10進数)

サポートされます

編集済英数字

サポートされます

編集済浮動小数点値

サポートされます

編集済数値

サポートされます

グループ・レコード

サポートされます

INDEX

サポートされます

JUSTIFIED RIGHT

無視されます

OCCURS(固定配列)

サポートされます

OCCURS DEPENDING(可変長)

サポートされます

OCCURS INDEXED BY

無視されます

OCCURS KEY IS

無視されます

POINTER

サポートされます

PROCEDURE-POINTER

サポートされます

REDEFINES

サポートされます

SIGN IS LEADING SEPARATE (ゾーン10進数)

サポートされます

SIGN IS TRAILING (ゾーン10進数)

サポートされます

SIGN IS TRAILING SEPARATE (ゾーン10進数)

サポートされます

SIGN IS LEADING (ゾーン10進数)

サポートされます

SYNCHRONIZED

無視されます

66 RENAMES

サポートされません

66 RENAMES THRU

サポートされません

77レベル

サポートされます

88レベル(条件付き)

無視されます

この表でのサポートの定義は次のとおりです。

- サポート対象 - このデータ型はImporterで正しく解析され、メッセージ・フォーマットのフィールドまたはグループに変換されます。

- サポート対象外 - このデータ型はサポートされず、コピーブックのインポート時にImporterでエラーが報告されます。

- 無視 - このデータ型は解析され、メッセージ・フォーマットにコメントが追加されます。対応するフィールドまたはグループは作成されません。

Importerでは、ベンダー固有の一部の拡張が認識されませんが、ANSI標準COBOLに準拠するコピーブック文はすべて正しく解析されます。Importerのデフォルトのデータ・モデルはIBMのメインフレーム・モデルに基づいており、Format Builderで変更することによって文字セットとデータの「エンディアン特性」を補正できます。

コピーブックのインポート時、フィールドは一般的なデータ型として識別されますが、目視で調べるとより詳細なデータ型を簡単に特定できる場合があります。そのため、Copybook Importerでは、コピーブックで検出された各フィールドにコメントが作成されます。この情報は、MFLデータを編集して元のコピーブックのデータをより適切に表す場合に役立ちます。例:

元のコピーブックのエントリ:

05 birth-date    picxx/xx/xx

インポート後:

8バイト長のEBCDIC型のフィールド

詳しく調べると、このフィールドが日付フォーマットであり、次のデータ型のフィールドとして定義できることがわかります。

Date: MM/DD/YY型のフィールドまたはData: DD/MM/YY型のフィールド

21.3 サポートされていないC言語機能

C Struct Importerユーティリティでは、匿名ユニオン、ビット・フィールド、またはインライン・アセンブラ・コードを含むファイルは解析されません。ここでは、#include <windows.h>文を含むhello.cファイルのプリプロセッサ出力の一部を例にサポートされていない機能を示します。

- 匿名ユニオン

#line 353 "e:\\program files\\microsoft visual studio\\vc98\\include\\winnt.h"
typedef union_LARGE_INTEGER{
struct {
DWORD LowPart;
LONG HighPart;
};
struct {
DWORD LowPart;
LONG HighPart;
} u;
#line 363 "e:\\program files\\microsoft visual studio\\vc98\\include\\winnt.h"
LONGLONG QuadPart;
} LARGE_INTEGER

- ビット・フィールド

typedef struct_LDT_ENTRY {
WORD LimitLow;
WORD BaseLow;
union {
struct {
BYTE BaseMid;
BYTE Flags1;
BYTE Flags2;
BYTE BaseHi;
} Bytes;
struct
DWORD BaseMid : 8;
DWORD Type : 5;
DWORD Dpl : 2;
DWORD Pres : 1;
DWORD LimitHi : 4;
DWORD Sys : 1;
DWORD Reserved_0 : 1;
DWORD Default_Big : 1;
DWORD Granularity : 1;
DWORD BaseHi : 8;
} Bits;
} HighWord;
} LDT_ENTRY, *PLDT_ENTRY;

- インライン・アセンブラ・コード

_inline ULONGLONG
_stdcall
Int64ShrlMod32(
ULONGLONG Value,
DWORD ShiftCount
)
{
_asm {
mov ecx, ShiftCount
mov eax, dword ptr [Value]
mov edx, dword ptr [Value+4]
shrd eax, edx, cl
shr edx, cl
}
}

第IV部

開発に関する一般事項

開発に関する一般事項が含まれます。

- 第22章「開発環境の設定」

- 第23章「カスタムXPath関数の作成と使用」

22 開発環境の設定

この章では、Oracle Service Busに関連する開発環境の設定に関する内容(デフォルトのDerbyデータベースの使用やデフォルトのJMSレポート・プロバイダの無効化など)について説明します。

この章では、次の内容について説明します。

- 22.1項「Derbyでの複数の開発サーバーの実行」

- 22.2項「JMSレポート・プロバイダの無効化」

22.1 Derbyでの複数の開発サーバーの実行

この項では、Oracle Service Busに付属するApache Derbyデータベースの1つ以上のインスタンスで複数の開発ドメインを正常に実行する方法について説明します。

この項の内容は、『Oracle Fusion Middleware Oracle Service Busインストレーション・ガイド』のOracle Service Busの構成に関する項に記載されている、ドメインの作成に関する詳細なドキュメントと組み合せて使用してください。

注意:

Derbyは、開発環境およびテスト環境専用として設計されており、本番環境では使用できません。

22.1.1 Derbyのベスト・プラクティスとトラブルシューティング

Oracle Fusion Middleware構成ウィザードで開発者用のOracle Service Busドメインを作成すると、ウィザードによってデフォルトで次の場所にDerbyデータベースが作成されます。

WL_HOME/common/derby/demo/databases/

ウィザードのJDBC構成ウィンドウで「ベンダー」としてDerbyを選択すると、「DBMS/サービス」フィールドに指定した名前により、作成されるDerbyデータベースの名前が決定されます。

図22-1で、「DBMS/サービス」フィールドにはデフォルトのデータベース名であるosbexamplesが移入され、対応する/osbexamplesディレクトリが作成されています。

図22-1 ドメイン用のDerbyデータベース

ベスト・プラクティスとして、サーバーの起動に関する問題を避けるには、作成したドメインごとに常に一意のDBMS/サービス名を指定します。デフォルトのDBMS/サービス名を変更しない場合、osbexamples-DOMAIN_NAMEという名前が自動的に作成されます。

また、ドメイン作成プロセス中にデフォルトのOracle Service Bus JMSレポート・プロバイダを無効にすることで、Derbyの競合を避けることができます。レポート・プロバイダはデータベースにデータを保持するOracle Service Busのモジュールのみです。通常のサーバー起動でDerbyデータベースも起動されますが、データベースに表が作成されないため、データベースの競合は発生しません。

レポート・プロバイダを無効にすると、次のコマンドを使用してドメインを起動した場合にDerbyの起動を安全に抑制できます。

startWebLogic.cmd(.sh) noderby

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のドメイン作成前にデフォルトのJMSレポート・プロバイダを割当て解除する方法に関する項(http://www.oracle.com/pls/as1111/lookup?id=OSBAG786)を参照してください。

開発環境でのDerbyのより高度な使用方法については、次の項を参照してください。

- 22.1.2項「複数のドメイン間における単一のDerbyデータベース・インスタンスの共有」

- 22.1.3項「独自のDerbyインスタンスによる個々のドメインの実行」

22.1.2 複数のドメイン間における単一のDerbyデータベース・インスタンスの共有

開発環境では、複数のドメインを構成して単一のDerbyデータベース・インスタンスを共有できます。データベース・インスタンスを共有すると、ドメインごとに1つのデータベースではなく、ただ1つのデータベース・インスタンスが稼働するため、開発環境のパフォーマンスが向上します。

インスタンスとは、単一のポート(デフォルト・ポートは1527)を使用するDerbyの実行時インスタンスを意味します。ただし、各ドメインでも、そのインスタンスで稼働する独自のデータベースが作成されます。

単一のDerbyデータベース・インスタンスを共有する複数のドメインを構成して実行するには:

1. Oracle Fusion Middleware構成ウィザードで、次のJDBC構成を使用して最初のドメインを作成します。
スキーマ所有者: DEV_SOAINFRA (または別の一意の名前)

スキーマ・パスワード: パスワードを入力

DBMS/サービス: devdomain1 (または別の一意の名前)

ホスト名: localhost

ポート: 1527

2. 「次へ」をクリックすると、接続テストに失敗します(Derbyが実行されていない場合)。これは予期された動作です。接続テストはスキップします。サーバーの起動時に、Oracle Service BusによってDerbyに自動的にレポート表が作成されます。

3. 2番目のドメインを作成します。

1. 次のJDBC構成を使用します。
スキーマ所有者: DEV_SOAINFRA (または別の一意の名前)

スキーマ・パスワード: パスワードを入力

DBMS/サービス: devdomain2 (または別の一意の名前)

ホスト名: localhost (またはDerbyインスタンスが稼働するリモート・ドメインのコンピュータ名またはIPアドレス)

ポート: 1527

2. 次のウィンドウで「管理サーバー」を選択し、「次へ」をクリックして、ポート番号が一意になるようにします。

4. ドメインを作成したら、DOMAIN_HOME/bin/setDomainEnv.cmd(.sh)で次の作業を実行します。
ALSB_DEBUG_PORTを8883 (または別の一意の値)に変更します。

DEBUG_PORTを8853 (または別の一意の値)に変更します。

DERBY_FLAGをfalseに変更します。(オプション。これにより、サーバーの停止によって実行中のDerbyインスタンスが停止することを回避できます。)

5. 最初のドメインを通常どおり起動します。

6. 次のコマンドを使用して2番目のドメインを起動します。

DOMAIN_HOME/startWebLogic.cmd(.sh) noderby noexit

7. 同じDerbyインスタンスを共有する追加ドメインを作成する場合、一意のDBMS/サービス名(データベース名)を持つドメインを作成します。同時実行ドメインの場合、前の手順の説明に従って、管理サーバー・ポートとデバッグ・ポートが一意であることも確認してください。
リモートDerbyインスタンスへの接続時に単一の開発ドメインを実行中の場合、ドメインの管理サーバーまたはデバッグ・ポートを変更する必要はありません。DBMS/サービスのみが一意である必要があります。

22.1.3 独自のDerbyインスタンスによる個々のドメインの実行

単一のDerbyインスタンスを共有するのではなく、個々の開発サーバーでDerbyの独自のインスタンスを使用する場合、次の手順に従ってドメインを構成し、独自のDerbyインスタンスのポートを変更します。この構成によって、複数のドメインと複数のDerbyインスタンスを同時に実行できます。

1. Oracle Fusion Middleware構成ウィザードで、次のJDBC構成を使用してドメインを作成します。
スキーマ所有者: DEV_SOAINFRA (または別の一意の名前)

スキーマ・パスワード: パスワードを入力

DBMS/サービス: devdomain (または別の一意の名前)

ホスト名: localhost

ポート: 1627 (または別の一意のポート)

2. 「次へ」をクリックすると、接続テストに失敗します(Derbyが実行されていない場合)。これは予期された動作です。接続テストはスキップします。サーバーの起動時に、Oracle Service BusによってDerbyに自動的にレポート表が作成されます。

3. 同時実行ドメインの場合、複数のサーバーを同時実行するのであれば、ドメインの管理サーバーのポート番号が一意であることを確認してください。

4. サーバーの作成を終了します。

5. 同時実行ドメインの場合、ドメインのDOMAIN_HOME/bin/setDomainEnv.cmd(.sh)で次の作業を実行します。
ALSB_DEBUG_PORTを8883 (または別の一意の値)に変更します。

DEBUG_PORTを8853 (または別の一意の値)に変更します。

6. DOMAIN_HOME/bin/startWebLogic.cmd(.sh)で、次の要素を見つけます。
"%WL_HOME%\common\derby\bin\startNetworkServer.cmd >"

これに次のポート引数を追加します。

"%WL_HOME%\common\derby\bin\startNetworkServer.cmd -p 1627 >" (ドメイン構成で使用したDerbyのポート番号)

サーバーを起動すると、指定したポートで独自のDerbyインスタンスが起動します。

注意:

すでにサーバーを作成しており、Derbyの起動ポートを変更する場合、Oracle WebLogic Server管理コンソールのドメイン→「サービス」→「データ・ソース」→「wlsbjmsrpDataSource」→「構成」→「接続プール」で変更できます。

22.2 JMSレポート・プロバイダの無効化

デフォルトでは、Oracle Service Bus JMSレポート・プロバイダは、Oracle Service Busドメインにデプロイされます。レポート・プロバイダは、データベースを使用してレポート・データを永続化します。開発ドメインでJMSレポート・プロバイダを使用しない場合、ドメイン作成プロセス中にJMSレポート・プロバイダを無効化するか割当て解除できます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のJMSレポート・プロバイダを割当て解除する方法に関する項(http://www.oracle.com/pls/as1111/lookup?id=OSBAG573)を参照してください。

レポート・プロバイダを無効にすると、サーバーの起動時にJMSレポート・プロバイダの無害なエラーを抑制できます。

レポート・プロバイダは、データベースにデータを永続化する唯一のOracle Service Bus機能です。レポート・プロバイダを無効にすると、次のコマンドでサーバーを起動したときに、Derbyの実行を抑制できます。

startWebLogic.cmd(.sh) noderby

23 カスタムXPath関数の作成と使用

この章では、Oracle Service Bus内でXQuery式のカスタムXPath関数を作成、登録および使用する方法について説明します。

Oracle Service Busでは、カスタムXPath関数を作成するための充実したフレームワークが提供され、カスタムXPath関数は、プロキシ・サービス・メッセージ・フロー、分割-結合、XQuery Mapper変換など、開発時や実行時のツールにおいてXQuery式エディタで使用できます。

カスタムXPath関数を作成および使用するプロセスの概要は次のとおりです。

- 23.1項「Oracle Service Busでのカスタム関数の登録」

- 23.2項「カスタム関数のJavaクラスの作成とパッケージ化」

- 23.3項「カスタム関数の使用」

- 23.5項「クラスタへのカスタム関数のデプロイ」

注意:

Oracle Service Busでは、データベース表の更新やグローバル・トランザクションへの参加といった二次的な動作を含むカスタム関数はサポートされません。XQuery結果のみに影響するカスタム関数を作成し、二次的な動作はJavaコールアウトなど他の機能を使用して実行してください。

23.1 Oracle Service Busでのカスタム関数の登録

カスタム関数は、インストール内のOracle Service Busのすべてのプロジェクトとサービスで使用できます。特定のドメインに限られません。

カスタム関数の登録には、XMLファイル(およびローカライズ用のオプション・プロパティ・ファイル)の作成が必要です。Oracle Service Bus提供の組込み関数はこの関数フレームワークが使用されるため、このような既存の登録リソースをガイダンスとして使用できます。これらのファイルは次の場所にあります。

OSB_ORACLE_HOME/config/xpath-functions/

Oracle Service Busの関数ファイルはosb-built-in.xmlです。このファイルでは、%記号で囲まれたキー(%OSB_FUNCTIONS%など)は対応する.propertiesファイルから値を取得します。

カスタム関数登録ファイルの基本構造は次のとおりです。その後で要素について説明します。

category id
group id
function
name
comment
namespaceURI
className
method
isDeterministic

要素にはxpf:接頭辞が付きます。

カスタム関数の要素の説明

- category id - 式エディタで、一連の関数を物理的に分類するグループの名前です。たとえば、「Service Bus Functions」とします。id属性を使用して名前を指定します。ローカライズのために対応する.propertiesファイルを使用する場合は、テキスト値を含むキーを.propertiesファイルに入力します。たとえば、%MY_FUNCTIONS%です。category id(プロパティ・ファイルのキー名と実際のnameの値を含む)は一意であることが必要です。

- group id - オプション。ユーザー・インタフェースで関数をグループ分けするためのサブカテゴリの名前です。たとえば、「General」または「Accessors」とします。category idのネーミング・ルールはgroup idにも適用されます。

- name - XQuery式に表示される関数の名前。関数名(namespaceURIと接頭辞で構成される)は一意であることが必要です。Oracle Service Busでは異なるメソッド引数でオーバーロードする関数はサポートされません。関数名が同一でもネームスペースが異なっていれば(つまり接頭辞が異なっていれば)使用できます。

- comment - 関数の説明。説明はOracle Service Busユーザー・インタフェースには表示されませんが、関数の呼出し方法やわかりやすい引数の名前を示すように指示を指定できます。

- namespaceURI - 関数のネームスペース。たとえば、Oracle Service Busの関数ネームスペースはhttp://www.bea.com/xquery/xquery-functionsです。ネームスペースとネームスペース接頭辞は一意であることが必要です。指定するカスタム・ネームスペースは、XQueryエディタのOracle Service Busデフォルト・ネームスペース・リストに表示されます。

- className - 関数を実装する、完全修飾されたカスタムJavaクラスです。

- method - 関数を実装するカスタムJavaメソッドです。前に戻り型を指定します。例:boolean isUserInGroup(java.lang.String, java.lang.String)となります。
メソッドが一次元配列を使用する場合は、XMLファイルにエントリを作成する方法について23.2.1.1項「一次元配列の使用」を参照してください。

- isDeterministic - 関数が決定的かどうかを宣言するtrueまたはfalseの値です。決定的関数は常に同じ結果を返します(たとえば、文字列を連結する関数)。非決定的関数は一意の結果を返します(たとえば、時刻を返す関数)。非決定的関数を使用できますが、XQuery標準では、XQueryエンジンの最適化を保証するために決定的関数の作成が推奨されています。

カスタム関数がXQuery式エディタに表示されるのは、Oracle Service Busがカスタム・クラスを検出できるようになってからです。次の項では、カスタム・クラスとパッケージを作成して、Oracle Service Busで検出できるようにする方法を説明します。

23.2 カスタム関数のJavaクラスの作成とパッケージ化

次のガイドラインに従って、カスタムXPath関数のクラスを作成してパッケージ化します。

23.2.1 クラスとメソッドの作成

次のガイドラインに従って、カスタム関数のJavaクラスとメソッドを作成します。

- クラス - クラスはパブリックであることが必要です。

- メソッド - メソッドはパブリックかつ静的であることが必要です。

- 引数および戻り値 - 表23-1に、メソッドの引数と戻り値でサポートされる型を示します。この表に含まれない型はサポートされません。内部クラスおよび多次元配列はサポートされません。

表23-1 カスタム関数でサポートされるJavaメソッドの型

Javaの型

XQueryの型

XSLTの型

java.lang.String

xs:string

string

int、java.lang.Integer

xs:int

number

boolean、java.lang.Boolean

xs:boolean

boolean

long、java.lang.Long

xs:long

number

short、java.lang.Short

xs:short

number

byte、java.lang.Byte

xs:byte

number

double、java.lang.Double

xs:double

number

float、java.lang.Float

xs:float

number

char、java.lang.Char

xs:string

object

java.math.BigInteger

xs:integer

number

java.math.BigDecimal

xs:decimal

number

java.util.Date

xs:datetime

脚注脚注 1 を参照してください。

java.sql.Date

xs:date

脚注を参照してください。

java.sql.Time

xs:time

脚注を参照してください。

javax.xml.namespace.QName

xs:Qname

脚注を参照してください。

org.apache.xmlbeans.XmlObject

element()

脚注を参照してください。

org.w3c.dom.Element

element()

XSLTのnode-set型はカスタムXPath関数ではサポートされません。

脚注 1 文字列に変換されてから元の型として渡されます。

23.2.1.1 1次元配列の使用

1次元配列(サポート対象のJavaの型を使用)が、アスタリスク(*)を使用して、対応するXQueryの型にマップされます(アスタリスクは、配列の複数のカーディナリティを暗黙に指定するワイルドカードです)。例:

public static XmlObject[] getArrayOfXmlObjects(XmlObject[] a)

これが次の型にマップされます。

namespace:getArrayOfXmlObjects($arg1 as element()*) as element()*

1次元配列の入力引数または戻り値を含む関数のシグネチャでは、http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getName%28%29で説明されている型のエンコーディングを使用する必要があります。次の例は、カスタム関数XMLファイルで、必要な配列エンコーディングを使用して1次元配列のメソッドを指定する方法を示します。

Javaメソッド

カスタム関数XMLファイルでの入力

public static String[] myUppercaseStringArray(String[] arg)

Ljava.lang.String; myUppercaseStringArray([Ljava.lang.String;)

public static int[] myAddInts(int[] arg)

[I myAddInts([I)

23.2.2 カスタム関数クラスのパッケージ化

カスタム関数をXQueryエディタに組み込んで使用するためには、Oracle Service Busがそれらのカスタム関数を認識する必要があります。

カスタム関数クラスをJARファイルにパッケージ化し、そのJARを次のいずれかのディレクトリに置きます。

- OSB_ORACLE_HOME/config/xpath-functions/

- DOMAIN_HOME/config/osb/xpath-functions/

OSB_ORACLE_HOMEはService Busがインストールされている場所を、DOMAIN_HOMEはService Busドメインがインストールされているディレクトリを表します。

IDEおよびサーバーの起動時に、Service Busは、これらのディレクトリのカスタム関数クラスから使用可能なカスタム関数を検索します。23.1項「Oracle Service Busでのカスタム関数の登録」に従って、カスタム関数のXMLファイルでカスタム・クラスおよびメソッドを正しく参照してください。

新しいカスタム関数を追加したら、IDEと新しい関数を使用するすべてのサーバーを再起動する必要があります。

23.3 カスタム関数の使用

ここでは、Oracle Service Busでカスタム関数を使用する方法について説明します。

23.3.1 インラインXQuery式およびXQueryリソースでのカスタム関数の使用

Oracle Service Bus提供の関数と同様に、インラインXQuery式とXQueryリソースの両方にカスタム関数を含めることができます。

23.3.2 XSLTリソースでのカスタム関数の使用

XSLTリソース内からカスタム関数を呼び出すための構文は、Oracle Service Busで使用するXSLTエンジンによって異なります。次のカスタム関数コードに対して、Xalan XSLTエンジン(Oracle JDK対応のMicrosoft Windowsでのデフォルト)を使用してカスタム関数を呼び出す構文を例23-1に示します。

package tests.pipeline;
public class CustomXQFunctions
{
public static String myUppercaseString(String arg)
{
return arg.toUpperCase();
}
}

例23-1 Xalanエンジンを使用してカスタム関数を呼び出すための構文

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   version="1.0">
<xsl:param name="arg-string"/>
<xsl:template name="myUppercaseString"
xmlns:ns0="xalan://tests.pipeline.CustomXQFunctions">
<xsl:variable name="upcase" select="ns0:myUppercaseString($arg-string)" />
<originalInput>
<xsl:value-of  select="$arg-string" />
</originalInput>
<result>
<xsl:value-of select="$upcase" />
</result>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:call-template name="myUppercaseString"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

入力ドキュメントが<example />、入力arg-stringの値がhelloの場合、変換は次のように行われます。

<example>
<originalInput>hello</originalInput>
<result>HELLO</result>
</example>

23.4 EclipseでのカスタムXPath関数のテスト

EclipseでカスタムXPath関数を含むXQueryリソースのテストは、接続しているサーバーのみでサポートされています。「Run」→「Run As」→「Run on Server」コマンドを使用すると、テスト・コンソールでリソースが実行されます。

23.5 クラスタへのカスタム関数のデプロイ

複数のOracle Fusion Middleware製品のホームがある複数サーバー環境では、カスタム関数が使用される環境ごとにすべてのカスタム関数リソースを手動で追加する必要があります。クラスタリングによって、すべての管理対象サーバーにカスタム関数リソースが自動的に配布されるわけではありません。

第V部

トランスポート

この部では、Oracle Service Busで提供されるすべてのトランスポートの情報および構成の詳細を説明します。次の章が含まれます。

- 第24章「Oracle SOA Suiteトランスポート(SOA-DIRECT)」

- 第25章「JCAトランスポート」

- 第26章「HTTPトランスポートおよびポーラー・トランスポート」

- 第27章「SBトランスポート」

- 第28章「EJBトランスポート」

- 第29章「JEJBトランスポート」

- 第30章「JMSトランスポート」

- 第31章「ローカル・トランスポート」

- 第32章「WSトランスポート」

- 第33章「MQトランスポート」

- 第34章「Oracle BPEL Process Managerトランスポート(Oracle SOA Suite 10gで使用する場合のみ)」

- 第35章「Tuxedoトランスポート」

- 第36章「DSPおよびOracle Data Service Integratorトランスポート」

24 Oracle SOA Suiteトランスポート(SOA-DIRECT)

この章では、SOA-DIRECTトランスポートの概要と、サービスでの使用および構成方法について説明します。

Oracle Service Busで提供されるSOA-DIRECTトランスポートを使用すると、Oracle SOA Suiteサービス・コンポーネント(BPELプロセス、ヒューマン・タスク、ルール、およびOracle Mediatorコンポーネントなど)を呼び出すことができます。

注意:

SOA-DIRECTトランスポートはOracle SOA Suite 11g以上のサービス・コンポーネントと通信するためのものです。Oracle Service Busは、Oracle SOA Suite 10g リリース3との通信用にbpel-pmトランスポートを備えています。詳細は、第34章「Oracle BPEL Process Managerトランスポート(Oracle SOA Suite 10gで使用する場合のみ)」を参照してください。

この章の内容は次のとおりです。

- 24.1項「SOA-DIRECTトランスポートについて」

- 24.2項「Oracle Service BusでのSOA Suiteサービスの使用」

- 24.3項「トランスポート構成のリファレンス」

- 24.4項「WS-Addressingのリファレンス」

- 24.5項「XMLの例」

24.1 SOA-DIRECTトランスポートについて

SOA-DIRECTトランスポートにより、Oracle Service BusとOracle SOA Suiteサービス・コンポーネントの間にネイティブの接続が提供されます。Oracle SOA Suiteでは、「ダイレクト・バインディング」フレームワークにより、Oracle SOA Suiteサービス・コンポーネントをコンポジット・アプリケーションで公開できます。Oracle Service Bus SOA-DIRECTトランスポートは、公開されたそれらのサービスとSOAダイレクト・バインディング・フレームワークを介してやりとりします。こうすることで、これらのサービス・コンポーネントがサービス・バス・レイヤーとやりとりし、Oracle Service Busの機能を活用できます。

SOAバインディング・コンポーネントの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のバインディング・コンポーネントのスタート・ガイドおよびダイレクト・バインディング呼出しAPIに関する項を参照してください。

注意:

SOA-Directトランスポートでは、SOAP 1.1、SOAP 1.2またはXMLバインドを使用するWSDLタイプのサービスがサポートされます。SOAダイレクト・バインディング・フレームワークでは、ダイレクト・バインディング・サービスはSOAP 1.1およびSOAP 1.2バインドのWSDLとしてのみ公開されます。ただし、XMLバインドを使用する必要がある場合、インポートされるSOAサービスWSDLをダイレクト・バインディング・サービスのために手動でカスタマイズする必要があります。SOA-DIRECTトランスポートとSOAバインディング・コンポーネントの間のメッセージは常に抽象(バインディングなし)であるため、XMLバインドはメッセージ・ペイロードに影響しません。

SOA-DIRECTトランスポートは次の機能をサポートしています。

- Javaリモート・メソッド呼出し(RMI)を介した任意のSOAバインディング・コンポーネント・サービスの呼出し

- WS-Addressing(非同期コールバックのReplyToプロパティのオプション自動生成を含む)

- ID伝播

- トランザクション伝播

- 添付ファイル

- SOAサービスの呼出し用に最適化されたRMIトランスポート

- 高可用性とクラスタリングのサポート

- フェイルオーバーとロード・バランシング(サービス・コールバック・ロールのサービスでは使用不可)

- エラー時の接続とアプリケーションの再試行

24.1.1 WS-Addressing

SOA-DIRECTトランスポートは、同期および非同期通信でメッセージ相関のためにWS-Addressingしか使用しません。ビジネス・サービス構成でコールバック・プロキシを構成すると、このトランスポートにより、SOAPヘッダーに自動的に次のWS-Addressingプロパティが生成されます。

- ReplyTo - 非同期コールバックでのコールバックのアドレスと接続の詳細を設定します。

- ReferenceParameters - JNDIおよび接続ファクトリのプロパティなど、ReplyToのコールバック・プロパティを含みます。サポート対象の次のWS-Addressingバージョンに対応しています。

- http://www.w3.org/2005/08/addressing

- http://schemas.xmlsoap.org/ws/2004/08/addressing

- ReferenceProperties - JNDIおよび接続ファクトリのプロパティなど、ReplyToのコールバック・プロパティを含みます。サポート対象のWS-Addressingバージョン、http://schemas.xmlsoap.org/ws/2003/03/addressingに対応しています。

ReplyToおよびReferenceParametersの例は、24.4項「WS-Addressingのリファレンス」を参照してください。

WS-Addressingの他のすべてのプロパティのうち、SOA-DIRECTビジネス・サービスのパススルーで使用できないプロパティまたは適していないプロパティは、Oracle Service Busプロキシ・サービス・メッセージ・フローで追加または変換する必要があります。

WS-Addressing以外の相関メカニズムまたはコールバック・メカニズムを使用する場合は、Oracle Service BusとSOAフレームワーク・サービス・コンポーネントの間のWS-Addressingをサポートするように、プロキシ・サービス・パイプラインでメッセージを変換する必要があります。

SOA-DIRECTトランスポートにおけるWS-Addressingの例は、24.4項「WS-Addressingのリファレンス」および24.5例「XMLの例」を参照してください。

24.1.2 セキュリティ

SOA-DIRECTトランスポートでは一方向SSLがサポートされます。SSLを使用するには、ドメインでSSLを有効にし、エンドポイントURIでセキュアなプロトコル(HTTPS、iiops、t3sなど)を使用し、URIでセキュアなポートを参照します。SOA-DIRECT URIの詳細は、24.3.1項「SOA-DIRECTのエンドポイントURI」を参照してください。

SOA-DIRECTトランスポートでは、呼出し元のサブジェクトをサービスを介して渡すか、サービスにバインドされたサービス・アカウントによって、ID伝播を行うことができます。SOA-DIRECTトランスポートは標準化された抽象メッセージのみを扱うため、WS-Securityをサポートしていません。セキュリティ設定の詳細は、24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」を参照してください。

24.1.3 環境値

SOA-DIRECTトランスポートでは、SOA-DIRECTサービスのために次の環境値が格納されています。

- 「JNDIサービス・アカウント」(セキュリティ・カテゴリ)

- 「呼出し元のサブジェクトを渡す」(セキュリティ・カテゴリ)

- 「呼出しサービス・アカウント」(セキュリティ・カテゴリ)

- 「ワーク・マネージャ」(環境カテゴリ)

これらの値の詳細は、24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」を参照してください。

24.1.4 エラーの処理

SOA-DIRECTトランスポートは、接続およびアプリケーションのエラーを認識します。したがって、トランスポートの構成で適切な再試行設定を構成できます。トランスポートは、接続やアプリケーションに関連しないエラーについては一般エラーをスローします。

24.1.4.1 接続エラー

SOA-DIRECTトランスポートでは、次の状況で接続エラーが発生します。

- ターゲット・サービスが存在していない場合。

- RMIのルックアップまたは呼出し中にネーミング例外が発生した場合(一般エラーのjavax.naming.NamingSecurityException例外を伴います)。

- RMIのルックアップまたは呼出し中にリモート例外が発生した場合。

24.1.4.2 アプリケーション・エラー

SOA-DIRECTトランスポートでは、アウトバウンド・ビジネス・サービスがSOAPフォルトを受信すると、アプリケーション・エラーが発生します。

サービスの構成ページで「アプリケーション・エラーの再試行」を選択解除すると、アプリケーション・エラー(再試行を行ってもエラーが継続する可能性がある)の際の再試行を停止できます。

24.1.4.3 一般エラー

SOA-DIRECTトランスポートでは、次の状況で一般エラーが発生します。

- 接続エラーおよびアプリケーション・エラー以外のすべてのエラーの場合。

- javax.naming.NamingSecurityException (JNDIルックアップ中にスローされる)の場合。これは、他のネーミング例外と同じく接続エラーとはみなされません。

24.2 Oracle Service BusでのSOA Suiteサービスの使用

ここでは、Oracle Service BusとOracle SOA Suiteコンポジットの間の同期および非同期通信パターンについて説明します。

24.2.1 簡単な使用例 - 同期

ここでは、Oracle Service Busを介してSOAコンポジットとネイティブに通信する、簡単で最も一般的な使用例(同期通信)について説明します。

24.2.1.1 SOAコンポジットの同期呼出し

Oracle Service Bus SOA-DIRECTトランスポートは、ダイレクト・バインディング・サービスとして公開されているSOAコンポジットのすべてのコンポーネントを呼び出すことができます。

図24-1に、Oracle Service Busを介したクライアントとOracle SOAサービス・コンポーネントの間の同期通信パターンを示します。SOA-DIRECTビジネス・サービスとダイレクト・バインディング・サービスが使用されます。

図24-1 クライアントによるSOAバインディング・サービスの同期呼出し

24.2.1.1.1 サービスの作成と構成

次のガイドラインに従って、Oracle SOAダイレクト・バインディング・サービスをOracle Service Busを介してクライアントから呼び出します。

- Oracle Service Busに、呼び出すSOAサービス・コンポーネントに相当するSOA-DIRECTビジネス・サービスを作成します。

- Oracle Service Busで、対応するOracle SOAダイレクト・バインディング・サービスをWSDLに基づいてWSDLリソースを作成します。
SOAダイレクト・バインディング・サービスWSDLは、SOAリソース・ブラウザを使用してOracle JDeveloperで探すことができます。手順は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のOracle SOA SuiteでのSOAコンポジット・アプリケーションの開発に関する項を参照してください。

- 新しいビジネス・サービスを作成します。

- 「サービス・タイプ」として「WSDL Webサービス」を選択します。

- 作成したWSDLリソースを選択し、適切なポートまたはバインドを選択します。

注意:

ポートを選択すると、トランスポート・タイプとURIは次の構成ページに自動的に伝播されます。

- ビジネス・サービスの構成でsoa-directトランスポートを選択します。

- 24.3.1項「SOA-DIRECTのエンドポイントURI」の説明に従って、エンドポイントURIを設定します。

- 24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」に従って、ビジネス・サービスの他の設定を構成します。

- ビジネス・サービスを呼び出すOracle Service Busでのプロキシ・サービスを作成します。クライアントで使用されるトランスポート・タイプを選択します。プロキシの構成の詳細は、4.3項「プロキシ・サービスの構成」および第3章「トランスポート構成」を参照してください。

ステートフル・サービスを使用してメッセージを正しい会話に関連付ける場合は、24.2.1.3項「メッセージと正しい会話の関連付け」を参照してください。

24.2.1.2 SOAコンポジットからの同期呼出し

SOAコンポジットは、任意のOracle Service Bus SB WSDLベース・プロキシ・サービスを呼び出すことができます。SBプロキシ・サービスを呼び出すには、SOAサービス・コンポーネントはターゲット・タイプが「Oracle Service Bus」のダイレクト・バインディング参照を使用する必要があります。(ターゲット・タイプの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。)

表24-0に、Oracle Service Busを介したOracle SOAサービス・コンポーネントと外部サービスの間の同期通信パターンを示します。

図24-2 SOAバインディング・サービスによる外部サービスの同期呼出し

24.2.1.2.1 サービスの作成と構成

次のガイドラインに従って、ダイレクト・バインディング参照を使用してSOAコンポジットから外部サービスを呼び出します。

- 呼び出したい外部サービスを表すOracle Service Busでのビジネス・サービスを作成します。このサービスでサポートされるトランスポート・タイプを選択します。ビジネス・サービス構成の詳細は、4.2項「ビジネス・サービスの構成」および第3章「トランスポート構成」を参照してください。

- Oracle Service Busで、ビジネス・サービスを呼び出すSBプロキシ・サービスを作成します。

- ビジネス・サービスを呼び出すプロキシで使用されるWSDLリソースを作成します。

- 新しいプロキシ・サービスを作成します。

- 「サービス・タイプ」として「WSDL Webサービス」を選択します。

- プロキシ・サービスのWSDLを選択し、必要なポートまたはバインドを選択します。

- プロキシ・サービスの構成でsbトランスポートを選択します。

- プロキシ・サービスの他の設定を構成します。詳細は、4.3項「プロキシ・サービスの構成」および第27章「SBトランスポート」を参照してください。

注意:

SBプロキシ・サービス対応のWSDLとポート・タイプを使用して、Oracle Service Busを呼び出すダイレクト・バインディング参照を定義します。このWSDLをOracle SOA Suiteプロジェクトにインポートできます。

ステートフル・サービスを使用している場合は、メッセージを正しい会話に関連付ける必要があります。24.2.1.3項「メッセージと正しい会話の関連付け」を参照してください。

24.2.1.3 メッセージと正しい会話の関連付け

ステートフル・メッセージを使用する場合、Oracle Service BusとOracle SOAの間で同期的に送信されるメッセージは、会話と呼ばれます。メッセージを会話の一部として相互に正しく関連付けるために、Oracle Service Bus SOA-DIRECTトランスポートではWS-Addressingの組込みサポートが提供されます。

WS-Addressingの詳細は、24.4.2項「MessageID/RelatesToヘッダー」を参照してください。会話IDの設定例は、24.5.1項「会話IDの例」を参照してください。

24.2.2 高度な使用例 - 非同期

ここでは、SOAコンポジットとOracle Service Busの間のSOA-DIRECTトランスポートを使用する非同期通信について説明します。

注意:

WS-Addressingを使用する非同期会話が現在サポートされているSOAサービス・コンポーネントは、BPELプロセス、Mediatorおよびヒューマン・タスクのみです。

24.2.2.1 SOAコンポジットの非同期呼出し

Oracle Service Bus SOA-DIRECTトランスポートは、ダイレクト・バインディング・サービスとして公開されている非同期SOAサービス・コンポーネントを呼び出すことができます。

図24-3に、Oracle Service Busを介したクライアントとOracle SOAコンポジットの間の非同期通信パターンを示します。ダイレクト・バインディング・サービス、SOA-DIRECTトランスポートおよびSBトランスポートが使用されます。

図24-3 クライアントによるSOAバインディング・サービスの非同期呼出し

24.2.2.1.1 サービスの作成と構成

次のガイドラインに従って、SOAダイレクト・バインディング・サービスをOracle Service Busを介してクライアントから非同期に呼び出します。

- インバウンド・クライアント側で、クライアントと対話するOracle Service Busアーティファクト(アウトバウンドSOA-DIRECTビジネス・サービスを呼び出すリクエスト・プロキシ・サービス、およびクライアントへのコールバックを処理するコールバック・ビジネス・サービス)を作成します。クライアントによって使用されるトランスポート・タイプを使用します。

- リクエスト・プロキシ・サービス
クライアント・リクエストを受信するプロキシ・サービスを構成します。このプロキシ・サービスはアウトバウンド・リクエストのSOA-DIRECTビジネス・サービスを呼び出します。

コールバックは別の接続に送信されるため、Oracle Service Busは、クライアントにコールバックするときに元のコールバック場所を記憶しておく必要があります。WS-Addressingを使用すると、コールバック・アドレスがReplyToアドレス・ヘッダーでリクエスト・プロキシ・サービスに送信されます。SOA-DIRECTビジネス・サービスを呼び出す前に、リクエスト・プロキシはこのアドレスをReplyToヘッダー内のreferenceParameterプロパティとして渡すことができます。WS-Addressingの指定に従い、referenceParameterプロパティはコールバックのSOAPヘッダー・ブロックに挿入されます。その後、コールバックのSBプロキシがこのコールバック・アドレスを抽出し、コールバック・ビジネス・サービスURIを設定できます。

コールバック・アドレスの設定の詳細は、24.4.1項「ReplyToヘッダー」および24.5.2項「Oracle Service Busを介したコンポジット間非同期ネイティブ通信の例」を参照してください。

- コールバック・ビジネス・サービス
コールバックを処理するために必要なビジネス・サービスを構成します。このビジネス・サービスはアウトバウンド・コールバックSBプロキシ・サービスによって呼び出されます。

サービスおよびトランスポートの構成方法は、4.2項「ビジネス・サービスの構成」および第3章「トランスポート構成」を参照してください。

- Oracle Service Busのアウトバウンド側で、SOAコンポジットと対話するためのアーティファクト(呼び出す非同期サービス・コンポーネントを公開するOracle SOAダイレクト・バインディング・サービスへのリクエストを行うリクエストSOA-DIRECTビジネス・サービス、およびダイレクト・バインディング・サービスからのコールバックを処理し、インバウンド・コールバック・ビジネス・サービスを呼び出すコールバックSBプロキシ・サービス)を作成します。

- リクエストSOA-DIRECTビジネス・サービス

- Oracle Service Busで、対応するOracle SOAダイレクト・バインディング・サービスをWSDLに基づいてWSDLリソースを作成します。
SOAダイレクト・バインディング・サービスWSDLは、SOAリソース・ブラウザを使用してOracle JDeveloperで探すことができます。手順は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のOracle SOA SuiteでのSOAコンポジット・アプリケーションの開発に関する項を参照してください。

- 新しいビジネス・サービスを作成します。

- 「サービス・タイプ」として「WSDL Webサービス」を選択します。作成したWSDLリソースを参照して選択し、ダイレクト・バインディング・サービスのために適切なポートまたはバインドを選択します。
ポートを選択すると、トランスポート・タイプとURIは次の構成ページに自動的に伝播されます。

- ビジネス・サービスの構成でsoa-directトランスポートを選択します。

- 24.3.1項「SOA-DIRECTのエンドポイントURI」の説明に従って、URIを設定します。

- トランスポートの構成ページで、「ロール」を「非同期クライアント」に設定します。

- オプションとして、「コールバック・プロキシ」オプションを使用して、作成したSBコールバック・プロキシ・サービスを選択します。
コールバック・プロキシを選択すると、SOA-DIRECTトランスポートによってWS-Addressingヘッダーが自動的に生成され、非同期コールバック・レスポンスの指定コールバック・プロキシへの送信を予定していることがSOAダイレクト・バインディング・サービスに知らされます。

SOA-DIRECTビジネス・サービスでコールバック・プロキシを選択しない場合のコールバック・アドレスの設定方法については、24.4項「WS-Addressingのリファレンス」および24.5.2項「Oracle Service Busを介したコンポジット間非同期ネイティブ通信の例」を参照してください。

- ビジネス・サービスの残りの部分を構成します。詳細は、24.3項「トランスポート構成のリファレンス」および4.2項「ビジネス・サービスの構成」を参照してください。

- リクエスト・プロキシ・サービスからこのビジネス・サービスを呼び出します。

- コールバックSBプロキシ・サービス

- 新しいプロキシ・サービスを作成します。

- 「サービス・タイプ」として「WSDL Webサービス」を選択します。

- ダイレクト・バインディング・サービスのWSDLに対応するWSDLを参照して選択し、適切なポートまたはバインドを選択します。

- プロキシ・サービスの構成でsbトランスポートを選択します。

- プロキシ・サービスの構成を完了します。詳細は、4.3項「プロキシ・サービスの構成」および第27章「SBトランスポート」を参照してください。

24.2.2.2 SOAコンポジットからの非同期呼出し

SOAコンポジットの非同期SOAサービス・コンポーネントは、Oracle Service Busを介して外部サービスを呼び出すことができます。このためには、SOAサービス・コンポーネントはターゲット・タイプが「Oracle Service Bus」のダイレクト・バインディング参照を使用する必要があります。(ターゲット・タイプの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。)

図24-4に、Oracle Service Busを介したOracle SOAサービス・コンポーネントと外部サービスの間の非同期通信パターンを示します。ダイレクト・バインディング参照、SBトランスポートおよびSOA-DIRECTトランスポートが使用されます。

図24-4 SOAバインディング・サービスによる外部サービスの非同期呼出し

24.2.2.2.1 サービスの作成と構成

次のガイドラインに従って、Oracle Service Busを介して外部サービスをOracle SOAダイレクト・バインディング参照から非同期で呼び出します。

- Oracle Service Busのインバウンド側で、SOAコンポジットと対話するためのアーティファクト(SOAダイレクト・バインディング参照リクエストを受信するリクエストSBプロキシ・サービス、およびSOAダイレクト・バインディング参照へのコールバックを処理するコールバックSOA-DIRECTビジネス・サービス)を作成します。

- リクエストSBプロキシ・サービス

- ダイレクト・バインディング参照との対話に使用されるインタフェースに相当するWSDLリソースを作成します。

- 新しいプロキシ・サービスを作成します。

- 「サービス・タイプ」として「WSDL Webサービス」を選択します。

- 作成したWSDLを参照して選択し、適切なポートまたはバインドを選択します。

- プロキシ・サービスの構成ページでsbトランスポートを選択します。

- プロキシ・サービスの構成を完了します。詳細は、4.3項「プロキシ・サービスの構成」および第27章「SBトランスポート」を参照してください。
コールバックは別の接続に送信されるため、Oracle Service Busは、クライアントにコールバックするときに元のコールバック場所を記憶しておく必要があります。WS-Addressingを使用すると、コールバック・アドレスがReplyToアドレス・ヘッダーでリクエスト・プロキシ・サービスに送信されます。外部サービスを呼び出す前に、リクエスト・プロキシ・サービスはこのアドレスをReplyToヘッダー内のreferenceParameterプロパティとして渡すことができます。WS-Addressingの指定に従い、referenceParameterプロパティはコールバックのSOAPヘッダー・ブロックに挿入されます。その後、コールバック・プロキシ・サービスがこのコールバック・アドレスを抽出し、コールバック・ビジネス・サービスURIを設定できます。

コールバック・アドレスの設定の詳細は、24.4.1項「ReplyToヘッダー」および24.5.2項「Oracle Service Busを介したコンポジット間非同期ネイティブ通信の例」を参照してください。

- コールバック・ビジネス・サービス

- 新しいビジネス・サービスを作成します。

- 「サービス・タイプ」として「WSDL Webサービス」を選択します。

- ダイレクト・バインディング参照に対するコールバック・インタフェースに相当するWSDLを参照して選択し、適切なポートまたはバインドを選択します。

- ビジネス・サービスの構成でsoa-directトランスポートを選択します。

- 24.3.1項「SOA-DIRECTのエンドポイントURI」の説明に従って、サービスURIを"callback"に設定します。
一般的に、コールバックURIはURI再書込みを使用して呼出し側プロキシで動的に設定されます。ただし、コールバック・アドレスが常に認識されている場合は、"callback"のかわりに正確なコールバック・アドレスを指定できます。

- SOA-DIRECTトランスポートの構成ページでロールを「サービス・コールバック」に設定します。

- 24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」および4.2項「ビジネス・サービスの構成」に従って、ビジネス・サービスの他の設定を構成します。

- Oracle Service Busのアウトバウンド側で、外部サービスと対話するためのアーティファクト(外部サービスへのリクエストを作成するリクエスト・ビジネス・サービス、およびこのサービスからのコールバックを処理するコールバック・プロキシ・サービス)を作成します。

- リクエスト・ビジネス・サービス
ビジネス・サービスが外部サービスを呼び出すように構成します。このビジネス・サービスはリクエストSBプロキシ・サービスによって呼び出されます。このサービスでサポートされるトランスポート・タイプを選択します。ビジネス・サービス構成の詳細は、4.2項「ビジネス・サービスの構成」および第3章「トランスポート構成」を参照してください。

- コールバック・プロキシ・サービス
コールバック・アドレスをビジネス・サービスに渡すようにプロキシ・サービスを構成します。コールバックURIはリクエスト内で指定されます。URI再書込みを使用してコールバックURIを抽出し、SOA-DIRECTビジネス・サービスに転送します。このサービスでサポートされるトランスポート・タイプを選択します。プロキシ・サービスの構成の詳細は、4.3項「プロキシ・サービスの構成」および第3章「トランスポート構成」を参照してください。

WS-Addressingを使用したコールバック・アドレス設定の詳細は、24.4項「WS-Addressingのリファレンス」を参照してください。

24.3 トランスポート構成のリファレンス

ここでは、SOA-DIRECTトランスポートのエンドポイントURLの形式と構成オプションを説明します。

24.3.1 SOA-DIRECTのエンドポイントURI

SOA-DIRECTトランスポートのURIパターンについて説明します。省略可能な要素は大カッコ[]で囲んでいます。

callback - これは、インバウンド・リクエストを処理するサービス・コールバック・ロールのSOA-DIRECTビジネス・サービスのURIです。実際のURIは、実行時にプロキシ・サービス・パイプラインで動的に指定されます。ただし、コールバック・アドレスが常に認識されている場合は、正確なコールバック・アドレスを指定できます。

他のすべてのSOA-DIRECTビジネス・サービス・ロールの場合:

[protocol://authority]/default/compositeName[!versionNumber[*label]]/serviceName

- protocol
次のいずれかのRMI/JNDIプロトコルを使用します。

- iiop / iiops -サーバーにとらわれない汎用プロトコルです。

- t3 / t3s - Oracle WebLogic Serverで使用されます。

- http / https -トンネリングおよびOracle WebLogic Serverで使用します。
HTTP(S)プロトコルの場合は、サーバーでHTTPトトンネリングを有効にします。SSLプロトコルの場合は、サーバーでSSLを有効にします。

SOAサービスがOracle Service Busと同じサーバーに配置されている場合、protocolとauthorityは省略できます。

エンドポイントURIの他の要素の説明は次のとおりです。

- authority - IPアドレスまたはホスト名と、SOAサービス・コンポーネントをホストするSOAサーバーまたはクラスタのポート。
SOAサービスがOracle Service Busと同じサーバーに配置されている場合、protocolとauthorityは省略できます。

- default - このドメイン名の値は常に"default"です。

- compositeName - バインディング・コンポーネント・サービスが定義されるコンポジット・アプリケーションの名前です。

- !versionNumber - オプション。コンポジット・アプリケーションのバージョン番号。バージョンを指定しないと、最新バージョンが使用されます。

- *label - オプション。!versionNumberと一緒に使用します。SOAサービスWSDLで使用されるラベル・ハッシュです。

- serviceName - SOAバインディング・コンポーネント・サービスの名前です。

ロード・バランシングとフェイルオーバーのために1つのサービスに複数のURIを指定できますが、表24-1に示すように、サービス・コールバック・ロールではサービスに対して1つのURIしか指定できません。このため、サービス・コールバック・ロールのサービスではロード・バランシングおよびフェイルオーバーは使用できません。

24.3.1.1 クラスタのURI

クラスタのエンドポイントURIの形式は次のとおりです。

t3://example_managed1:port1,example_managed2:port2/service_path

このとき、t3://example_managed1:port1,example_managed2:port2はJNDIプロバイダのURLです。

24.3.1.2 URIの例

SOA-DIRECTトランスポートのURIの例を次に示します。

- t3s://example:7002/default/compositeApp/1.0/myService
単一ノードにデプロイされたサービスを指します。

- /default/compositeApp!1.0/myService
Oracle Service Busと同じサーバーに配置されているサービスを指します。

- t3://soaserver.example.com:7001/default/VacationRequest!1.0*ec2dd6c5-1667-4885-a634-2364547beb2d/directclient
バージョンとハッシュ・コードを使用して単一サーバーにデプロイされているサービスを指します。これは、SOAバインディング・コンポーネント・サービスWSDLでのデフォルトの形式です。

- t3://example_managed1:8001,example_managed2:8002/default/myComposite/myService
"myService"として識別されるクラスタSOAフレームワーク環境を指します。特定のバージョンが指定されていないため、サービスの最新バージョンが使用されます。

24.3.2 ビジネス・サービスのためのSOA-DIRECTトランスポートの構成

表24-1に、SOA-DIRECTトランスポートのトランスポート固有の構成オプションを示します。

表24-1 SOA-DIRECTトランスポート構成

プロパティ

説明

JNDIサービス・アカウント

オプション。ターゲットSOAサービスのJNDIルックアップのためのセキュリティ資格証明を指定します。サービス・アカウントは静的であることが必要です。「参照」をクリックして、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

ロール

必須。サービスが使用する通信パターンを指定します。次のいずれかのオプションを選択します。

- 同期クライアント(デフォルト) - このロールでは、非同期コールバックがないため、「コールバック・プロキシ」オプションは無効になります。「WS-Addressingのバージョン」オプションも無効です。

- 非同期クライアント - このロールでは、非同期コールバックが通常必要なため、「コールバック・プロキシ」を指定できます。また、「WS-Addressingのバージョン」を選択する必要があります。非同期オプションが有効になるのは、WSDLサービスのタイプがSOAPの場合のみです。

- サービス・コールバック - このロールは、外部サービス呼出しの後で非同期コールバックをSOAサービスに返すためのものです。

ロード・バランシングとフェイルオーバーはサービス・コールバック・ロールのサービスでは使用できません。

コールバック・プロキシ

オプション。「非同期クライアント」ロールのみで有効になります。

このオプションでは、コールバックを受信するプロキシ・サービスを指定できます。コールバック・プロキシを選択したとき、リクエストまたはプロキシ・サービス・パイプラインによってWS-Addressingが提供されない場合、Oracle Service BusはSOAPヘッダーのReplyToプロパティに自動的に値を設定します。SBトランスポート(RMI用)を使用するWSDLプロキシ・サービスを選択する必要があります。また、コールバック・プロキシ・サービスはWS-Addressingを認識する必要があります。

リクエストで送信されるWS-Addressingプロパティ、またはプロキシ・サービス・パイプラインで設定されるWS-Addressingプロパティが、このオプションで設定するコールバック・プロキシのかわりに使用されます。

「コールバック・プロキシ」を指定せず、リクエストにReplyToプロパティが含まれない場合は、プロキシ・サービス・パイプラインによってSOAPヘッダーにReplyToプロパティを提供する必要があります。

フォルト・プロキシ

このオプションは現在サポートされていません。非同期パターンでフォルトを処理するようにコールバック・サービスを構成する必要があります。

WS-Addressingのバージョン

必須。「非同期クライアント」ロールのみで有効になります。

リクエストまたはプロキシ・サービス・パイプラインでWS-Addressingが提供されないときに使用するデフォルトのWS-Addressingバージョンを指定します。リクエストで送信されるWS-Addressingプロパティまたはプロキシ・サービス・パイプラインで設定されるWS-Addressingプロパティは、このオプションで設定するWS-Addressingバージョンのかわりに使用されます。

環境ごとにWS-Addressingバージョンが異なる場合、プロキシ・サービス・パイプラインで必要な変換を実行します。詳細は、24.5.1.4項「変換の例」を参照してください。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

呼出し元のサブジェクトを渡す

オプション。このオプションを選択すると、SOAサービスを呼び出すときに、Oracle Service Busがプロキシ・サービスの認証済サブジェクトを渡します。「呼出し元のサブジェクトを渡す」の代替オプションである「呼出しサービス・アカウント」オプションは、このオプションを選択すると無効になります。

注意: クライアントとターゲット・サーバーが別のドメインにある場合、それらの間でドメインの信頼が有効になっていることを確認します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のドメイン間セキュリティ・サポートの重要事項に関する項を参照してください。

呼出しサービス・アカウント

オプション。「呼出し元のサブジェクトを渡す」の代替オプションです。RMI呼出しのサービス・アカウントを選択することで、カスタム・セキュリティ資格証明を指定できます。任意のタイプのサービス・アカウントを指定できます(「パス・スルー」、静的、「マッピング)。

「参照」をクリックして、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

24.4 WS-Addressingのリファレンス

ここでは、SOA-DIRECTトランスポートとOracle SOAコンポジットのネイティブ通信に使用する特定のWS-Addressingプロパティについて説明します。また、24.2.2項「高度な使用例 - 非同期」のガイドラインで取り上げた、非同期通信でコールバック・アドレスを指定する方法についても説明します。

WS-Addressingの例は、24.5項「XMLの例」を参照してください。

24.4.1 ReplyToヘッダー

非同期通信では、リクエストとは別の接続でコールバックが送信されます。サービス開発者は、非同期のやり取りで正しいコールバック・アドレスを提供してコールバックが正しいクライアントに送信されるようにする必要があります。WS-Addressing相関によるSOA-DIRECTトランスポートを使用するとき、コールバック・アドレスはWS-AddressingのReplyToヘッダーに指定されます。

24.4.1.1 SOA-DIRECTビジネス・サービスでのSOAコンポジットの非同期呼出し

SOA-DIRECTビジネス・サービスは、オプションでReplyToヘッダーを生成できます。ビジネス・サービスの構成で、コールバックを処理するために「コールバック・プロキシ」を選択すると、SOA-DIRECTトランスポートは、このコールバック・プロキシに対応する正しいコールバック・アドレスをReplyToヘッダーに設定します。このヘッダーが生成されるのは、着信メッセージにすでにReplyToヘッダーが含まれない場合のみです。

詳細は、24.2.2.1項「SOAコンポジットの非同期呼出し」を参照してください。

24.4.1.2 SOA-DIRECTビジネス・サービスでのSOAコンポジットへの非同期コールバック

Oracle Service Busを介して外部サービスをOracle SOAコンポジットから呼び出すとき、コールバック・アドレスを手動で設定する必要があります。このためには、コールバックSOA-DIRECTビジネス・サービスを呼び出すプロキシ・サービスにReplyToの値としてコールバック・アドレスを設定します。

詳細は、24.2.2.2項「SOAコンポジットからの非同期呼出し」を参照してください。

24.4.2 MessageID / RelatesToヘッダー

WS-AddressingのMessageIDヘッダーとRelatesToヘッダーは、Oracle Service BusとOracle SOAサービス・コンポーネントの会話で会話IDの格納に使用され、関連するメッセージが同じ会話内に維持されるようにします。

ReplyToとは異なり、SOA-DIRECTトランスポートでは、MessageIDヘッダーまたはRelatesToヘッダーの組込みサポートは提供されません。かわりに、SOA-DIRECTビジネス・サービスを呼び出すプロキシ・サービスのパイプラインにこれらのヘッダーの正しい値を設定する必要があります。

次に、同期会話と非同期会話でMessageIDヘッダーとRelatesToヘッダーがいつ使用されるかを説明します。

- 同期会話: MessageIDヘッダーの値により、最初のリクエストで会話IDが決まります。同じ会話内のその後のリクエストでは、この会話IDをRelatesToヘッダーに提供する必要があります。

- 非同期コールバック: MessageIDヘッダーの値により、最初のリクエストで会話IDが決まります。その後、コールバックではこの会話IDをRelatesToヘッダーに提供する必要があります。

メッセージが正しい会話に関連付けられるように会話IDを設定する方法の詳細は、 24.2.1.3項「メッセージと正しい会話の関連付け」および24.5.1項「会話IDの例」を参照してください。

24.5 XMLの例

次に、Oracle Service BusとOracle SOAサービス・コンポーネントの間のXMLメッセージの例を示します。

24.5.1 会話IDの例

ここでは、Oracle Service BusとOracle SOAコンポジットの会話内のメッセージに会話IDを設定する様々な例を示します。

図24-5では、クライアントがOracle SOAコンポジットのBPEL Processコンポーネントを同期で呼び出しています。ビジネス・サービス(B1)は、SOA-DIRECTトランスポートを使用してプロセスを呼び出します。プロキシ・サービス(P1)は、必要な会話IDマッピングを処理します。SOAコンポジットはBPEL Processをダイレクト・バインディング・サービスとして公開します。

図24-5 Oracle Service Busを介した同期的なやりとりでの操作

24.5.1.1 ポートおよびメッセージ定義

この項の例では、WSDLで定義された次のポートおよびメッセージ定義を使用します。

<wsdl:types>
<xsd:schema
targetNamespace="http://www.sample.org/spec/samples/types"
elementFormDefault="qualified">
<xsd:complexType name="ValueHolder">
<xsd:all>
<xsd:any minOccurs="1"/>
</xsd:all>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<message name="create"/>
<message name="putRequest">
<part name="key" type="xsd:string"/>
<part name="value" type="types:ValueHolder"/>
</message>
<message name="putResponse">
<part name="value" type="types:ValueHolder"/>
</message>
...
<message name="dispose"/>
<portType name="ServiceMap">
<operation name="create">
<input message="tns:create"/>
</operation>
<operation name="put">
<input message="tns:putRequest"/>
<output message="tns:putResponse"/>
</operation>
...
<operation name="dispose">
<input message="tns:dispose"/>
</operation>
</portType>

24.5.1.2 WS-Addressingでの会話IDの設定

この例は、WS-Addressingを使用して会話内のメッセージに会話IDを設定する方法を示しています。

図24-5に通信パターンが示されています。

作成操作

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:123456789</wsa03:MessageID>
</soap:Header>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>

プット操作

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:111111111</wsa03:MessageID>
<wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
</soap:Header>
<soap:Body>
<put>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

<put>操作にもMessageIDがありますが、RelatesToに会話IDを示す値があるので無視されます。

24.5.1.3 メッセージ・ペイロード・データでの会話IDの設定

この例は、メッセージ・ペイロード・データを使用して会話内のメッセージに会話IDを設定する方法を示しています。

これらの例では、プロキシ・サービスがIDをMessageID/RelatesTo SOAPヘッダーにマッピングします。

図24-5に通信パターンが示されています。

作成操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<createResponse>
<mapID>uuid:123456789</mapID>
</createResponse>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:123456789</wsa03:MessageID>
</soap:Header>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>

説明なし: IDはプロキシ・サービス・パイプラインのリクエストで生成され、プロセスを呼び出す前に<wsa03:MessageID>として挿入されました。プロセス側では、作成操作は一方向の操作なので、クライアントに応答する前にSOAPレスポンスが作成される必要があります。プロキシ・サービスで生成されたIDがレスポンスによって返送されます。

プット操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Body>
<put>
<mapID>uuid:123456789</mapID>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
<soap:Header>
<wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
</soap:Header>
<soap:Body>
<put>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

破棄操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Body>
<dispose>
<mapID>uuid:123456789</mapID>
</dispose>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
<soap:Header>
<wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
</soap:Header>
<soap:Body>
<dispose/>
</soap:Body>
</soap:Envelope>

24.5.1.4 変換の例

これらの例では、クライアントがWS-Addressing仕様の新しいバージョン(wsa04接頭辞)を使用します。プロキシ・サービスで、wsa03接頭辞を使用するようにSOAPヘッダーの変換を行う必要があります。プロキシ・サービス開発者はトランスフォーメーションを構成します。

図24-5に通信パターンが示されています。

作成操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Header>
<wsa04:MessageID>uuid:123456789</wsa04:MessageID>
</soap:Header>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:123456789</wsa03:MessageID>
</soap:Header>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>

プット操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Header>
<wsa04:MessageID>uuid:111111111</wsa04:MessageID>
<wsa04:RelatesTo>uuid:123456789</wsa04:RelatesTo>
</soap:Header>
<soap:Body>
<put>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:111111111</wsa03:MessageID>
<wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
</soap:Header>
<soap:Body>
<put>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

24.5.2 Oracle Service Busを介したコンポジット間非同期ネイティブ通信の例

次の例は、Oracle Service Busを介して別のSOAコンポジットを非同期で呼び出すSOAコンポジットに関連するSOAPヘッダーです。最初のSOAコンポジットは、ダイレクト・バインディング参照として公開されたBPEL Processを使用して、Oracle Service Busを呼び出します。2番目のSOAコンポジットは、ダイレクト・バインディング参照として公開されたBPEL Processを使用して、Oracle Service Busからのリクエストを受信します。

図24-6では、P1とP2はプロキシ・サービスであり、B1およびB2ビジネス・サービスにメッセージを渡します(そして、変換を実行します)。B1およびB2、Oracle Service Bus SOA-DIRECTトランスポートを使用してSOAコンポジットを呼び出すために必要です。

図24-6 Oracle Service Busを介してSOAコンポジットを呼び出すSOAコンポジット

次のSOAPヘッダー例については、図24-6を参照してください。

24.5.2.1 ポートとメッセージの定義

<message name="LoanServiceRequestMessage">
<part name="payload" element="types:loanApplication"/>
</message>
<message name="LoanServiceResultMessage">
<part name="payload" element="types:loanOffer"/>
</message>
<portType name="LoanService">
<operation name="initiate">
<input message="tns:LoanServiceRequestMessage"/>
</operation>
</portType>
<portType name="LoanServiceCallback">
<operation name="onResult">
<input message="tns:LoanServiceResultMessage"/>
</operation>
</portType>

24.5.2.2 BP1からP1 - 開始操作

<soap:Envelope>
<soap:Header>
<wsa03:ReplyTo>
<wsa03:Address>
t3://soaserver:8001/default/AmericanLoanClient/LoanserviceRequester
</wsa03:Address>
</wsa03:ReplyTo>
<MessageID>AmericanLoanClient~1.0/60007</MessageID>
</soap:Header>
<soap:Body >
<loanApplication>
...
</loanApplication>
</soap:Body>
</soap:Envelope>

24.5.2.3 P1/B1からBP2

<soap:Envelope>
<soap:Header>
<wsa03:ReplyTo>
<wsa03:Address>http://serverB:7001/P2</wsa03:Address>
<wsa03:referenceParameters>
<osb:Callback>
<osb:Address>
t3://soaserver:8001/default/AmericanLoanClient/LoanserviceRequesterRef#LoanserviceRequesterBpel
</osb:Address>
</osb:Callback>
</wsa03:referenceParameters>
</wsa03:ReplyTo>
<MessageID>AmericanLoanClient~1.0/60007</MessageID>
</soap:Header>
<soap:Body >
<loanApplication>
...
</loanApplication>
</soap:Body>
</soap:Envelope>

ReplyToコールバック・アドレスはB1によって設定されます。24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」で説明したように、この値はSOA-DIRECTトランスポートの構成の「コールバック・プロキシ」フィールドから取得されます。B1のコールバック・プロキシはP2です。

元のreplyTo情報は、(後に続く) onResultコールバック・メッセージに反映されるように、ラップして参照プロパティとして送信する必要があります。

注意:

このサンプルでは、説明のためにosb:Callbackとosb:Addressを使用しています。WS-Addressingのサポートのために定義された標準またはOracle Service Bus標準の要素はありません。

24.5.2.4 BP2からP2 - onResult操作

<soap:Envelope>
<soap:Header>
<wsa03:RelatesTo>AmericanLoanClient~1.0/60007</wsa03:RelatesTo>
<osb:Callback>
<osb:Address>
t3://soaserver:8001/default/AmericanLoanClient/LoanserviceRequesterRef#LoanserviceRequesterBpel
</osb:Address>
</osb:Callback>
</soap:Header>
<soap:Body >
<loanOffer>
...
</loanOffer>
</soap:Body>
</soap:Envelope>

参照プロパティosb:Callbackは、Oracle BPEL Process ManagerエンジンによってSOAPヘッダーとして返送されます。

24.5.2.5 P2/B2からBP1 - onResult操作

<soap:Envelope>
<soap:Header>
<wsa03:RelatesTo>AmericanLoanClient~1.0/60007</wsa03:RelatesTo>
</soap:Header>
<soap:Body >
<loanOffer>
...
</loanOffer>
</soap:Body>
</soap:Envelope>

この一時的なosb:Callbackヘッダーはプロキシ・サービスP2で削除されますが、このヘッダーを削除する前に、ビジネス・サービスB2のSOA-DIRECTトランスポートがコールバック・メッセージを正しいSOAサービス・コンポーネントに送信できるようにreplyToアドレス値が$outbound変数にコピーされます。

25 JCAトランスポート

この章では、JCAトランスポートの概要と、サービスでの使用および構成方法について説明します。また、Oracle JCAアダプタ・フレームワークについても説明し、Oracle Service Busでの特定のアダプタの使用方法に関するガイダンスを提供します。

Oracle Service Busは、エンタープライズ・リソース・プランニング(ERP)システムなどのエンタープライズ情報システム(EIS)と相互作用するJ2EEコネクタ・アーキテクチャ(JCA)トランスポートを提供しており、これにより、EISアプリケーションおよびサービスがサービス・バス環境に参加することが可能になります。JCAトランスポートが動作するアダプタのリストについては、25.2.1項「アダプタ・サポート」を参照してください。

この章の内容は次のとおりです。

- 25.1項「JCAトランスポートについて」

- 25.2項「アダプタの操作」

- 25.3項「Oracle Service Busを介したEISサービスの呼出し」

- 25.4項「EISからの外部サービスの呼出し」

- 25.5項「トランスポート構成のリファレンス」

25.1 JCAトランスポートについて

JCAトランスポートでは、Oracle Service BusとEISシステムの間のネイティブ接続が提供されており、これによってサービス・バス・レイヤーでのシステム間の対話が可能になり、Service Busの機能および性能を利用できます。

JCAプロキシまたはビジネス・サービスで、図25-1に示すように、EISシステムと対話するよう、JCAトランスポートが組込みJCAアダプタ・フレームワークおよびJCA準拠のアダプタと連携して動作します。実線の矢印はリクエストを示し、点線の矢印はレスポンスを示します。

図25-1 EISと対話するOracle Service Busサービス

JCAプロキシ・サービスは、サポートされるアダプタを介したEISエンドポイントを呼び出すサポート対象のJCAアダプタおよびJCAビジネス・サービスからのインバウンド・リクエストをリスニングします。

この項では、JCAトランスポートの機能と特性について説明します。

25.1.1 メッセージ

JCAトランスポートは、SOAP 1.1を使用してリクエストのみのメッセージング・パターンおよび同期のリクエスト/レスポンスのメッセージング・パターンをサポートします。

25.1.1.1 トランザクション

JCAトランスポートはトランザクションです。JCAプロキシ・サービスがEISトランザクションで呼び出される、またはJCAビジネス・サービスがトランザクションで呼び出されると、トランスポートによりトランザクションが伝播されます。

25.1.2 トランスポート・ヘッダーおよび正規化メッセージ・プロパティ

Oracle JCAアダプタは、正規化メッセージ・プロパティを介してヘッダー情報を送信します(AQ用Oracle JCAアダプタのペイロード・ヘッダーを除きます)。

Service Busでは、JCAアダプタの正規化メッセージ・プロパティがサポートされます。Oracle JCAアダプタからのインバウンド・メッセージについては、Oracle Service Bus JCAトランスポートによって、正規化メッセージ・プロパティがキー値のペアとしてトランスポート・ヘッダーに自動的にマップされます。JCAアダプタへのアウトバウンド・メッセージについては、JCAトランスポートによって、トランスポート・ヘッダーが正規化メッセージ・プロパティに自動的に変換されます。

次に、正規化メッセージ・プロパティをサポートする、Oracle Service Busでの事前定義済のトランスポート・ヘッダーのリストを示します。Service Busでは、この他のすべての標準化メッセージ・プロパティはユーザー定義のトランスポート・ヘッダーにマップされます。

注意:

Oracle Service Busで正規化メッセージ・プロパティをSOAPメッセージ・ヘッダーにマップすることはできません。

JCAアダプタでの正規化メッセージ・プロパティの詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。

25.1.2.1 $inboundおよび$outboundリクエスト・ヘッダー

次に示すのは、$inboundおよび$outboundリクエスト変数の事前定義済Oracle Service Busトランスポート・ヘッダーです。

- jca.aq.Priority (int)

- jca.aq.Correlation (string)

- jca.aq.HeaderDocument (string)

- jca.apps.HeaderDocument (string)

- jca.file.FileName

- jca.file.Directory

- jca.file.Size

- jca.file.Batch

- jca.file.BatchIndex

- jca.file.LastModifiedTime

- jca.ftp.FileName

- jca.ftp.Directory

- jca.ftp.Size

- jca.ftp.Batch

- jca.ftp.BatchIndex

- jca.ftp.CreationTime (SFTPのみでサポート)

- jca.ftp.LastModifiedTime

25.1.2.2 $inboundのみのリクエスト・ヘッダー

次に示すのは、$inboundリクエスト変数の事前定義済Oracle Service Busトランスポート・ヘッダーです。

- jca.aq.MessageId (string)

- jca.aq.Attempts (int)

- jca.aq.EnqueueTime (string)

- jca.aq.OrigMessageId (string)

25.1.2.3 $outboundのみのリクエスト・ヘッダー

次に示すのは、$outboundリクエスト変数の事前定義済Oracle Service Busトランスポート・ヘッダーです。

- jca.aq.Delay (int)

- jca.aq.Expiration (int)

- jca.aq.RecipientList (string)

- jca.aq.ExceptionQueue (string)

- jca.db.ProxyUserName (string)

- jca.db.ProxyPassword (string)

- jca.db.ProxyRoles (string)

- jca.db.ProxyCertificate (string)

- jca.db.ProxyDistinguishedName (string)

- jca.db.ProxyIsThickDriver (boolean)

- jca.db.XADataSourceName (string)

- jca.db.DataSourceName (string)

- jca.apps.Username(string)

- jca.apps.Responsibility(string)

- jca.apps.RespApplication(string)

- jca.apps.SecurityGroup(string)

- jca.apps.NLSLanguage(string)

- jca.apps.ORG_ID(integer)

- jca.apps.ecx.TransactionType(string)

- jca.apps.ecx.TransactionSubtype(string)

- jca.apps.ecx.PartySiteId(string)

- jca.apps.ecx.MessageType(string)

- jca.apps.ecx.MessageStandard(string)

- jca.apps.ecx.DocumentNumber(integer)

- jca.apps.ecx.ProtocolType(string)

- jca.apps.ecx.ProtocolAddress(string)

- jca.apps.ecx.Username(string)

- jca.apps.ecx.Password(string)

- jca.apps.ecx.Attribute1(string)

- jca.apps.ecx.Attribute2(string)

- jca.apps.ecx.Attribute3(string)

- jca.apps.ecx.Attribute4(string)

- jca.apps.ecx.Attribute5(string)

- jca.apps.ecx.Payload(string)

25.1.3 エンドポイント・プロパティ

JCAトランスポートでは、25.5.2項「プロキシ・サービスとビジネス・サービスのためのJCAトランスポートの構成」で説明するように、JCAプロキシ・サービスまたはビジネス・サービスの構成で設定できる複数のサービス・エンドポイント・プロパティがサポートされます。サポートされるエンドポイント・プロパティを次に示します。

詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』のOracle JCAアダプタのエンドポイント・プロパティに関する項、および『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』のOracle JCAアダプタのプロパティに関する項を参照してください。

25.1.3.1 プロキシ・サービスのエンドポイント・プロパティ(インバウンド)

JCAプロキシ・サービスでサポートされるエンドポイント・プロパティは次のとおりです。

- jca.retry.count

- jca.retry.interval

- jca.retry.backoff

- jca.retry.maxInterval

AQ用のOracle JCAアダプタ

- DequeueTimeOut

- ConnectionRetryDelay

- adapter.aq.dequeue.threads

- payloadSizeThreshold

データベースおよびOracle Applications用のOracle JCAアダプタ

- activationInstances

ファイル用のOracle JCAアダプタ

- ignoreListingErrors

- IgnoreZeroByteFile

- jca.message.encoding

- notifyEachBatchFailure

- oracle.tip.adapter.file.debatching.rejection.quantum

- oracle.tip.adapter.file.highavailability.maxRetry

- oracle.tip.adapter.file.highavailability.maxRetryInterval

- oracle.tip.adapter.file.rejectOriginalContent

- oracle.tip.adapter.file.timeout.recoverpicked.minutes

- oracle.tip.adapter.file.timeout.recoverunpicked.minutes

- payloadThreshold

- recoveryInterval

- serializeTranslation

- useFileSystem

FTP用のOracle JCAアダプタ

- IgnoreZeroByteFile

- oracle.tip.adapter.file.rejectOriginalContent

- serializeTranslation

- timestampOffset

- ignoreListingErrors

- jca.message.encoding

- notifyEachBatchFailure

- oracle.tip.adapter.file.debatching.rejection.quantum

- oracle.tip.adapter.file.highavailability.maxRetry

- oracle.tip.adapter.file.highavailability.maxRetryInterval

- oracle.tip.adapter.file.timeout.recoverpicked.minutes

- oracle.tip.adapter.file.timeout.recoverunpicked.minutes

- payloadSizeThreshold

- recoveryInterval

- useFileSystem

25.1.3.2 ビジネス・サービスのエンドポイント・プロパティ(アウトバウンド)

JCAビジネス・サービスでサポートされるエンドポイント・プロパティは次のとおりです。

- jca.retry.count

- jca.retry.interval

- jca.retry.backoff

- jca.retry.maxInterval

- jca.retry.maxPeriod

Oracle Applications用のOracleアダプタ

- ユーザー名

- 職責

ファイル用のOracle JCAアダプタ

- inMemoryTranslation

- IgnoreZeroByteFile

- oracle.tip.adapter.file.mutex

- oracle.tip.adapter.file.rejectOriginalContent

- serializeTranslation

FTP用のOracle JCAアダプタ

- IgnoreZeroByteFile

- oracle.tip.adapter.file.rejectOriginalContent

- serializeTranslation

- timestampOffset

- inMemoryTranslation

- oracle.tip.adapter.file.mutex

データベース用のOracle JCAアダプタ

- cacheConnections - Oracle Service Busは暗黙的にこのプロパティの値をtrueに設定します。このプロパティの値がtrueに設定されていると、データベース・アダプタに対するアウトバウンド接続がキャッシュされます。デフォルトを変更してこのプロパティをfalseに設定すると、アウトバウンドを呼び出すたびに接続のオープンとクローズが発生します。

25.1.4 セキュリティ

ここでは、JCAトランスポートおよびJCAアダプタ・フレームワークがどのようにセキュリティを処理するかを説明します。

JNDIサービス・アカウントは、エンドポイント検証時と実行時の両方で使用されます。

エンドポイント検証の際、静的サービス・アカウントにエンドポイントが関連付けられている場合、アダプタの接続ファクトリに対するJNDIルックアップが静的サービス・アカウントのサブジェクトを使用して実行されます。サービスがサービス・アカウントを使用しない場合は、匿名サブジェクトが使用されます。

実行時には、JCAプロキシ・サービス・アカウントでは静的サービス・アカウントしかサポートされません。静的サービス・アカウントがサービスで構成されている場合、アダプタの接続ファクトリに対するJNDIルックアップを実行するためにサービス・アカウントのサブジェクトが使用されます。そうでない場合は、匿名サブジェクトが使用されます。

実行時のJCAビジネス・サービスでは、静的サービス・アカウント、パススルー・サービス・アカウントおよびマッピング・サービス・アカウントがサポートされます。サービス・アカウントがJCAビジネス・サービスで構成されている場合、アダプタ接続ファクトリおよび後続のアウトバウンド呼出しに対するJNDIルックアップは、そのサービス・アカウントのサブジェクトを使用して実行されます。サービスがサービス・アカウントを使用しない場合は、匿名サブジェクトが使用されます。

EISデータベースに接続するOracleアダプタ(データベース、AQおよびOracle Applications用のOracleアダプタ)は、アダプタで管理される接続ファクトリに関連するJDBCデータソースを使用して接続します。他のOracleアダプタ(ファイル用のOracle JCAアダプタなど)は、アウトバウンド接続で、Oracle WebLogic Serverによるコンテナ管理およびアプリケーション管理のサインオンをサポートします。詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』のエンタープライズ情報システムの資格証明の保護に関する項を参照してください。

25.1.4.1 プロキシ・サービス

インバウンド・リクエストで、JCAプロキシ・サービスを呼び出すJCAアダプタ・フレームワークは匿名として常にプロキシ・サービスを呼び出します。

25.1.4.2 ビジネス・サービス

JCAビジネス・サービスで使用するJNDIサービス・アカウントのタイプによって、サブジェクト付きのアウトバウンド・サービス・エンドポイントが次の方法で呼び出されます。

- サービス・アカウントを使用しない-匿名サブジェクトはアウトバウンドJCAエンドポイントを呼び出すために使用します。

- パススルー・サービス・アカウントを使用する-インバウンド・リクエストに関連するサブジェクトはアウトバウンドJCAエンドポイントを呼び出すために使用します。

- 静的なサービス・アカウントを使用する-サービス・アカウントの静的ユーザー名/パスワードに関連するサブジェクトはアウトバウンドJCAエンドポイントを呼び出すために使用します。

- マッピング・サービス・アカウントを使用する-サービス・アカウントのマップされたユーザー名/パスワードに関連するサブジェクトはアウトバウンドJCAエンドポイントを呼び出すために使用します。

25.1.5 ログ

JCAトランスポートは、Oracle WebLogic Server NonCatalogログ機能を使用してメッセージをロギングします。JCAアダプタ・フレームワークのログは、Oracle WebLogic Serverのログにリダイレクトされます。

Oracle Service Busトランスポートのデバッグ・ロギングが有効の場合のみ、JCAトランスポート、JCAアダプタ・フレームワーク、およびJCAアダプタ(Oracle BAMアダプタを除く)によって生成されるデバッグ・ログ・レコードがWebLogic Serverのログにリダイレクトされます。デバッグ・モードを有効にするには、サーバーを起動する前に、ドメイン・ディレクトリのalsbdebug.xmlファイルを編集し、カテゴリのalsb-jca-framework-adapter-debugフラグをtrueに設定する必要があります。JCAフレームワークおよびアダプタのメッセージのログにはタグJCA_FRAMEWORK_AND_ADAPTERが付けられます。

注意:

alsb-transports-debugフラグは、他のすべてのトランスポートで使用されます。JCAトランスポート、フレームワークおよびアダプタには影響しません。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busのデバッグに関する項を参照してください。

25.1.5.1 Oracle BAM Adapterロギング

RMIベースおよびSOAPベースの接続プールを使用してOracle BAM Adapterバッチ処理のデバッグレベル・ロギングを有効にするには、次のロガー・エントリをdomain_home/config/fmwconfig/servers/server_name/logging.xmlに追加します。

- RMI/EJBの場合 - <logger name="oracle.bam.adc.api.batching.BatchProcessor" level="FINER"/>

- SOAPの場合 - <logger name="oracle.bam.adapter.adc.soap.SOAPBatchProcessor" level="FINER"/>

25.1.6 エラー処理

ここでは、JCAトランスポートのエラー処理情報について説明します。

25.1.6.1 JCAビジネス・サービスのEISフォルトの詳細

JCAフレームワークおよびアダプタがEISからの例外をスローすると、JCAビジネス・サービスがその例外をjca-runtime-fault-detail要素内のSOAPフォルトに伝播します。

次の1つ以上のサブ要素でEISフォルトの詳細にアクセスできます。

- eis-error-code (string) - JCAフレームワークおよびアダプタによって伝播されたEISエラー・コードをキャプチャします(可能な場合)。

- eis-error-message (string) - JCAフレームワークおよびアダプタによって伝播されたEISエラー・メッセージをキャプチャします(可能な場合)。

- exception (string) - JCAフレームワークおよびアダプタのスタック・トレースをキャプチャします。

このフォルト構造はJCAトランスポート・スキーマで定義されます。

注意:

JCAトランスポートによるEISフォルトの処理方法は、今後のリリースで変わる可能性があります。

25.1.6.2 ビジネス・サービス・アプリケーション・エラーの再試行

JCAトランスポートではアプリケーション・エラー時に再試行できず、このオプションを制御しません。このオプションを「いいえ」に設定します。

25.1.7 URI再書込み

JCAトランスポートは、プロキシ・サービスのメッセージ・フローのURI再書込みをサポートします。

25.1.8 環境変数

JCAトランスポートでは次の環境変数値を宣言します。これらは、異なるデプロイメント環境間でOracle Service Bus構成を移動する場合も保持できます。

これらの値の説明は、25.5.2項「プロキシ・サービスおよびビジネス・サービスのためのJCAトランスポートの構成」を参照してください。

- JCA JNDIサービス・アカウント(JCA_ENV_JNDI_SERVICE_ACCOUNT)

- ワーク・マネージャ

- JCAは常にWSDLフラグを使用(JCA_ENV_ALWAYS_USE_WSDL)

- JCA接続モード(JCA_ENV_CONNECTION_MODE)

- JCA上書き接続認証フラグ(JCA_ENV_OVERWRITE_CONNECTION_FACTORY_AUTHENTICATION_PROPERTIES)

- JCA認証上書きサービス・アカウント(JCA_ENV_CONNECTION_AUTHENTICATION_OVERWRITE_SERVICE_ACCOUNT)

25.1.9 エンコーディング

インバウンド・リクエストおよびアウトバウンド・レスポンスでは、JCAアダプタ・フレームワークがUTF-8エンコーディングを使用してJCAプロキシ・サービスにメッセージを送信します。

25.2 アダプタの操作

JCAトランスポートは様々なEISアダプタと互換性があります。この項では、Oracle Service BusとJCAトランスポートにサポートされるアダプタの使用方法について説明します。

Oracle Service BusでJCAプロキシ・サービスまたはビジネス・サービスを作成するには、WSDLが必要となります。サポートされるアダプタと対話するプロキシ・サービスまたはビジネス・サービスのために、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のリソースの命名制限に関する項に従って、EISシステム環境にJCAファイルとWSDLを生成する必要があります。JCAファイルとWSDLを生成した後に、それらをOracle Service Bus構成にインポートし、JCAファイルを使用してJCAサービスを作成します。

たとえば、Oracle JCAアダプタと対話するサービスを作成するとき、JCAファイルとWSDLをOracle JDeveloperで生成し、それらのファイルをOracle Service Bus IDEにインポートし、JCAファイルに基づいてJCAサービスを作成および構成します。詳細は、2.2.2項「アウトバウンドJCAファイルからJCAビジネス・サービスを生成する」および2.3.2項「インバウンドJCAファイルからJCAプロキシ・サービスを生成する」を参照してください。

JCAサービスの生成のためにJCAファイルとWSDLファイルをOracle Service Bus管理コンソールにインポートすることもできます。Oracle Service Bus管理コンソール・オンライン・ヘルプを参照してください。

この項の内容は次のとおりです。

- 25.2.1項「アダプタ・サポート」

- 25.2.3項「JCAアダプタ・フレームワーク」

- 25.2.4項「アダプタの構成 - 全般」

- 25.2.6項「データベース用のOracle JCAアダプタの構成」

- 25.2.7項「AQ用のOracle JCAアダプタの構成」

- 25.2.9項「拒否されたメッセージ」

25.2.1 アダプタ・サポート

Oracle Service Bus JCAトランスポートでは、次のJCA準拠のアダプタと対話できます。

- カスタムJCAアダプタ - 25.2.8項「カスタムJCAアダプタの使用」を参照

- Oracle Applications用のOracleアダプタ

- AQ用のOracle JCAアダプタ

- データベース用のOracle JCAアダプタ

- ファイル/FTP用のOracle JCAアダプタ

- ソケット用のOracle JCAアダプタ

- Oracle BAM Adapter (Business Activity Monitoring)

- PeopleSoft (Oracle Applicationアダプタ)

- SAP R/3 (Oracle Applicationアダプタ)

- Siebel (Oracle Applicationアダプタ)

- J.D. Edwards (Oracle Applicationアダプタ)

Oracleアダプタの詳細は、次のガイドを参照してください。

- 『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』

- 『Oracle Fusion Middleware Oracle Business Activity Monitoringユーザーズ・ガイド』

25.2.2 Oracle JCAアダプタの制約事項

Oracle Service Busで一部のJCAアダプタを使用する際の制約事項を次に示します。

25.2.2.1 すべてのJCAアダプタに適用される制約事項

JCAトランスポートでは、アクティブ/パッシブ・トポロジでシングルトン・エンドポイント・プロパティがサポートされません。

25.2.2.2 AQ用のOracle JCAアダプタの制約事項

AQ用のOracle JCAアダプタでは、JCAトランスポートでストリーム・ペイロードがサポートされません。

25.2.2.3 ファイル/FTP用のOracle JCAアダプタの制約事項

ファイル/FTP用のOracle JCAアダプタでは、JCAトランスポートで、添付(大規模なペイロードのサポート)、ファイルの前処理と後処理、ZIPファイル処理用のリエントラント・バルブの使用、コンテンツ・ストリーミング、ファイルのチャンク読取りがサポートされません。

25.2.3 JCAアダプタ・フレームワーク

JCAトランスポートはOracle Service Bus JCAアダプタ・フレームワークを使用して、外部EISサービスに接続を提供するJCA準拠のアダプタと対話します。JCAアダプタ・フレームワークは、これらのアダプタと対話する複雑さを除去してくれるため、ユーザーはOracle Service Busのプロキシおよびビジネス・サービス開発に集中できます。

インバウンド対話では、JCAプロキシ・サービスは関連するJCAアダプタ・エンドポイントにリスナーを登録します。JCAプロキシにメッセージを送信したEISシステムにイベントが発生すると、JCAアダプタ・フレームワークによりリクエストのみのパターンまたはリクエスト/レスポンスのパターンのプロキシ・サービスが呼び出されます。

アウトバウンド対話で、クライアントがOracle Service Busを介してEISサービスを呼び出すと、JCAビジネス・サービスによりJCAアダプタ・フレームワークを介してJCAアダプタ・エンドポイントが呼び出されます。

JCAアダプタ・フレームワークの構成は不要です。Oracle Service BusでJCAプロキシ・サービスおよびビジネス・サービスを作成し、必要に応じてアダプタをデプロイすると、JCAアダプタ・フレームワークはデプロイされ、自動的に機能します。

25.2.4 アダプタの構成 - 全般

Oracle JCAアダプタ(AQ、データベースおよびOracle Applications用のOracle JCAアダプタなど)はOracle Service Busドメインに自動的にデプロイされます。(サポートされている他のサードパーティ・リソース・アダプタは、Oracle WebLogic Serverコンソールで手動でインストールし、デプロイする必要があります。)

Oracle WebLogic Serverで各アダプタのデータ・ソースを作成し、各アダプタを構成します。すでにデプロイ済のOracleアダプタ(AppsAdapter、AqAdapter、DbAdapterなど)を構成するには、次の一般的な手順を実行します。

1. データ・ソースを作成します。Oracle WebLogic Serverコンソールで、EISデータベースに接続するためのデータ・ソースを作成して構成します。

2. デプロイされたリソース・アダプタを構成します。Oracle WebLogic Serverコンソールで、作成したデータ・ソースを使用するようにアダプタの構成を変更します。

1. 「デプロイメント」→アダプタ→「構成」→「アウトバウンド接続プール」を選択します。

2. 新しいデータ・ソースに基づく新しい接続プール・ファクトリを作成します。処理中に、接続プール・ファクトリPlan.xmlファイルの場所を指定します。このファイルは接続ファクトリの構成設定を永続化します。

3. 接続プール・ファクトリを作成したら、名前をクリックしてプロパティを変更します。このためには、XADataSourceName (XAデータ・ソース用)またはdatasourceName(非XAデータ・ソース用)の「プロパティ」フィールドをクリックし、作成したデータ・ソースの名前を入力し、[Enter]を押します。

注意:

データ・ソースの名前を入力してから、カーソルが入力フィールドにあるときに[Enter]を押す必要があります。こうしないと、接続プール・ファクトリのプロパティが保存されません。

4. チェンジ・センターの変更をアクティブ化します。

アダプタ固有の構成情報については、次の項を参照してください。

25.2.5 データベースをポーリングするアダプタの構成

デフォルトでは、データベースをポーリングするOracleアダプタは1スレッドを使用してデータベースをポーリングします(アクティブ化指定のNumberOfThreads=1プロパティ)。設計に基づき、アダプタはこのスレッドを解放しないため、サーバー・ログにスタック・スレッド・スタック・トレースが表示されます。NumberOfThreadsを2以上に設定すると、それらすべてのスレッドにスタック・トレースが表示されます。スタック・スレッド・スタック・トレースは無視できます。

アダプタに関するスタック・スレッド・スタック・トレースの表示を防ぐには、次の設定を含むようにワーク・マネージャを構成します。

<ignore-stuck-threads>true</ignore-stuck-threads>

JCAプロキシ・サービスで、作成したワーク・マネージャをトランスポートのディスパッチ・ポリシーが使用するように構成します。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

25.2.6 データベース用のOracle JCAアダプタの構成

Oracle Service BusとOracle Databaseアダプタの構成における重要な点を次に示します。構成手順の詳細は、Service BusでのJCA DBアダプタに関するチュートリアル(http://www.oracle.com/technetwork/middleware/service-bus/learnmore/index.html)を参照してください。

- データ・ソース: データベース用のOracle JCAアダプタのデータ・ソースについては、次のオプションを設定します。

オプション

設定

初期容量

0

予約時の接続のテスト

選択

テスト頻度

5

テスト対象の表名

SQL SELECT 1 FROM DUAL

アイドル・プール接続を信頼する秒数

0

接続作成の再試行間隔(秒)

10

注意:

特定のOracle Database表をポーリングするプロキシ・サービスは1つのみです。

25.2.7 AQ用のOracle JCAアダプタの構成

AQ用のOracle JCAアダプタのデータ・ソースでは、「予約時に接続をテスト」オプションを選択します。

25.2.8 カスタムJCAアダプタの使用

Oracle Service BusでカスタムJCAアダプタを作成して使用することができます。Oracle JDeveloperでカスタム・アダプタを作成したら、Oracle Service Busにファイルをインポートし、XMLファイルに登録します。登録ファイルでService Busにカスタム・アダプタを登録すると、他のJCAアダプタと同様に、そのカスタム・アダプタをJCAトランスポートと組み合せて使用できます。

注意:

TopLink XMLマッピング・ファイルやXSLTファイルなどの依存関係リソースを含むサポート対象の一部のOracle SOA Suiteアダプタとは異なり、Service Busでは、カスタム・アダプタでの依存関係リソースの使用がサポートされません。

カスタム・アダプタの登録ファイルについて

カスタム・アダプタはすべて、Service Busホーム・ディレクトリ(OSB_HOME/config/adapter)にあるOSBSupportedAdapters.xmlファイルに登録する必要があります。このファイルには、Service BusのすべてのカスタムJCAアダプタの名前のみがリストされます。以前にカスタムJCAアダプタを登録していないと、登録ファイルを作成する必要がある場合があります。独自の登録ファイルの作成に使用できる単純なファイルを次に示します。

<jca:osb-supported-adapters
xmlns:jca="http://www.bea.com/wli/sb/transports/jca">
<jca:adapter-type>CUSTOM_ADAPTER</jca:adapter-type>
<jca:adapter-type>SAMPLE_ADAPTER</jca:adapter-type>
<jca:adapter-type>MY_ADAPTER</jca:adapter-type>
</jca:osb-supported-adapters>

adapter-type要素の値は、アダプタJCAファイルから取得されます。それは、adapter-config要素のadapter属性の値に次の変更を加えた値になります。

- すべての文字が大文字に変換されます。

- 1つの空白が1つのアンダースコアに変換されます(たとえば、My AdapterはMY_ADAPTERに変換されます)。

- 連続する空白が1つのアンダースコアに変換されます(たとえば、My AdapterもMY_ADAPTERに変換されます)。

たとえば、アダプタのJCAファイルが次のようであるとします。

<adapter-config name="custom-adapter-endpoint" adapter="My Adapter"
wsdlLocation="custom-adapter-endpoint.wsdl"
xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
. . .
</adapter-config>

OSBSupportedAdapters.xmlのエントリは次のようになります。

<jca:adapter-type>MY_ADAPTER</jca:adapter-type>

Oracle Service BusでカスタムJCAアダプタを登録および使用するには:

1. カスタムJCAアダプタを作成します。『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』のカスタム・アダプタの作成に関する項を参照してください。

2. 次のいずれか1つを実行します。

- カスタム・アダプタの登録ファイルOSB_HOME/config/adapter/OSBSupportedAdapters.xmlがすでに存在する場合は、サポートされるアダプタ・タイプのリストに独自のカスタム・アダプタを追加します(「カスタム・アダプタの登録ファイルについて」を参照してください)。

- カスタム・アダプタの登録ファイルが存在しない場合は、「カスタム・アダプタの登録ファイルについて」にあるサンプル・ファイルを基に、ファイルを作成します。サンプルのアダプタ・タイプの名前を、独自のアダプタJCAファイルの実際の名前に置き換えます。

3. カスタム・アダプタのJCAリソースをOracle Service Busにインポートします。

注意:

- プロキシ・サービスまたはビジネス・サービスの生成にJCAファイルを使用することも、プロキシ・サービスまたはビジネス・サービスでカスタム・アダプタが使用されるよう構成する際にOracle Service Bus JCAトランスポートを使用することもできます。JCAファイルからのサービスの生成の詳細は、2.2.2項「アウトバウンドJCAファイルからJCAビジネス・サービスを生成する」を参照してください。

- JCAトランスポート構成ページの「動的エンドポイント・プロパティ」セクションで、カスタム・エンドポイント・プロパティを追加および構成します(オプション)。

- JCAトランスポートでは、カスタム・アダプタの正規化メッセージ・プロパティがサポートされます(25.1.2項「トランスポート・ヘッダーおよび正規化メッセージ・プロパティ」を参照してください)。

25.2.9 拒否されたメッセージ

JCAアダプタ・フレームワークにより、拒否されたメッセージ(データ・エラーのメッセージ)がアダプタごとに/domain/jca/.../rejectedMessagesディレクトリに自動的にログされます。

25.3 Oracle Service Busを介したEISサービスの呼出し

この項では、Oracle Service Busを介したEISサービスを呼び出す方法について説明します。

JCAトランスポートは、リクエストおよび同期リクエスト/レスポンスのメッセージ・パターンをサポートします。ここでは、図25-2に示すように、同期リクエスト/レスポンスのパターンについて説明します。

図25-2 クライアントによるOracle Service Busを介したEISサービスの呼出し

25.3.1 サービスの作成、構成および呼出し

クライアントからEISサービスを呼び出すために、次のガイドラインを使用してください。

特定のアダプタに関する構成の問題は、25.2項「アダプタの操作」を参照してください。

- Oracle Service Busで、呼び出すEISサービスを表すビジネス・サービスを作成します。
アウトバウンドJCAビジネス・サービスをOracle Service Busで作成します。詳細は、2.2.2項「アウトバウンドJCAファイルからJCAビジネス・サービスを生成する」を参照してください。

その他のビジネス・サービス構成の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

- ビジネス・サービスを呼び出すOracle Service Busでのプロキシ・サービスを作成します。

- 25.1.1項「メッセージ」で説明されているように、プロキシ・メッセージ・フローでは、JCAトランスポートのサポートされるメッセージ・フォーマットでメッセージを送信するために必要なトランスフォーメーションを実行します。

- クライアントから目的のペイロードのプロキシ・サービスを呼び出します。

その他のプロキシ・サービス構成の詳細は、2.3項「プロキシ・サービスの操作」を参照してください。

25.4 EISからの外部サービスの呼出し

この項では、Oracle Service Busを介してEISから外部サービスを呼び出す方法について説明します。

JCAトランスポートは、リクエストおよび同期リクエスト/レスポンスのメッセージ・パターンをサポートします。ここでは、図25-3に示すように、同期リクエスト/レスポンスのパターンについて説明します。

図25-3 EISによるOracle Service Busを介した外部サービスの呼出し

25.4.1 サービスの作成、構成および呼出し

次のガイドラインを使用して、EISから外部サービスを呼び出します。

特定のアダプタに関する構成の問題は、25.2項「アダプタの操作」を参照してください。

- 呼び出したい外部サービスを表すOracle Service Busでのビジネス・サービスを作成します。
ビジネス・サービス構成の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

- ビジネス・サービスを呼び出すOracle Service Busでのプロキシ・サービスを作成します。

- インバウンドJCAプロキシ・サービスをOracle Service Busで作成します。詳細は、2.3.2項「インバウンドJCAファイルからJCAプロキシ・サービスを生成する」を参照してください。

- プロキシ・メッセージ・フローでは、呼び出す外部サービスでサポートされるメッセージ・フォーマットでメッセージを送信するために、必要なトランスフォーメーションを実行します。

- 通常どおり、EISからプロキシ・サービスを呼び出します。

Oracle Service Busで、JCAトランスポートはEISからのサービス呼出しをリスニングするJCAアダプタ・エンドポイントにリスナーを登録します。JCAアダプタ・フレームワークはサービス呼出しをプロキシ・サービスに渡します。

その他のプロキシ・サービス構成の詳細は、2.3項「プロキシ・サービスの操作」を参照してください。

25.5 トランスポート構成のリファレンス

この項では、JCAトランスポート固有の構成オプションについて説明します。一般的なビジネスおよびプロキシ・サービスの構成の説明については、次の項を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』

- 2.2項「ビジネス・サービスの操作」

- 2.3項「プロキシ・サービスの操作」

25.5.1 エンドポイントURI

JCAサービスの次のエンドポイントURIフォーマットを使用してください。

jca://<resource_adapter_jndi>

ここで、resource_adapter_jndiは、JCAファイルに含まれるconnection-factory要素の"location"属性の値です。この値は、アダプタの接続ファクトリJNDIと一致します。

25.5.1.1 エンドポイント再デプロイメント

JCAサービス・エンドポイントは、WSDL、XMLスキーマ、サービス・アカウント、JCAリソース、XMLスキーマおよびXMLリソース(TopLinkまたはEclipseLinkマッピング・ファイル)に依存します。それらのうちいずれかのリソース・タイプが更新され、サービス用に保存されると、JCAサービス・エンドポイントが自動的に削除、再作成および再デプロイされます。JCAプロキシ・サービスでは、新しいアダプタ・リスナーもインバウンド・リクエストをリスニングするために初期化されます。

表25-1で説明されているように、JCAエンドポイント再デプロイメントは、「常にJCAファイルからの構成を使用」オプションをサービスで選択しているかどうかによって、実行時にサービスに潜在的な影響を及ぼします。例:

- 「常にJCAファイルからの構成を使用」を選択すると、JCAエンドポイントの再デプロイメント後に、実行時にリソース・アダプタと接続および対話するために、更新されたJCAファイルが使用されます。

- 「常にJCAファイルからの構成を使用」を選択しないと、実行時にリソース・アダプタと対話するために、対応する更新済のJCAファイル・プロパティではなく、既存のサービス構成オーバーライドが使用されます。

25.5.2 プロキシ・サービスとビジネス・サービスのためのJCAトランスポートの構成

表25-1に、EclipseまたはOracle Service Bus管理コンソールにおけるJCAトランスポートの構成ページに含まれるオプションを示します。

表25-1 JCAトランスポート構成オプション

オプション

説明

JCAファイル

「参照」をクリックしてJCAリソースを選択します。JCAリソースによって、使用されるアダプタの詳細、WSDLへのバインド、TopLinkまたはEclipseLinkマッピング・ファイル、サービスで必要なアクティブ化/相互指定プロパティなど、サービスの様々な面が定義されます。

有効なJCAリソースを選択したら、その他のトランスポート構成フィールドが使用可能になります。

アダプタ名

JCAサービスで使用するアダプタの名前を示す読取り専用の値。

アダプタ・タイプ

アダプタ・タイプを示す読取り専用の値。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

JNDIサービス・アカウント

JNDIサービス・アカウントはJNDIコンテキスト・セキュリティのためのアカウントで、EISアダプタ管理対象の接続ファクトリへのアクセスに使用します。「参照」をクリックして、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

JCAビジネス・サービスでは、静的またはパススルーなど、構成できるJNDIサービス・アカウントのタイプに制限はありませんが、ランタイムはユーザー名とパスワードにアクセスできる必要があります。JCAプロキシ・サービスは静的JNDIサービス・アカウントのみを使用できます。

JNDIサービス・アカウントの詳細は、25.1.4項「セキュリティ」を参照してください。

エンドポイント・プロパティ

このフィールドでは、サービスが使用するアダプタ・タイプの再試行回数など、エンドポイント・プロパティに値を割り当てることができます。

サポートされるエンドポイント・プロパティのリストは、25.1.3項「エンドポイント・プロパティ」を参照してください。

動的エンドポイント・プロパティ

このオプションを使用すると、リクエスト・パラメータをJCA準拠サービスに渡すことができます。たとえば、動的エンドポイント・プロパティを使用して、データベース問合せパラメータをデータベース用のOracle JCAアダプタに渡すことができます。

パラメータを使用する問合せの詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』のデータベース用のOracle JCAアダプタに関する項を参照してください。

指定する動的エンドポイント・プロパティごとに名前と値のペアを入力します。エンドポイント・プロパティ・キーが問合せパラメータ名と一致します。

このセクションを使用して、カスタム・アダプタのエンドポイント・プロパティを追加および構成します。

常にJCAファイルからの構成を使用

このオプションを使用して、「アクティブ化指定プロパティ」(プロキシ・サービス)および「相互指定プロパティ」(ビジネス・サービス)を常にJCAファイルから使用するかどうかを決定します。

このオプションが選択されている場合(デフォルト)、JCAトランスポートはJCAファイルのアクティブ化/相互指定プロパティを使用してJCAフレームワークと対話します。

このオプションが選択されていない場合は、アクティブ化/相互指定プロパティをオーバーライドできます。

このオプションを使用する場合の再デプロイメントの影響については、25.5.1.1項「エンドポイント再デプロイメント」を参照してください。

操作名

選択したWSDL操作の読取り専用の名前を表示します。操作は、「アクティブ化/対話の仕様プロパティ」フィールドで示すように、独自のアクティブ化/対話の仕様プロパティを持つことができます。

アクティブ化指定プロパティ/相互指定プロパティ

「アクティブ化指定プロパティ」はプロキシ・サービス用のフィールド名で、「相互指定プロパティ」はビジネス・サービス用のフィールド名です。

このサービスがEISアプリケーションによって呼び出されたインバウンド・サービスである場合、このフィールドには、「操作名」フィールドで示すように、JCAインバウンド操作のアクティブ化仕様プロパティが表示されます。

「常にJCAファイルからの構成を使用」を選択解除すると、アクティブ化/相互指定プロパティをオーバーライドできます。

注意: Oracle Adapter Suiteアダプタの場合、アクティブ化/相互指定プロパティが読取り専用として表示されます。Oracle Adapter Suiteアダプタには独自の構成が保存されています。これは、Oracle Adapter Suite管理ツールで変更する必要があります。

接続プロパティ(レガシー)

非管理対象モード接続プロパティ(このリリースでは非推奨)を使用するレガシーJCAサービスの場合、http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/jcatransport/transport.html#wp1105451の接続構成オプションを参照してください。

エンドポイントおよびアクティブ化/相互指定プロパティの詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。

25.5.3 プロキシ・サービス操作の構成

JCA WSDLはドキュメントliteralバインディングのみサポートします。JCAプロキシ・サービスの操作構成用のアルゴリズムは、 SOAPActionヘッダーのみです。Oracle Service Bus effective WSDLは常にSOAPActionを含みます。SOAPActionフィールドの値は操作名です。

25.5.4 プロキシ・サービスのメッセージ処理

JCAトランスポートはメッセージ・コンテンツのストリーミングまたは添付をサポートしません。コンテンツ・ストリーミングを有効にするかどうかは、実行時にJCAトランスポートに影響しません。コンテンツ・ストリーミングはトランスポートの制御なしのサービス構成オプションであるため、コンテンツ・ストリーミングを有効にしても、トランスポートによって検証エラーが発生することはありません。

25.5.5 ポリシー

JCAサービスにポリシーを設定することはできません。JCAサービスにポリシーを設定すると、サービス構成の矛盾がOracle Service Busによって示されます。

26 HTTPトランスポートおよびポーラー・トランスポート

この章では、HTTP(S)トランスポートおよびポーラー・トランスポート(電子メール、ファイル、FTPおよびSFTP)の概要と、サービスでの使用および構成方法について説明します。HTTPトランスポートの項では、Oracle Service BusでRESTを使用するためのガイダンスも提供します。

様々なタイプのトランスポートを使用して、Oracle Service Busのプロキシ・サービスまたはビジネス・サービスを構成できます。選択する転送プロトコルは、サービス・タイプ、必要な認証のタイプ、呼出し元のサービスのサービス・タイプなどによって異なります。

ポーリングベースのトランスポートは、トランスポート・ポーラーが管理対象サーバーに固定されているトランスポートです。これらのトランスポートでは、JMSフレームワークを使用して、メッセージの処理が少なくとも1回は実行されることを保証します。電子メール、ファイル、FTPおよびSFTPは、ポーリングベースのトランスポートです。ここでは、ポーリングベースのトランスポートとHTTPトランスポートについて説明します。

このドキュメントは、次の項で構成されています。

- 26.1項「HTTPトランスポート」

- 26.2項「電子メール・トランスポート」

- 26.3項「ファイル・トランスポート」

- 26.4項「FTPトランスポート」

- 26.5項「SFTPトランスポート」

26.1 HTTPトランスポート

HTTPトランスポートは、Oracle Service Busでhttp/sプロトコルを使用してクライアントとサービス・プロバイダ間でメッセージの送信を行います。また、26.1.4項「RESTサポート」で説明されているように、HTTPトランスポートはREST (Representational State Transfer)環境での作業のサポートも提供します。

任意のタイプのプロキシ・サービスまたはビジネス・サービスを構成する場合は、HTTP転送プロトコルを選択できます。エンドポイントURIの形式は次のとおりです。

- プロキシ・サービス: /someService

- ビジネス・サービス: http://host:port/someService

ここで、someServiceはプロキシ・サービスまたはビジネス・サービスの名前です。

26.1.1 HTTPセッションの固定

Oracle Service Busでは、ロード・バランシングにおいてビジネス・サービスにHTTPセッションの固定またはセッション・アフィニティがサポートされるため、特定のセッションに対するすべてのリクエストが1つのサーバーによって処理されます。固定は、サービスURI表の特定のエントリにセッションをマップすることで保持されます。スティッキー・セッションでは、最初のリクエストを処理するURIエントリがセッションを持ち、セッションの後続のメッセージがロード・バランサで受信された際は、最初のリクエストを処理したサービスURIエントリと同じエントリでルーティングされます。

標準的なロード・バランシング環境では、Service Busによって複数のサーバー間で負荷を分散できるため、セッション内の複数のメッセージをクラスタ内の同じサーバーで処理する必要がある場合は、セッションを固定するためにビジネス・サービスを構成する必要があります。

注意:

Oracle Service Busコンソールでは、サービスの再起動を必要とせずに、実行時にスティッキー・セッションを構成できます。

Oracle Service Busでは、スティッキー・セッションに対する次のシナリオはサポートされていません。

- 1つのメッセージ・フローにおける、セッションが固定された複数のビジネス・サービス。

- 同じパイプラインにおける、セッションが固定された複数のビジネス・サービス。

- セッションが固定されたビジネス・サービスを示す分割-結合サービス。

- セッションが固定された様々なビジネス・サービスへの動的ルーティング。

また、セッションが固定されたビジネス・サービスに対しては抑制が機能しないことにも注意してください。

26.1.2 HTTPトランスポートを使用するプロキシ・サービスの構成

プロキシ・サービスのHTTPトランスポートを構成する際に指定できるパラメータを表26-1に示します。

表26-1 プロキシ・サービスのHTTPトランスポートを構成するためのパラメータ

パラメータ

説明

HTTPSが必要

インバウンドHTTPSエンドポイントの場合は、このチェック・ボックスを選択します。

詳細は、第49章「トランスポートレベルのセキュリティの構成」を参照してください。

認証

次のいずれかの認証方式を構成する必要があります。

- 「なし」 - 認証を必要としないことを指定します。

- 「基本」 - このサービスにアクセスするには、基本認証が必要であることを指定します。
基本認証では、Oracle WebLogic Serverでユーザー名とパスワードを使用し、セキュリティ・レルム(Lightweight Directory Access Protocol (LDAP)ディレクトリ・サービスやWindows Active Directoryなど)で構成された認証プロバイダに対してクライアントの認証が行われます。クライアントは、HTTPリクエスト・ヘッダーでユーザー名とパスワードを送信する必要があります。

HTTPでの基本認証は、パスワードがクリア・テキストで送信されるため推奨しません。HTTPSでは暗号化されたチャネルが提供されるため、パスワードはHTTPSで送信するのが安全です。

注意: デフォルトでは、すべてのユーザー(認可ユーザーおよび匿名ユーザー)がプロキシ・サービスにアクセス可能です。プロキシ・サービスにアクセスできるユーザーを制限するには、トランスポートレベルの認可ポリシーを作成する必要があります。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のトランスポートレベル・アクセス・ポリシーの編集に関する項を参照してください。

- 「クライアント証明書」 - 暗号化通信および強力なクライアント認証(双方向SSL)を指定します。詳細は、第49章「トランスポートレベルのセキュリティの構成」を参照してください。

- 「カスタム認証」 - 認証トークンがHTTPヘッダーに含まれていることを指定します。クライアントのIDは、ここでクライアントが指定したトークンを使用して設定されます。トークンをOracle Service BusユーザーにマップするIDアサーション・プロバイダを構成する必要があります。

カスタム認証トークンには、構成されたOracle WebLogic Server IDアサーション・プロバイダがサポートする任意のアクティブなトークン・タイプを指定できます。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

リクエストのエンコーディング

インバウンドおよびアウトバウンド・トランスポートのリクエストのエンコーディングを次に説明します。

- HTTPインバウンド・トランスポートの場合は次のとおりです。
クライアント・リクエストでContent-Typeヘッダーの文字セット・エンコーディング・パラメータが指定されていないときは、文字セット・エンコーディング・パラメータを入力します。値を入力しない場合は、このフィールドにデフォルトのISO-8859-1が設定されます。

- HTTPアウトバウンド・トランスポートの場合は次のとおりです。
リクエスト・エンコーディングを構成していない場合、Oracle Service Busランタイムがビジネス・サービスにリクエストを行う際に最適なエンコーディングが決定されます。パススルー以外のシナリオでは、実行時のデフォルトの文字エンコーディングはUTF-8となります。ただし、パススルーのシナリオでは、ランタイムは受信したエンコーディングのパススルーをアウトバウンド・レスポンスで行います。

レスポンスのエンコーディング

HTTPトランスポートにおけるレスポンスの文字セット・エンコーディングとして、デフォルトのiso-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

認証ヘッダー

Oracle Service Busがトークンを抽出するHTTPヘッダー(Authorization以外の任意)を入力します。このフィールドが使用可能になるのは、「カスタム認証」チェックボックスが選択されている場合のみです。

例: client-xyz-token

認証トークン・タイプ

認証トークン・タイプを選択します。IDアサーション・プロバイダに対して構成されているアクティブなトークン・タイプのみを使用できます。このフィールドが使用可能になるのは、「カスタム認証」チェックボックスが選択されている場合のみです。

HTTPトランスポート・ベースのプロキシ・サービスを構成する方法および詳細設定は、2.3項「プロキシ・サービスの操作」を参照してください。

26.1.3 HTTPトランスポートを使用するビジネス・サービスの構成

HTTPに基づく任意のタイプのビジネス・サービスを構成するときに、エンドポイントURIが次の形式の場合、転送プロトコルとしてHTTPを選択する必要があります。

http://<host:port/someService>

説明:

- hostは、サービスをホストするシステムの名前です。

- portは、接続を行うポート番号です。

- someServiceは、ターゲット・サービスです。

注意:

HTTPSに基づくビジネス・サービスを構成するときは、次のエンドポイントURIを指定する必要があります。

https://<host:port/someService>

ビジネス・サービスのHTTPトランスポートを構成する際に指定できるすべてのパラメータを表26-2に示します。

表26-2 ビジネス・サービスのHTTPトランスポートを構成するためのパラメータ

パラメータ

説明

読取りタイムアウト

読取りタイムアウトまでの間隔を秒単位で入力します。

値0ではタイムアウトが行われません。

接続タイムアウト

接続タイムアウトまでの間隔を秒単位で入力します。接続が確立する前にタイムアウトになると、Oracle Service Busによって接続エラーが生成されます。

値0ではタイムアウトが行われません。

HTTPリクエスト・メソッド

このパラメータにより、リクエストで次のいずれかのHTTPメソッドを使用できます。

- 「POST」 - HTTPリクエストの本文の一部として、長さに関わらずすべてのデータをソケット接続で直接渡します。このやりとりはクライアントから認識できず、URLも変わりません。RESTベースのリクエストの場合、POSTでは作成/置換操作を実行するか、またはリクエストの操作を実行するようにトランスポートに指示します。

- 「GET」 - リクエストの一部として、取得対象を詳しく表した独自の情報を組み込むことができます。この情報は、問合せ文字列内のリクエストURLに追加された文字のシーケンスとして渡されます。「リクエスト・メッセージ・タイプ」が「なし」に設定されている場合は、「サービス・タイプ」が「任意のXMLサービス」または「メッセージ・サービス」のビジネス・サービスでGETを使用できます。RESTベースのリクエストの場合、GETはリモート・リソースの表現を受け取ります。

- 「PUT」 - PUTは、「サービス・タイプ」が「任意のXMLサービス」または「メッセージ・サービス」のビジネス・サービスで使用できます。PUTは、RESTベースのリクエストによる作成と置換の操作(既知の場所へのファイルのアップロードなど)を実行するようトランスポートに通知します。

- 「HEAD」 - 「レスポンス・メッセージ・タイプ」が「なし」に設定されている場合は、「サービス・タイプ」が「任意のXMLサービス」または「メッセージ・サービス」のビジネス・サービスでHEADを使用できます。HEADは、RESTベースのリクエストでリモート・リソースの完全な表現を取得するのではなく、そのリソースのヘッダー情報を取得するようトランスポートに通知します。

- 「削除」 - 「削除」は、「サービス・タイプ」が「任意のXMLサービス」または「メッセージ・サービス」のビジネス・サービスで使用できます。「削除」は、RESTベースのリクエストによる削除操作を実行するようトランスポートに通知します。

注意: $outbound/transport/request/http:http-method変数でメソッドがすでに設定されている場合は、HTTPリクエスト・メソッドに選択したどのメソッドよりもその値が優先されます。

認証

次のいずれか1つを選択します:

- 「なし」 - このサービスへのアクセスに認証を必要としないことを指定します。

- 「基本」 - このサービスにアクセスするには、基本認証が必要であることを指定します。
基本認証では、Oracle WebLogic Serverでユーザー名とパスワードを使用し、セキュリティ・レルム(Lightweight Directory Access Protocol (LDAP)ディレクトリ・サービスやWindows Active Directoryなど)で構成された認証プロバイダに対してクライアントの認証が行われます。クライアントは、HTTPリクエスト・ヘッダーでユーザー名とパスワードを送信する必要があります。

HTTPでの基本認証は、パスワードがクリア・テキストで送信されるため推奨しません。HTTPSでは暗号化されたチャネルが提供されるため、パスワードはHTTPSで送信するのが安全です。

注意: デフォルトでは、すべてのユーザー(認可ユーザーおよび匿名ユーザー)がビジネス・サービスにアクセス可能です。ビジネス・サービスにアクセスできるユーザーを制限するには、トランスポートレベルの認可ポリシーを作成する必要があります。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のトランスポートレベル・アクセス・ポリシーの編集に関する項を参照してください。

- 「クライアント証明書」 - 暗号化通信および強力なクライアント認証(双方向SSL)を指定します。詳細は、第49章「トランスポートレベルのセキュリティの構成」を参照してください。

サービス・アカウント

サービス・アカウントとは、ユーザー名とパスワードのエイリアス・リソースです。基本認証必須フィールドを選択した場合、このフィールドは必須です。

詳細は、2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

リクエストのエンコーディング

電子メール・トランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのiso-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

レスポンスのエンコーディング

HTTPトランスポートにおけるレスポンスの文字セット・エンコーディングとして、デフォルトのiso-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

プロキシ・サーバー

プロキシ・サーバー・リソースを入力するか、「参照」をクリックして構成されたプロキシ・サーバー・リソースの一覧からエントリを選択します。

HTTPリダイレクトの追跡

HTTPリダイレクト(レスポンス・コード3xxによるリクエスト)を自動的に追跡することを指定します。リダイレクトは、ビジネス・サービスのURLにアウトバウンド・リクエストを送信し、そのサービスから、URLが無効になったためこのリクエストを別のURLに送信する必要があることを示すレスポンス・コード(たとえば302)が返された場合に発生します。「HTTPリダイレクトの追跡」チェック・ボックスが選択されている場合、リクエストは自動的に新しいURLに再送信され、ユーザー側でのアクションは発生しません。HTTPリダイレクトを自動的に追跡しない場合は、このチェック・ボックスのチェックを外します。

チャンク・ストリーミング・モードの使用

HTTPチャンク転送エンコーディングを使用してメッセージを送信する場合は、このオプションを選択します。

注意: 「HTTPリダイレクトの追跡」オプションを使用する場合は、チャンク・ストリーミングを使用しないでください。リダイレクトと認証をチャンク・モードで自動的に処理することはできません。

セッション固定性

ビジネス・サービス用のHTTPリクエストにセッションの固定(セッション・アフィニティとも呼ばれる)を使用する場合は、このオプションを選択します。詳細は、26.1.1項「HTTPセッションの固定」を参照してください。

固定セッションID名

「セッション固定性」を有効にした場合、スティッキー・セッションに一意の識別名を入力します。

このトランスポートを構成する方法の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

26.1.4 RESTサポート

HTTPトランスポートは、Oracle Service Busを介したREST (Representational State Transfer)環境での作業をサポートします。このサポートは、非RESTサービス・プロバイダと対話する必要があるRESTクライアント、RESTベースのサービス・プロバイダと対話する必要がある非RESTクライアント、またはOracle Service Busを介して公開する必要があるREST-to-RESTサービスのいずれにも対応します。

RESTのパターンでは、特定のURLにあるリソースに対してHTTPメソッド(GET、PUT、HEAD、POST、DELETEなど)を呼び出します。たとえば、RESTを使用したWebアプリケーションでユーザーがプロファイル情報を更新した場合、POSTアクションがサービスのREST APIを介してデータベースのユーザー情報を更新します。

Oracle Service Busでは、アウトバウンドおよびインバウンド通信のRESTベースのリクエストを処理するために、次のプレースホルダー変数が用意されています。

- $inboundまたは$outbound/transport/request/http:http-method - GET、PUT、HEAD、POST、DELETEのようなHTTPメソッドを処理します。

- $inboundまたは$outbound/transport/request/http:parameters - URLの問合せ文字列を処理します。parametersメタデータには、名前/値のペアを格納する1つ以上のparameter要素が含まれます。名前/値のペアは、query-stringのURLDecoded値です。たとえば、http://localhost:7021/myproxy/weather?operation=temperature&pincode=94065というURLで、問合せ文字列は次の問合せパラメータとして格納されます。

<http:query-parameters>
<http:parameter name="operation" value="temperature"/>
<http:parameter name="pincode" value="94065"/>
</http:query-parameters>

- $inboundまたは$outbound/transport/request/http:relative-URI - RESTリソースのURLの相対的な部分(プロキシ・サービスのURIに対して相対的)を処理します。たとえば、http://localhost:7021/myproxy/weatherというURLで、/weatherはhttp://localhost:7021/myproxyに対して相対的なURLです。

26.1.4.1 プロキシ・サービスのREST

Oracle Service Busプロキシ・サービスには、RESTベースのリクエストを受信するか、RESTベースのアクションを生成するかにかかわらず、RESTパターンを操作できる柔軟性があります。

たとえば、RESTベースのアプリケーションを開発し、非RESTサービス・プロバイダでサービスを呼び出したい場合は、プロキシ・サービスでREST操作を送り、その操作をサービス・プロバイダが認識できる形式に変換するか、非RESTリクエストをリソースURLに変換し、RESTベース のサービス・プロバイダで操作を呼び出すことができます。また、REST-to-REST実装の監視、監査およびレポートのために仲介者としてService Busを使用することもできます。

Service BusでRESTを使用する作業例は、Oracle Service Busサンプルのリポジトリ(http://www.oracle.com/technetwork/middleware/service-bus/learnmore/index.html)を参照してください。

26.1.4.1.1 XQueryサンプル

次に、プロキシ・サービスでHTTP変数を使用して行うURI解析のXQueryの例を示します。URI解析では、REST環境と非REST環境間でメッセージを変換できます。

相対URI

プロキシ・サービスのURIがhttp://localhost:7001/weatherであり、リクエストの相対的URIの部分をキャプチャするとします。次のXQueryを作成します。

<relative-URI>
{
for $c in
fn:tokenize($inbound/ctx:transport/ctx:request/http:relative-URI, "/")
where fn:string-length($c) != 0
return
<part>
{$c}
</part>
}
</relative-URI>

リクエストのURIがhttp://localhost:7001/weather/temperature/35457の場合、relative-URIは/temperature/35457になり、XQuery出力は次のようになります。

<relative-URI>
<part>temperature</part>
<part>35457</part>
</relative-URI>

問合せ文字列パラメータ

プロキシ・サービスのURIがhttp://localhost:7001/weatherであり、URL問合せ文字列パラメータをキャプチャするとします。次のXQueryを作成します。

<query-parameters>
{
return
<param name="$inbound/ctx:transport/ctx:request/http:parameters/param/name"
value="$inbound/ctx:transport/ctx:request/http:parameters/param/value"></param>
}
</query-parameters>

リクエストのURIがhttp://server:7001/weather?operation=temperature&pincode=35457の場合、query-stringはoperation=temperature&pincode=35457になり、http:parametersメタデータの個別パラメータとして格納されます。XQuery出力は次のようになります。

<query-parameters>
<param name='operation' value='temperature'/>
<param name='pincode' value='35457'/>
</query-parameters>

26.1.4.1.2 ヘッダー

サービスによりHTTP/RESTメソッドを処理するために固有のヘッダーが必要な場合、パイプラインにユーザー定義済HTTPヘッダー変数を作成します。

26.1.4.2 ビジネス・サービスのREST

Oracle Service Busビジネス・サービスでは、RESTベースのサービスを呼び出すことができます。

REST操作で、HTTPトランスポートは$outbound/transport/request/http:http-method変数の値を使用します。この変数にHTTPメソッドが指定されていない場合、HTTPトランスポートではトランスポート構成に含まれるHTTPリクエスト・メソッド(POST、PUT、HEAD、GET、DELETE)のいずれかを選択できます。

注意:

ビジネス・サービスが サービスのタイプ としてWSDL Webサービスを使用している場合は、POSTメソッドのみが選択可能です。

$outbound/transport/request-http/http-method変数を使用して、独自のメソッドを指定することもできます。たとえば、WebDAV (Web-based Distributed Authoring and Versioning)環境でCOPY、MOVE、およびLOCKを使用できます。

次のガイドラインを使用して$outbound変数を設定します。

- トランスポートは、カスタム・メソッドに対して、またはこの項で説明する制約に従っていない手動で設定されたサポート対象メソッドに対して、実行時の検証を提供しません。

- $outboundはルーティング・ノードでのみ有効なため、パブリッシュおよびサービス・コールアウト・アクションのメソッド名を実行時に指定することはできません。

- $outbound問合せ文字列パラメータが設定されている場合、ビジネス・サービスは、RAWバイトからの問合せ文字列の構築にアウトバウンド・リクエスト・エンコーディングを、またparametersメタデータ要素から取得されたパラメータの名前/値のペアにURLエンコーディングを使用します。

- $outbound relative-URIが設定されている場合、ビジネス・サービスはその値を使用して、ビジネス・サービスURIに対して相対的なURIを生成します。
たとえば、ビジネス・サービスが次のURIを使用し、

http://service.com/purchaseOrder

次のHTTP変数を使用する場合、

$outbound/transport/request-http/relative-URI: "/PO12367" and
$outbound/transport/request-http/parameters/parameter: "item=NO1"
$outbound/transport/request-http/parameters/parameter: "color=black"

最終的に解決されたURIは次のようになります。

http://service.com/purchaseOrder/PO12367?item=NO1&color=black

26.1.4.2.1 HTTPビジネス・サービスのレスポンス・コードおよびエラー処理

Oracle Service Busは、200から500までの範囲のすべてのレスポンス・コードを処理するために、HTTP 1.1仕様に準拠しています。表26-3に、Service Busが様々なレスポンス・コード・レベルを処理する方法を示します。

HTTPビジネス・サービスは、300以上のエラーを含むレスポンス・ペイロードを受信するため、次のタイプである必要があります。

- WSDL Webサービス

- 任意のSOAPサービス

- 次の条件を満たすメッセージング・サービス:

- 「レスポンス・メッセージ・タイプ」は、「MFL」または「XML」である必要があります(タイプがXMLまたはSOAPに確定されます)。Service BusがXMLまたはSOAP以外であると判断したレスポンス・タイプを持つHTTPビジネス・サービスでは、HTTPレスポンス・ペイロードが受信されません。

- レスポンス・ペイロードのHTTPヘッダーContent-Typeは、text/xml、application/any_string+xmlまたはmultipart/relatedです。

表26-3 HTTPビジネス・サービスのレスポンス・コード処理

レスポンス・ステータス・コード

説明

100s

100レベルのステータス・コードは、Status-Lineとオプション・ヘッダーのみで構成され、空の行で終わる暫定レスポンスを示します。100レベルのコードのレスポンス動作は、内部のHttpURLConnection Javaクラスで処理済であるため、Service Busでは処理されません。

200s

200レベルのステータス・コードは、操作の成功を示します。Service Busは、ビジネス・サービス・タイプにかかわらず、HTTPビジネス・サービスにレスポンス・ペイロードとしてこれらのコードを戻します。

300s

300レベルのステータス・コードは、リクエストに対応するために呼出し元が追加アクションを実行する必要があることを示すエラーです。Service Busは、サポートされるメッセージ・レスポンス・タイプを含むHTTPビジネス・サービスにレスポンス・ペイロードとしてこれらのコードを戻します。

レスポンス・パイプラインで、300レベルのコードを処理するために適切なアクションを実行できます。

リダイレクトが必要であることを示す300レベルのレスポンス・コードを処理するには、HTTPビジネス・サービスのトランスポート構成で「HTTPリダイレクトの追跡」オプションを設定します。

400s

400レベルのステータス・コードは、クライアント・エラーを示します。Service Busは、サポートされるメッセージ・レスポンス・タイプを含むHTTPビジネス・サービスにレスポンス・ペイロードとしてこれらのコードを戻します。

レスポンス・パイプラインで、400レベルのコードを処理するために適切なアクションを実行できます。

500s

500レベルのステータス・コードは、サーバー・エラーを示します。Service Busは、サポートされるメッセージ・レスポンス・タイプを含むHTTPビジネス・サービスにレスポンス・ペイロードとしてこれらのコードを戻します。

レスポンス・パイプラインで、400レベルのコードを処理するために適切なアクションを実行できます。

26.2 電子メール・トランスポート

プロキシ・サービスまたはビジネス・サービスのメッセージング・タイプまたは任意のXMLサービスを構成するときに、電子メール転送プロトコルを選択できます。次の項では、電子メール・トランスポートを使用して、プロキシ・サービスとビジネス・サービスを構成する方法について説明します。

注意:

電子メール・トランスポートでは、メッセージング・サービス・タイプのサービスの一方向のメッセージングをサポートしています。

電子メール・トランスポートを使用して、メッセージング・タイプのプロキシ・サービスまたはメッセージング・タイプのビジネス・サービスを作成する場合、「メッセージ・タイプ」構成ページでレスポンス・タイプを「なし」に設定する必要があります。

26.2.1 電子メール・トランスポートを使用するプロキシ・サービスの構成

電子メール・トランスポートを使用してプロキシ・サービスを構成する場合は、エンドポイントURIを次の形式で指定する必要があります。

mailfrom:<mailserver-host:port>

ここで、mailserver-hostは、ホスト・メール・サーバーの名前、portはホスト・メール・サーバーが使用するポートです。

電子メール・トランスポート・ベースのプロキシ・サービスで構成できるパラメータを表26-4に示します。

表26-4 プロキシ・サービスの電子メール・トランスポートを構成するためのパラメータ

パラメータ

説明

SSLが必要

Secure Sockets Layerを使用して通信するには、このオプションを選択します。デフォルトのSSLポート番号は、次のとおりです。

- POP3(S)の場合: 995

- IMAPの場合: 993

注意: SSLを有効にするには、Oracle Service Busトラストストアに電子メール・サーバーの証明書が存在している必要があります。電子メール・トランスポートでは一方向SSL通信がサポートされます。

サービス・アカウント

サービス・アカウント名を入力するか、または、「参照」をクリックして、サービス・アカウントをブラウザから選択します。これは、サービス・アカウント・リソースです。サービス・アカウントは、電子メール・アカウントにアクセスするために必要なユーザー名とパスワードの組合せで構成されます。

管理対象サーバー

このフィールドは、クラスタ・ドメインでのみ使用できます。

ポーリング・サーバーとして機能させる管理対象サーバーを選択します。すべての管理対象サーバーがメッセージを処理できますが、メッセージをポーリングできるのは、1台のサーバーのみです。

ポーリング間隔

ポーリング間隔を秒単位で入力します。デフォルト値は60です。

電子メール・プロトコル

電子メール・アカウントのサーバーの種類としてPOP3またはIMAPを選択します。

読取り制限

ポーリング・スイープごとの読取りメッセージの最大数を指定します。無制限にするには「0」と入力します。デフォルト値は10です。

参照渡し

このチェック・ボックスを選択すると、ファイルはアーカイブ・ディレクトリにステージングされ、ヘッダーに参照として渡されます。

デフォルトでは、新しいサービスを作成するときに、「参照渡し」オプションが選択されるため、アーカイブ・ディレクトリの場所を指定する必要があります。

読取り後のアクション

メッセージの読込み後の動作を選択します。

- アーカイブ - メッセージはアーカイブされます。

- 「削除」 - メッセージが削除されます。

- 「移動」 - メッセージが移動されます。「移動」は、IMAPプロトコルでのみ使用可能です。

添付ファイル

添付ファイルの処理方法を選択します。

- 「アーカイブ」 - 添付ファイルがアーカイブ・ディレクトリに保存されます。

- 「無視」 - 添付ファイルが無視されます。

注意: 添付ファイルをアーカイブする場合、「参照渡し」パラメータの設定に関係なく、添付ファイルは参照としてメッセージ・ヘッダーに渡されます。

IMAP移動先フォルダ

「読取り後のアクション」フィールドが「移動」に設定されている場合は、メッセージの移動先フォルダを入力します。

このフィールドは、「読取り後のアクション」を「移動」に設定した場合に構成する必要があります。

ダウンロード・ディレクトリ

電子メールをダウンロードするための一時的な場所を入力します。

アーカイブ・ディレクトリ

「読取り後のアクション」フィールドが「アーカイブ」に設定されている場合は、アーカイブの場所へのパスを入力します。

「参照渡し」または「添付ファイルを参照渡し」オプションが選択されている場合は、このフィールドは必須です。これは、「読取り後のアクション」パラメータを「アーカイブ」に設定した場合にのみアクティブになります。

エラー・ディレクトリ

問題が生じたときにメッセージと添付ファイルを書き込むファイル・システム・ディレクトリへのパスを入力します。

リクエストのエンコーディング

電子メール・トランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのISO-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

電子メール・サービスを構成する方法の詳細は、2.3項「プロキシ・サービスの操作」を参照してください。

26.2.2 電子メール・トランスポートを使用するビジネス・サービスの構成

電子メール・トランスポートを使用するビジネス・サービスを構成するとき、次の形式で1つ以上のエンドポイントURIを指定でき、こうすることで、複数のドメインの複数の受信者に電子メール・メッセージを送信できます。

- mailto:name@domain_name.com

- mailto:name@domain_name.com?smtp=smtp_server_resource

- mailto:name@domain_name.com?mailsession=jndi_mail_session

例:

- mailto:user1@example1.com

- mailto:user2@example2.com?smtp=exampleSMTP

- mailto:user3@example3.com?mailsession=my.mail.Session

電子メール・トランスポート・ベースのプロキシ・サービスで構成できるパラメータを表26-5に示します。

表26-5 ビジネス・サービスの電子メール・トランスポートを構成するためのパラメータ

パラメータ

説明

SSLが必要

Secure Sockets Layerを使用して通信するには、このオプションを選択します。電子メール・トランスポートでは一方向SSL通信がサポートされます。SSLを使用する場合のデフォルトのSMPTポート番号は、465です。

注意:

- SSLを有効にするには、Oracle Service Busトラストストアに電子メール・サーバーの証明書が存在している必要があります。

- TLSを使用している場合は、デフォルトのトラストストア($JAVA_HOME/jre/lib/security/cacerts)に信頼性のある証明書を配置するか、次に示すように、任意のトラストストアに証明書を配置して$DOMAIN_HOME/bin/setDomainEnv.*ファイルにそのパスを追加する必要があります。

set EXTRA_JAVA_PROPERTIES=%EXTRA_JAVA_PROPERTIES%
-Djavax.net.ssl.trustStore=<path to trustStore>

SMTPサーバー

name@domain_name.comのエンドポイントURIエントリで使用するデフォルトのSMTPサーバーを選択します。エンドポイントURIにSMTPサーバーのパラメータを指定すると、それらのサーバー・リソースがこの「SMTPサーバー」設定のかわりに使用されます。

「メール・セッション」オプションを使用する場合はSMTPサーバーを選択しないでください。

最初にSMTPサーバー・リソースを作成する必要があります。詳細は、2.1.17項「SMTPサーバー・リソースの作成」を参照してください。

メール・セッション

name@domain_name.comのエンドポイントURIエントリで使用する構成済メール・セッションのJNDI名を入力します。エンドポイントURIにJNDIメール・セッションのパラメータを指定すると、この「メール・セッション」設定のかわりにそれらのメール・セッションが使用されます。

「SMTPサーバー」オプションを使用する場合は、メール・セッションを入力しないでください。

送信元の名前

このサービスでの送信元の電子メール・アカウントの表示名を入力します。まず、Oracle WebLogic Serverコンソールでメール・セッションを構成しておく必要があります。

送信元アドレス

このサービスでの送信元の電子メール・アカウントを入力します。Oracle WebLogic Server管理コンソールでメール・セッションを作成する必要があります。また、「メール・セッション」パラメータまたは「SMTPサーバー」パラメータも設定する必要があります。

返信先の名前

電子メール・アカウントの返信先の表示名を入力します。これは、返信の送信元の名前です。

返信先アドレス

返信先の電子メール・アドレスを入力します。

接続タイムアウト

接続を切断するまでのタイムアウト間隔をミリ秒単位で入力します。「0」を入力すると、タイムアウトは発生しません。

ソケットI/Oタイムアウト

ソケットI/Oタイムアウト間隔をミリ秒単位で入力します。ゼロ(0)を入力すると、タイムアウトは発生しません。

リクエストのエンコーディング

電子メール・トランスポートにおけるリクエストの文字セット・エンコーディングとして、デフォルトのISO-8859-1を受け入れるか、別の文字セット・エンコーディングを入力します。

ビジネス・サービスの構成方法の詳細は、4.2項「ビジネス・サービスの構成」を参照してください。

26.3 ファイル・トランスポート

プロキシ・サービスのメッセージング・タイプまたは任意のXMLサービスを構成するときに、エンドポイントURIが次の形式の場合、ファイル・トランスポートプロトコルを選択できます。

file:///<root-dir/dir1>

ここで、root-dir/dir1は宛先ディレクトリへの絶対パスです。

注意:

ファイル・トランスポートでは、メッセージング・サービス・タイプのサービスの一方向のメッセージングのみをサポートしています。

ファイル・トランスポートを使用して、メッセージング・タイプのプロキシ・サービスまたはメッセージング・タイプのビジネス・サービスを作成する場合、「メッセージ・タイプ」構成ページでレスポンス・タイプを「なし」に設定する必要があります。

Oracle Service Busがリモートの場所にファイルを書き込む際に、プログラムがそのファイルにアクセスしないように、ファイルへの書込みが完了するまでファイル・トランスポート・ビジネス・サービスによって一時的にファイル名に「.a」が追加されます。

26.3.1 ファイル・トランスポートを使用するプロキシ・サービスの構成

プロキシ・サービスのファイル・トランスポートを構成する際に指定できるパラメータを表26-6に示します。

表26-6 プロキシ・サービスのファイル・トランスポートを構成するためのパラメータ

パラメータ

説明

ファイル・マスク

プロキシ・サービスがポーリングするファイルを指定します。URIがディレクトリの場合、*.*を指定すると、サービスによってそのディレクトリのすべてのファイルがポーリングされます。ファイル・マスクに指定できるワイルドカード文字は*および?のみです。正規表現はサポートされません。

ポーリング間隔

これは必須パラメータです。読み取る新しいファイルをポーリングするまでService Busが待機する時間の長さ(秒単位)。デフォルト値は60です。

読取り制限

これは必須パラメータです。各ポーリングで読み込むファイルの数を指定します。デフォルト値は10です。0を指定すると、すべてのファイルが読み込まれます。

到着順にソート

このパラメータは省略可能です。発生した一連のイベントをファイルの到着順に示します。デフォルト値はFalseです。

サブディレクトリのスキャン

省略可能です。このパラメータを有効にすると、サブディレクトリもスキャンされます。

参照渡し

このパラメータを有効にすると、ファイルはアーカイブ・ディレクトリにステージングされ、ヘッダーに参照として渡されます。

読取り後のアクション

必須パラメータです。サービスでファイルを読み込んだ後に、削除またはアーカイブのどちらのアクションを実行するかを指定します。デフォルトでは、ファイルは読込み後に削除されます。

ステージ・ディレクトリ

これは必須パラメータです。このファイルURIは、ステージング・ディレクトリを指します。

注意: ステージ・ディレクトリをポーリング・ディレクトリ内に配置することはできません。

アーカイブ・ディレクトリ

これは必須パラメータです。ファイルURIは、ファイルをアーカイブするディレクトリを指します。このフィールドは、「読取り後のアクション」パラメータを「アーカイブ」に設定した場合にのみアクティブになります。

注意: アーカイブ・ディレクトリをポーリング・ディレクトリ内に配置することはできません。

エラー・ディレクトリ

これは必須パラメータです。このURIは、エラーが発生した場合にファイルの内容を格納するディレクトリを指します。

注意: エラー・ディレクトリをポーリング・ディレクトリ内に配置することはできません。

リクエストのエンコーディング

このパラメータは省略可能です。リクエスト・メッセージを読み込む際のエンコーディングのタイプを指定します。デフォルトのエンコーディングはutf-8です。

ファイル・トランスポート・ベースのプロキシ・サービスの構成方法の詳細は、2.3項「プロキシ・サービスの操作」を参照してください。

26.3.2 ファイル・トランスポートを使用するビジネス・サービスの構成

ファイル・トランスポートを使用してビジネス・サービスを構成する場合は、エンドポイントURIを次の形式で指定する必要があります。

file:///<root-dir/dir1>

ここで、root-dir/dir1は宛先ディレクトリへの絶対パスです。

プロキシ・サービスのファイル・トランスポートを構成する際に指定できるパラメータを表26-7に示します。

表26-7 ビジネス・サービスのファイル・トランスポートを構成するためのパラメータ

パラメータ

説明

接頭辞

このパラメータは省略可能です。ファイル名に付加する接頭辞を指定します。

接尾辞

このパラメータは省略可能です。ファイル名に付加する接尾辞を指定します。

リクエストのエンコーディング

このパラメータは省略可能です。メッセージを読み込む際のエンコーディングのタイプを指定します。使用されるデフォルトのエンコーディングはutf-8です。

このトランスポートを構成する方法の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

26.4 FTPトランスポート

プロキシ・サービスのメッセージング・タイプまたは任意のXMLサービスを構成するときに、エンドポイントURIが次の形式の場合、FTP転送プロトコルを選択できます。

ftp://<hostname:port/directory>

説明:

- hostnameは、宛先ディレクトリが格納されているホストの名前です。

- portは、FTP接続を行うポート番号です。

- directoryは、宛先ディレクトリです。
ディレクトリはFTPセッションの作業ディレクトリを基準として相対的に指定します。たとえば、FTPサービスでファイルをhome/my_ftp/documentsにコピーする場合には、作業ディレクトリがhome/my_ftp/であれば、URLはftp://example:21/documentsとなります。

注意:

ファイル・トランスポートでは、メッセージング・サービス・タイプのサービスの一方向のメッセージングをサポートしています。

FTPトランスポートを使用して、メッセージング・タイプのプロキシ・サービスまたはメッセージング・タイプのビジネス・サービスを作成する場合、「メッセージ・タイプ」構成ページでレスポンス・タイプを「なし」に設定する必要があります。

Oracle Service Busがリモートの場所にファイルを書き込む際に、プログラムがそのファイルにアクセスしないように、ファイルへの書込みが完了するまでFTPトランスポート・ビジネス・サービスによって一時的にファイル名に「.a」が追加されます。

26.4.1 FTPトランスポートを使用するプロキシ・サービスの構成

プロキシ・サービスのFTPトランスポートを構成する際に指定できるパラメータを表26-8に示します。

表26-8 ビジネス・サービスのFTPトランスポートを構成するためのパラメータ

パラメータ

説明

ユーザー認証

ユーザー認証の次のいずれかのタイプを選択する必要があります。

- 「匿名」 - 「匿名」を選択した場合、FTPサーバーへのログイン時にログイン資格証明を必要としませんが、必要に応じてIDとして電子メールIDを指定できます。

- 「外部ユーザー」 - 「外部ユーザー」を選択した場合、FTPサーバーのユーザー名とパスワードが含まれたサービス・アカウント・リソースを参照する必要があります。

参照渡し

このパラメータは省略可能です。このパラメータを有効にすると、ファイルはアーカイブ・ディレクトリにステージングされ、ヘッダーに参照として渡されます。

リモート・ストリーミング

このパラメータは省略可能です。このパラメータをTrueに設定すると、処理時にFTPのファイルがリモート・サーバーから直接ポーリングされます。

ファイル・マスク

これは必須パラメータです。プロキシ・サービスがポーリングするファイルを指定します。URIがディレクトリの場合に*.*を指定すると、サービスはディレクトリ内のすべてのファイルをポーリングします。

ポーリング間隔

これは必須パラメータです。ポーリング間隔の値を秒単位で指定します。デフォルト値は60です。

読取り制限

これは必須パラメータです。各ポーリングで読み込むファイルの数を指定します。デフォルト値は10です。

読取り後のアクション

これは必須パラメータです。サービスでファイルを読み込んだ後に、削除またはアーカイブのどちらのアクションを実行するかを指定します。デフォルトでは、ファイルは読込み後に削除されます。

転送モード

ファイル・トランスポート・モードとして「バイナリ」または「ascii」のいずれかを指定します。デフォルトでは、トランスポートは「バイナリ」です。

アーカイブ・ディレクトリ

これは必須パラメータです。ファイルURIは、ファイルをアーカイブするディレクトリを指します。このフィールドは、「読取り後のアクション」パラメータを「アーカイブ」に設定した場合にのみアクティブになります。

ダウンロード・ディレクトリ

これは必須パラメータです。ファイル転送時にファイルがダウンロードされる、ローカル・コンピュータのディレクトリを入力します。

注意: アーカイブ・ディレクトリ、ダウンロード・ディレクトリ、およびエラー・ディレクトリは絶対パスであり、自動的に作成されます。相対パスを指定すると、ファイルはOracle WebLogic Serverを起動するJavaプロセスを基準にした相対的な位置に作成されます。

エラー・ディレクトリ

これは必須パラメータです。このURIは、エラーが発生した場合にファイルの内容を格納するディレクトリの場所を指します。

リクエストのエンコーディング

このパラメータは省略可能です。リクエスト・メッセージを読み込む際のエンコーディングのタイプを指定します。デフォルトのエンコーディングはutf-8です。

詳細設定

アイコンをクリックして、「詳細設定」セクションを展開します。このセクションのパラメータの構成は省略可能です。このセクションで設定できるパラメータは次のとおりです。

- 「サブディレクトリのスキャン」 - このパラメータは省略可能です。このパラメータを有効にすると、サブディレクトリもスキャンされます。

- 到着順にソート

- タイムアウト

- 再試行

ファイル・トランスポート・ベースのプロキシ・サービスの構成方法の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

26.4.2 FTPトランスポートを使用するビジネス・サービスの構成

ビジネス・サービスのメッセージング・タイプまたは任意のXMLサービスを構成するときに、エンドポイントURIが次の形式の場合、FTP転送プロトコルを選択できます。

ftp://<hostname:port/directory>

説明:

- hostnameは、宛先ディレクトリが格納されているホストの名前です。

- portは、FTP接続を行うポート番号です。

- directoryは、宛先ディレクトリです。
ディレクトリはFTPセッションの作業ディレクトリを基準として相対的に指定します。たとえば、FTPサービスでファイルをhome/my_ftp/documentsにコピーする場合には、作業ディレクトリがhome/my_ftp/であれば、URLはftp://example:21/documentsとなります。

ビジネス・サービスのFTPトランスポートを構成する際に指定する必要のあるパラメータを表26-9に示します。

表26-9 ビジネス・サービスのFTPトランスポートを構成するためのパラメータ

パラメータ

説明

ユーザー認証

ユーザー認証の次のいずれかのタイプを選択する必要があります。

- 「匿名」 - 「匿名」を選択した場合、FTPサーバーへのログイン時にログイン資格証明を必要としません。ただし、必要に応じてIDとして電子メールIDを指定できます。

- 「外部ユーザー」 - 「外部ユーザー」を選択した場合、FTPサーバーのユーザー名とパスワードが含まれたサービス・アカウント・リソースを参照する必要があります。

宛先ファイル名の接頭辞

トランスポートによってリモート・サーバー上のファイル名の先頭に付加される、省略可能な接頭辞を入力します。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

宛先ファイル名の接尾辞

トランスポートによってリモート・サーバー上のファイル名の末尾に付加される、省略可能な接尾辞を入力します。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

リクエストのエンコーディング

このパラメータは省略可能です。リクエスト・メッセージのエンコーディングを指定します。

このトランスポートを構成する方法の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

26.5 SFTPトランスポート

SFTPトランスポートは、SSHバージョン2を使用したSFTP (SSHファイル転送プロトコル)経由でファイルを安全にトランスポートできるポーリング・ベースのトランスポートです。それは、定義済のポーリング間隔に基づいて指定されたディレクトリを定期的にポーリングします。認証後、Oracle Service BusサービスとSFTPサーバー間で接続が確立され、ファイル・トランスポートが可能になります。SFTPトランスポートでは、一方向のインバウンドおよびアウトバウンド接続をサポートしています。

注意:

SFTPトランスポートでは、マルチバイト文字セットのファイル名を正しく処理できないことがあります。

SFTPトランスポートの主要な機能は次のとおりです。

- SFTPトランスポートは、次のサービス・タイプで使用できます。

- (リクエスト・メッセージの種類が指定された)メッセージング・サービス

- 任意のXMLサービス

サービス・タイプの構成の詳細は、2.2項「ビジネス・サービスの操作」および2.3項「プロキシ・サービスの操作」を参照してください。

- SFTPトランスポートでは、サイズの大きいメッセージの処理をサポートしています。プロキシ・サービスの構成時に、コンテンツ・ストリーミングを有効にし、サイズの大きいメッセージをメモリーまたはディスク・ファイルにバッファリングする必要があるかどうかを指定できます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の本文コンテンツのストリーミングに関する項を参照してください。

- SFTPトランスポートでは、優先暗号スイートおよび使用する公開鍵アルゴリズム、データ整合性アルゴリズム、鍵交換アルゴリズム、圧縮アルゴリズムを選択することも、Service Busで適切な一致の検出を許可することもできます。

- インバウンド・メッセージを転送する場合、QoSをexactly-onceに設定します。これにより、各メッセージが少なくとも1回は処理されることが保証されます。アウトバウンド・メッセージを処理する場合は、QoSをbest-effortに設定します。

注意:

転送されないメッセージに関しては、パイプライン・エラー・ハンドラにエラー処理ロジック(再試行ロジックを含む)を作成する必要があります。

Oracle Service BusのメッセージでのQoSの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのメッセージ・フローの作成に関する項を参照してください。

Oracle Service Busがリモートの場所にファイルを書き込む際に、プログラムがそのファイルにアクセスしないように、ファイルへの書込みが完了するまでSFTPトランスポート・ビジネス・サービスによって一時的にファイル名に「.a」が追加されます。

26.5.1 環境値

環境値は、構成データに含まれる定義済のフィールドです。この値は、ドメイン間で構成を移動するとき(テスト環境からプロダクション環境への移動など)に変更される可能性があります。SFTPトランスポートに関連付けられた環境値を次の表に示します。

表26-10 環境値

環境値

説明

アーカイブ・ディレクトリ

ダウンロード・ディレクトリまたはリモートの場所から移動されるファイルの移動先ディレクトリです。

ダウンロード・ディレクトリ

ファイル転送時にファイルがダウンロードされるローカル・コンピュータのディレクトリです。

エラー・ディレクトリ

問題が発生した場合にメッセージがポストされる場所です。

ポーリングの管理対象サーバー

(クラスタ・シナリオで)ポーリングに使用する管理対象サーバーです。

優先暗号スイート

サーバーと通信する際に使用する暗号スイート。SFTPトランスポートの「優先暗号スイート」フィールドにリストされた任意の暗号スイートを入力します。

SFTP優先データ整合性アルゴリズム

データ整合性チェックに使用するバルク・ハッシュ・アルゴリズム。SFTPトランスポートの「優先データ整合性アルゴリズム」フィールドにリストされた任意のアルゴリズムを入力します。

SFTP優先公開鍵アルゴリズム

公開鍵暗号化のための非対称鍵アルゴリズム。SFTPトランスポートの「優先公開鍵アルゴリズム」フィールドにリストされた任意のアルゴリズムを入力します。

SFTP優先鍵交換アルゴリズム

メッセージの暗号化のためのセッション鍵のネゴシエーション用である鍵交換プロトコル。SFTPトランスポートの「優先鍵交換アルゴリズム」フィールドにリストされた任意のアルゴリズムを入力します。

SFTP優先圧縮アルゴリズム

処理中のデータをzlibを使用して圧縮するかどうかを示すインジケータ。データを圧縮するにはzlibを、それ以外の場合はNoneを入力します。

詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のカスタマイズに関する項

- 26.5.4.2項「プロキシ・サービスの構成」

- 26.5.4.3項「ビジネス・サービスの構成」

26.5.2 SFTP認証の一般原則

次の原則は、プロキシ・サービスとビジネス・サービスのSFTP認証プロセスに適用されます。

- 接続: Oracle Service Busサービス(プロキシおよびビジネス)は、常にSFTPクライアントとして機能し、SFTPサーバーに接続します。

- SFTPサーバーによる認証

- 公開鍵認証およびホスト・ベース認証の場合、SFTPサーバーはOracle Service Busサービスの公開鍵を使用して接続を認証します。

- ユーザー名/パスワード認証の場合、SFTPサーバーはユーザー名とパスワードを使用して接続を認証します。

- SFTPクライアントによる認証: Oracle Service Busサービスは、常に、known_hostsファイルに定義された公開鍵/ホスト/IPの組合せを使用してSFTPサーバーを認証します。詳細は、26.5.4.1.1項「既知ホスト・ファイルの作成」を参照してください。

- 接続の確立: サーバー認証とクライアント認証の両方に成功した場合にのみ接続が確立されます。

- 転送

- クライアントがプロキシ・サービスの場合、ファイル(メッセージ)はSFTPサーバーからダウンロードされます。

- クライアントがビジネス・サービスの場合、ファイル(メッセージ)はSFTPサーバーにアップロードされます。

26.5.3 実行時の動作

SFTPトランスポートを使用したファイルのトランスポートには、次のステップが含まれます:

1. プロキシ・サービスが入力ディレクトリを定期的にポーリングします。

注意:

ポーリング・サイクルごとに新しい接続が作成されます。

2. プロキシ・サービスは、入力ディレクトリでファイルを見つけると、 .stage 拡張子の付いたファイル名に変更します。この名前変更により、サービスが次回のポーリング・サイクルで同じファイルを選択しないことが保証されます。
.stageファイルは、配信されるまで入力ディレクトリ内に存在します。

注意:

(ネットワーク障害などが原因で)入力ディレクトリからファイルを取得できない場合、 .stage ファイルはクリーンアップ・サイクルで処理されます。クリーンアップ・サイクルは、15分ごとまたは15回のポーリング・サイクルの後に実行されます(いずれか後に発生した方が実行されます)。連続する2回のクリーンアップ・サイクルで .stage ファイルが存在する場合、ファイルは再度処理されます。

3. メッセージのJMSタスクが作成され、ドメイン全体のJMSキューに追加されます。

4. ドメイン全体のMDBがタスクを受け取り、メッセージを処理します。

注意:

このタスクでは、メッセージを処理する際にプールされた接続を使用します。プールの接続を使用できない場合は、新しい接続が作成されます。

5. メッセージがパイプラインに配信され、 .stage ファイルが削除されます。

注意:

SFTPビジネス・サービスを構成している場合、サービスはプールされた接続を使用して、メッセージをアウトバウンド・ディレクトリに配置します。

メッセージが配信されていない場合は、再度メッセージの転送が試行され、定義済の試行回数に達するまでプロセスが繰り返されます。メッセージを配信できない場合、メッセージはエラー・ディレクトリに移動されます。

26.5.4 SFTPトランスポートの使用

SFTPトランスポートを使用すると、SSHファイル・トランスポートプロトコル(SFTP)を使用してファイルを安全にトランスポートできます。

次の項では、SFTPトランスポートを使用してファイルを安全に転送する方法について説明します。

- 26.5.4.1項「SFTP認証の有効化」

- 26.5.4.2項「プロキシ・サービスの構成」

- 26.5.4.3項「ビジネス・サービスの構成」

- 26.5.4.4項「通信エラーの処理」

- 26.5.4.5項「トラブルシューティング」

- 26.5.4.6項「リソースのインポート」

- 26.5.4.7項「サービスのインポートとパブリッシュ: UDDIレジストリ」

26.5.4.1 SFTP認証の有効化

SFTPトランスポートでは、次の認証方式をサポートしています。

- ユーザー名/パスワード認証

- ホスト・ベース認証

- 公開鍵認証

Oracle Service Busサービスは、known_hostsファイルに定義されたサーバーの詳細に基づいてSFTPサーバーを認証します。そのため、サーバー認証を有効にするには、クライアント・コンピュータでknown_hostsファイルを作成する必要があります。

26.5.4.1.1 既知ホスト・ファイルの作成

known_hostsファイルは、Oracle Service Busプロキシ・サービス(インバウンド・リクエスト)またはビジネス・サービス(アウトバウンド・リクエスト)が実行されているサーバーに存在する必要があります。このファイルには、プロキシ・サービスまたはビジネス・サービスの接続先となるリモートSFTPサーバーのIPアドレスおよび公開鍵が含まれている必要があります。

1. known_hostsファイルを作成し、次の形式で詳細情報を入力します。
Hostname,IP algorithm publickey

- Hostnameは、SFTPサーバーのホスト名です。
ホスト名は省略可能です。

- IPは、SFTPサーバーのIPアドレスです。
IPv6アドレスを使用する場合は、複数の0を表すために2つのコロンを使用しないでください。すべての0を指定します。たとえば、「::」という形式ではなく「:0:0:0:」を使用します。

- algorithmには、SFTPサーバーの構成に基づいて、DSAまたはRSAのいずれかを指定できます。サポートされているアルゴリズムに応じて、ssh-rsaまたはssh-dssと入力します。

- publickeyは、SFTPサーバーの公開鍵です。公開鍵は、Open SSH公開鍵形式であることが必要です。

例

getafix,172.22.52.130 ssh-rsa

AAAAB3NzaC1yc2EAAAABIwAAAIEAtR+M3Z9HFxnKZTx66fZdnQqAHQcF1vQe1+EjJ/HWYtg

Anqsn0hMJzqWMatb/u9yFwUpZBirjm3g2I9Qd8VocmeHwoGPhDGfQ5LQ/PPo3esE+CGwdnC

OyRCktNHeuKxo4kiCCJ/bph5dRpghCQIvsQvRE3sks+XwQ7Wuswz8pv58=

known_hostsファイルには、複数のエントリを含めることができますが、各エントリはそれぞれ別の行に入力する必要があります。

2. known_hostsファイルをDOMAIN_HOME/config/osb/transports/sftpディレクトリに移動します。
/transports/sftpディレクトリは、自動的に作成されるわけではありません。このディレクトリを作成する必要があります。

26.5.4.1.2 ユーザー名/パスワード認証の有効化

ユーザー名/パスワード認証は、最も簡単で手早い認証方式です。この認証方式は、ユーザーの資格証明に基づいています。

サービスのユーザー名/パスワード認証を有効にするには:

1. SFTPサーバーのユーザー資格証明を使用して静的サービス・アカウントを作成します。詳細は、2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

2. known_hostsファイルを作成します。詳細は、26.5.4.1.1項「既知ホスト・ファイルの作成」を参照してください。

26.5.4.1.3 ホスト・ベース認証の有効化

ホスト・ベース認証では、プライベート・ホスト・キーを使用します。この方式は、すべてのユーザーが同じプライベート・ホストを共有している場合に使用できます。

サービスのホスト・ベース認証を有効にするには:

1. SSLクライアント認証キーでサービス・キー・プロバイダを構成します。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダに関する項を参照してください。

注意:

公開鍵は、サービス・キー・プロバイダの作成時に使用したキーストアから抽出できます。公開鍵は、Open SSH形式であることが必要です。

2. known_hostsファイルを作成します。詳細は、26.5.4.1.1項「既知ホスト・ファイルの作成」を参照してください。

3. SFTPサーバーのクライアントであるOracle Service Busからのリクエストを受け入れるようにSFTPサーバーを構成します。
たとえば、LinuxのSFTPサーバーの場合、次の手順を実行する必要があります。

- /etc/ssh/shosts.equivファイルを編集し、Oracle Service Busドメインを実行しているコンピュータのホスト名またはIPアドレスを追加します。

- /etc/ssh/ssh_known_hostsファイルを編集して、Oracle Service Busドメインを実行しているコンピュータのホスト名またはIPアドレスを追加し、その後にスペースを入力して公開鍵を追加します。

注意:

ホストベース認証では、Open SSHがクライアント提供のホスト名と、クライアントIPアドレスのリバース・ルックアップを比較します。リクエストが複数ホーム・コンピュータから送られるシナリオ、またはNATゲートウェイを介して送られるシナリオでは、ホスト名は一致しない場合があり、認証が失敗します。このようなシナリオを回避するには、/etc/ssh/sshd_configのHostbasedUsesNameFromPacketOnlyオプションをyesに設定することで、DNSチェックをオフにします。実際のセキュリティは、known_hostsファイルとSFTPサーバーの公開鍵の照合によって行われるため、この回避方法はセキュリティを損ないません。

26.5.4.1.4 公開鍵認証の有効化

公開鍵認証は、ユーザー独自の秘密鍵を使用して実行されます。この方式は、各ユーザーが秘密鍵を持っている場合に使用できます。

公開鍵認証を有効にするには:

1. SSLクライアント認証キーでサービス・キー・プロバイダを構成します。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダに関する項を参照してください。

2. Oracle Service Bus (SFTPクライアント)からのリクエストを受け入れるようにSFTPサーバーを構成します。
たとえば、LinuxのSFTPサーバーの場合、キーストアから公開鍵を抽出し、このキーをSFTPサーバーの $HOME/.ssh/authorized_keys ファイルに入力する必要があります。このパスとファイルが存在することを確認してください。

3. known_hostsファイルを作成します。詳細は、26.5.4.1.1項「既知ホスト・ファイルの作成」を参照してください。

26.5.4.2 プロキシ・サービスの構成

Oracle Service Bus管理コンソールの「トランスポート構成」ページでプロキシ・サービスを作成する場合、sftpの転送プロトコルを選択し、次の形式でエンドポイント構成を指定する必要があります。

sftp://hostname:port/directory

エンドポイントURIの各部分の説明は次のとおりです。

- hostnameは、SFTPサーバーのホスト名またはIPアドレスです。

- portは、SFTPサーバーがリスニングしているポートです。SFTPのデフォルト・ポートは22です。

- directoryは、定期的にファイルについてポーリングされる場所です。
ディレクトリはSFTPセッションの作業ディレクトリを基準として相対的に指定します。たとえば、SFTPサービスでファイルをhome/my_sftp/documentsにコピーする場合には、作業ディレクトリがhome/my_sftp/であれば、URLはsftp://example:21/documentsとなります。

注意:

SFTPトランスポートでは、メッセージとXMLサービス・タイプのみがサポートされるため、Oracle Service Bus管理コンソールの「全般的な構成」ページで、サービス・タイプとして「メッセージ・サービス」または「任意のXMLサービス」を選択する必要があります。

サービス・タイプとして 「メッセージング・サービス」 を選択した場合、次を実行する必要があります。

- リクエスト・メッセージの種類として、「バイナリ」、「テキスト」、「MFL」または「XML」を指定する必要があります。

- SFTPトランスポートがサポートしているのは一方向のメッセージのみであるため、レスポンス・メッセージの種類を「なし」に設定する必要があります。

詳細は、2.3項「プロキシ・サービスの操作」を参照してください。

次の表の説明に従って、プロキシ・サービスを構成します。

表26-11 SFTPプロキシ・サービスの構成

フィールド

説明

ユーザー認証

プロキシ・サービスは、指定されたユーザー認証方式に基づいてSFTPサーバーによって認証されます。

必要な認証方式を選択します。

- 「ユーザー名パスワード」認証: 静的サービス・アカウントをこの認証方式に関連付け、サービス・アカウントで提供される資格証明を使用してクライアントを認証します。

- 「ホスト・ベース」認証: ユーザー名とサービス・キー・プロバイダが必要です。既知のホストから接続するユーザーは、ホストの秘密鍵を使用して認証されます。

- 「公開鍵」認証: ユーザー名とサービス・キー・プロバイダが必要です。ユーザーは、独自の秘密鍵を持ちます。

サービス・アカウント

ユーザーのサービス・アカウントを入力するか、「参照」をクリックしてサービス・アカウントを選択します。サービス・アカウントの使用方法の詳細は、2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

サービス・キー・プロバイダ

このフィールドは、公開鍵認証方式とホスト・ベース認証方式にのみ使用できます。

サービス・キー・プロバイダを入力するか、「参照」をクリックしてサービス・キー・プロバイダを選択します。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダに関する項を参照してください。

ユーザー名

この値は、ホスト・ベース認証方式または公開鍵認証方式を選択した場合にのみ必要です。

- ホスト・ベース認証では、SFTPサーバー上のユーザーのホーム・ディレクトリをポーリングするためにユーザー名が必要となります。

- 公開鍵認証では、ユーザーのホーム・ディレクトリのポーリングとSFTPサーバー上の公開鍵の場所の識別にユーザー名が必要となります。

ユーザー名を入力します。

参照渡し

このオプションを選択すると、ファイルはアーカイブ・ディレクトリにステージングされ、参照としてヘッダーに渡されます。

注意: このオプションは、リモート・ストリーミングが無効になっている場合にのみ使用できます。

リモート・ストリーミング

このオプションを選択すると、処理時にSFTPのファイルがリモート・サーバーから直接ストリームされます。このオプションを選択した場合、SFTPサーバー・コンピュータのリモート・ディレクトリがアーカイブ・ディレクトリになります。そのため、SFTPユーザー・ディレクトリからの相対パスでアーカイブ・ディレクトリを指定する必要があります。

ファイル・マスク

特定のタイプのファイルを転送する場合は、ファイル・マスクを使用できます。

正規表現を入力して、ディレクトリから取り出すファイルを選択します。デフォルト値は*.*です。

ポーリング間隔

ポーリング間隔は、入力ディレクトリをポーリングする頻度です。ポーリングでは、SFTP接続を作成する必要があります。

指定した場所からファイルをポーリングする間隔を秒単位で入力します。デフォルト値は60です。

注意: 間隔が短いとディレクトリが頻繁にポーリングされるため、短いポーリング間隔を設定しないようにしてください。

読取り制限

ポーリング・ディレクトリに多数のファイルが存在する場合は、このフィールドで適切な値を選択することにより同時転送の数を制限できます。

制限を指定しない場合は、0(ゼロ)を入力します。デフォルト値は10です。

注意: SFTPサーバーで同時接続数が制限されている場合があります。定義した読取り制限がサーバーで定義されている制限よりも少ないことを確認してください。

読取り後のアクション

ファイル転送後にメッセージで実行する必要のあるアクションを選択します。

- 「アーカイブ」: メッセージは指定されたアーカイブ・ディレクトリにアーカイブされます。

- 「削除」: メッセージが削除されます。

アーカイブ・ディレクトリ

「読取り後のアクション」が「アーカイブ」に設定されている場合、ファイルは転送後に(ダウンロード・ディレクトリまたはリモートの場所から)アーカイブ・ディレクトリに移動します。

「参照渡し」オプションを選択した場合は、アーカイブ・ディレクトリを指定する必要があります。

リモート・ストリーミングが有効になっている場合、アーカイブ・ディレクトリはSFTPサーバーのディレクトリになります。リモート・ストリーミングが無効になっている場合は、Oracle Service Busコンピュータ上のアーカイブ・ディレクトリを使用できます。

アーカイブ・ディレクトリの絶対パスを指定します。

注意: このディレクトリが存在しない場合は、自動的に作成されます。相対パスを指定すると、ディレクトリはOracle WebLogic Serverを起動するJavaプロセスからの相対パスに作成されます。

ダウンロード・ディレクトリ

ファイル転送時に、ファイルはこのディレクトリにダウンロードされます。

リモート・ストリーミングが有効になっている場合、このオプションは無効になります。

ファイル転送時にファイルをダウンロードするローカル・コンピュータのディレクトリの絶対パスを指定します。

注意: このディレクトリが存在しない場合は、自動的に作成されます。相対パスを指定すると、ディレクトリはOracle WebLogic Serverを起動するJavaプロセスからの相対パスに作成されます。

エラー・ディレクトリ

ファイル転送時に問題が発生した場合、メッセージはエラー・ディレクトリにポストされます。

リモート・ストリーミングが有効になっている場合、エラー・ディレクトリはSFTPサーバーのディレクトリになります。リモート・ストリーミングが無効になっている場合は、Oracle Service Busコンピュータ上のエラー・ディレクトリを使用できます。

エラー・ディレクトリの絶対パスを指定します。

注意: このディレクトリが存在しない場合は、自動的に作成されます。相対パスを指定すると、ディレクトリはOracle WebLogic Serverを起動するJavaプロセスからの相対パスに作成されます。

リクエストのエンコーディング

SFTPトランスポートでのリクエストの文字セット・エンコーディングとしてデフォルト値(UTF-8)を受け入れます。

サブディレクトリのスキャン

エンドポイントURIで指定されたディレクトリ内のすべてのサブディレクトリを再帰的にスキャンする場合は、このオプションを選択します。

注意: サブディレクトリをスキャンする場合、追加の処理オーバーヘッドが必要となります。そのため、このオプションは慎重に使用してください。

到着順にソート

このオプションを選択すると、イベントは到着順に配信されます。これにより、メッセージ配信がランダムに行われるのではなく、ファイルが宛先ディレクトリにダウンロードされた時間に基づいて行われるようになります。

タイムアウト

ソケット・タイムアウト間隔を秒単位で入力します。この時間が経過すると、接続を切断する必要があります。接続をタイムアウトしない場合は、0を入力します。デフォルト値は60です。

再試行回数

この設定を使用すると、ネットワーク障害などのエラーの発生時に、複数回の試行が可能になります。

SFTP接続に失敗した場合の再試行回数を指定します。デフォルト値は3です。

優先暗号スイート

サーバーと通信する際に使用する暗号スイートを入力します。

デフォルト値「実行時のデフォルトの使用」を使用すると、サポートされる暗号スイートのリストがサーバーに送信され、一致が検出されるまで各暗号スイートが試行されます。

優先データ整合性アルゴリズム

データ整合性チェックに使用するバルク・ハッシュ・アルゴリズムを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムhmac-sha1が送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先公開鍵アルゴリズム

公開鍵暗号化のための非対称鍵アルゴリズムを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムssh-dssが送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先鍵交換アルゴリズム

メッセージの暗号化のためのセッション鍵のネゴシエーション用として、デフォルトの鍵交換プロトコルを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムdiffie-hellman-group1-sha1が送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先圧縮アルゴリズム

処理中のデータをzlibを使用して圧縮するかどうかを選択します。データを圧縮するにはzlibを、それ以外の場合は「なし」を選択します。デフォルトは、「None」。

SFTPトランスポートを使用するプロキシ・サービスの構成方法の詳細は、2.3項「プロキシ・サービスの操作」を参照してください。

26.5.4.2.1 トランスポート・ヘッダーとメタデータの構成

プロキシ・サービスを構成するときに、トランスポート・ヘッダー・アクションを使用してメッセージのヘッダー値を設定できます。SFTPトランスポートに関連するトランスポート・ヘッダーとメタデータを次の表に示します。

表26-12 トランスポート・ヘッダーとメタデータ

ヘッダー/メタデータ

説明

FileName

この値は、宛先ディレクトリでファイル名として使用されます。

isFilePath

メタデータ・フィールドです。指定可能な値はtrueとfalseです。

- True: FileName がファイルの絶対パスとして解釈されます。

- False: FileName がファイルの名前として解釈されます。

filePath

レスポンス・メタデータ・フィールドです。 FileName ヘッダーで指定したファイルが書き込まれる絶対パスを示します。

Oracle Service Busメッセージ・フローでのトランスポート・ヘッダーの構成

構成できるのは、Oracle Service Busメッセージ・フローにおけるアウトバウンド・リクエストのトランスポート・ヘッダーのみです。パイプラインで、トランスポート・ヘッダー・アクションを使用してメッセージのヘッダー値を設定します。詳細は、2.4.32項「メッセージ・フローへのトランスポート・ヘッダー・アクションの追加と構成」を参照してください。

テスト・コンソールでのトランスポート・ヘッダーとメタデータの構成

開発時にSFTPトランスポートベースのサービスをテストする場合、Oracle Service Busテスト・コンソールでFileNameトランスポート・ヘッダーとisFilePathメタデータの値を構成できます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のテスト・コンソールの使用に関する項を参照してください。

26.5.4.3 ビジネス・サービスの構成

Oracle Service Bus管理コンソールの「トランスポート構成」ページでビジネス・サービスを作成する場合、sftpの転送プロトコルを選択し、次の形式でエンドポイントURI (サービスの場所)を指定する必要があります。

sftp://hostname:port/directory

エンドポイントURIの各部分の説明は次のとおりです。

- hostnameは、SFTPサーバーのホスト名またはIPアドレスです。

- portは、SFTPサーバーがリスニングしているポートです。SFTPのデフォルト・ポートは22です。

- directoryは、アウトバウンド・メッセージが格納される(書き込まれる)場所です。
ディレクトリはSFTPセッションの作業ディレクトリを基準として相対的に指定します。たとえば、SFTPサービスでファイルをhome/my_sftp/documentsにコピーする場合には、作業ディレクトリがhome/my_sftp/であれば、URLはsftp://example:21/documentsとなります。

注意:

SFTPトランスポートでは、メッセージとXMLサービス・タイプのみがサポートされるため、Oracle Service Bus管理コンソールの「全般的な構成」ページで、サービス・タイプとして「メッセージ・サービス」または「任意のXMLサービス」を選択する必要があります。

サービス・タイプとして 「メッセージング・サービス」 を選択した場合、次を実行する必要があります。

- リクエスト・メッセージの種類として、「バイナリ」、「テキスト」、「MFL」または「XML」を指定する必要があります。

- SFTPトランスポートがサポートしているのは一方向のメッセージのみであるため、レスポンス・メッセージの種類を「なし」に設定する必要があります。

詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

次の表の説明に従って、ビジネス・サービスを構成します。

表26-13 SFTPビジネス・サービスの構成

フィールド

説明

ユーザー認証

プロキシ・サービスは、指定されたユーザー認証方式に基づいてSFTPサーバーによって認証されます。

必要な認証方式を選択します。

- 「ユーザー名パスワード」認証: 静的サービス・アカウントをこの認証方式に関連付け、サービス・アカウントで提供される資格証明を使用してクライアントを認証します。

- 「ホスト・ベース」認証: ユーザー名とサービス・キー・プロバイダが必要です。既知のホストから接続するユーザーは、ホストの秘密鍵を使用して認証されます。

- 「公開鍵」認証: ユーザー名とサービス・キー・プロバイダが必要です。ユーザーは、独自の秘密鍵を持ちます。

サービス・アカウント

ユーザーのサービス・アカウントを入力するか、「参照」をクリックしてサービス・アカウントを選択します。サービス・アカウントの使用方法の詳細は、2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

サービス・キー・プロバイダ

このフィールドは、公開鍵認証方式とホスト・ベース認証方式にのみ使用できます。

サービス・キー・プロバイダを入力するか、「参照」をクリックしてサービス・キー・プロバイダを選択します。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダに関する項を参照してください。

ユーザー名

この値は、ホスト・ベース認証方式または公開鍵認証方式を選択した場合にのみ必要です。

- ホスト・ベース認証では、SFTPサーバー上のユーザーのホーム・ディレクトリをポーリングするためにユーザー名が必要となります。

- 公開鍵認証では、ユーザーのホーム・ディレクトリのポーリングとSFTPサーバー上の公開鍵の場所の識別にユーザー名が必要となります。

ユーザー名を入力します。

タイムアウト

ソケット・タイムアウト間隔を秒単位で入力します。この時間が経過すると、接続を切断する必要があります。接続をタイムアウトしない場合は、0を入力します。デフォルト値は60です。

宛先ファイル名の接頭辞

トランスポートによってリモート・サーバー上のファイル名の先頭に付加される、省略可能な接頭辞を入力します。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

宛先ファイル名の接尾辞

トランスポートによってリモート・サーバー上のファイル名の末尾に付加される、省略可能な接尾辞を入力します。

このフィールドには「*」を入力できません。この文字を入力すると、実行時例外が発生します。

リクエストのエンコーディング

SFTPトランスポートでのリクエストの文字セット・エンコーディングとしてデフォルト値(UTF-8)を受け入れます。

優先暗号スイート

サーバーと通信する際に使用する暗号スイートを入力します。

デフォルト値「実行時のデフォルトの使用」を使用すると、サポートされる暗号スイートのリストがサーバーに送信され、一致が検出されるまで各暗号スイートが試行されます。

優先データ整合性アルゴリズム

データ整合性チェックに使用するバルク・ハッシュ・アルゴリズムを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムhmac-sha1が送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先公開鍵アルゴリズム

公開鍵暗号化のための非対称鍵アルゴリズムを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムssh-dssが送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先鍵交換アルゴリズム

メッセージの暗号化のためのセッション鍵のネゴシエーション用として、デフォルトの鍵交換プロトコルを選択します。

デフォルト値「実行時のデフォルトの使用」を使用すると、Oracle Service Busによって優先アルゴリズムdiffie-hellman-group1-sha1が送信されます。サーバーでこれがサポートされない場合は、サポートされるアルゴリズムのリストがサーバーに送信され、一致が検出されるまで各アルゴリズムが試行されます。

優先圧縮アルゴリズム

処理中のデータをzlibを使用して圧縮するかどうかを選択します。データを圧縮するにはzlibを、それ以外の場合は「なし」を選択します。デフォルトは、「None」。

SFTPトランスポートを使用するビジネス・サービスの構成方法の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

26.5.4.4 通信エラーの処理

リモートSFTPサーバーへの接続時に接続またはユーザー認証に失敗した場合に発生する可能性のある通信エラーを処理するように、SFTPトランスポート・ベースのビジネス・サービスを構成できます。ビジネス・サービスを構成するときに、指定した再試行間隔の後、ビジネス・サービスのエンドポイントURIがオフラインになるように設定できます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「モニタリング」の次の項を参照してください:

- ビジネス・サービスの操作設定の構成に関する項

- ビジネス・サービスのエンドポイントURIのメトリックの表示に関する項

26.5.4.5 トラブルシューティング

ほとんどのエラーは、SFTPプロキシ・サービスまたはビジネス・サービスの構成中に発生します。エラーについて理解し、エラーを解決する上で役立つヒントを次に示します。

- known_hostsファイルを適切に構成していることを確認します。

- 公開鍵認証では、公開鍵ファイルをサーバーに格納する必要があります。詳細は、SFTPサーバー付属のドキュメントを参照してください。

- 接続は拒否されましたというエラー・メッセージは、構成済のホストとポートでSFTPサーバーを使用できないことを示します。

- 「認証が失敗しました。」というエラー・メッセージは、ユーザー名とパスワードが無効であること、または公開鍵が正しく構成されていないことを示します。

- 接続が正常に完了しませんでしたというエラー・メッセージは、接続エラーの原因となった実際のエラー(キーが見つかりませんなど)が表示された後に表示されます。

- IP、ホストのキーが見つかりませんというエラー・メッセージは、指定されたIPとホストの組合せに対応するエントリがknown_hostsファイルに含まれていないことを示します。エントリが存在する場合は、別のアルゴリズムのキーを使用して試行されます。たとえば、以前の試行でRSAキーが使用された場合は、DSAキーを使用して再試行されます。

26.5.4.6 リソースのインポート

Oracle Service Busドメインに存在するリソースをインポートする場合、「セキュリティおよびポリシーの構成を保持」オプションを選択することで、そのリソースの既存のセキュリティおよびポリシーの構成の詳細を保持できます。リソースのインポート時に保持されるSFTPサービス固有の詳細は次のとおりです。

- クライアント認証方式

- ユーザー名/パスワード認証に関連付けられたサービスのサービス・アカウントへの参照

- ホスト・ベース認証または公開鍵認証に関連付けられたサービスのサービス・キー・プロバイダへの参照

- ホスト・ベース認証または公開鍵認証に関連付けられたサービスのユーザー名

Oracle Service Bus管理コンソールからのリソースのインポートの詳細は、2.1.14項「リソースのインポート」を参照してください。

26.5.4.7 サービスのインポートとパブリッシュ: UDDIレジストリ

SFTPサービスをUDDIレジストリにパブリッシュすると、「認証モード」、「リクエストのエンコーディング」、「到着順にソート」および「ファイル・マスク」の各プロパティがパブリッシュされます。

SFTPサービスをUDDIレジストリからインポートしたときに、レジストリからインポートされるプロパティを表26-14に示します。

表26-14 UDDIレジストリからインポートされるプロパティ

プロパティ

説明

宛先ファイル名の接頭辞

リモート・サーバーに格納されるファイルの名前に使用する接頭辞です。

デフォルト値は" "(null)です。

宛先ファイル名の接尾辞

リモート・サーバーに格納されるファイルの名前に使用する接尾辞です。

デフォルト値は" "(null)です。

認証モード

レジストリからインポートされる認証方式です。

ユーザー認証を使用するSFTPビジネス・サービスをUDDIレジストリからOracle Service Busにインポートすると、競合が発生します。

- ユーザー名/パスワード認証の場合は、サービス・アカウントを作成し、サービスに関連付ける必要があります。

- ホスト・ベース認証または公開鍵認証の場合は、サービス・キー・プロバイダを作成し、サービスに関連付ける必要があります。

サービスのインポート後のロード・バランシング・アルゴリズムのデフォルト値はround-robinです。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「UDDI」を参照してください。

27 SBトランスポート

この章では、SBトランスポートの概要と、サービスでの使用および構成方法について説明します。

SBトランスポートによって、Oracle製品からRMIを使用して、Oracle Service Busプロキシ・サービスを同期的に呼び出すことができます。インバウンド・トランスポートでは、クライアントがRMIを使用してSBプロキシ・サービスにアクセスできます。アウトバウンド・トランスポートでは、RMIを使用してSBプロキシ・サービスを呼び出すことができます。デフォルトでは、T3プロトコル、IIOP、HTTP、T3、IIOPS、またはHTTPSを使用したすべてのサービスへのアクセスが、ターゲット・サーバーの構成に依存します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプのデフォルト・ネットワーク接続の構成に関する項を参照してください。

SBトランスポートでは、次の機能がサポートされます。

- トランザクション・コンテキストを伝播します。クライアントOracle Service Busサーバーで発生したトランザクションを必要に応じてSBプロキシ・サービスに伝播することができます。
セキュリティ・コンテキストを伝播します。デフォルトでは、SBクライアント・スレッドに関連付けられたセキュリティ・コンテキストを使用してSBプロキシ・サービスを呼び出します。これには、ドメイン間の信頼を有効化しなければならない場合があります。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のドメイン間セキュリティ・サポートの重要事項に関する項を参照してください。

- サービス・アカウントを使用したアウトバウンド・エンドポイントから、カスタムIDでSBプロキシ・サービスを呼び出します。

- 非トランザクションの呼出しに対してタイムアウト値を指定します。Oracle Service Busが指定間隔以内にリクエストに応答しない場合、クライアント・リクエストは返されます。

- リクエスト接続とレスポンス接続両方でのディスパッチ・ポリシーの関連付け。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項を参照してください。

- JNDIプロバイダを指定せずにSBビジネス・サービスにルーティングする場合、RMI呼出しおよびcall-by-referenceを最適化します。

- 次のサービス・タイプに対応します。

- WSDLサービス

- 任意のSOAPサービス

- 任意のXMLサービス

- 次のメッセージング・パターンに対応します。

- インバウンド・トランスポートに対するリクエスト(一方向)およびリクエスト/レスポンス。
Oracle Service Busクライアントの場合、メッセージング・パターンはデフォルトでSBアウトバウンド・トランスポートのパイプラインから継承されます。

Oracle Service Bus以外のクライアントの場合、メッセージング・パターンはデフォルトでリクエスト/レスポンスになります。

- アウトバウンド・トランスポートの環境値に対するリクエストおよびリクエスト/レスポンス。SBでサポートされる環境値の詳細は、27.1項「環境値」を参照してください。

- サービスの品質(QoS)のデフォルト値は次のとおりです。

- Oracle Service Bus以外のクライアントの場合、Exactly-Onceです。

- Oracle Service Busクライアントの場合、Best-Effortです。

メッセージ・フローのルーティング・オプションを使用してサービスのQoSを設定することもできます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス品質に関する項を参照してください。

この章の内容は次のとおりです。

- 27.1項「環境値」

- 27.2項「SBトランスポートを使用するプロキシ・サービスの構成」

- 27.3項「SBトランスポートを使用するビジネス・サービスの構成」

- 27.4項「エラー処理」

- 27.5項「UDDI」

27.1 環境値

SBトランスポートでサポートされる環境値を表27-1に示します。

表27-1 環境値

環境値

使用目的

タイムアウト(カテゴリ:操作)

ビジネス・サービスに設定されたタイムアウト値をオーバーライドします。

サービス・アカウント(カテゴリ:セキュリティ)

ビジネス・サービスに関連付けられたユーザー資格証明を更新します。

SSLを使用(カテゴリ:セキュリティ)

プロキシ・サービスに対し、セキュアなプロトコルを使用してサービスを公開するオプションを有効または無効にします。

27.2 SBトランスポートを使用するプロキシ・サービスの構成

クライアントOracle Service Busサーバーは、JNDIコンテキストおよびプロキシ・サービスURIを使用してOracle Service Busサーバーに接続します。クライアントのセキュリティ・コンテキストは、プロキシ・サービスを呼び出すために使用されます。デフォルトのQoSはExactly-onceです。クライアントは必要に応じて、QoSを変更し、リクエストのタイムアウト値を設定し、適切なメッセージ・パターンを指定することができます。メッセージはインバウンドSBトランスポートで受信し、メッセージ・フローで処理されます。

Oracle Service Bus管理コンソールでプロキシ・サービスを作成するには:

1. 「全般的な構成」ページで、サービスの全般的な構成の詳細を入力します。詳細は、4.3.1項「プロキシ・サービスの「全般的な構成」ページ」を参照してください。

2. 「トランスポート構成」ページで転送プロトコルとしてsbを選択します。エンドポイントURIに<proxy service name>を指定します。このプロキシ・サービス名は、クライアントによって呼び出されるプロキシ・サービスに関連付けられた一意の識別子です。詳細は、4.3.6項「プロキシ・サービスの「トランスポート構成」ページ」を参照してください。

3. 表27-2の説明に従って、SBの「トランスポート構成」ページで値を指定します。

表27-2 プロキシ・サービスのSBトランスポートを構成するためのフィールド

フィールド

説明

ディスパッチ・ポリシー

デフォルトのディスパッチ・ポリシーを使用するか、またはインバウンド・リクエスト用にワーク・マネージャを構成できます。

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

SSLを使用

セキュアなプロトコルを使用してサービスを公開するには、「SSLを使用」オプションを選択します。これは、クライアントがSSLプロトコルを使用してSBプロキシ・サービスにアクセスする必要があることを意味しますが、クライアントが非セキュアなプロトコルを使用してサービスにアクセスすることを防止するわけではありません。また、次の場合は、サービスに関連付けられたエンドポイントURIがsbではなくsbsになります。

- セキュア・サービスをUDDIでエクスポートし、セキュリティおよびポリシーの構成の詳細をインポート時に保持する場合。

- 有効なWSDL内。

注意: プロキシ・サービスは特定のプロトコルにバインドされません。必要に応じてSSL、IIOPまたはHTTPトンネリングを有効にする作業は、WLS管理者が行う必要があります。

このフラグは、エクスポート時のサービスのURIスキーム、またはUDDIからインポートされるときのビジネス・サービスURIに対するJNDIプロバイダの選択にのみ影響します。クライアントが非セキュアなプロトコルを使用してサービスにアクセスすることを防止するわけではありません。

詳細は、2.3項「プロキシ・サービスの操作」を参照してください。

27.3 SBトランスポートを使用するビジネス・サービスの構成

SBビジネス・サービスは、他のSBプロキシ・サービスに対してのみメッセージを送信できます。ビジネス・サービスのエンドポイントURIに指定されたJNDIプロバイダは、リモートOracle Service Busサーバー上でJNDIルックアップを実行します。クライアントのユーザー資格証明またはビジネス・サービスに関連付けられたサービス・アカウントに定義済のユーザー資格証明を使用して、プロキシ・サービスを呼び出します。必要に応じて、タイムアウト値およびカスタム・ディスパッチ・ポリシーをビジネス・サービスに関連付けることもできます。また、サービスのQoSを、ルーティング・オプションを使用して設定することができます。

Oracle Service Bus管理コンソールでビジネス・サービスを作成するには:

1. 「全般的な構成」ページで、サービスの全般的な構成の詳細を入力します。詳細は、4.2.1項「ビジネス・サービスの「全般的な構成」ページ」を参照してください。

2. 「トランスポート構成」ページで転送プロトコルとしてsbを選択し、エンドポイントURIを次の形式で指定します。
sb://<jndi_provider_name>/<service_name>

各要素の説明は次のとおりです。

- <jndi_provider_name>はJNDIプロバイダの名前で、対応するOracle Service Bus JNDIプロバイダを示します。オプション。省略した場合は、デフォルトのコンテキストが使用されます。これは、サービスとOracle Service Busサーバーが同じコンピュータに存在することを意味します。呼出しが同じ場所にある場合、シリアライズはサービス呼出し中にスキップされます。詳細は、27.3.1項「JNDIプロバイダ」を参照してください。

- <service name>はターゲット・サービスで、リモート・プロキシ・サービスURIに対応します。

詳細は、4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」を参照してください。

3. 表27-3の説明に従って、SBの「トランスポート構成」ページで値を指定します。

表27-3 ビジネス・サービスのSBトランスポートを構成するためのフィールド

フィールド

説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

タイムアウト

ビジネス・サービスがタイムアウトになるまでの期間を秒単位で指定します(タイムアウトが発生すると、ビジネス・サービスはランタイム・エラーを返します)。

指定したタイムアウト値は、次の場合には適用されません。

- サービス・エンドポイントのQoSがExactly-Onceである場合。

- 負の値が指定された場合。

- タイムアウト値が、メッセージ・フローにおいて、アウトバウンド・リクエストのオプションのTimeoutカスタム・ヘッダーでオーバーライドされる場合。詳細は2.4.32項「メッセージ・フローへのトランスポート・ヘッダー・アクションの追加と構成」を参照してください。

サービス・アカウント

リモート・プロキシ・サービスの呼出しに使用する必要があるユーザー資格証明を指定します。サービス・アカウントが指定されない場合は、このビジネス・サービスのインバウンド・プロキシ・サービス(インバウンド・クライアント)のユーザー資格証明が、セキュリティ・コンテキストの伝播に使用されます。詳細は、2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

27.3.1 JNDIプロバイダ

JNDIプロバイダは、SBプロキシ・サービスに対応するRMIスタブを取得するためにサービスがデプロイされているOracle Service Busサーバーを示します。JNDIプロバイダには、リモート接続とEJBスタブのための高性能なキャッシング・メカニズムがあります。JNDIプロバイダでは、T3、IIOP、HTTP、T3s、IIOPS、またはHTTPS転送プロトコルを使用できます。Oracle Service BusからWLSドメインへの推奨される通信プロトコルは、T3またはT3Sです。メッセージがファイアウォールを通過する必要がある場合は、HTTPトンネリングを使用できます。使用するには、コンテキスト内でHTTPプロバイダのURLを使用し、WLSサーバー上でHTTPトンネリングを有効にします。

注意:

JNDIプロバイダでサポートされるプロトコルがリモートOracle Service Busサーバーにあるかどうかの確認は、管理者が行う必要があります。

ビジネス・サービスを作成するとき、ビジネス・サービスにJNDIプロバイダを関連付けることができます。詳細は、27.3項「SBトンランスポートを使用するビジネス・サービスの構成」および2.1.8項「JNDIプロバイダ・リソースの作成および編集」を参照してください。

27.4 エラー処理

ビジネス・サービスURIは、通信エラーが発生したときにオフラインにすることができます。ビジネス・サービスの操作設定を構成するときに、指定した再試行間隔の後、ビジネス・サービスのエンドポイントURIがオフラインになるように設定できます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のビジネス・サービスの操作設定の構成に関する項およびビジネス・サービスのエンドポイントURIメトリックの表示に関する項を参照してください。

SBプロキシ・サービスの呼出し中に接続エラーが発生すると、SBトランスポート・プロバイダによってBEA-380002エラー・コードが生成されます。接続エラーは、次のいずれかの理由で発生する可能性があります。

- ターゲット・プロキシ・サービスが存在しません。

- JNDIプロバイダ設定が正しくありません。

- RMI呼出し中に、リモート例外またはネーミング例外が発生しています。
ネーミング例外のタイプjavax.naming.NamingSecurityExceptionは、通常、呼出しで使用されたIDがターゲット・サーバーで認識されない場合に発生します。この例外が発生すると、リクエストは全般的なランタイム・エラーを返します。このエラーは、接続エラーとして処理されません。

- 外部サービスは、SOAPペイロードをフォルト・コードとともに返します。
フォルト・コードを処理するエラー・ハンドラが存在する場合、トランザクションはロールバック対象としてマークされません。エラー・ハンドラが存在しない場合、トランザクションはロールバック対象としてマークされます。

エラーが発生した際に、(返信アクション用のエラー・オプションを使用して)フォルトをキャッチしてフォルト・レスポンスを返信するエラー・ハンドラが存在する場合、エラーはアプリケーション・エラーとみなされ、トランザクションはロールバック対象としてマークされません。他のすべてのエラーの場合、トランザクションはロールバック対象としてマークされます。

SBプロキシによって返されるSOAPフォルトは、アプリケーション・エラーとして処理されます。

27.5 UDDI

UDDIレジストリに対してサービスのインポートとパブリッシュを行うことができます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「UDDI」を参照してください。

27.5.1 サービスのパブリッシュ

プロキシ・サービスをUDDIレジストリにパブリッシュする場合、パブリッシュしたサービスに関連付けられたURIの形式は、次のとおりです。

sb://host:port/service_name

ここで、host:portはパブリッシュするプロキシ・サービスをホスティングしているOracle Service Busサーバーのホスト名とリスニング・ポートを示します。

パブリッシュするプロキシ・サービスで「SSLを使用」オプションが有効になっている場合、パブリッシュされたサービスに関連付けられたURIの形式は、次のとおりです。

sbs://host:port/service_name

ここで、host:portはプロキシ・サービスをホスティングしているOracle Service Busサーバーのホスト名とSSLリスニング・ポートを示します。

パブリッシュするプロキシ・サービスがクラスタ上で実行されている場合、host:portはconfig.xmlファイルのClusterセクションにあるCluster Address設定になります。この値は、クラスタ内の任意のWLSへの接続に使用される1つのホスト名およびポート番号にすることができます。または、Oracle Service Busクラスタ内の管理対象サーバーのホスト名およびリスナー・ポートのカンマ区切りのリストにすることもできます。詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JNDIのプログラミング』のWebLogic JNDIに関する項を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のUDDIレジストリへのプロキシ・サービスのパブリッシュに関する項を参照してください。

27.5.2 サービスのインポート

UDDIレジストリからサービスをインポートする場合、SBトランスポート・プロバイダは、サービスURIプロパティのsbschemeおよびhost:port情報を、sbschemeに基づく適切なプロトコルを使用してOracle Service Busサーバー上で登録されたJNDIプロバイダと照合します。sbschemeはSBトランスポート・ベースのサービスのURIスキームで、sbまたはsbsのいずれかになります。

sbschemeがsbである場合、トランスポート・プロバイダはT3、T3S、IIOP、IIOPS、HTTP、またはHTTPSプロトコルを(この順序で)使用してJNDIプロバイダを検索します。sbschemeがsbsである場合、トランスポート・プロバイダはT3Sプロトコル、IIOPS、次にHTTPSを(この順序で)使用してJNDIプロバイダを検索します。サービスURIプロパティに一致するJNDIプロバイダは、Oracle Service Busにインポートするビジネス・サービスのエンドポイントURIを生成するために使用されます。

一致するJNDIプロバイダがない場合、インポートは失敗し、デフォルトのコンテキストが使用されます。ただし、インポートされたURIがローカルURIでスキームがsb以外の場合を除きます。サービスにJNDIプロバイダが指定されていないので、サーバーと同じ場所にあるものと見なされることを意味します。

たとえば、サービスURIプロパティ値が次のようになっている場合を考えます。

sbs://remote_oracle_service_bus_host:7002/myservice

Oracle Service Busにインポートされたビジネス・サービスに生成されるURIは、次のようになります。

sb://my_jndi_provider/myservice

ここで、my_jndi_providerはt3s://remote_oracle_service_bus_host:7002 URLのOracle Service Busサーバー上で登録されたJNDIプロバイダ・リソースです。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のUDDIレジストリからのビジネス・サービスのインポートに関する項を参照してください。

28 EJBトランスポート

この章では、EJBトランスポートの概要と、サービスでの使用および構成方法について説明します。

Oracle Service Busは、EJBトランスポートを使用して、サポート対象プラットフォームにデプロイされたEJB 2.1またはEJB 3.0ステートレス・セッションBeanのネイティブRMI呼出しをサポートします。これにより、トランザクション対応のセキュアな通信が可能になります。また、EJBトランスポートを利用し、Oracle Service Busを介してEJBをWebサービスとして公開することもできます。

この章の内容は次のとおりです。

- 28.1項「はじめに」

- 28.2項「Oracle Service BusからのEJBの呼出し」

- 28.3項「WebサービスとしてのEJBの公開」

- 28.4項「詳細な説明」

- 28.5項「トラブルシューティング」

28.1 はじめに

Oracle Service Busでは、ビジネス・サービスを構成して、EJBトランスポートを使用できます。EJBトランスポートは、Oracle Service Bus管理コンソールとテスト・コンソールに完全に統合されています。EJBトランスポートが構成されたビジネス・サービスは、パブリッシュ、サービス・コールアウトおよびサービスの呼出しに使用できます。EJBトランスポートを使用するプロキシ・サービスは作成できません。

EJBトランスポートには次の機能があります。

トランザクション整合性 - EJBビジネス・サービスをグローバル・トランザクションのコンテキスト内で呼び出せます。また、EJBトランスポートは、EJBを呼び出す前にグローバル・トランザクションを中断または開始できます。

セキュリティ伝播 - メッセージ・フローの最初に確立されたセキュリティ・コンテキストは、Oracle Service Busクライアントからその他のシステムに伝播されます。たとえば、受信した、認証を必要とするOracle Service BusへのSOAP over HTTPリクエストは、Oracle Service Busによって認証され、認証されたサブジェクトはその後EJBサーバーに伝播されます。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のドメイン間セキュリティ・サポートに関する重要事項に関する項を参照してください。

HTTPトンネリングおよび暗号化通信 - HTTPトンネリングを使用して、ファイアウォール内のEJBにアクセスできます。セキュリティの強化のために、SSLを使用してEJBサーバーとのすべての通信を暗号化できます。

JNDIプロバイダ - EJBトランスポートは、Oracle Service BusリソースであるJNDIプロバイダを使用します。JNDIプロバイダは、リモート・サーバーにアクセスするための通信プロトコルやセキュリティ資格証明を定義します。JNDIプロバイダは、複数のEJBビジネス・サービスで再利用できます。これにより、管理者によるリモートEJBサーバー構成の一元的な管理が実現します。

JNDIプロバイダ・リソースの詳細は、2.1.8項「JNDIプロバイダ・リソースの作成および編集」を参照してください。

高性能キャッシュ - EJBトランスポートは高性能キャッシュに基づいて構築されています。そのため、確立された接続を再利用して、EJBスタブのルック・アップを最小限に抑えられます。

フェイルオーバーとロード・バランシング - EJBトランスポートでは、ロード・バランシングまたはフェイルオーバー、もしくは両方のために、同じEJBが複数のドメインまたは1つのクラスタにデプロイされているシナリオを利用できます。

XMLとJavaの拡張バインディング機能 - EJBトランスポートは、Oracle WebLogic Server JAX-RPCスタックを使用して、JavaとXMLのバインディングを実行します。JAX-RPCスタックは、XML Beanなどの高度なJavaオブジェクトをサポートする高性能のエンジンです。Java型がスタックによって認識されない場合、これらのJava型をサポートできるようにするための拡張メカニズムが提供されます。(コンバータ・クラスを使用した)拡張メカニズムについては、28.4.2項「サポートされる型およびコンバータ・クラス」を参照してください。

インテリジェントな再試行 - EJBトランスポートでは、EJBの呼出し中に発生する可能性のある障害の性質に基づいて再試行が決定されます。

28.2 Oracle Service BusからのEJBの呼出し

Oracle Service Busにビジネス・サービスを構成する前に、JNDIプロバイダ・リソースおよびクライアントJARリソースを登録する必要があります。この項ではOracle Service BusでのEJBトランスポート・ビジネス・サービスの設計と構成の方法について説明します。

28.2.1 JNDIプロバイダ・リソースの登録

JNDIプロバイダ・リソースでは、リモートOracle WebLogic ServerドメインのJNDIツリーにバインドされているEJBスタブを取得するために使用される通信プロトコルおよびセキュリティ資格証明を指定できます。JNDIツリーの設定方法の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JNDIのプログラミング』を参照してください。

通常、ターゲットEJBはOracle Service Busと同じドメイン内にはありません。この場合、JNDIプロバイダ・リソースを登録する必要があります。EJBが同じドメイン内にある場合、プロバイダを定義して資格証明を指定し、スタブ・キャッシングを利用できます。ただし、この場合、省略可能です。

JNDIプロバイダには、リモート接続とEJBスタブのための高性能なキャッシング・メカニズムがあります。Oracle Service BusからOracle WebLogic Serverドメインへの推奨される通信プロトコルは、t3またはt3sです。メッセージがファイアウォールを通過する必要がある場合は、HTTPトンネリングを使用できます。

注意:

Oracle WebLogic Serverの外部JNDIプロバイダを使用することは可能ですが、使用しないことをお薦めします。

このトランスポートでは、双方向SSLまたはクライアント証明書によるJNDIツリーのルックアップまたはEJBのメソッドへのアクセスをサポートしません。

28.2.1.1 JNDIプロバイダの追加

Oracle Service BusでのJNDIプロバイダの登録と構成の詳細は、4.8項「JNDIプロバイダ」を参照してください。

28.2.2 EJBクライアントJARリソースの登録

クライアントJARを、リソースとしてOracle Service Busに登録する必要があります。その結果、Oracle Service Bus構成の一部となり、プロジェクトからエクスポートすることもプロジェクトにインポートすることもできます。

EJBクライアントJARファイルには、Oracle Service BusがEJBにアクセスするために必要なインタフェースとクラスが含まれている必要があります。これには、リモート・インタフェースとホーム・インタフェース(EJB 2.1)またはビジネス・インタフェース(EJB 3.0)、およびメソッドのパラメータ型またはアプリケーションの例外など、クライアントが公開される依存型が含まれます。

ビジネス・サービスにコンバータ・クラスが必要な場合は、コンバータ・クラスを含むJARファイルをOracle Service Busリソースとして登録すると、これらのクラスを使用してXMLにマップ可能なJavaクラスにパラメータと戻り値の型をマップできます。または、これらのコンバータ・クラスをEJBクライアントJARにパッケージ化できます。コンバータ・クラスについては、28.4.2.1項「コンバータ・クラス」を参照してください。

EJBクライアントJARを使用するときは、次のガイドラインを考慮してください。

- システム・クラスパスでのホーム・インタフェースおよびリモート・インタフェースの追加は推奨されません。また、Oracle Service Busではサポートされません。

- クライアントJARのサイズを小さくすること、JARあたり1つのホーム・インタフェースを含めること、ejb-jarファイル全体を登録しないことを推奨します。

- Eclipseを使用して、Oracle WebLogic ServerにデプロイされているEJBのクライアントJARを取得できます。

- Oracle Service Busは、JDK 1.4以上でコンパイルされたclient-jarをサポートします。

28.2.2.1 クライアントJARまたはコンバータJARの追加

Oracle Service BusでJARリソースを登録および構成する方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のJARの追加に関する項を参照してください。

28.2.2.2 サービス・アカウントの作成(オプション)

EJBメソッドが保護されている場合、呼出しに使用する資格証明を指定できます。多くの場合、これらの資格証明はJNDIプロバイダで使用される資格証明とは異なります。サービス・アカウントの追加と使用の詳細は、2.1.15項「サービス・アカウント・リソースの追加」を参照してください。

28.2.2.3 JNDIツリーでのEJBの検索

EJBのJNDI名がわからない場合は、EJBサーバーのJNDIツリーを参照できます。Oracle WebLogic Server管理コンソールを使用したJNDIツリーの参照の詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプを参照してください。

28.2.3 トランスポート構成のリファレンス

EJBビジネス・サービスはトランスポート型付きのサービスです。つまり、トランスポートのタイプはサービスの構成によって決まります。

EJBビジネス・サービスのタイプはSOAP XMLサービスと同等です。つまり、EJBビジネス・サービスを他のすべてのSOAP XMLビジネス・サービスと同様に使用できます。EJBトランスポート構成を保存すると、WSDLが生成されます。

WSDLは、EJBのインタフェースに基づいて生成されます。EJBトランスポートの構成ページは、サービスのインタフェースと生成されるWSDLを制御するための構成オプションを提供します。

ここでは、EJBトランスポートのエンドポイントURLの形式と構成オプションを説明します。

28.2.3.1 EJBのエンドポイントURI

EJBトランスポートのURIパターンは次のとおりです。

ejb:jndi_provider_name:ejb_jndi_name

ここで、jndi_provider_nameはOracle Service Bus JNDIプロバイダ・リソースの名前です。

EJBがローカルにデプロイされている場合、JNDIプロバイダの名前を提供する必要はありません。この場合、URIの形式は次のようになります。

ejb::ejb_jndi_name

Oracle WebLogic Server上のEJB 3.0ビジネス・サービスの場合、ejb_jndi_nameはmappedName#BusinessInterfaceという形式になります。

注意:

EJBがIBM WebSphere上で実行中の場合は、ejb_jndi_nameを次の形式にしてください。

cell/nodes/node_name/servers/server_name/ejb_jndi_name

または

cell/clusters/cluster_name/ejb_jndi_name

詳細は次の場所にあるIBM WebSphereのドキュメントに記述されています。http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/rnam_example_prop3.html

28.2.3.2 ビジネス・サービスのためのEJBトランスポート構成

表28-1に、EJBトランスポートのトランスポート固有の構成オプションを示します。

表28-1 ビジネス・サービスのためのEJBトランスポート構成オプション

オプション

説明

呼出し元のサブジェクトを渡す

EJBの呼出し時にサービス・アカウントが構成されていない場合、このチェックボックスを選択して、Oracle Service Busがプロキシ・サービスから認証されたサブジェクトを渡すようにします。このオプションを選択すると、「サービス・アカウント」フィールドが無効になります。

サービス・アカウント

「参照」をクリックし、表示されるリストでサービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。「呼出し元のサブジェクトを渡す」オプションを使用する場合、このオプションは使用できません。

トランザクションをサポートする

トランザクションを指定する場合は、このチェック・ボックスを選択します。

クライアントJar

「参照」をクリックし、表示されるリストからEJBクライアントJARリソースを選択します。

コンバータJar

「参照」をクリックし、表示されたリストからEJBコンバータ・クラスJARリソースを選択します。

詳細は、28.2.2.1項「クライアントJARまたはコンバータJARの追加」および28.4.2.1項「コンバータ・クラス」を参照してください。

ホーム・インタフェース

EJB 2.1専用 - JARによって挿入されるオプションから必要なEJBHomeインタフェースを選択します。このURIサンプルのJNDI名はここで選択するEJBHomeインタフェースに関連付ける必要があります。EJBが必要なタイプのものではない、またはEJBHomeインタフェースがclient-jarで指定されていない場合は、警告が表示されます。

リモート・インタフェース

EJB 2.1専用 - このフィールドは、Homeインタフェースの構成に基づいて、自動的に情報が表示されます。

ビジネス・インタフェース

EJB 3.0専用 - 呼び出すクライアントJARでビジネス・インタフェースを選択します。

対象ネームスペース

このフィールドにはJARからのピックアップされた情報が表示されます。

スタイル

要件に応じて、「ドキュメントをラップ」または「RPC」を選択します。ステートレス・セッションEJBの2つ以上のメソッドに、同じ数の同じデータ型のパラメータがあり、操作をドキュメント指向にする場合はドキュメントのラップを指定する必要があります。

EJBへのルーティングまたはパブリッシュの場合、$bodyにはスタイルに合ったコンテンツが必要なので、スタイルは重要です。また、EJBへのコールアウトの場合、スタイルは、特にドキュメントのラップに関して、パラメータ・コンテンツに影響を及ぼします。2番目に、EJBビジネス・サービスを定義して、EJBにルーティングする同じWSDLでプロキシ・サービスを作成する使用パターンもあります。この場合、プロキシの呼出しに使用するクライアント・ツールには、WSDLのスタイルに関する制限がある可能性があるため、注意が必要です。

エンコーディング

「エンコード形式」または「リテラル形式」を選択します。

メソッド

必要なメソッドを選択します。「+」をクリックしてメソッドを展開すると、デフォルトのパラメータ値を編集して、提供されている場合(または必要な場合)はコンバータを選択できます。

JAX-RPCスタックでサポートされないパラメータまたは戻り値の型を持つメソッドを除外するか、それらの引数をコンバータ・クラスに関連付ける必要があります。

任意のメソッドのデフォルトの操作名を変更できます。デフォルトでは、操作名はメソッド名です。EJBに同じ名前のメソッドが含まれている場合、一意になるように操作名を変更する必要があります。WSDLでは一意の操作名が必要です。

注意: 任意のEJBのメソッド間で資格証明またはトランザクション設定が異なる場合、任意のビジネス・サービスのメソッドをカスタマイズして、メソッドごとのビジネス・サービスを作成できます。これにより、トランザクションと資格証明の詳細な制御が可能になります。

例外

このフィールドは、メソッドがビジネス例外をスローした場合に表示されます。EJBメソッドが、ArrayListなどのJava Web Services (JWS)でサポートされないデータ型を持つ例外をスローした場合は、「例外」フィールドを使用して、例外をJWSでサポートされる型に変換するコンバータ・クラスを選択します。

コンバータ・クラスは、com.bea.wli.sb.transports.ejb.ITypeConverterを実装する必要があります。コンバータ・クラスは、実行時例外ではなくチェック済の例外用にのみ構成できます。

コンバータ・クラスおよび変換された例外クラスをクライアントまたはコンバータJARでパッケージ化します。

28.2.4 EJBビジネス・サービスの呼出し

EJBビジネス・サービスは、SOAP XMLビジネス・サービスとして使用できます。EJBビジネス・サービスへのパブリッシュ、ルーティング、コールアウトが可能です。トランザクション・サポートが必要な場合は、サービス品質を「必ず1回」に設定します28.4.1項「トランザクション処理、再試行、およびエラー処理」を参照してください。

テスト・コンソールを使用して構成を検証したり、XMLリクエストの形式を決定したりすることもできます。

28.3 WebサービスとしてのEJBの公開

EJBトランスポートを使用して、EJBをWebサービスとして簡単に公開できます。

注意:

既存のEJBビジネス・サービスからプロキシ・サービスを作成することはできません。最初にEJBビジネス・サービスから生成されたWSDLを取得し、そのWSDLに基づいてプロキシ・サービスを作成する必要があります。これを行うには、次の手順を実行します。

1. 28.2.3項「トランスポート構成のリファレンス」の説明に従って、公開するEJBを指すEJBビジネス・サービスを作成します。

2. 「サービスの詳細。」ページで、EJBビジネス・サービスのWSDLを取得します。
WSDLはJARファイルに含まれています。保留中のセッションがない場合にのみWSDLを取得できます。

3. JARからWSDLを抽出し、WSDLリソースとして登録します。
ビジネス・サービスの構成が変更されると、新しいWSDLが生成されます。この場合、新しいWSDLを取得し、WSDLリソースとして再登録する必要があります。

4. WSDLに基づいてSOAP XMLプロキシ・サービスを作成します。

5. プロキシ・サービス・パイプラインを編集し、EJBビジネス・サービスにルーティングします。

これで、高価なWebサービス・ツール・キットを購入したり、EJBサーバーで煩雑な動作を実行せずに、EJBをWebサービスとして呼び出せます。

28.4 詳細な説明

この項では、EJBビジネス・サービスが、設計時の構成の方法に応じて、実行時にどのように動作するかを理解するために、EJBトランスポートについて説明します。

28.4.1 トランザクション処理、再試行、およびエラー処理

ここでは、EJBトランスポートのトランザクション処理、再試行とフェイルオーバー、エラー処理について説明します。

28.4.1.1 トランザクション

EJBトランスポートは、トランザクションを作成、中断、および伝播できます。Oracle Service BusおよびEJBサーバー間のトランザクションはXAトランザクションです。HTTPトンネリングを使用してトランザクションを使用する場合、または専用の通信チャネルがある場合は、トランザクション・マネージャのセキュリティの相互運用を「パフォーマンス」に設定する必要があります。セキュリティの相互運用モードの設定とその他のトランザクション構成の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JTAのプログラミング』のトランザクションの構成に関する項を参照してください。

デプロイメント記述子をXA対応リソースに適切に設定するには、プロキシ・サービスを作成する前に、参照接続ファクトリのXA属性を設定する必要があります。

EJBビジネス・サービスの動作を決定する場合、プロキシ・サービス・パイプラインにトランザクション・コンテキストが含まれているかどうか、およびサービスを呼び出すときにパイプラインでどのサービスの品質(QoS)設定が指定されているかを考慮する必要があります。

「ベスト・エフォート」QoS - パイプラインでQoSに「ベスト・エフォート」が指定されている場合、トランザクションはEJBに伝播されません。継続中のトランザクションは呼出しの前に中断され、呼出し後に再開されます。

「必ず1回」QoS - パイプラインでQoSとして「必ず1回」が指定され、EJBがトランザクションをサポートしない場合(つまり、EJBトランスポートの構成ページの「トランザクションをサポートする」オプションのチェックが選択されていない場合)、トランザクションはEJBに伝播されません。「ベスト・エフォート」の場合と同様に、継続中のトランザクションは呼出しの前に中断され、呼出し後に再開されます。

または

EJBがトランザクションをサポートする場合(つまり、「EJBトランスポート構成」ページの「トランザクションをサポートする」オプションがチェックされている場合)、EJBはトランザクションのコンテキスト内で呼び出され、すべての継続中のトランザクションはEJBに伝播されます。トランザクションが存在しない場合、トランザクションは、呼出しの前に作成され、後でコミットされます。

Oracle Service BusサービスでのQoSの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス品質に関する項を参照してください。

28.4.1.2 再試行およびフェイルオーバー

EJBビジネス・サービスで再試行またはフェイルオーバーが構成されている場合、EJBトランスポートは次のタイプの例外を区別します。

- 実行時例外またはリモート例外 - 通常、致命的なエラーまたは通信例外

- JAX-RPCエンジンによる例外 - XMLからJavaへの変換中に発生する例外

- EJBチェック済例外 - EJB実装固有のEJBメソッド・シグネチャで宣言される例外(ビジネス例外とも呼ばれます)

再試行とフェイルオーバーは、エラーのタイプおよびQoSに基づきます。

「ベスト・エフォート」QoS - 実行時例外またはリモート例外がスローされた場合、EJBトランスポートは再試行またはフェイルオーバーを試みます。

JAX-RPCエンジンで例外が発生した場合、パイプラインに対してエラーが生成され、再試行またはフェイルオーバー試行は行われません。

EJBチェック済例外がスローされた場合、パイプラインに対してエラーが生成され、再試行またはフェイルオーバー試行は行われません。

「必ず1回」QoS - 実行時例外またはリモート例外がスローされ、継続中のトランザクションが(一般的にEJBコンテナによって)ロールバックのみに設定されている場合、EJBコンテナが影響を受け、EJBコンテナまたはEJBのいずれかで致命的なエラーが発生したことを意味します。この場合、再試行またはフェイルオーバーの試みは行われず、エラーはパイプラインで発生します。

実行時例外またはリモート例外がスローされても、継続中のトランザクションがロールバックのみに設定されていない場合は、EJBコンテナの呼出し前にエラーが発生したことを意味し、EJBトランスポートは再試行またはフェイルオーバーを試みます。この場合、EJBトランスポートでは「必ず1回」のセマンティックが引続き適用されることに注意してください。

JAX-RPCエンジンで例外が発生し、EJBトランスポートによって継続中トランザクションがロールバックのみに設定される場合、パイプラインに対してエラーが生成され、再試行またはフェイルオーバー試行は行われません。

EJBチェック済例外がスローされた場合、パイプラインに対してエラーが生成され、再試行またはフェイルオーバー試行は行われません。

EJBビジネス・サービスへのQoS仕様のその他の影響については、28.4.1.1項「トランザクション」を参照してください。

28.4.1.3 エラー処理

チェック済例外をスローするときに、EJB仕様に応じて、継続中のトランザクションをロールバックのみに指定できます。

EJB開発者によって継続中のトランザクションがロールバックのみに設定されている場合、トランザクションは、最終的にその作成者(多くの場合、プロキシ・サービス)によってロール・バックされます。

継続中のトランザクションがロールバックのみに設定されておらず、チェック済例外が発生した場合、エラー・ハンドラによってパイプラインのEJBチェック済例外を捕捉することが重要です。それらの例外が捕捉されない場合、パイプライン・エラーがプロキシ・サービスに逆に伝播されます。次に、一般的にプロキシ・サービスは、継続中のトランザクションを(トランスポートの実装に応じて)ロールバックします。

たとえば、次のメソッドを持つEJBがあると仮定します。

public void withdrawFunds(float amount) throws RemoteException, InsufficientFundsException {…}

また、InsufficientFundsException例外がスローされたときに、EJBが現在のトランザクションをロールバックのみに設定しないと仮定します。ほとんどのシナリオにおいて、プロキシ・サービスがトランザクションをロール・バックするのは不適切です。場合によっては、パイプラインにエラー・ハンドラを構成して、エラーを捕捉し、このシナリオを回避する必要があります。

28.4.2 サポートされる型およびコンバータ・クラス

EJBトランスポートは、XMLとJava間の変換を行います。変換は、Oracle WebLogic Server JAX-RPCエンジンによって実行されます。

EJBトランスポートは、次の型をネイティブにサポートしています。

- プリミティブ型

- XmlObject (ApacheおよびOracleバージョンの両方)

- スキーマで生成されるXMLBean (ApacheおよびOracleバージョンの両方)

- JavaBeanクラス

ネイティブでサポートされる型の一覧は、『Oracle Fusion Middleware Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のJAXBデータ・バインディングの使用に関する項を参照してください。

EJBメソッドは、JAX-RPCエンジンでサポートされない(設計時にエラーが報告される)、また、XMLに直接マップしない(実行時にエラーが発生する)パラメータ/戻り値の型を使用できます。頻繁に使用されるが、サポートされていない型は次のとおりです。

- Object、Object[]

- 強く型付けされていないJavaコレクション(List、Setなど)

- JavaBeanパターンに従わないJavaクラス(Mapなど)

これらの型をXMLとJava間の変換に適した型に変換しなくても、カスタム・コンバータ・クラスを記述できます。EJBトランスポートはカスタム・コンバータ・クラスをサポートします。

28.4.2.1 コンバータ・クラス

コンバータ・クラスは、Oracle Service BusパブリックAPIのcom.bea.wli.sb.transports.ejb.ITypeConverter Javaインタフェースで定義されるコントラクトを実装して準拠するJavaクラスです。

EJBビジネス・サービスでコンバータ・クラスを使用するには、次を行う必要があります:

1. インタフェースを実装およびコンパイルして、コンバータ・クラスを作成します。

2. コンバータ・クラスをクライアントJARまたはコンバータ・クラスのJARファイルに追加します(28.2.2.1項「クライアントJARまたはコンバータJARの追加」を参照)。

3. EJBビジネス・サービスの作成時にメソッド構成をカスタマイズする場合、パラメータ/戻り値の型のいずれか1つに移動し、目的のコンバータを選択します。28.2.3項「トランスポート構成のリファレンス」を参照してください。サービス構成のユーザー・インタフェースに、特定のパラメータ/戻り値の型に適用可能なコンバータのリストが表示されます。

28.4.3 ビジネス例外クラス

EJBメソッドによってスローされるビジネス例外クラスは、フォルト要素のWSDLタイプ定義に例外クラスの詳細を適切にマップするため、JAX-RPC 1.1仕様のセクション5.5.5に準拠している必要があります。例外クラスの対応するgetterメソッドを持つすべてのプライベートな非transientフィールドは、WSDLの例外タイプ定義にマップされます。

28.5 トラブルシューティング

この項では、EJBビジネス・サービスの設計または実行時の問題のトラブルシューティングについて説明します。

28.5.1 デバッグ・モードの有効化

EJBトランスポートは、その他のOracle Service Busトランスポートと同じロガーを使用します。デバッグ・モードを有効にするには、サーバーを起動する前に、ドメイン・ディレクトリにあるalsbdebug.xmlファイルを編集し、カテゴリalsb-transports-debugをtrueに設定します。alsbdebug.xmlファイルとデバッグ・フラグの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busのデバッグに関する項を参照してください。

28.5.2 tempディレクトリ

EJBトランスポートは設計時に、tempディレクトリのサブフォルダにファイルを生成します。それらのフォルダとファイルを削除すると安全です。また、アクティブ化の際の問題を判断するためにそれらを確認すると役に立つ場合があります。

28.5.3 デプロイされたアプリケーション

EJBビジネス・サービスが作成されると、Oracle Service Bus Serverにアプリケーションがデプロイされます。このアプリケーションのモニターと調整はOracle WebLogic Server管理コンソールを使用して行うことができます。

28.5.4 エラー

EJBビジネス・サービスに関する問題のトラブルシューティングが必要な場合に、次の項目が役立つことがあります。

- ビジネス・サービス作成時の次のエラーは、255を超える文字を含むパスをサポートしないという、Windowsオペレーティング・システムの制限が原因です。

The system cannot find the path specified):Probably the string length of the path of the file being extracted was too long

Oracle Service Busドメインへの短いパスを作成することで、パスの長さを短くすることができます。また、サーバーの起動時に、次のオプションを使用してOracle WebLogic Serverのtempディレクトリをオーバーライドすることもできます。

-Dweblogic.j2ee.application.tmpDir=$desired_short_dir

- EJBビジネス・サービスの呼出し時にXMLマーシャリング・エラーを受け取り、リクエストがサービスのWSDLに対し有効であるという確信がある場合は、コンバータ・クラスを記述することが必要になる可能性があります。詳細は、28.4.2.1項「コンバータ・クラス」を参照してください。

- リモート・サーバーで、EJBインタフェースおよびスタブが変更された場合、新しいEJBの初回の呼出し時にエラーがスローされます。リモート・サーバーでのEJBインタフェースおよびスタブの変更は、Oracle Service Busに表示されません。Oracle Service Busは、有効ではなくなった、キャッシュされているEJBを呼び出そうとします。ただし、呼出しエラーが発生した場合、トランスポートはそれらのスタブが無効であると見なし、それらをキャッシュから削除します。この方法により、EJBを呼び出す次の試みでのエラーが防止されます。この初回時のエラーを回避するために、Oracle Service Bus管理コンソールでJNDIプロバイダをリセットできます。

29 JEJBトランスポート

この章では、JEJBトランスポートの概要と、サービスでの使用および構成方法について説明します。

この章の内容は次のとおりです。

- 29.1項「JEJBトランスポートについて」

- 29.2項「JEJBサービスの作成と構成」

- 29.3項「使用例」

- 29.4項「トランスポート構成のリファレンス」

- 29.5項「JEJBサービスのテスト」

- 29.6項「UDDIの統合」

29.1 JEJBトランスポートについて

JEJBトランスポートを使用すると、Oracle Service Busを介してPlain Old Java Object (POJO)を渡すことができます。たとえば、EJBを使用してリモートEJB操作または非EJBサービスを呼び出すことができます。または、非EJBリクエストでEJB操作を呼び出すことができます。詳しい使用例を29.3項「使用例」で説明します。

J2EEクライアントに対して、JEJBプロキシ・サービスのパイプラインはステートレス・セッションBeanのように見えます。JEJBプロキシ・サービスは、メソッド引数を受け取ると、そのXML表現をパイプラインの$body変数に渡します。POJO引数は、XMLフラグメントとして表されます。このXMLフラグメントには、パイプライン内のオブジェクト・リポジトリに格納されている実際のPOJOの場所が含まれます。XML引数は、値または参照(オブジェクト・リポジトリに格納される実際のオブジェクトを参照する)として渡すことができます。プリミティブ型は常に値として渡されます。

メッセージ・フローでのPOJOの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のbody変数のJavaコンテンツに関する項およびJavaコールアウトとPOJOを使用するExtensibilityに関する項を参照してください。

JEJBトランスポートは常に非同期であり、パターンはリクエスト/レスポンスです。

デプロイメントに際して、Oracle Service BusはJEJBプロキシ・サービスをエンタープライズ・アーカイブ(EAR)として自動的にパッケージ化します。

29.1.1 JEJBトランスポートとEJBトランスポートの相違点

EJBトランスポート(ビジネス・サービスのみに対応)は、Java Web Services (JWS)フレームワークを介してリモートEJBをよびだします。JEJBトランスポート(リモートEJBや外部サービスをPOJOを使用して呼び出すことができる)は、RMIシリアライゼーション/デシリアライゼーション・サイクルを使用して、Oracle Service Busを介してターゲットEJBメソッドにPOJOを直接渡します。

EJBトランスポートには「トランザクションをサポートする」フラグがありますが、すべてのOracle Service Busプロキシ・サービスでトランザクションのサポートが提供されるため、JEJBビジネス・サービスではトランザクション・オプションが必要ありません。

29.1.2 環境値

JEJBトランスポートでは、JEJBサービスのために次の環境値が格納されています。

- サービスURI

- ワーク・マネージャ

- UDDI自動パブリッシュ(プロキシ・サービス)

- サービス・アカウント(ビジネス・サービス)

29.1.3 WSDLの生成

プロキシ・サービスとビジネス・サービスのために、JEJBトランスポートは、パイプラインに渡すメッセージを記述するためだけに使用されるリテラル・エンコーディングのドキュメント形式WSDLを生成します。このWSDL形式を使用すると、Oracle Service BusのWSDL機能(操作ごとの監視など)を利用できます。

表29-1で説明するように、「値でXMLBeansを渡す」オプションを使用してPOJO引数をメッセージにインライン指定すると、WSDLに定義されるメッセージ構造は、実行時の実際のパイプライン・メッセージと異なる可能性があります。

XMLBeansタイプ・パラメータに対するパイプライン・メッセージ形式の動作は次のとおりです。

プロキシ・サービス

- リクエスト・パラメータ: 「値でXMLBeansを渡す」がtrueの場合、パイプライン・メッセージのリクエスト・パラメータはインラインXml Objectを参照します。これ以外の場合は、java-content refを参照します。

- レスポンス・パラメータ: レスポンスはインラインXML Objectまたはjava-content refを参照します。レスポンスはビジネス・サービスのいずれか形式に基づくためです。

ビジネス・サービス

- レスポンス・パラメータ: 「値でXMLBeansを渡す」がtrueの場合、パイプライン・メッセージの戻りパラメータはインラインXml Objectを参照します。そうでない場合は、java-content refを参照します。

- リクエスト・パラメータ: パイプライン・メッセージのリクエスト・メソッド・パラメータは、インラインXML Objectまたはjava-content refを参照できます。リクエストはプロキシ・サービスのいずれかの形式の基づくためです。

29.1.4 エラー処理

ここでは、JEJBトランスポートがどのようにエラーを処理するかを説明します。

29.1.4.1 レスポンスでの例外の伝播

JEJBトランスポートは、リクエスト例外をオブジェクト・リポジトリに格納し、$fault変数を介してJEJBプロキシ・サービスに伝播します。$faultには、<java-exception> <java-content ref="jcid"/> </java-exception>要素内の例外インスタンスの場所が含まれます。ここで、jcidはオブジェクト・リポジトリに格納されている例外インスタンスへの参照です。

JEJBプロキシ・サービスでユーザー例外をクライアントに伝播するには、レスポンスが次のいずれかの形式であることが必要です。

- env:Envelope/env:Fault/detail/mc:java-exception
次の形式で指定します。jcidはオブジェクト・リポジトリないのエラーへの参照です。

<detail>
<mc:java-exception>
<mc:java-content ref="jcid"/>
</mc:java-exception>
...
</detail>

- env:Envelope/env:Fault/detail/mc:fault/mc:java-exception
次の形式で指定します。jcidはオブジェクト・リポジトリないのエラーへの参照です。

<detail>
<mc:fault xmlns:mc="http://www.bea.com/wli/sb/context">
<mc:java-exception>
<mc:java-content ref="jcid"/>
</mc:java-exception>
...
</mc:fault>
</detail>

- env:Envelope/ env:Fault/detail/mc:fault/mc:details/con1:ReceivedFaultDetail/con1:detail/mc:java-exception
次の形式で指定します。jcidはオブジェクト・リポジトリないのエラーへの参照です。

<con:details>
<con1:ReceivedFaultDetail  xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
<con1:faultcode>soapenv:Server</con1:faultcode>
<con1:faultstring>checkExceptionConversion</con1:faultstring>
<con1:detail>
<mc:java-exception>
<mc:java-content ref="jcid"/>
</mc:java-exception>
</con1:detail>
</con1:ReceivedFaultDetail>
</con:details>

独自の例外を生成して呼出し元に戻す場合は、プロキシ・サービス・パイプラインのJavaコールアウトで例外を生成します。

29.1.4.1.1 Javaコールアウトおよびサービス・コールアウトの例外

失敗時の返信のためにエラー・ハンドラでJavaコールアウトまたはサービス・コールアウトを構成する場合、前に説明したフォルト構文のいずれかに従って$bodyを指定する必要があります。

29.1.4.2 アプリケーション・エラーおよび接続エラー

ここでは、JEJBトランスポートによってアプリケーション・エラーと接続エラーがスローされる条件を説明します。これらのエラーは、サービスの再試行構成の対象です。

29.1.4.2.1 接続エラー

JEJBトランスポートでは、次の場合に接続エラーがスローされます。

- リモート・コール時に発生したEJBをルックアップしている際のNamingExceptions。

- 実行時例外またはリモート例外がスローされるが、継続中のトランザクションが「ロールバックのみ」に設定されておらず、EJBコンテナの呼出し前にエラーが発生したことがわかる状況。

29.1.4.2.2 アプリケーション・エラー

JEJBトランスポートでは、次の場合にアプリケーション・エラーがスローされます。

- 実行時例外またはリモート例外がスローされ、継続中のトランザクションが(一般的にEJBコンテナによって)「ロールバックのみ」に設定されており、EJBコンテナが影響を受け、EJBコンテナまたはEJBそのもののいずれかで致命的なエラーが発生したことを意味する状況。

- EJBビジネス・インタフェースで定義されているビジネス例外。

- XMLのパラメータの誤ったエンコーディングによる例外。

29.2 JEJBサービスの作成と構成

ここでは、JEJBのプロキシ・サービスとビジネス・サービスの作成および構成の手順を説明します。

29.2.1 クライアントEJB JARの作成とパッケージ化

ここでは、JEJBのプロキシ・サービスとビジネス・サービスに関して、EJBの呼出しと操作を表すPOJOの作成とパッケージ化のガイドラインを示します。

- タイプjava.io.Serializableのインタフェースを定義し、必要なヘルパー・クラス(ビジネス例外など)を組み込みます。このインタフェースが29.4.1項「JEJBのエンドポイントURI」で説明するRMIプロトコルの1つに対して有効である場合、またはJMSメッセージに対して有効である場合(EJBを呼び出すためにJMSを使用しているとき)、クラスを拡張する必要はありません。

注意:

必須ではありませんが、次のようにできます。

- インタフェースを、EJB 2.1仕様で定義されているリモート・インタフェースにします。
または

- javax.ejb.Remoteアノテーションでメソッドに注釈を付け、EJB 3.0ビジネス・インタフェースとして指定します。

単純なPOJOインタフェース(EJBリモート・インタフェース以外)またはjavax.ejb.Remoteアノテーションを含むインタフェースの場合、JEJBトランスポート・プロバイダはJEJBプロキシ・サービスから3.0 EJBインタフェースを生成します。リモート・インタフェースの場合、JEJBトランスポート・プロバイダはJEJBプロキシ・サービスから2.1 EJBインタフェースを生成します。

- 引数として受信されるオブジェクトは、Javaコールアウト・アーカイブ・リソースのいずれかの必須クラスに渡される必要があります。

- すべてのタイプのすべての配列はPOJOとみなされます。

- Javaコールアウトをサポートするアーカイブ・リソースとしてアップロードされるJARを複製せずに、不必要なシリアライゼーション/デシリアライゼーション・サイクルを回避します。すべてのアーカイブ・リソース・クラスを1つのアーカイブJARにパッケージ化して、複数のJavaコールアウトがオブジェクトのシリアライゼーション/デシリアライゼーションを行わないようにします。

- インタフェースと依存クラスを1つの「クライアント」JARにパッケージ化し、そのJARをOracle Service Busにインポートします。これはサービスを構成するときに選択するクライアントJARですが、スタブを含まないため、技術的には完全に展開されたEJBクライアントではありません。JEJBプロキシ・サービスが作成されてアクティブ化されるまでは、実際のBean (Oracle WebLogic Serverスタブ生成)は存在しません。

29.2.2 JNDIプロバイダ・リソースの登録(ビジネス・サービス)

JNDIプロバイダ・リソースでは、リモートOracle WebLogic ServerドメインのJNDIツリーにバインドされているEJBスタブを取得するために使用される通信プロトコルおよびセキュリティ資格証明を指定できます。(JNDIツリーの設定方法の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JNDIのプログラミング』を参照してください。)

通常、ターゲットEJBはOracle Service Busと同じドメイン内にはありません。この場合、JNDIプロバイダ・リソースを登録する必要があります。EJBが同じドメイン内にある場合、プロバイダを定義して資格証明を指定し、スタブ・キャッシングを利用できます。ただし、これは省略可能です。

JNDIプロバイダには、リモート接続とEJBスタブのための高性能なキャッシング・メカニズムがあります。Oracle Service BusからOracle WebLogic Serverドメインへの推奨される通信プロトコルは、t3またはt3sです。メッセージがファイアウォールを通過する必要がある場合は、HTTPトンネリングを使用できます。

注意:

Oracle WebLogic Serverの外部JNDIプロバイダを使用することは可能ですが、使用しないことをお薦めします。

このトランスポートでは、双方向SSLまたはクライアント証明書によるJNDIツリーのルックアップまたはEJBのメソッドへのアクセスをサポートしません。

29.2.2.1 JNDIプロバイダの追加

Oracle Service BusでのJNDIプロバイダの登録と構成の詳細は、4.8項「JNDIプロバイダ」を参照してください。

29.2.3 JEJBプロキシ・サービスまたはビジネス・サービスの構成

ここでは、JEJBのプロキシ・サービスまたはビジネス・サービスを構成する手順の概要を説明します。29.3項「使用例」のシナリオによって、JEJBのプロキシ・サービスとビジネス・サービスをいつ作成する必要があるかがわかります。各使用例では、一般的な実装ガイドラインが示されます。

1. サービスの「全般」ページでトランスポート型オプションを選択します。

2. 「トランスポート」ページで次の操作を実行します。

1. jejbプロトコルを選択します。

2. 29.4.1項「JEJBのエンドポイントURI」の説明に従って、エンドポイントURIの情報を入力します。

3. 4.3.6項「プロキシ・サービスの「トランスポート構成」ページ」および4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」の説明に従って、他のグローバル・トランスポート・オプションを設定します。

3. 29.4.2項「JEJBトランスポート構成(プロキシ・サービス)」および29.4.3項「JEJBトランスポート構成(ビジネス・サービス)」の説明に従って、JEJBトランスポート・ページでサービスのトランスポート・オプションを構成します。

4. 4.3項「プロキシ・サービスの構成」および4.2項「ビジネス・サービスの構成」の説明に従って、サービスのその他のオプションを設定します。

5. 実装のガイドラインは、29.3項「使用例」の特定の使用例を参照してください。

29.3 使用例

プロキシ・サービスとビジネス・サービスでのJEJBトランスポートの使用がサポートされている使用例を次に示します。各使用例には実装のガイドラインが含まれており、29.2.3項「JEJBプロキシ・サービスまたはビジネス・サービスの構成」の全般的なサービス構成と組み合せて使用できます。

29.3.1 外部サービスを呼び出すEJB

図29-1に示すように、Oracle Service Busを介してEJBで外部サービスを呼び出すことができます。

図29-1 外部サービスを呼び出すEJB

図29-1では、JEJBプロキシ・サービスはEJBクライアント・インタフェースに対してステートレス・セッションBeanとして機能します。プロキシ・サービスのJEJBトランスポート・プロバイダは、クライアントJARとパイプラインのリモート/ビジネス・インタフェースからステートレス・セッションEJBを生成します。次に、エンドポイントURIに指定されたJNDIアドレスにEARとしてデプロイします。

注意:

JNDIエントリが変更されないように保護するポリシーをインストールしてください。

EJBは、プロキシ・サービスEJBクライアントJARによって提供されるリモート・インタフェースをコールし、トランザクションとセキュリティの詳細をプロキシ・サービスに渡します。

EJBクライアント・インタフェースはPOJOであり、その引数はJEJBトランスポート・プロバイダがWSDLとして表し、プロキシ・サービスの$body変数にXMLとして渡します。$bodyコンテンツのイントロスペクションを実行して、メッセージを必要な形式に変換してから、ビジネス・サービスに渡し、外部サービスを呼び出すことができます。実際のPOJOはオブジェクト・リポジトリに格納され、$bodyのXMLが<java-content ref="">要素で参照します。

レスポンスでは、呼出し元のEJBメソッドに渡さすために、レスポンスをEJB戻り形式に変換するJavaコールアウトを提供します。プロキシ・サービスの生成されたWSDLを表示して、予期されるメッセージ形式を確認します。生成されたWSDLを表示する方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のリソース詳細の表示に関する項を参照してください。

注意:

プロキシ・サービスのパイプラインで、Javaコールアウト、別のプロキシ・サービス(サービス・コールアウトまたはパブリッシュ・アクションを使用)またはビジネス・サービスにPOJO引数を渡すことができます。

29.3.2 EJBを呼び出す非EJBクライアント

図29-2に示すように、Oracle Service Busを介して非EJBクライアントでEJBを呼び出すことができます。

図29-2 EJBを呼び出す非EJBクライアント

図29-2では、非EJBクライアントが、リクエストと一致するトランスポートで構成されたプロキシ・サービス(たとえば、JMSトピックまたはキューで呼び出すJMSプロキシ・サービス)を呼び出します。

リクエストでJavaコールアウト(リクエストを$body変数のEJBコールのXML表現に変換する)を構成します。操作を$operation変数に設定します。ビジネス・サービスの生成されたWSDLを表示して、予期されるメッセージ形式を確認します。生成されたWSDLを表示する方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のリソース詳細の表示に関する項を参照してください。

JEJBビジネス・サービスは、生成されたWSDLを使用して着信メッセージをEJBリモート・インタフェースにマップし、リモートEJBメソッドを直接呼び出します。

29.3.3 EJBを呼び出すEJB

図29-3に示すように、Oracle Service Busを介してEJBでEJBを呼び出すことができます。

図29-3 EJBを呼び出すEJB

図29-3では、EJBコールはプロキシ・サービスとビジネス・サービスを介して渡され、別のEJBメソッドを呼び出します。Oracle Service Busの外部に直接RMIコールを行うかわりに、このアーキテクチャではOracle Service Busの機能(メッセージ・ルーティング、UDDI統合、アラート、監視、レポート、結果キャッシングなど)を利用します。

プロキシ・サービスのJEJBトランスポート・プロバイダは、クライアントJARとパイプラインのリモート/ビジネス・インタフェースからステートレス・セッションEJBを生成します。次に、エンドポイントURIに指定されたJNDIアドレスにEARとしてデプロイします。

実行時に、JEJBプロキシ・サービスはPOJOをメソッドの引数として受け取ってオブジェクト・リポジトリに格納し、生成されたプロキシ・サービスWSDLに基づいて、プロキシ・サービスの$body変数にPOJOのXML表現を生成します。プロキシ・サービスはメッセージをビジネス・サービスに渡します。ビジネス・サービスは、生成されたWSDLを使用してメッセージをリモート・インタフェースにマップし、リモート・メソッドを直接呼び出します。

パイプライン・ロジックをJEJBトランスポートと独立しておきたい場合は、メッセージをJEJBプロキシ・サービスからローカル・プロキシ・サービスにルーティングできます。ローカル・プロキシ・サービスがパイプライン・ロジックを実行してから、メッセージをJEJBビジネス・サービスに送ることができます。このパターンを使用する場合は、ローカル・プロキシのタイプがWSDL(ビジネス・サービス操作対応)であり、Javaオブジェクトにアクセスできることを確認してください。

29.4 トランスポート構成のリファレンス

ここでは、プロキシ・サービスとビジネス・サービスでのエンドポイントURIの作成およびJEJBトランスポートの構成について詳しく説明します。

29.4.1 JEJBのエンドポイントURI

JEJBのプロキシ・サービスとビジネス・サービスのエンドポイントURIの形式を次に示します。

注意:

JEJBサービスでは同じ場所に配置した呼出しはサポートされません。

29.4.1.1 プロキシ・サービスのJEJBエンドポイントURI

URL形式はejb_jndi_name.です。JEJBプロキシ・サービスに対して構成されるURIは、JEJBトランスポートによって生成されるステートレス・セッションBeanをクライアントJARのリモート/ビジネス・インタフェースで探すためのグローバルJNDI名になります。

注意:

EJB 3.0の場合、ejb_jndi_nameは生成されるBeanの@javax.ejb.Stateless注釈のmappedName属性です。生成されるEJBサービスのルックアップJNDI名の接尾辞は#interface_classであり、これはビジネス・インタフェースの完全修飾名です。

次のようにJEJBプロキシ・サービスにアクセスできます。

- EJB 2.1 - protocol://host:port/ejb_jndi_name

- EJB 3.0 - protocol://host:port/ejb_jndi_name#interface_class

protocolは次のRMIプロトコルのいずれかです。

- iiop/iiops -サーバーにとらわれない汎用プロトコルです。

- t3 / t3s - Oracle WebLogic Serverで使用されます。

- http / https -トンネリングおよびOracle WebLogic Serverで使用します。

例:

- EJB 2.1 - t3://localhost:7001/osb.jejb.myJejbProxy

- EJB 3.0 - t3://localhost:7001/osb.jejb.myJejbProxy#com.example.MyEjb3

29.4.1.2 ビジネス・サービスのJEJBエンドポイントURI

JEJBのビジネス・サービスのエンドポイントURIの形式を次に示します。

jejb:jndi_provider_name:ejb_jndi_name

jndi_provider_nameはリモートJNDIコンテキストです。

ejb_jndi_nameはリモートEJBのJNDI名です。

例:

- EJB 2.1 - jejb:myProvider:osb.jejb.myJejbBiz21

- EJB 3.0 - jejb:myProvider:myBiz31#osb.jejb.myJejbBiz
ここで、#osb.jejb.myJejbBizは完全修飾されたビジネス・インタフェースです。

注意:

EJBがIBM WebSphere上で実行中の場合は、ejb_jndi_nameを次の形式にしてください。

cell/nodes/node_name/servers/server_name/ejb_jndi_name

または

cell/clusters/cluster_name/ejb_jndi_name

詳細は次の場所にあるIBM WebSphereのドキュメントに記述されています。http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/rnam_example_prop3.html

29.4.2 JEJBトランスポート構成(プロキシ・サービス)

このページでは、JEJB転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成できます。

表29-1に、JEJBトランスポートを使用するビジネス・サービスのトランスポート固有の構成オプションを示します。

表29-1 プロキシ・サービスのためのJEJBトランスポート構成

オプション

説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

EJB仕様バージョン

リモートEJBインタフェースのEJBバージョンを選択します。

値でXMLBeansを渡す

トランスポートによってPOJO引数(XMLObject)のインラインXML表現を生成する場合は、このオプションを選択します。この引数のパラメータは、XQuery式でアクセスおよび操作できます。

注意: 値で渡されたXMLObjectの場合、型情報はインラインでは利用できません。このオプションを使用する場合、プロキシ・サービス・パイプラインのJavaコールアウトで型付きのXMLObjectを引数として渡すことはできません。

参照でPOJOを渡す場合は、このオプションを選択しないでください。こうすることでパフォーマンスも向上します。

詳細は、29.1.3項「WSDLの生成」を参照してください。

トランザクション属性

トランザクションを処理するために次のいずれかのオプションを選択します。

- 「Supports」 - トランスポートは着信トランザクションを受け入れます。サービス品質は、操作がトランザクションで呼び出される場合は「必ず1回」、操作がトランザクション外部から呼び出される場合は「ベスト・エフォート」です。

- 「Required」 - トランスポートは着信トランザクションを受け入れます。発信トランザクションが存在しない場合、トランスポートが発信トランザクションを開始します。サービス品質は「必ず1回」です。

- 「RequiresNew」 - トランスポートは常に新しいトランザクションを開始し、進行中のトランザクションを中断します。サービス品質は「必ず1回」です。

- 「Mandatory」 - トランスポートは既存のトランザクションのメソッドを呼び出します。サービス品質は「必ず1回」です。

- 「NotSupported」 - トランスポートは既存のトランザクションを中断し、呼出し時に再開します。サービス品質は「ベスト・エフォート」です。

- 「Never」 - トランスポートはトランザクションのメソッドを呼び出しません。サービス品質は「ベスト・エフォート」です。

クライアントJar

「参照」をクリックし、表示されるリストからEJBクライアントJARリソースを選択します。クライアントJARには、リモートEJBのリモートまたはビジネス・インタフェースが含まれます。クライアントJARは汎用アーカイブ・リソースとして登録されます。

ホーム・インタフェース

EJB 2.1専用 - クライアントJARによって設定されるオプションから必須のEJBHomeインタフェースを選択します。

リモート・インタフェース

EJB 2.1のみ - このフィールドは、ホーム・インタフェースの構成に応じて、自動的に情報が表示されます。

ビジネス・インタフェース

EJB 3.0のみ - クライアントJARから、起動するビジネス・インタフェースを選択します。

対象ネームスペース

このフィールドにはJARからのピックアップされた情報が表示されます。

メソッド

必要なメソッドを選択します。「+」をクリックしてメソッドを展開すると、デフォルトのパラメータ値を編集できます。

任意のメソッドのデフォルトの操作名を変更できます。デフォルトでは、操作名はメソッド名です。EJBに同じ名前のメソッドが含まれている場合(オーバーロード)、一意になるように操作名を変更する必要があります。WSDLでは一意の操作名が必要です。

29.4.3 JEJBトランスポート構成(ビジネス・サービス)

このページでは、JEJB転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。

表29-2に、JEJBトランスポートを使用するビジネス・サービスのトランスポート固有の構成オプションを示します。

表29-2 ビジネス・サービスのためのJEJBトランスポート構成

オプション

説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

EJB仕様バージョン

リモートEJBインタフェースのEJBバージョンを選択します。

値でXMLBeansを渡す

トランスポートによってPOJO引数(XMLObject)のインラインXML表現を生成する場合は、このオプションを選択します。この引数のパラメータは、XQuery式でアクセスおよび操作できます。

注意: 値で渡されたXMLObjectの場合、型情報はインラインでは利用できません。このオプションを使用する場合、プロキシ・サービス・パイプラインのJavaコールアウトで型付きのXMLObjectを引数として渡すことはできません。

参照でPOJOを渡す場合は、このオプションを選択しないでください。こうすることでパフォーマンスも向上します。

詳細は、29.1.3項「WSDLの生成」を参照してください。

呼出し元のサブジェクトを渡す

「サービス・アカウント」を選択するかわりに、このオプションを選択して、Oracle Service BusがEJBを呼び出すときにプロキシ・サービスの認証済サブジェクトを渡すようにします。

サービス・アカウント

「参照」をクリックし、表示されるリストでJNDIサービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。詳細は、4.19項「サービス・アカウント」を参照してください。

クライアントJar

「参照」をクリックし、表示されるリストからEJBクライアントJARリソースを選択します。クライアントJARには、リモート・サービスのリモートまたはビジネス・インタフェースが含まれます。クライアントJARは汎用アーカイブ・リソースとして登録されます。

ホーム・インタフェース

EJB 2.1専用 - JARによって挿入されるオプションから必要なEJBHomeインタフェースを選択します。

リモート・インタフェース

EJB 2.1のみ - このフィールドは、ホーム・インタフェースの構成に応じて、自動的に情報が表示されます。

ビジネス・インタフェース

EJB 3.0のみ - クライアントJARから、起動するビジネス・インタフェースを選択します。

対象ネームスペース

このフィールドにはJARからのピックアップされた情報が表示されます。

メソッド

必要なメソッドを選択します。「+」をクリックしてメソッドを展開すると、デフォルトのパラメータ値を編集できます。

任意のメソッドのデフォルトの操作名を変更できます。デフォルトでは、操作名はメソッド名です。EJBに同じ名前のメソッドが含まれている場合(オーバーロード)、一意になるように操作名を変更する必要があります。WSDLでは一意の操作名が必要です。

29.5 JEJBサービスのテスト

Oracle Service Busテスト・コンソールで、POJOを参照ではなく値で渡す(「Pass XMLBeans by value」オプション)JEJBサービスをテストできます。テスト・コンソールでサポートされるのは、プリミティブ、StringおよびXMLの引数のみです。トランスポートは、サポートされるPOJO引数とその値を、呼出しポイント(EJBメソッド)を指定するXMLとして渡します。

29.6 UDDIの統合

ここでは、JEJBプロキシ・サービスに関するUDDIのパブリッシュとインポートの詳細について説明します。

29.6.1 UDDIのパブリッシュ

JEJBプロキシ・サービスは次のプロパティをUDDIレジストリにパブリッシュします。

- URI

- EJB仕様バージョン

- クライアントJar

- ホーム・インタフェース(EJB 2.1のみ)

- リモート・インタフェース(EJB 3.0のビジネス・インタフェース)

- メソッド名(操作別名、パラメータ、戻り値の詳細は含まれません)。メソッド名は、すべてのメソッド・シグネチャが付けられた1つのプロパティで渡されます。メソッド・シグネチャは#記号で区切られます。

29.6.2 UDDIのインポート

ここでは、JEJBトランスポートがUDDIレジストリからのサービス・インポートを処理する方法を説明します。

- URI - JEJBトランスポート・プロバイダは、UDDIレジストリにあるURIプロパティのhost:port情報を、サーバーに登録されているJNDIプロバイダ・リソースと照合しようとします。
トランスポート・プロバイダがJNDIプロバイダを見つけられない場合、インポートは失敗します。ただし、JNDIプロバイダが見つからなくても、host:portがlocalhostのIPとリスニング・ポートと一致する場合、結果のビジネス・サービスはローカルになります(JNDIプロバイダではありません)。

- クライアントJAR - トランスポート・プロバイダがクライアントJARをダウンロードし、マニフェスト・クラスパスがJARに存在する場合は、対応するJARリソースを同じディレクトリ構造に作成します。リストの最初のURIがルート・クライアントJARです。JARにマニフェスト・クラスパスが存在しない場合は、リソースJARをルートJARに手動で追加する必要があります。インポートされたクライアントJARのリソースが、ドメインの別のリソースと同じ名前である場合、インポートされたリソースによって既存のリソースが上書きされます。
インポートするクライアントJARがドメインに存在していないことを確認します。

- メソッド名 - 対応するプロパティに含まれるメソッドは、エンドポイントの構成で自動的に選択されます。他のすべてのメソッドは除外としてマークされます(選択解除されます)。

30 JMSトランスポート

この章では、JMSトランスポートの概要と、サービスでの使用および構成方法について説明します。また、Oracle Service BusとWebLogic JMS間、およびOracle Service BusとWebSphere MQ間の相互運用性に関連する機能および概念についても説明します。

この章の内容は次のとおりです。

- 30.1項「JMSの相互運用性の概要」

- 30.2項「非同期のリクエスト/レスポンス・メッセージング」

- 30.3項「SOAP-JMSトランスポートの使用」

- 30.4項「ドメイン、WebLogic、およびJMSサーバーの命名ガイドライン」

- 30.5項「サービスのJMSタイプの指定」

- 30.6項「プロキシ・サービスでのJMSクライアントIDの指定」

- 30.7項「WSDL定義のSOAPフォルト・メッセージ」

- 30.8項「WebSphere MQとの相互運用性」

- 30.9項「Tibco EMSとの相互運用性」

- 30.10項「JMSリクエスト/レスポンスのメッセージIDと相関IDのパターン」

- 30.11項「JMSトランスポートの使用」

30.1 JMSの相互運用性の概要

Java API for XML-Remote Procedure Call (JAX-RPC)は、J2EEを使用してWebサービスを構築しデプロイするコアJava APIと見なすことができます。JAX-RPCは、XML型とJava型とのマッピングの複雑さや、XML SOAPメッセージの処理に関する低レベルの詳細を開発者から切り離すことで、Webサービス・アプリケーションを構築するための簡単かつ堅牢なプラットフォームを提供します。JAX-RPCは、次の2つのプログラミング・モデルを提供することによって、メソッド呼出しパラダイムを導入します。

- JavaクラスまたはステートレスEJBコンポーネントを使用してWebサービス・エンドポイントを開発するためのサーバー側モデル

- ローカル・オブジェクトとしてWebサービスにアクセスするJavaクライアントを構築するためのクライアント側モデル

JAX-RPCでは、SOAPの使用と、他のテクノロジによって構築されたその他のWebサービスとの相互運用性が要求されます。ステートレス・セッションEJB、またはビジネス・ロジックを実行するJavaクラスがすでにある場合、J2EEではJAX-RPCを使用した標準的な方法でサービスとしてエクスポーズできます。

すべて のOracle Service Busのサービス・タイプでJMSトランスポートがサポートされています。2.3項「プロキシ・サービスの操作」および2.2項「ビジネス・サービスの操作」の説明に従って、JMSトランスポートを使用するようにプロキシ・サービスとビジネス・サービスを構成する必要があります。

Oracle WebLogic Server JMSの詳細は、次の項目を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Server JMSのプログラミング』のアプリケーションの管理に関する項

- Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJMSサーバーの構成に関する項

注意:

Oracle Service Busでは、リモート・トランザクション・サポートの構成に不可欠なMQ Extended Transactional Clientがサポートされています。

30.2 非同期のリクエスト/レスポンス・メッセージング

メッセージングは次のように分類できます。

- 一方向

- 同期のリクエスト/レスポンス

- 非同期のリクエスト/レスポンス

ただし、JMSでのメッセージングは、一方向または非同期のリクエスト/レスポンスのみです。JMSを使用した非同期のリクエスト/レスポンス・メッセージングは、HTTPまたはHTTPSを使用したメッセージングにかわるものです。

非同期のリクエスト/レスポンス・メッセージングを使用する利点は次のとおりです。

- レスポンスを待機する間、リクエスト・スレッドがブロックされることはありません。これにより、多数のブロッキング・リクエスト/レスポンス呼出しが行われた場合に生じる可能性のある、スレッドの管理上の問題が解消されます。ただし、HTTPとHTTP(S)は、操作の非ブロッキング・モードをサポートしています。

- メッセージングは次が可能であるため、HTTPよりも信頼できます:

- ディスク上に保持される

- サービスを利用できないときに、キューに格納される

- メッセージの処理時にサーバーにエラーや障害が発生した場合、メッセージを再配信できます。

IBM WebSphere MQを使用している場合、特定のメインフレームとの対話には非同期のリクエスト/レスポンス・メッセージを使用することをお薦めします。非同期サービスは、使用するJMSリクエスト/レスポンス・パターンに応じて相関IDまたはメッセージIDを返す必要があります。Oracle Service Busで使用するどちらのID形式も、IBM WebSphere MQとの互換性およびMQネイティブ・インタフェースを使用するターゲット・サービスとの互換性があります。詳細は、30.10項「JMSリクエスト/レスポンスのメッセージIDと相関IDのパターン」を参照してください。

非同期のリクエスト/レスポンス・メッセージは、アウトバウンド・トランスポートとインバウンド・トランスポートによって処理されます。つまり、トランスポート方式固有のデータである$outboundと$inboundを除き、JMSリクエスト/レスポンスとHTTPリクエスト/レスポンスのメッセージ・フローに違いはありません。

Oracle Service Busは、同期と非同期のリクエスト/レスポンスのブリッジングをサポートしています。たとえば、HTTPを使用してプロキシ・サービスを呼び出すことができ、呼び出されたプロキシ・サービスは、JMSリクエスト/レスポンス・ビジネス・サービスにルーティングされます。これを同期から非同期へのサービスの切替えと呼びます。

30.3 SOAP/JMSトランスポートの使用

SOAPはトランスポート方式に依存しないため、SOAPトランスポートでHTTPのかわりにJMSを使用できます。特に企業顧客の場合、SOAP/JMSトランスポートが必要となります。Oracle Service Busは、JMSリクエスト/レスポンスでのSOAPメッセージをサポートしています。また、SOAPベースのOracle WebLogic Serverクライアントおよびサービスとの相互運用もサポートしています。

JMSは、信頼性の高いメッセージング方法でもあります。

30.3.1 Oracle WebLogic Serverとの相互運用

JMSバインドを使用してOracle WebLogic Serverでサービスを構成するときは、次のSOAP-JMS URI形式をOracle WebLogic Serverで使用してください。

jms://host:port/contextURI/serviceName?URI=destJndiName

Oracle Service Busでサービスを構成する場合、URIは次の形式で指定する必要があります。

jms://host:port/connection_factory/jndi_destination

どちらの形式でも同じjndi_destinationを使用します。jndi_destinationは、ターゲットのOracle WebLogic Serverの既存のQueueConnectionFactoryのJNDI名である必要があります。

注意:

Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項を参照してください。

Oracle Service BusからOracle WebLogic Serverサービスを呼び出す場合は、リクエストをビジネス・サービスに送信する前に、メッセージ・フロー内でアウトバウンド変数($outbound)に値/contextURI/serviceNameのJMSプロパティとしてURIを設定する必要があります。このプロパティを設定するには、トランスポート・ヘッダー・アクションを使用します。

$outboundの設定の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のインバウンド変数とアウトバウンド変数に関する項を参照してください。

Oracle WebLogic Server Web ServicesクライアントがOracle Service Busプロキシ・サービスを呼び出す場合、URIプロパティは無視されます。ただし、トランスポート・ヘッダー・アクションのパススルー・オプションを使用すると、呼び出されるサービスにパススルーできます。詳細は、2.4.32項「メッセージ・フローへのトランスポート・ヘッダー・アクションの追加と構成」を参照してください。

Oracle Service Busで呼び出すことができるのは、バージョン9.2以降で実行されているOracle WebLogicリクエスト/レスポンス・サービスのみです。ただし、一方向のJMSサービスも呼び出すことができます。

30.3.1.1 ドメイン間JMS呼出しのレスポンス・キューの構成

ドメイン間JMS呼出しのレスポンス・キューを構成する場合は、リクエスト側の管理対象サーバーごとに個別のレスポンス・キューを設定します。

たとえば、2つのOracle Service Busクラスタ・ドメイン(ドメインAとドメインB)が、2つの管理対象サーバーを含むOracle WebLogic Serverドメインと通信しているとします。ドメインAに3つの管理対象サーバー、ドメインBに4つの管理対象サーバーがある場合、ドメインAとドメインBにレスポンスを返すには、レスポンス・キューとして機能する7つ(3 + 4 = 7)の異なるキューをOracle WebLogic Serverドメインに構成する必要があります。これらのキューは、(Oracle WebLogic Serverドメインの両方の管理対象サーバーにメンバーを持つ)分散キューである場合もあります。

注意:

異なるリモート・ドメインによってホストされている複数のプロキシ・サービスからJMSリクエストを受信するには、リクエスト側の各ドメインに対応する個別のレスポンス・キューのセットを使用して、JMSビジネス・サービスをホストするバックエンドのドメインを構成する必要があります。

30.4 ドメイン、WebLogic、およびJMSサーバーの命名ガイドライン

複数のドメインを使用する作業では、構成が次の要件に準拠していることを確認します。

- Oracle WebLogic Serverインスタンス名およびドメイン名が一意です。

- WebLogic JMSサーバー名がドメイン内で一意です。

- 永続メッセージ用にJMSファイル・ストアを使用している場合、そのJMSファイル・ストア名がドメイン間に渡って一意でなければなりません。

JMSサーバー名に関しては次のルールを確認します。

- 同じドメインに重複したJMSサーバー名を持つことはできません。重複したJMSサーバー名があると、メッセージが特定のJMSサーバーの宛先に送信されたときに、Oracle Service Busはメッセージの送信先のサーバーを判別できません。

- ストア・アンド・フォワード(SAF)を使用している場合は、異なるドメインに重複したJMSサーバー名があってもかまいません。

- ドメイン間通信の場合、ReplyTo機能を使用するときに、重複したJMSサーバー名が問題になることがあります。特定のドメインから送信されたReplyToメッセージは、元のメッセージを送信したドメインではなく、そのメッセージを受信した同じドメイン上のJMSサーバーに返されます。

WebLogic JMSの構成と管理方法については、次を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Server JMSのプログラミング』のアプリケーションの管理に関する項

- Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJMSサーバーの構成に関する項

30.5 サービスのJMSタイプの指定

Oracle Service Busでは、異種のエンドポイント間での相互運用性を確保するため、使用されるコンテンツ・タイプ、JMSタイプ、およびエンコーディングをメッセージ・フローの構成時にそれぞれ制御できます。JMSタイプはバイトまたはテキスト(非Javaタイプ・メッセージの場合)のいずれかです。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のコンテンツ・タイプ、JMSタイプおよびエンコーディングに関する項を参照してください。

30.6 プロキシ・サービスでのJMSクライアントIDの指定

プロキシ・サービスにおけるJMSクライアントIDは、jms-client-id記述子の値であり、サブスクライバ名およびトピックのサブスクライバのクライアントID値を生成するために使用されます。トピック宛先を使用してJMSプロキシ・サービスを構成する場合は、サブスクライバ名およびサブスクライバのクライアントIDの生成時にJMSクライアントIDが使用されるように指定できます。これによって、実行時にサービスおよびトピックを監視および管理する際に、サブスクライバおよび対応するプロキシ・サービスを簡単に識別できるようになります。これは、恒久サブスクリプションにおいてのみ有効です。

30.6.1 クライアントIDおよびサブスクライバ名について

トピック宛先のサブスクリプションは、クライアントIDおよびサブスクライバ名によって識別できます。これらの値は、次の記述子を使用して、様々なTopicMessagesDistribution構成に対して生成されます。

- jms-client-id: トピック宛先をターゲットとするJMSプロキシ・サービスでJMS Client IDプロパティに対して構成される値。

- ejb-name: プロキシ・サービスに対してOracle Service Busによって生成されるMDBの名前。これは、一意のID値です。

- DomainName: Oracle Service Busドメインの名前。

- ServerName: ランタイムOracle Service Busサーバーの名前。

- UniqueKey: generate-unique-client-id記述子がtrueに設定されている場合に、WebLogic Serverによって生成される一意のキー。generate-unique-client-id記述子は、JMSプロキシ・サービスによってデプロイされたMDBに対して、常にtrueに設定されます。

次の表に、様々な配信モードでサブスクライバのクライアントIDおよび名前が生成される方法を示します。

トピック・メッセージ配信

サブスクライバのクライアントID

サブスクライバ名

アプリケーションごとに1つのコピー

jms-client-id

ejb-name

サーバーごとに1つのコピー

{jms-client-id}_{ドメイン名}_{サーバー名}

ejb-name

互換性

{jms-client-id}_{ドメイン名}_{サーバー名}_{一意キー}

クライアントIDと同じ

その他にも、サブスクライバのクライアントIDに影響を与える記述子があります。distributed-destination-connection記述子は常にlocalに、generate-unique-client-id記述子は常にtrueに設定されます。詳細は、Oracle WebLogic ServerメッセージドリブンBeanのプログラミングの「トピックのサブスクリプション識別子」を参照してください。

30.6.2 推奨される使用方法

「互換性」の「トピック・メッセージ配信」モードを使用しないことをお薦めします。かわりに、スケーラビリティを向上させるために、(要件に応じて)「アプリケーションごとに1コピー」または「サーバーごとに1コピー」のいずれかを使用します。「互換性」モードは、主に下位互換性のために提供され、通常は、特定のプロキシ・サービスに関連するトピック・サブスクライバでクリーンアップ処理が行われる恒久サブスクリプションに使用されます。

30.7 WSDL定義のSOAPフォルト・メッセージ

明示的にエラーを定義するWSDLを使用している場合、XMLエラーのタイプに対し、WebLogic clientgenツールによってjava.lang.Exceptionというサブクラスが生成されます。Oracle WebLogic Server JAX-RPCスタックがSOAPレスポンス・メッセージを検査し、レスポンス・メッセージにSOAPフォルトが含まれると判断すると、そのエラーをclientgen生成の例外Javaクラスにマップしようとします。

たとえば、次のコード・リストに示す定義がWSDLに含まれる場合、clientgenツールはjava.lang.Exceptionを拡張した com.bea.test.TheFaultType Javaクラスを生成します。このサービス・スタブの関連メソッドが呼び出されると、JAX-RPCクライアントがcom.bea.test.TheFaultTypeを受け取る可能性があります。

例30-1 WSDL定義のサンプル

<definitions ... xmlns:s0="http://www.oracle.com/test/">
...
<types>
<xsd:schema targetNamespace="http://www.oracle.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>

SOAPメッセージには正しい形式のエラーが含まれ、JAX-RPCスタックが正しい例外をスローできるようになっている必要があります。エラーをOracle Service Busメッセージ・フロー内部で作成する場合は、次の操作を行います。

1. $body変数のノードを次のSOAPのサンプルで置き換えます。

例30-2 SOAPのサンプル

<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</test:Id>
<test:message>A specific literal message</test:message>
</test:theFault>
</detail>
</soap-env:Fault>
</soap-env:Body>

説明:

- soap-envは、http://schemas.xmlsoap.org/soap/envelope/ネームスペースのシステム接頭辞です。

- testは、http://www.oracle.com/test/の接頭辞です。
test接頭辞がOracle Service Busにとって既知ではない場合は、宣言する必要があります。

2. 失敗時の返信アクションを構成します。

Oracle Service Bus管理コンソールで返信アクションを構成する方法の詳細は、2.4.22項「メッセージ・フローへの返信アクションの追加と構成」を参照してください。

clientgenを使用して、Webサービスを呼び出すために必要なクライアント側のアーティファクト(JAX-RPCスタブなど)を生成します。『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービス・リファレンス』のAntタスク・リファレンスに関する項を参照してください。

30.8 WebSphere MQとの相互運用性

Oracle Service Busは、WebSphere MQ JMSインタフェースを介してWebSphere MQに接続します。つまり、Oracle Service BusはWebSphere MQ JMSクライアントです。

WebSphere MQは、次の2通りの方法でOracle Service Busと対話できます。

- Oracle Service BusがWebSphere MQのフロント・エンドとして機能し、他のアプリケーションからのサービス・リクエストを受け入れ、それらをWebSphere MQリクエストに変換します。

- WebSphere MQがOracle Service Busを介して他のアプリケーションにメッセージを送信します。

詳細は、33.9.1項「WebSphere MQ JMSインタフェースの使用」を参照してください。

30.9 Tibco EMSとの相互運用性

メッセージング・プロバイダとしてTibco Enterprise Messaging Service (EMS)を使用する場合、EXT_PRE_CLASSPATHでTibco EMSのクライアントJARを参照できるように、setDomainEnv.cmd/shを変更する必要があります。

30.10 JMSリクエスト/レスポンスのメッセージIDと相関IDのパターン

JMSは、エンタープライズ・メッセージング・システムにアクセスするための標準APIです。Oracle WebLogic JMSにより次の機能が実現します。

- メッセージング・システムを共有するJavaアプリケーション間でメッセージを交換できます。

- メッセージの作成、送信、および受信に使用する標準インタフェースが用意されているため、アプリケーション開発が簡略化されます。

JMSの概要および機能は、『Oracle Fusion Middleware Oracle WebLogic Server JMSの構成と管理』を参照してください。

ここでは、Oracle Service BusでサポートされるJMSリクエスト/レスポンスのメッセージIDと相関IDのパターン、およびOracle Service Busでこれらのパターンを使用して、Java API for Remote Procedure Call (JAX-RPC) Webサービスと相互運用する方法について説明します。例も示します。

次の内容について説明します。

- 30.10.1項「JMSリクエスト/レスポンスと設計パターンの概要」

- 30.10.2項「JMSメッセージIDのパターン」

- 30.10.3項「JMS相関IDのパターン」

- 30.10.4項「メッセージIDと相関IDのパターンの比較」

- 30.10.5項「JMSでのJAX-RPCとの相互運用」

- 30.10.6項「JMSメッセージIDのパターン例」

30.10.1 JMSリクエスト/レスポンスと設計パターンの概要

メッセージングでは、プログラム間で配信が保証された高速非同期通信を行います。多くの場合、メッセージングはメッセージ指向ミドルウェア(MOM)と呼ばれるソフトウェアのレイヤーとして実装されます。

エンタープライズ・コンピューティングにおいて、プロセスやプロセス間の通信の信頼性がそれほど高くない場合でも、メッセージングによりプロセス間の通信の信頼性が高まります。プロセスで通信が必要になる理由は次のとおりです。

- あるプロセスのデータを別のプロセスに送信する必要があります。

- あるプロセスが別のプロセスのプロシージャをリモートから呼び出す必要があります。

IBM WebSphere MQを使用している場合、特定のメインフレームとの対話には非同期リクエスト/レスポンス・メッセージを使用することをお薦めします。

30.10.1.1 メッセージングのパターン

メッセージングのパターンには、MOMで構築されたシステムの各部分間をフローするメッセージのフォーマットが記述されます。メッセージには、次のような様々なタイプがあります。

- メッセージング・システムでプロシージャ・コールのセマンティクスを実行できるようにするコマンド・メッセージ。

- メッセージング・システムが情報(コマンド・メッセージの結果として送信側に返す情報など)をトランスポートできるようにするドキュメント・メッセージ。

- メッセージングを使用してイベントの通知を実行するイベント・メッセージ。

- リモート・プロシージャ・コールの結果のセマンティクスを処理する応答メッセージ。応答メッセージでは、成功した結果と失敗した結果の両方を処理できる必要があります。

- リクエストを作成するプログラムが応答送信時のチャネルを識別できるようにする応答指定子。

- リクエスト元のプログラムが特定のレスポンスをリクエストに関連付けることを可能にする相関ID。渡されたデータが複数のメッセージにわたる場合は、シーケンス識別子により、受信側は元のデータを正確に再構築できます。

- 送信側がメッセージを配信または無視することによって期限を設定できるようにするメッセージ有効期限。

- 受信側がメッセージの受信率を制御できるようにするメッセージ抑制。

Oracle Service Busの場合、各応答メッセージに、リクエスト・メッセージと応答を関連付ける相関IDと呼ばれるユニークな識別子を含める必要があります。

呼出し側は、リクエスト・メッセージの作成時に、現在未完了の他のすべてのリクエスト(応答をまだ受信していないリクエストなど)の識別子とは異なる一意の識別子をリクエストに割り当てます。受信側は、リクエストを処理するときにこの識別子を保存し、リクエストの識別子を応答に追加します。

呼出し側は、応答を処理するときにリクエストの識別子を使用してリクエストを応答に関連付けます。この識別子は、呼出し側が各応答とリクエストの関連付けに使用するため、相関IDと呼ばれます。

通常、相関IDはメッセージのヘッダーに配置されます。このIDは、呼出し側が受信側に伝達するコマンドまたはデータに含まれるわけではありません。

受信側は、リクエストのIDを保存し、呼出し側のために応答に追加します。メッセージ本文は2つのシステム間で送信されるコンテンツであり、IDはコンテンツの一部ではないため、IDはヘッダーに追加されます。

リクエスト・メッセージには、IDを相関IDプロパティとして格納することも、単にメッセージIDプロパティとして格納することもできます。IDが相関IDとして使用されている場合、どのメッセージがリクエストでどのメッセージが応答か混乱を招くおそれがあります。リクエストにメッセージIDが含まれ、相関IDは含まれていない場合、応答にはそのリクエストのメッセージIDと同じ相関IDが含まれます。

Oracle Service Busで内部的に使用される相関IDの形式はWebSphere MQの形式と互換性があり、MQネイティブのインタフェースが使用されているターゲット・サービスで動作します。

アウトバウンド・トランスポートでは、非同期のリクエスト/レスポンス・メッセージを処理します。つまり、トランスポート方式固有のデータである$outboundを除き、JMSリクエスト/レスポンスとHTTPリクエスト/レスポンスのメッセージ・フローに違いはありません。

JMSリクエスト/レスポンス・ビジネス・サービスまたはプロキシ・サービスを定義するときには、まず設計パターンを選択する必要があります。これを行うには、JMSプロキシ・サービスでは「レスポンスが必要」オプション、JMSビジネス・サービスでは「レスポンス・キュー」オプションを選択し、JMSの「トランスポート構成」ページで次のいずれかの相関パターンを選択します。

- JMS相関ID - デフォルトのパターン

- JMSメッセージID

注意:

プロキシ・サービスに対する相関IDのマッピングがメモリーに格納されているため、JMSリクエスト/レスポンス・メッセージングに信頼性のあるレスポンスが返されません。リクエストの送信後にレスポンスが受信されるまでの間に障害またはシステムの再起動が発生すると、そのレスポンスは破棄されます。

この状況を回避するには、JMSリクエスト/レスポンスを使用せずに、2つのJMS一方向プロキシ・サービス(メッセージ配信用とレスポンス配信用の2つ)を使用します。

JMSプロキシ・サービスおよビジネス・サービスの作成の詳細は、2.3項「プロキシ・サービスの操作」および2.2項「ビジネス・サービスの操作」を参照してください。

次の項では、これらのパターンについて説明します。2つのパターンを比較するには、30.10.4項「メッセージIDと相関IDのパターンの比較」を参照してください。

30.10.2 JMSメッセージIDのパターン

JMSメッセージIDのパターンを使用してビジネス・サービスを作成する場合は、レスポンスが1つのURIに送信されるように構成できます。あるいは、フェイルオーバーをサポートするために、Oracle Service Busクラスタの各管理対象サーバー上の各リクエストURIに対してレスポンス・キューを構成できます。これらのキューは、サービスのリクエスト・キューと同じ場所に存在する必要があります。プロキシ・サービスは、ビジネス・サービスを呼び出すときにこの情報を使用してJMSReplyToプロパティを設定し、このリクエストを出した管理対象サーバーによってレスポンスが処理されるようにします。

JMSメッセージIDのパターンを使用してプロキシ・サービスを定義すると、プロキシ・サービスはJMSReplyToプロパティで指定されたキューに返信するため、ResponseURIを定義する必要はありません。ただし、レスポンス・メッセージに対してJMS接続ファクトリのJNDI名を指定できます。

注意:

デフォルトでは、リクエスト・メッセージの接続ファクトリが使用されます。これが役立つのは、JMSレスポンスに対して非XA接続ファクトリを使用するが、リクエストに対してXA接続ファクトリがある場合です。

デプロイメント記述子をXA対応リソースに適切に設定するには、プロキシ・サービスを作成する前に、参照接続ファクトリのXA属性を設定する必要があります。

呼び出されたサービスは、リクエストのメッセージID (JMSヘッダー・フィールドJMSMessageIDの値)をレスポンスの相関IDにコピー(JMSヘッダー・フィールドJMSCorrelationIDを設定)する必要があります。また、呼び出されたサービスは、JMSReplyToヘッダー・フィールドに指定されたキューに返信する必要があります。

JMSメッセージIDのパターンを選択すると、レスポンスは適切な管理対象ノードに送信されます。

このパターンを使用するJMSプロキシ・サービスは、追加の構成なしにクラスタで使用できます。JMSビジネス・サービスはクラスタで使用できます。ただし、管理対象サーバーがクラスタに追加されると、すべてのビジネス・サービスが無効になります。これを回避するには、レスポンス・キューの数が、Oracle Service BusクラスタのJMSメッセージID相関パターンを指定する管理対象サーバーの数と同じになるようにします。

注意:

JMSメッセージID相関パターンは、プロキシ・サービスが別のプロキシ・サービスを呼び出す場合はサポートされません。

30.10.3 JMS相関IDのパターン

ビジネス・サービスをJavaで設計するときは、レスポンスのJMS相関IDの値をリクエストのJMS相関IDの値に設定してから、JMSレスポンスをキューに送信するようにします。

メッセージの受信時にJMS相関IDを取得するには、次のようにします。

String getJMSCorrelationID()

上記のメソッドは、特定のメッセージIDまたはアプリケーション固有の値を表す相関IDの値を文字列として返します。

メッセージの送信時にJMS相関IDを設定するには:

void setJMSCorrelationID(String correlationID)

30.10.4 メッセージIDと相関IDのパターンの比較

JMSリクエスト/レスポンス・パターンは次の点で異なります。

- レスポンスをリクエストと関連させる方法

- レスポンス・キューの選択

2つのパターンの相違について、表30-1にまとめます。

表30-1 メッセージIDと相関IDのパターンの相違点

JMSパターン名

レスポンス・キュー

相関ID

相関IDのパターン

すべてのレスポンスは固定された同じキューに入れられます。

サーバーはリクエストの相関IDをレスポンスの相関IDにコピーします。

メッセージIDのパターン

レスポンスは、JMSReplyToプロパティで指定されたキューに動的に入れられます。

サーバーはリクエストのメッセージIDをレスポンスの相関IDにコピーします。

相関IDのパターンが使用される場合、呼び出されたサービスは、リクエストURIに対応するキューに応答します。レスポンスは常に同じキューに置かれ、クライアントはレスポンスが置かれるキューを制御できません。たとえば、10のクライアントがリクエストURI「A」にメッセージを送信した場合、これらのクライアントはすべてリクエストURI「A」に対応するキューからレスポンスを取得します。このため、クライアントはレスポンス・キューのメッセージをフィルタして、各自に関連するレスポンスを選択する必要があります。フィルタ条件をリクエスト・メッセージの相関IDプロパティに構成し、これをレスポンスの相関IDプロパティに返すようにサーバーを構成します。

メッセージIDのパターンの場合、クライアントのJMSReplyToプロパティによってサーバーにレスポンスの送信先を指示します。このキューはクライアントのサーバーに固有であるため、別のクライアントへのレスポンスは別のキューに置かれます。サーバーは、レスポンスのJMS相関IDをリクエストのJMSメッセージIDに設定します。

メッセージIDによる相関は、JMSアプリケーションだけではなく多くのIBM MQアプリケーションでも一般に使用されており、リクエストとレスポンスを関連付ける標準的な方法です。

メッセージIDのパターンによるJMSリクエスト/レスポンスを使用して、複数のOracle WebLogicクライアント・ドメインからターゲットのOracle WebLogicドメインを呼び出す場合は、リクエスト・キューとレスポンス・キューの両方をSAFキューとして設定できます。ただし、所定のリクエストURIに対するすべてのレスポンスに単一のキューを使用する相関IDのパターンでは、このように設定することはできません。

相関IDのパターンには主に2つの利点があります。

- レスポンス・キューの構成が簡単であり、クラスタに管理対象サーバーが新しく追加されるたびに変更する必要はありません。

- ドメインのプロキシ・サービスが同じドメインの別のプロキシ・サービスを呼び出す必要がある場合、相関IDも使用できます。

30.10.5 JMSでのJAX-RPCとの相互運用

Oracle Service Bus開発環境では、HTTP/HTTPSに加え、JMSトランスポートを使用するJAX-RPC Webサービスを作成できます。このようなJMSトランスポートのJAX-RPC Webサービスでは、操作に関連付けられた値を取得したり返したりするためのメカニズムとしてJMSキューを使用します。JMSメッセージIDのパターンを使用して、JMSトランスポートのJAX-RPC Webサービスを呼び出すことができます。

また、Oracle WebLogic clientgenのAntタスクによって生成されたJAX-RPC静的スタブから、JMSリクエスト/レスポンスOracle Service Busプロキシ・サービスを呼び出すこともできます。

この項の内容は次のとおりです。

- 30.10.5.1項「JMSメッセージIDのパターンを使用したJAX-RPC Webサービスの呼出し」

- 30.10.5.2項「JAX-RPCクライアントからのJMSリクエスト/レスポンス・プロキシ・サービスの呼出し」

30.10.5.1 JMSメッセージIDのパターンを使用したJAX-RPC Webサービスの呼出し

JMSメッセージIDのパターンを使用してJMSトランスポートのJAX-RPC Webサービスを呼び出すには、次の手順を実行します:

1. JMSメッセージIDのパターンを使用してJMSトランスポートのJAX-RPC Webサービスを呼び出す、JMSリクエスト/レスポンスOracle Service Busビジネス・サービスを作成します。詳細は、3.1.15項「JMSトランスポート構成ページ(ビジネス・サービス)」を参照してください。
このビジネス・サービスは、JMSトランスポートを使用します。エンドポイントURIのJMSキューJNDI名の部分は、JMSトランスポートのJAX-RPC Webサービスの@WLJmsTransportアノテーションに指定したキュー属性と同じであることが必要です。例:

jms://localhost:7001/AJMSConnectionFactoryJNDIName/JmsTransportServiceRequestQueue

「対象 - 宛先」領域の「宛先」フィールドに割り当てるJMSキューのJNDI名は、「宛先」フィールドに表示されるOracle WebLogic Server名を対象としたJMSサーバーに関連付けられている必要があります。

注意:

Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項を参照してください。

2. ステップ1で作成したJMSリクエスト/レスポンス・ビジネス・サービスへのルーティング(またはサービス・コールアウト)アクションを含むOracle Service Busプロキシ・サービスを作成します。
ルーティング・アクションの「リクエスト・アクション」領域には、アウトバウンド・リクエスト・アクションのトランスポート・ヘッダーの設定を含める必要があります。トランスポート・ヘッダー・アクションを構成するときは、アウトバウンド・リクエスト・アクションの2つのJMSヘッダーを追加する必要があります。トランスポート・ヘッダー・アクションの構成方法の詳細は、2.4.32項「メッセージ・フローへのトランスポート・ヘッダー・アクションの追加と構成」を参照してください。

次に、手順を簡単に説明します。

1. トランスポート・ヘッダー・アクションを構成するには、「ヘッダーを追加」フィールドの「その他」を選択し、表示されたフィールドにURIを入力します。

2. 「ヘッダーを式に設定」を選択し、(JMSトランスポートのJAX-RPC Webサービスの@WLJmsTransportアノテーションで)contextPath属性とserviceUri属性に指定した値を続けて入力して式を作成します。各属性の値の前にはスラッシュを入力します。たとえば、@WLJmsTransportアノテーションが次のように指定されているとします。

@WLJmsTransport(
contextPath="transports",
serviceUri="JmsTransportService",
portName="JmsTransportPort",
queue="JmsTransportServiceRequestQueue"
)

トランスポート・ヘッダーを構成する場合、「XQueryテキスト」入力領域に次の式を入力します。

/transports/JmsTransportService

3. 2つ目のJMSヘッダーを指定するには、「ヘッダーの追加」フィールドの「その他」をもう一度選択し、関連するフィールドに_wls_mimehdrContent_Typeと入力します。

4. 「ヘッダーを式に設定」を選択し、「XQueryテキスト」入力領域にtext/xml; charset=UTF-8と入力します。

30.10.5.2 JAX-RPCクライアントからのJMSリクエスト/レスポンス・プロキシ・サービスの呼出し

JAX-RPC WebLogic Serverクライアントからプロキシ・サービスを呼び出すシナリオでは、プロキシ・サービスのインバウンド・レスポンスに_wls_mimehdrContent_Type JMSヘッダーを設定する必要があります。

着信JMSメッセージIDのパターン・リクエストにレスポンスを出すときのヘッダーを指定する必要があります。

たとえば、JAX-RPCクライアントからOracle Service Busプロキシ・サービスを呼び出し、続いてOracle WebLogic Server Webサービスを呼び出すシナリオでは、ルート・ノードの構成は次のとおりです。

リクエスト・パイプラインの場合

1. Webサービス・コンテキストのトランスポート・ヘッダーを、URI(例:interop/AllocJmsDocLit)に設定します。

2. _wls_mimehdrContent_Typeのトランスポート・ヘッダーを、text/xml; charset=UTF-8に設定します。

3. 「トランスポート・ヘッダーを設定」メニュー項目から「アウトバウンド・リクエスト」を選択します。

4. 「パイプラインを介してすべてのヘッダーを渡す」を有効にします。

レスポンス・パイプラインの場合

1. 空のトランスポート・ヘッダーを追加し、「トランスポート・ヘッダーを設定」メニューから「インバウンド・レスポンス」を選択します。

2. 「パイプラインを介してすべてのヘッダーを渡す」を有効にします。

注意:

トランスポート・ヘッダー・アクションの構成方法の詳細は、2.4.32項「メッセージ・フローへのトランスポート・ヘッダー・アクションの追加と構成」を参照してください。

30.10.6 JMSメッセージIDのパターン例

次の例で、JMSメッセージIDのパターンを使用する様々な方法について説明します。

- 30.10.6.1項「例1: JMSメッセージIDを使用してリクエスト/レスポンス・メッセージの相関を行うMQサービス」

- 30.10.6.2項「例2: Oracle Service Busプロキシ・サービスを使用したJAX-RPCクライアント」

- 30.10.6.3項「例3: Oracle WebLogic Server JAX-RPCリクエスト/レスポンス・サービスのクライアントとしてのOracle Service Bus」

30.10.6.1 例1: JMSメッセージIDを使用してリクエスト/レスポンス・メッセージの相関を行うMQサービス

図30-1では、リクエスト/レスポンス通信においてMQサービスをホストするサーバーがリクエストのメッセージIDをレスポンスの相関IDに返し、レスポンスをreplyToキューに送信します。レスポンスが戻り、JMSメッセージIDを使用して関連付けられます。Oracle Service BusのreplyTo宛先は、ビジネス・サービスの構成時に、クラスタのOracle Service Busノードごとに1つ設定されています。また、JMSまたはMQネイティブ・クライアントが、JMSメッセージIDのパターンを使用してJMSリクエスト/レスポンス・プロキシ・サービスを呼び出すことができます。クライアントは、レスポンスを受け取るキューにreplyToプロパティを設定する必要があります。

この使い方で重要なのは、JMSメッセージIDがリクエスト/レスポンス・メッセージの相関を行うことです。また、クラスタ・サーバーと同じ数のMQ Seriesアウトバウンド・レスポンス・キューを作成する必要があります。

図30-1 JMSメッセージIDを使用してリクエスト/レスポンス・メッセージの相関を行うMQサービス

30.10.6.2 例2: Oracle Service Busプロキシ・サービスを使用したJAX-RPCクライアント

図30-2は、Oracle Service Busプロキシ・サービスにメッセージを送信するJAX-RPCクライアントを表します(JAX-RPCインバウンドの場合)。JAX-RPCスタックは、レスポンスを受信するために一時的なキューを使用します。Oracle Service Bus JMSトランスポートでは、実行時にこの一時的なキューを使用します。

図30-2 Oracle Service Busプロキシ・サービスを使用したJAX-RPCクライアント

30.10.6.3 例3: Oracle WebLogic Server JAX-RPCリクエスト/レスポンス・サービスのクライアントとしてのOracle Service Bus

図30-3は、Oracle WebLogic Server JAX-RPCリクエスト/レスポンス・サービスとOracle Service Busプロキシ・サービスとの相互運用性を表します(JAX-RPCアウトバウンドの場合)。

図30-3 Oracle WebLogic Server JAX-RPCリクエスト/レスポンス・サービスのクライアントとしてのOracle Service Bus

注意:

1つ目のOracle WebLogic Serverドメインのプロキシ・サービスが2つ目のドメインのプロキシ・サービスにメッセージを送信する必要がある場合、まずドメイン1のパススルー・ビジネス・サービスにメッセージをルーティングする必要があります。ドメイン1とドメイン2の間のJMSストア・アンド・フォワードでは、ドメイン2のプロキシ・サービスにインバウンド・リクエスト・メッセージを転送します。JMSリクエスト/レスポンスを使用する場合、JMSストア・アンド・フォワードを使用して、ドメイン2からドメイン1にインバウンド・レスポンス・メッセージを転送することもできます。この場合、ドメイン2のプロキシ・サービスに対して、エクスポートされるインバウンド・リクエスト・キューとインポートされるインバウンド・レスポンス・キューをドメイン2で構成する必要があります。JMSストア・アンド・フォワードの構成に特に注意する必要があります。

30.11 JMSトランスポートの使用

JMSは、すべてのサービス・タイプのプロキシ・サービスおよびビジネス・サービス(トランスポート型付きサービスのビジネス・サービスを除く)の転送プロトコルとして選択できます。次の各項で説明するように、プロキシ・サービスおよびビジネス・サービスはJMSトランスポートを使用するように構成できます。

- 30.11.2項「JMS転送プロトコルを使用するプロキシ・サービスの構成」

- 30.11.5項「JMS転送プロトコルを使用するビジネス・サービスの構成」

詳細は、2.2項「ビジネス・サービスの操作」および2.3項「プロキシ・サービスの操作」を参照してください。ビジネス・サービスのエラー処理の詳細は、30.11.6項「エラー処理」を参照してください。

プロキシ・サービスを構成するときに、トランスポート・ヘッダー・アクションを使用してメッセージのヘッダー値を設定できます。詳細は、30.11.3項「トランスポート・ヘッダー」を参照してください。

Oracle Service BusとWebSphere MQの相互運用性の詳細は、第33章「MQトランスポート」を参照してください。

Oracle Service Busでは、サービスを構成するとき、あるいはオプションでカスタム・ワーク・マネージャをWLSに構成するとき、デフォルトのディスパッチ・ポリシーを使用できます。

30.11.1 セキュリティ

JMSトランスポートでは、双方向SSLはサポートされません。

30.11.2 JMS転送プロトコルを使用するプロキシ・サービスの構成

プロキシ・サービスを構成するときに、エンドポイントURIが次の形式の場合、JMS転送プロトコルを選択できます。

jms://<host:port[,host:port]*/connection_factory/jndi_destination>

説明:

- hostは、サービスをホストするシステムの名前です。

- portは、接続を行うポート番号です。

- [,host:port]*は、対応するポートで複数のホストを構成できることを示します。

- connection_factoryは、JNDI接続ファクトリの名前です。接続ファクトリ・キューを定義する方法の詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJMSシステム・モジュールのリソースの構成に関する項を参照してください。

- jndi_destinationは、JNDI宛先の名前です。

JMS宛先に複数のサーバーを指定するには、jms://host1:port,host2:port/connection_factory/jndi_destinationという形式のURIを使用します。

ここで、connection_factoryは、接続ファクトリ・キューの名前です。接続ファクトリ・キューを定義する方法の詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJMSシステム・モジュールのリソースの構成に関する項を参照してください。

注意:

Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項を参照してください。

JMS転送プロトコルを使用するプロキシ・サービスを構成するには、3.1.16項「JMSトランスポート構成ページ(プロキシ・サービス)」を参照してください。

30.11.3 トランスポート・ヘッダー

JMSトランスポートに関連する各種のヘッダーを表30-2に示します。順序単位ヘッダーを除き、すべてのヘッダーはアウトバウンド・リクエストとインバウンド・レスポンスの両方で共通になっています。

表30-2 JMSトランスポート・ヘッダー

ヘッダー

説明

JMSMessageID

JMSMessageIDヘッダー・フィールドは、プロバイダによって送信されたメッセージをユニークに識別する値を格納します。

JMSDeliveryMode

JMSDeliveryModeヘッダー・フィールドは、メッセージの送信時に指定された配信モードを格納します。

JMSExpiration

このヘッダー・フィールドは、送信メソッドで指定された存続時間と現在のGMT値の合計として算出されるメッセージの有効期限を格納します。

JMSPriority

JMSPriorityヘッダー・フィールドは、メッセージの優先度を格納します。

メッセージを送信すると、このフィールドは無視されます。送信操作が完了すると、メッセージを送信したメソッドによって指定された値が保持されます。

JMSType

JMSTypeヘッダー・フィールドは、メッセージの送信時にクライアントによって指定されたメッセージ・タイプを格納します。

JMSCorrelation ID

メッセージを別のメッセージにリンクするために使用されます。たとえば、リクエスト・メッセージをレスポンス・メッセージにリンクできます。

JMSXAppID

JMSで定義されるプロパティの1つで、メッセージを送信するアプリケーションのIDを指定します。このプロパティは、JMSプロバイダによって設定されます。

JMSXGroupID

JMSで定義されるプロパティの1つで、メッセージが属するメッセージ・グループのグループIDを指定します。このプロパティは、クライアントによって設定されます。

JMSXGroupSeq

JMSで定義されるプロパティの1つで、メッセージ・グループ内でのメッセージの順序を指定します。

JMS_IBM_Format

アプリケーション・データの性質が含まれます。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.xms.doc/props/prp_jms_ibm_format.htmlを参照してください。

JMS_IBM_Report_Exception

例外レポートをリクエストします。また、メッセージからレポート・メッセージに保持する必要があるアプリケーション・データの量も指定します。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.xms.602.doc/props/prp_jms_ibm_rep_exprn.htmlを参照してください。

JMS_IBM_Report_Expiration

期限切れレポートをリクエストします。また、メッセージからレポート・メッセージに保持する必要があるアプリケーション・データの量も指定します。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r1mx/index.jsp?topic=/com.ibm.websphere.xms.610.doc/props/prp_jms_ibm_rep_exprn.htmlを参照してください。

JMS_IBM_Report_COA

着信確認レポートをリクエストします。また、メッセージからレポート・メッセージに保持する必要があるアプリケーション・データの量も指定します。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.xms.doc/props/prp_jms_ibm_rep_coa.htmlを参照してください。

JMS_IBM_Report_COD

配信確認レポートをリクエストします。また、メッセージからレポート・メッセージに保持する必要があるアプリケーション・データの量も指定します。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r1mx/topic/com.ibm.websphere.xms.612.doc/props/prp_jms_ibm_rep_cod.htmlを参照してください。

JMS_IBM_Report_PAN

肯定アクション通知レポートをリクエストします。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.xms.doc/props/prp_jms_ibm_rep_pan.htmlを参照してください。

JMS_IBM_Report_NAN

肯定アクション通知レポートをリクエストします。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.xms.doc/props/prp_jms_ibm_rep_nan.htmlを参照してください。

JMS_IBM_Report_Pass_Msg_ID

レポートまたは返信メッセージのメッセージ識別子が元のメッセージの識別子と同じになるようにリクエストします。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.xms.doc/props/prp_jms_ibm_rep_pmid.htmlを参照してください。

JMS_IBM_Report_Pass_Correl_ID

レポートまたは返信メッセージの相関識別子が元のメッセージの識別子と同じになるようにリクエストします。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.xms.doc/props/prp_jms_ibm_rep_pcid.htmlを参照してください。

JMS_IBM_Report_Discard_Msg

指定の宛先に配信できなかった場合にメッセージを廃棄するようにリクエストします。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/topic/com.ibm.websphere.xms.602.doc/props/prp_jms_ibm_rep_dism.htmlを参照してください。

JMS_IBM_MsgType

メッセージのタイプ。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.xms.doc/props/prp_jms_ibm_msgtype.htmlを参照してください。

JMS_IBM_Feedback

これはレポート・メッセージの性質を指定します。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.xms.doc/props/prp_jms_ibm_feedback.htmlを参照してください。

JMS_IBM_Last_Msg_In_Group

メッセージがメッセージ・グループの最後のメッセージかどうかを指定します。詳細は、http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.xms.doc/props/prp_jms_ibm_last_mig.htmlを参照してください。

JMS_BEA_UnitOfOrder

このヘッダーはリクエストおよびレスポンスに有効です。

30.11.3.1 トランスポート・ヘッダーの構成

メッセージ・フローでは、インバウンド・リクエストおよびアウトバウンド・リクエストの両方についてトランスポート・ヘッダーを構成できます。JMSトランスポートに関連するトランスポート・ヘッダーについては、30.11.3項「トランスポート・ヘッダー」を参照してください。

パイプラインで、トランスポート・ヘッダー・アクションを使用してメッセージのヘッダー値を設定します。トランスポート・ヘッダー・アクションの追加については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のトランスポート・ヘッダー・アクションの追加に関する項を参照してください。

注意:

JMSトランスポート・ヘッダーの制限の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のテスト・コンソールでのランタイムによるトランスポート設定の使用方法の理解に関する項およびトランスポート・ヘッダー・アクションで指定するトランスポート・ヘッダー値の制約に関する項を参照してください。

30.11.4 メッセージでのJavaオブジェクトの送信および受信

JMSトランスポートを使用してJavaオブジェクトを直接送信できます。リクエストまたはレスポンスでJavaオブジェクトのサポートを有効にするには、「メッセージ・サービス」タイプのプロキシ・サービスまたはビジネス・サービス(あるいはその両方)を作成し、Oracle Service Busを通じてJavaオブジェクトを送信するか受信するかに応じて、リクエストまたはレスポンスの「メッセージング」ページで「Java」を選択します。

JMS宛先からのJavaオブジェクトのデキューには、Javaオブジェクトのデシリアライズが伴います。この処理を有効にするには、JARファイルにデキューされる予定のJavaオブジェクトのJavaクラスをパッケージ化して、JARをOracle Service Busプロジェクトにインポートする必要があります。次に、サービスに対するJMSトランスポート固有の構成ページで、「クライアントJar」フィールドでJARを選択します。「クライアントJar」フィールドは、リクエストのメッセージ・タイプとしてJavaを選択しているときはJMSプロキシ・サービスで、また、レスポンスのメッセージ・タイプとしてJavaを選択しているときはビジネス・サービスで使用できます。詳細は、4.2項「ビジネス・サービスの構成」および4.3項「プロキシ・サービスの構成」を参照してください。

Oracle Service BusのJavaオブジェクトは、パイプライン・オブジェクト・リポジトリに格納され、<java-content ref="jcid" />要素および属性によってSOAP本体で参照されます(jcidはオブジェクト・リポジトリのオブジェクトに対するキーです)。JavaオブジェクトがNULLの場合、オブジェクトはパイプラインでref="jcid:null"として表現されます。

各メッセージで使用可能なJavaオブジェクトは1つだけです。

Javaタイプのメッセージ・タイプについて、Oracle Service Busはラージ・メッセージ(コンテンツ・ストリーミング)や、テスト・コンソールでのJavaタイプ・サービスのテストはサポートしていません。

30.11.5 JMS転送プロトコルを使用するビジネス・サービスの構成

ビジネス・サービスを構成するときに、エンドポイントURIが次の形式の場合、JMS転送プロトコルを選択できます。

jms://<host:port[,host:port]*/connection_factory/jndi_destination >

説明:

- hostは、サービスをホストするシステムの名前です。

- portは、接続を行うポート番号です。

- [,host:port]*は、対応するポートで複数のホストを構成できることを示します。

- connection_factoryは、JNDI接続ファクトリの名前です。接続ファクトリ・キューを定義する方法の詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJMSシステム・モジュールのリソースの構成に関する項を参照してください。

- jndi_destinationは、JNDI宛先の名前です。

JMS宛先に複数のサーバーを指定するには、jms://host1:port,host2:port/connection_factory/jndi_destinationという形式のURIを使用します。

ここで、connection_factoryは、接続ファクトリ・キューの名前です。接続ファクトリ・キューを定義する方法の詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJMSシステム・モジュールのリソースの構成に関する項を参照してください。

注意:

Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項を参照してください。

JMSビジネス・サービスを登録する場合、WSDLファイルのURIをサービス定義に追加するときに、手動で編集する必要があります。URIの形式は次のとおりです。

jms://<host>:<port>/connection_factory/jndi_destination

JMS転送プロトコルを使用するビジネス・サービスを構成するには、3.1.15項「JMSトランスポート構成ページ(ビジネス・サービス)」を参照してください。

注意:

ビジネス・サービスでJMS IDによるレスポンス相関を使用するようにJMSリクエスト/レスポンス・アプリケーションを構成するには、次の作業を行う必要があります。

- 選択した1つのJMSサーバーをターゲットとするUDQとローカル・キューを作成します。

- クラスタにUDQをデプロイし、すべてのJMSに対してメンバー・キューを作成するUDQのデフォルトのターゲット指定を無効にします。

30.11.6 エラー処理

アプリケーション・エラーおよび通信エラーを処理するJMSトランスポート・ビジネス・サービスは、次のように構成できます。

- アプリケーション・エラー
アプリケーション・エラーが発生したときにビジネス・サービスのエンドポイントURIを再試行するかどうかを指定できます。詳細は、4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」の「アプリケーション・エラーの再試行」オプションを参照してください。

リクエスト/レスポンスを使用するように構成されたJMSビジネス・サービスでは、レスポンス・メッセージのSystem.getProperty("com.bea.wli.sb.transports.jms.ErrorPropertyName", "SERVER_ERROR")プロパティがtrueである場合にアプリケーション・エラーが発生します。このシナリオでは、JMSトランスポート・プロバイダは、TRANSPORT_ERROR_APPLICATIONエラー・コードを使用してエラー・メソッドを呼び出します。

- 通信エラー
通信エラーが発生したときにビジネス・サービスのURIをオフラインにするように構成できます。ビジネス・サービスの操作設定を構成するときに、指定した再試行間隔の後、ビジネス・サービスのエンドポイントURIがオフラインになるように設定できます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のビジネス・サービスの操作設定の構成に関する項およびビジネス・サービスのエンドポイントURIメトリックの表示に関する項を参照してください。

次のアクティビティのいずれかでJMS例外またはネーミング例外が発生すると、通信エラーが発生します。

- JMS接続ファクトリのルックアップ

- JMS接続ファクトリからのJMS接続の作成

- 接続オブジェクトを使用したJMSセッションの作成

- JMS宛先のルックアップ

- セッション・オブジェクトからの送信者の作成

- 送信者および宛先オブジェクトを使用したJMSメッセージの送信

- Javaオブジェクトにおけるパイプライン例外
Javaオブジェクト・メッセージのビジネス・サービスまたはJavaコールアウトへのルーティング中などに、JMSプロキシ・サービスで例外が発生したら、プロキシ・サービスが例外インスタンスにアクセスして、それを呼出し元のクライアントに返すことができるように、メッセージ・ペイロードを正しく書式設定してください。必ず、ペイロードは次の形式に従ってください。

<soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<ctx:java-content ref="key1"
xmlns:ctx="http://www.bea.com/wli/sb/context" />
</soap:Body>

ここで、key1はオブジェクト・リポジトリ内のJavaオブジェクトに対するキーです。ペイロードがこの形式ではない場合、パイプラインはnullのペイロードをインバウンドJMSトランスポートに渡します。

エラー・ハンドラの使用

Javaオブジェクトに関連するパイプライン・エラーは、エラー・ハンドラを使用して捕捉できます。エラー・ハンドラの$fault変数には、例外インスタンスへの参照が含まれます("java-exception"要素)。

$fault変数に例外インスタンスへの参照が含まれない場合、変数$faultの情報を使用するエラー・ハンドラ内でJavaコールアウトを使用して、前述の$bodyペイロードの形式で例外インスタンスを生成できます。$bodyをインバウンドJMSトランスポートに対するペイロードとして使用できるように、失敗時の返信アクションを使用する必要があります。

31 ローカル・トランスポート

この章では、ローカル・トランスポートの概要と、プロキシ・サービスでの使用および構成方法について説明します。

この章の内容は次のとおりです。

- 31.1項「はじめに」

- 31.2項「ローカル・トランスポート・プロキシ・サービスの機能と特性」

- 31.3項「ローカル・トランスポート・プロキシ・サービスのメッセージ処理」

- 31.4項「ローカル・トランスポート・プロキシ・サービスの使用方法」

- 31.5項「ローカル・プロキシでのOracle WSMセキュリティの使用」

- 31.6項「制限事項」

31.1 はじめに

通常、サービス・バス・アーキテクチャには、複雑なメッセージ・フローが含まれています。そのメッセージ・フローでは、メッセージは、より大きな複数のプロキシ・サービス・フローにまとめられる複数のプロキシ・サービスにルーティングされています。これらの複数のプロキシ・サービスのシナリオにおける個々のプロキシ・サービスは、フローの次のプロキシ・サービスにルーティング、パブリッシュ、またはコールアウトされます。

複数のプロキシ・サービスを設計する理由は、エンド・ツー・エンドのメッセージ・フローの様々なコンポーネントのモジュール性と区分化をサポートするためです。

複数のプロキシ・サービス・フローでローカル・トランスポートを使用することで、次の機能が確実にサポートされます。

- 効率的でセキュアな通信。

- トランザクションとトランザクション動作の伝播。

- IDをエンド・ツー・エンドで伝播できるようなセキュリティ・コンテキストの伝播。また、セキュリティ・コンテキストの伝播により、複数サービス・フロー内の最初のプロキシ・サービスのクライアントを、フロー内で以降に呼び出されるプロキシ・サービスが認可できるようになります。このため、詳細なアクセス制御がサポートされます。

31.2 ローカル・トランスポート・プロキシ・サービスの機能と特性

ローカル・トランスポート・ベースのプロキシ・サービスは、その他のプロキシ・サービスからのみ呼び出すことができ、その他のクライアントからは呼び出せません。呼出しはOracle Service Busによって最適化されます。ローカル・プロキシ・サービスはURIを持ちません。ただし、ローカル・トランスポート・プロキシ・サービスによってサポートされるサービスとインタフェースのタイプには制約はありません。1つの例外は、SAMLがパス・スルー・シナリオでのみサポートされることです。

呼出しを行うプロキシ・サービスのサービス品質(QoS)がExactly Onceに定義されている場合、そのサービスのトランザクションは、ローカル・トランスポート・プロキシ・サービスに伝播されます。つまり、呼び出されたローカル・トランスポート・プロキシ・サービスは呼出しを行ったプロキシ・サービスのトランザクション動作を継承します。

プロキシ・サービスはトランスポート・レベルまたはメッセージ・レベルで認証を行うことができます。メッセージ・レベルが有効な場合は、メッセージ・レベルで認証されたクライアントが有効になります。メッセージ・レベルで認証されたクライアントが有効でない場合は、トランスポート・レベルで認証されたクライアントが有効になります(トランスポート・レベルが有効な場合)。メッセージ・レベルおよびトランスポート・レベルで認証されたクライアントのいずれも有効になっていない場合、匿名のクライアントが有効なクライアントになります。

プロキシ・サービスがローカル・トランスポート・プロキシ・サービスを呼び出す場合、呼出しを行うプロキシ・サービスの有効なクライアントが、呼び出されるローカル・プロキシ・サービスのトランスポート・レベルのクライアントになります。ローカル・トランスポート・プロキシ・サービスでは、アクセス制御ポリシーを使用して、このクライアントにアクセスを認可できます。この方法により、エンド・ツー・エンドのメッセージ・フロー全体で、最初のプロキシ・サービスのクライアントを、後続のすべてのプロキシ・サービスに伝播できます。

ローカル・トランスポート・プロキシ・サービスは、ユーザー定義のトランスポート・ヘッダーをサポートします。プロキシ・サービスでHTTPトランスポートを使用するシナリオを想定してください。HTTPトランスポートにより、ローカル・プロキシ・サービスにルーティングし、HTTPプロキシ・サービスはトランスポート・ヘッダー・アクションを使用して、ヘッダーをローカル・プロキシ・サービスに渡します。このシナリオでは、HTTPプロキシ・サービスがContent-Typeヘッダーを受け取った場合、このヘッダーをユーザー・ヘッダーとしてローカル・トランスポートで使用できるため、型付きのトランスポート・ヘッダーとしてではなく、標準のユーザー・ヘッダーを使用してアクセスできます。

Oracle Service Busのテスト・ブラウザからローカル・トランスポート・プロキシ・サービスを呼び出すことができます。その他のすべてのサービスと同様に、ローカル・トランスポート・プロキシ・サービス用にメトリックが収集されます。

31.3 ローカル・トランスポート・プロキシ・サービスのメッセージ処理

ローカル・トランスポート・プロキシ・サービスのメッセージ処理のオプションを指定できます。

具体的には、該当する場合に、ローカル・トランスポート・プロキシ・サービスがMTOM/XOP形式でインバウンド・メッセージをデコードおよび解析し、MTOM/XOP形式を使用してレスポンスを送信できます。SOAP Message Transmission Optimization Mechanism (MTOM)は、Webサービス間でバイナリ・データを送受信する方法です。MTOMは、XML-binary Optimized Packaging (XOP)を使用してバイナリ・データを転送します。

同様に、ローカル・トランスポート・プロキシ・サービスがHTTPトランスポート・プロキシ・サービスを通じてチェーンされている場合、ローカル・トランスポート・プロキシ・サービスは添付ファイルをディスクにページし、(添付ファイルのコンテンツをメモリーにバッファリングせずに)ストリーミング形式で処理するかどうかの設定を継承します。つまり、もし外部のHTTPトランスポート・プロキシ・サービスが添付ファイルをディスクにページするように構成されている場合、チェーンされたローカル・トランスポート・プロキシ・サービスもこの形式で添付ファイルを処理します。これにより、プロキシ・サービスで、大きな添付ファイルを効率的に処理できます。

プロキシ・サービスのメッセージ処理の構成の詳細は、4.3.4項「プロキシ・サービスの「メッセージ処理構成」ページ」を参照してください。

31.4 ローカル・トランスポート・プロキシ・サービスの使用方法

ローカル・トランスポート・プロキシ・サービスを使用してサポートされる一般的なシナリオは、プロキシ・サービスを異なるトランスポートを使用して呼び出す必要があるシナリオです。これは、メッセージ・フローのパスで、フロント・エンド・プロキシ・サービス(トランスポートごとに1つのサービス)のセットをローカル・トランスポート・プロキシ・サービスの前に置くことによって実現されます。

これらのフロント・エンド・プロキシ・サービスは、メッセージをローカル・トランスポート・プロキシ・サービスにルーティングするだけです。次の図は、このシナリオについて説明しています。

図31-1 ローカル・トランスポートを使用したコンバージェンスの実装

もう1つの一般的なシナリオは、プロキシ・サービスのタイプが任意のSOAPまたは任意のXMLである場合に、プロキシ・サービスが、異なるエンタープライズ・システムに対するフロント・エンドとして機能するシナリオです。このフロント・エンド・プロキシ・サービスでは、様々なフォーマットでメッセージを受信し、受信したすべてのメッセージに共通の方法(WS-Addressing SOAPヘッダーなど)を使用して、メッセージを適切なローカル・トランスポート・プロキシ・サービスにルーティングできます。

このシナリオでは、フロント・エンド・プロキシ・サービスは、エンタープライズ・システムまたはメッセージ・フォーマットとセマンティクスの情報をほとんど持たない汎用ルーターとして機能します。設計時にルーティング・ルールの情報をさらに抽象化するために、フロント・エンド・プロキシ・サービスは、動的なルーティングを使用してメッセージをローカル・トランスポート・プロキシ・サービスにルーティングできます。動的なルーティングがプロキシ・サービスでどのように使用されるかを示す例は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の動的ルーティングの使用に関する項を参照してください。

フロント・エンド・サービスからメッセージをルーティングされた各ローカル・トランスポート・プロキシ・サービスは、今度は、特定のビジネス・サービスのフロント・エンド・プロキシ・サービスとして機能します。ローカル・トランスポート・プロキシ・サービスは、ルーティングするビジネス・サービスで必要なメッセージ・フォーマットを認識しています。

このシナリオでは、これらのローカル・トランスポート・プロキシ・サービスは、機能上のプロキシ・サービスとして動作します。機能上のプロキシ・サービスの役割は、特定のビジネス・サービスの呼出しにアクセス制御を適用したり、ターゲット・ビジネス・サービスを適切に呼び出すために必要なメッセージのトランスフォーメーションを実行したりすることです。次の図は、このシナリオについて説明しています。

図31-2 ローカル・トランスポートを使用した複数のビジネス・サービスへのアクセス

31.4.1 プロキシ・サービス間でのSOAPフォルトの伝播

ローカル・プロキシ・サービスをチェーンすると、$fault変数のSOAPフォルトは、あるプロキシ・サービス・パイプラインから別のプロキシ・サービス・パイプラインに自動的に伝播されません。次の例を参照してください。

クライアント→P1→P2→ビジネス・サービス→バックエンド・サービス(P1とP2はプロキシ・サービス)。

バックエンド・サービスでSOAPフォルトが発生すると、そのフォルトはP2の$fault変数に伝播されます。ただし、P2のSOAPフォルトの値は、P1の$fault変数に自動的に伝播されないため、クライアントに戻されません。

SOAPフォルトをあるプロキシから別のプロキシに伝播するには:

1. P2で、失敗時の返信アクションを含むエラー・ハンドラを追加します。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の返信アクションの追加に関する項を参照してください。これにより、$bodyにフォルト情報を格納したSOAPメッセージが戻されます。

2. P1で、目的のSOAPエラーの詳細をクライアントに戻す必要に応じて、$bodyを変換します。

Oracle Service BusによるSOAPフォルトの処理方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のエラー・メッセージの生成とレポートおよび返信に関する項を参照してください。

31.5 ローカル・プロキシでのOracle WSMセキュリティの使用

Oracle Web Services Manager (Oracle WSM)のサービス・ポリシーをローカル・プロキシ・サービスに添付して、各ローカル・プロキシに着信するメッセージに特定のセキュリティ制御を適用できます。

この項では、プロキシ・サービスがセキュリティ・ヘッダーを含むメッセージをローカル・プロキシなどの他のプロキシ・サービスに転送する場合に、Oracle Service Busが実行時にWS-Securityを処理する方法について説明します。メッセージ転送は、ルーティング、サービス・コールアウト、パブリッシュなどのアクションを通じて発生します。

プロキシ・サービスは、メッセージを他のプロキシ・サービスに転送する場合に、アウトバウンドWS-Security処理を実行しません。次の図は、この動作を説明しており、プロキシ間接続の異なるシナリオにおけるWS-Security構成を示しています。他のプロキシ・サービスからメッセージを受信するローカル・プロキシ・サービスで適切にOracle WSMサービス・ポリシーを使用できるように、これらのシナリオを使用してその動作を理解してください。

注意:

次のシナリオでは、ローカル・プロキシにメッセージを転送するフロント・エンド・プロキシ・サービスについて説明します。ただし、この項で説明している動作は、トランスポート・タイプにかかわらず、プロキシ間接続の呼出しにも適用されます。

図31-3は、次のいずれかの特徴を持つフロント・エンド・プロキシにメッセージを送信するクライアント・ポリシーが適用されたクライアントを示しています。

- フロント・エンド・プロキシが、アクティブであり、リクエストのすべてのWS-Securityヘッダーまたはそれらのヘッダーのサブセットのみに対してインバウンド処理を実行するOracle WSMポリシーを含む場合。たとえば、リクエストに認証ヘッダーとメッセージ保護ヘッダーの両方が含まれる場合、認証ポリシーは処理されますが、メッセージ保護ポリシーは処理されません。プロキシには、Oracle WSMログ・ポリシーなどのセキュリティ以外のポリシーも含まれることがあります。

- フロント・エンド・ポリシーが、パッシブであり、Oracle WSMポリシーを含む場合。

- フロント・エンド・プロキシがOracle WSMポリシーを含まない場合。

どの場合でも、フロント・エンド・プロキシは、メッセージ内に少なくとも1つのセキュリティ・ヘッダーを検出します。プロキシ・サービスは、アウトバウンドWS-Security処理を実行せずにこのメッセージをローカル・プロキシに渡します。ローカル・プロキシは、Oracle WSMポリシーを含む場合と含まない場合があります。

図31-3では、予期されるセキュリティ・ヘッダーがメッセージに含まれるため、ローカル・プロキシ2は例外をスローせずにメッセージを受信します。セキュリティ処理を部分的に実行するポリシーをフロント・エンド・プロキシが含む場合でも(認証処理は行うがメッセージ保護処理は行わないなど)、転送されたメッセージにはセキュリティ・ヘッダーが含まれます。

図31-3 ローカル・プロキシにセキュリティ・パススルーを行うフロント・エンド・プロキシ

図31-4は、フロント・エンド・プロキシにメッセージを送信するクライアント・ポリシーが適用されたクライアントを示しています。フロント・エンド・プロキシは、アクティブであり、メッセージのすべてのWS-Securityヘッダーを処理するOracle WSMサービス・ポリシーを含みます。インバウンド・サービス・ポリシーが処理され、そのセキュリティ・ヘッダーのメッセージが削除されます。フロント・エンド・プロキシは、他のプロキシにメッセージを転送するため、アウトバウンドWS-Security処理は実行されず、セキュリティ・ヘッダーのないメッセージがローカル・プロキシに転送されます。一方のローカル・プロキシには、セキュリティ・ヘッダーを予期しているOracle WSMサービス・ポリシーが含まれており、セキュリティ・ヘッダーのないメッセージが到着すると例外がスローされます。他方のローカル・プロキシには、セキュリティ・ポリシーではなく施行の発生しないOracle WSMポリシーが含まれているため、セキュリティ・ヘッダーのないメッセージは正常にパススルーされます。

図31-4 ローカル・プロキシへの転送前にすべてのセキュリティ・ヘッダーを処理するフロント・エンド・プロキシ

注意:

この項で説明している動作は、WLS 9ポリシーを含むプロキシ・サービスには適用されません。プロキシ・サービスがWLS 9ポリシーを含む別のプロキシ・サービスにメッセージを転送する場合、転送側のプロキシは、アウトバウンド・セキュリティ処理を実行します。WLS 9ポリシーの詳細は、第51章「Oracle Service Busプロキシ・サービスとビジネス・サービスでのWS-Policyの使用」を参照してください。

31.6 制限事項

ローカル・トランスポートの制限は次のとおりです。

- ローカル・トランスポートを使用してプロキシ・サービスを呼び出せるのは、別のプロキシ・サービスからのみです。

- ローカル・トランスポートを使用するプロキシ・サービスはUDDIにはパブリッシュできません。

32 WSトランスポート

この章では、WSトランスポートの概要と、サービスでの使用および構成方法について説明します。

Web Services Reliable Messaging (WSRM)の仕様では、ソフトウェアやシステム、ネットワークに障害が発生した場合でも、分散アプリケーション間で信頼性のあるメッセージ配信を可能にするプロトコルについて記述されています。

WS-ReliableMessagingは、IBM、Oracle、Microsoft、およびTIBCO Systemsによって共同開発された仕様です。この仕様は、OASISによって開発された競合関係にある仕様のWS-Reliability (WSR)とは異なります。

WSRMの機能は、Oracle Service BusではWSトランスポートとして使用できます。Oracle Service Busは、2005年2月に提出された仕様をサポートしています。この仕様の詳細は、「Web Services Reliable Messagingプロトコル(WS-ReliableMessaging)」(http://schemas.xmlsoap.org/ws/2005/02/rm/)を参照してください。

WSトランスポートでは、WSRMポリシーを使用するWSDLに基づいてSOAP 1.1およびSOAP 1.2から派生したサービスのインバウンドおよびアウトバウンド・リクエストの両方が実装されています。ただし、WSRMポリシーはWSDLの一部である場合と、サービスに付加される場合とがあります。さらに、セキュリティ・ポリシーもWSDLで宣言される場合と、WSDLベースのサービスに関連付けられる場合があります。Oracle Service Bus管理コンソールを使用してWSRMポリシーを含むWSDLベースのサービスを構成する場合、サービスに対してWSトランスポートを選択する必要があります。Oracle Service Busでは、サービスの構成が保存されるときにWSRMポリシーがチェックされて、WSRMポリシーがサービスに関連付けられたWSDLで宣言されていない場合、検証エラーがスローされます。

WSトランスポートの主要な機能を次に示します。

- 一方向およびリクエスト/レスポンスのメッセージ・パターン。詳細は、32.1.1項「メッセージング・パターン」を参照してください。

- WSトランスポートと他のトランスポート(JMS、SB、およびTuxedoトランスポート)間でXAトランザクションをサポートする「必ず1回(Exactly Once)」送信。

- 基本認証を使用するHTTPS、およびクライアント認証を使用しないクライアント証明書認証(双方向SSL)。詳細は、32.2項「サービスの認証と認可」を参照してください。

- リソースのインポート中のWSRMセキュリティ構成の保持。詳細は、32.5項「リソースのインポートとエクスポート」を参照してください。

- Oracle Service Bus管理コンソールによるWSプロキシ・サービスに対するトランスポートレベル・アクセス制御ポリシーの割当て。このポリシーを割り当てることができるのは管理者に限られます。詳細は、32.3.4項「プロキシ・サービスへのトランスポート・アクセス制御の割当て」を参照してください。

- 2004年8月に提出されたWS-Addressingの仕様。詳細は、「Web Services Addressing (WS-Addressing)」(http://www.w3.org/Submission/ws-addressing/)を参照してください。

- WS-I基本プロファイルへの準拠。詳細は、32.1.4項「Webサービスの相互運用性」を参照してください。

- Oracle Service BusのWSプロキシに対するサービスの品質(QoS)は、常に「必ず1回」に設定されます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス品質に関する項を参照してください。
QoSは<beapolicy:QOS>要素を使用して、RMポリシー・ファイルでのみ設定できます。この要素にはQOSという属性が1つあり、次の値のいずれかを使用します。

- AtMostOnce

- AtLeastOnce

- ExactlyOnce

- OnOrder

注意:

WSトランスポートのQoSは、Oracle Service BusのQoSとは異なります。

- プロキシ・サービスまたはビジネス・サービスのWSRMポリシーに関連付けられるのは、SOAP 1.1およびSOAP 1.2に基づくWSDLに限られます。詳細は、32.3.3項「WSトランスポートを使用するプロキシ・サービスの構成」および32.3.6項「WSトランスポートを使用するビジネス・サービスの構成」を参照してください。

32.1 サポートされている機能

ここでは、WSトランスポートでサポートされる機能の詳細について説明します。

32.1.1 メッセージング・パターン

WSRMでは、一方向とリクエスト/レスポンスの両方のメッセージング・パターンがサポートされます。WSトランスポートでは、信頼性のあるレスポンスはサポートされていません。リクエストには常に信頼性がありますが、レスポンスには信頼性がありません。

ビジネス・サービスの場合、外部Webサービスへのリクエストの送信は非同期で行われます。呼出しの成功は、メッセージがRMレイヤーに無事に到達し、確実に配信されることを示します。しかし、呼出しに成功しても、メッセージがエンドポイントに送信され、Webサービスの呼出しに成功するという意味ではありません。

リクエスト/レスポンス・メッセージング・パターンの場合、リクエストに対するレスポンスを外部Webサービスから受信します。この場合、リクエストとレスポンスのパスには2つの異なるトランザクションがあり、2つの異なるスレッドで実行されます。レスポンス・パイプラインは、一方向メッセージングのメッセージ・パターンで均等に実行されます。一方向のパターンの場合、レスポンス・パイプラインの呼出しは、メッセージが確実にターゲットの宛先に到達し、Webサービスの呼出しが完了したことを意味します。

32.1.2 ポリシー

WSトランスポートを使用するプロキシ・サービスまたはビジネス・サービスは、RMアサーションを使用するWS-Policyを持つ必要があります。このことは逆に、WSトランスポート以外のトランスポートを使用するサービスではRMアサーションを使用するWS-Policyを持てないことを示しています。WSトランスポートでは、RMアサーションを使用するWS-PolicyとWSSP v1.2トランスポート・レベル・セキュリティ・アサーションがサポートされます。

ただし、WSSP v1.2メッセージ・レベル・セキュリティ・アサーションと9.X Oracle独自のセキュリティ・アサーションはサポートされません。RMアサーションは、操作レベルや操作のリクエスト/レスポンス・レベルではなく、サービス・レベルでのみバインドされる必要があります。

注意:

WS-Policyで使用するRMアサーションは1つに限られます。

32.1.2.1 WS-Policyの構成

WS-Policyは、次の2つの方法のどちらかを使用して構成できます。

- WS-Policyの構成をサービスに関連付けられたWSDLの一部として指定します。WSDLで指定されるポリシーは、WSDLに含まれているか、あるいはWSDLで参照されています。

- Oracle Service Bus管理コンソールを使用してWS-Policyをサービスに割り当てます。

注意:

サービスにセキュリティ・ポリシーを関連付けるには、この2つの方法のどちらか1つのみを使用できます。そのため、Oracle Service Bus管理コンソールを使用してポリシーを構成した場合、WSDLで定義されているポリシーはすべて無視されます。

32.1.3 サイズの大きいメッセージ・コンテンツのストリーミング

WSトランスポートでは、基礎となるインフラストラクチャ(WLS JAX-RPCスタック)で完全に具体化されたペイロードを使用しているため、サイズの大きいメッセージのストリーミングのサポートがありません。ただし、プロキシ・サービスでサイズの大きいメッセージの処理を構成した場合は、WSトランスポートによってOracle Service Busのストリーミングの最適化が使用されて、メッセージはJavaオブジェクトに完全に具体化されます。サイズの大きいメッセージの処理でコンテンツをストリーミングする場合は、プロキシ・サービスの構成中に、メモリーまたはディスクにコンテンツのバッファリングを行うようにします。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の本文コンテンツのストリーミングに関する項を参照してください。

32.1.4 Webサービスの相互運用性

WSトランスポートでは、WS-I基本プロファイルによってWebサービスの相互運用性をサポートします。現在、Oracle Service Busプロキシ・サービスはWS-I基本プロファイルの制限に従っていません。しかし、このトランスポートを使用するように構成されたすべてのサービスは、WS-I基本プロファイルの仕様に厳密に従っています。WSプロキシ・サービスにはサービスの構成にWS-I準拠のチェックがなく、常にWS-I基本プロファイルに従います。WS-I基本プロファイルはSOAP 1.1にのみ適用されるため、このことはSOAP1.1 WSDLバインディングに対して有効です。

32.2 サービスの認証と認可

この項では、プロキシ・サービスとビジネス・サービスが認証および認可される方法について説明します。

32.2.1 プロキシ・サービスの認証

WSプロキシ・サービスでは基本認証とクライアント証明書(双方向SSL)認証の両方をサポートします。WS-Policyで基本認証が指定された場合は、WSプロキシ・サービスに対するすべてのHTTPリクエストには、RMプロトコル・メッセージも含めて、有効なユーザー名とパスワードが含まれている必要があります。

プロキシ・サービス認証のサポートは次のように行われます。

- プロキシ・サービスが参照するサービス・キー・プロバイダに割り当てられたSSLキー・ペアを使用したクライアント証明書のアウトバウンド認証。

- WSプロキシ・サービス(基本認証を使用する)による他の任意のアウトバウンド・トランスポート、またはアウトバウンドWSSユーザー名トークンに対するユーザー名とパスワードの識別の伝播。

- WSプロキシ・サービス(基本認証または双方向SSL認証)と他の任意のトランスポートとの間の資格証明のマッピング。

- WSプロキシ・サービスからRMクライアントへのHTTPまたはHTTPSによる非同期レスポンスの送信。プロキシ・サービスとビジネス・サービスで使用されるデフォルトのプロトコルはHTTPです。

- WSプロキシ・サービスから、RMクライアントによって指定されるAcksToまたはReplyToエンドポイント参照に接続するRMクライアントへの非同期レスポンス。RMクライアントはHTTP URLまたはHTTPS URLのどちらかを使用できます。RMクライアントがHTTPSを使用する場合、RMクライアントはSSLハンドシェイク中にクライアント証明書をリクエストできます。WSトランスポートでは、リクエスト時にサービス・キー・プロバイダのSSLのキー・ペアを使用します。

32.2.2 プロキシ・サービスの認可

管理者は、Oracle Service Bus管理コンソールでトランスポートレベルのアクセス制御ポリシーをWSプロキシ・サービスに割り当てることができます。他のすべてのトランスポートと同様に、このポリシーは、インバウンド・トランスポート・プロバイダがリクエスト・メッセージをOracle Service Busバインディング・レイヤーに渡した後、リクエスト・パイプラインを呼び出す前に実施されます。詳細は、32.3.4項「プロキシ・サービスへのトランスポート・アクセス制御の割当て」を参照してください。

32.2.3 ビジネス・サービスの認証

WSビジネス・サービスでは基本認証とクライアント証明書認証をサポートします。アウトバウンド基本認証は、サービス・アカウントによってサポートされます。ユーザー名/パスワードの識別の伝播と資格証明のマッピングがサービス・アカウントによって提供されます。ただし、静的アカウントも認証に使用されることがあります。サービス・アカウントは、静的、パススルーまたはマップになります。パススルー認証では、クライアント・リクエストからバックエンドRMサービスへユーザー名/パスワードを渡すことが可能です。マップされたサービス・アカウントでは資格証明のマッピングが可能です。静的サービス・アカウントは、固定した資格証明が必要な場合に使用されます。

WSビジネス・サービスでは、SSLクライアント証明書認証(双方向SSL)もサポートされています。アウトバウンドの双方向SSLで使用されるキー・ペア(秘密鍵と証明書)は、WSビジネス・サービスではなく、プロキシ・サービスによって参照されるサービス・キー・プロバイダで構成されます。

1つのメッセージをWSビジネス・サービスにルーティングすると、Oracle Service Busサーバーとバックエンド・サービスからの複数のHTTP/Sリクエストが対象となることがあります。このようなメッセージはすべて、WSビジネス・サービスで構成される認証方法の影響を受けます。つまり、サービスが基本認証用に構成されている場合は、Oracle Service Busから送信されるすべてのメッセージに、ユーザー名/パスワードが格納されたHTTP認可ヘッダーが含まれており、メッセージがクライアント証明書認証用に構成されている場合は、Oracle Service Busでキー・ペアを使用してすべてのメッセージの認証を行います。

32.3 WSトランスポートの使用

WSトランスポートは、分散ネットワークにおいて信頼性のあるメッセージ配信に使用できます。

WSRM機能は、SOAP 1.1およびSOAP 1.2に基づくWSRMポリシーを持ったWSDLでのみトランスポートとして使用できます。サービスがRMポリシーを持つSOAP 1.1または1.2 WSDLに関連付けられていること、あるいはRMポリシーがサービスに付加されていることを確認してください。WS-PolicyはWSDLで構成するか、またはサービスに割り当てることができます。詳細は、32.3.1.1項「WSポリシーの構成」を参照してください。

WSトランスポートを使用するためのプロキシ・サービスおよびビジネス・サービスの構成を始める前に、必要なWSDLまたはWS-Policyファイルが、使用するOracle Service Busドメインで利用可能であることを確認します。詳細は、32.3.1項「Oracle Service Busドメインへのリソースの追加」、32.3.3項「WSトランスポートを使用するプロキシ・サービスの構成」、および32.3.6項「WSトランスポートを使用するビジネス・サービスの構成」を参照してください。

サービスにエラー・キューを構成して、Oracle Service Busがエラーになったメッセージをこのキューに配信するようにすることもできます。このキューは分散キューにすることができます。このキューは自動的には作成されないので、サービスの構成を始める前に作成しておく必要があります。詳細は、32.3.2項「エラー・キューの構成」を参照してください。

また、Oracle Service Bus管理コンソールを使用してリソースをインポートおよびエクスポートすることもできます。詳細は、32.5項「リソースのインポートとエクスポート」および32.6項「UDDIレジストリを使用したサービスのインポートとパブリッシュ」を参照してください。

32.3.1 Oracle Service Busドメインへのリソースの追加

Oracle Service Bus管理コンソールを使用して、ドメインにWSDLやカスタムのWS-Policyファイルを追加できます。

32.3.1.1 WSポリシーの構成

WSトランスポートはWSRMポリシーのあるSOAP WSDLのみで使用できます。WSDLでWS-Policyを構成するか、Oracle Service Busサービス構成ツールでWS-Policyをサービスに割り当てることができます。詳細は、32.1.2項「ポリシー」を参照してください。

RMポリシー・アサーションがサービスに関連付けられたWSDLで指定されていない場合(ポリシーのないWSDLを使用するサービスを構成する場合)、セッションをアクティブ化すると検証メッセージが表示されます。

図32-1 競合 - WSDLにRMポリシー・アサーションが指定されていない場合

この競合を解決するには、WSDLを更新するか、またはサービスにポリシーを付加する必要があります。詳細は、32.3.1.2項「サービスへのWS-Policyの付加」および第51章「Oracle Service Busプロキシ・サービスおよびビジネス・サービスでのWS-Policyの使用」を参照してください。

32.3.1.2 サービスへのWSポリシーの付加

WS-Policyファイルをサービスに付加するには:

1. プロキシ・サービスまたはビジネス・サービスを検索し、サービスの名前をクリックします。
「プロキシ・サービスの表示」ページまたは「ビジネス・サービスの表示」ページが表示されます。

2. 「ポリシー」タブを選択します。サービス・ポリシー構成の詳細が表示されます。

3. 「事前定義ポリシーまたはWS-Policyリソースから」オプションを選択します。

4. プロキシ・サービス・フォルダを展開し、「追加」をクリックします。
「WS-Policyの選択」ページが表示されます。

5. 必要なポリシーを検索し、事前定義されたポリシーのリストまたはカスタム・ポリシー・リソースのリストからポリシーを選択して、「発行」をクリックします。

6. 「更新」をクリックします。

選択したポリシーがプロキシ・サービスまたはビジネス・サービスに付加されます。

注意:

サービスにWS-Policyを付加すると、サービスに関連付けられたWSDLで定義されたすべてのポリシーは無視されます。

32.3.2 エラー・キューの構成

デフォルトでは、配信されなかったメッセージは指定された回数の再試行を行った後、破棄されます。ただし、ビジネス・サービスにエラー・キューを構成して、Oracle Service Busがメッセージ・フローでエラーになったメッセージをこのキューに配信するようにすることもできます。

エラー・キューにはJMSキューを構成する必要があります。Oracleでは、エラー・キューをリモート・キューではなく、ローカルで構成することをお薦めします。

ビジネス・サービスでは、レスポンスのタイムアウトが発生すると、レスポンス・パイプラインがエラーで呼び出されます。シーケンスの有効期限に達すると、メッセージはビジネス・サービス用に構成されたエラー・キューに置かれ、レスポンス・パイプラインがエラーで呼び出されます。ただし、レスポンスのタイムアウトがすでに発生していた場合は、メッセージはエラー・キューに置かれますが、レスポンス・パイプラインは呼び出されません。

注意:

一方向サービスおよびリクエスト/レスポンス・サービスではどちらも、エラーになったメッセージをエラー・キューに入れる処理は「そうするように最善を尽くす」に過ぎません。

32.3.3 WSトランスポートを使用するプロキシ・サービスの構成

WSトランスポートを使用するプロキシ・サービスは、RMアサーションを持つWS-Policyと関連付けられている必要があります。詳細は、32.1.2項「ポリシー」を参照してください。

プロキシ・サービスでは、クライアントからリクエストを受信し、WSRMに関連する処理を行った後で、これをメッセージ・フローに渡します。プロキシ・サービスでは、レスポンス・パイプラインからレスポンスを受信した後、これをクライアントに送信することもできます。WSトランスポートを使用するプロキシ・サービスは他の任意のプロキシ・サービスから呼び出すことが可能で、外部クライアントから呼び出されたときと同じ動作を行います。

HTTPプロキシ・サービスが構成されると(WLS wseeスタックごとに)、WSプロキシ・サービスはHTTPプロキシ・サーバーを使用して非同期メッセージを送信します。

SOAP 1.2バインディングのWSDLに基づくプロキシ・サービスではSOAP 1.2メッセージのみをサポートしており、SOAP 1.1メッセージによるバージョンの不一致エラーが発生すると、エラーがスローされます。同様に、SOAP 1.1バインディングのWSDLに基づくプロキシ・サービスではSOAP 1.1メッセージのみをサポートしており、SOAP 1.2メッセージによるバージョンの不一致エラーが発生すると、エラーがスローされます。

Oracle Service Bus管理コンソールでプロキシ・サービスを作成する場合、「トランスポート構成」ページでwsの転送プロトコルを選択します。

注意:

プロキシ・サービスの構成方法の詳細は、第2章「プロキシ・サービスの操作」を参照してください。

表32-1は、WSトランスポート・を使用するプロキシ・サービスを構成するために指定できるフィールドについて説明しています。

表32-1 WSトランスポートを使用するプロキシ・サービスの構成で必要なフィールド

フィールド

説明

プロトコル

使用可能なプロトコルのリストからwsを選択します。

エンドポイントURI

WSトランスポートを使用するプロキシ・サービスのエンドポイント構成は、HTTP/Sプロキシ・サービスの構成と同様です。URIを/contextPathの形式で指定します。

注意: HTTPトランスポートまたはWSトランスポートのどちらかを使用するプロキシ・サービスに対して、コンテキスト・パスが一意であることを確認します。

次に、WSトランスポートに固有の構成の詳細を指定する必要があります。

表32-2は、プロキシ・サービス用のWSトランスポートの構成で指定できるディスパッチ・ポリシーと、再試行回数や再試行遅延値などの詳細なオプションについて説明しています。

表32-2 プロキシ・サービス用のWSトランスポートの構成で必要なフィールド

フィールド

説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

再試行回数

WSRMレイヤーがOracle Service Busメッセージ・フローへのメッセージ配信を試行する回数です。デフォルト値は3です。

プロキシのリクエスト・フローで未処理の例外が発生した場合、着信WSトランスポート・メッセージはこの値で指定される回数までメッセージ・フローに再配信されます。これはWSトランスポート・メッセージを確実に処理するために重要です。

注意: メッセージの配信が失敗すると、現在のトランザクションはロール・バックされますが、メッセージはキューから削除されません。サーバーはメッセージの配信に成功するまで、または再試行回数の制限に到達するまでメッセージの送信を試行します。再試行回数の制限に到達すると、メッセージはキューから削除されるか、またはエラー・キューに移されます。エラー・キューは分散キューにすることができ、Oracle WebLogic Server管理コンソールで作成することができます。詳細は、32.3.2項「エラー・キューの構成」を参照してください。

再試行の遅延

サーバーがメッセージ配信を再試行する前に待機する時間です。デフォルトは5秒です。

WSトランスポートを使用するプロキシ・サービスの構成の詳細は、第2章「プロキシ・サービスの操作」の「WSトランスポート構成ページ」を参照してください。

32.3.4 プロキシ・サービスへのトランスポート・アクセス制御の割当て

管理者は、Oracle Service Bus管理コンソールでトランスポートレベルのアクセス制御ポリシーをWSプロキシ・サービスに割り当てることができます。他のすべてのトランスポートと同様に、このポリシーは、インバウンド・トランスポート・プロバイダがリクエスト・メッセージをOracle Service Busバインディング・レイヤーに渡した後、リクエスト・パイプラインを呼び出す前に実施されます。

トランスポート・レベルのアクセス制御ポリシーは、Oracle Service Busセッション内で管理されます。セッションがアクティブ化されるとき、アクセス・ポリシーは認可プロバイダ内に格納されます。実行時に、バインディング・レイヤーがセキュリティ・フレームワーク認可APIを呼び出し、このAPIによって次に認可プロバイダが呼び出されます。

プロキシ・サービス・リソースのアクセス制御を実行時に決定するために、管理者は1つまたは複数のポリシー条件を追加できます。たとえば、基本ポリシーではOperatorユーザーだけを指定します。実行時にセキュリティ・フレームワークはこのポリシーを「プロキシ・サービス・リソースにアクセスできるのは、Operatorのみである」と解釈します。詳細は、32.3.4.1項「ポリシー条件の追加」を参照してください。

注意:

Oracle Service Bus管理コンソールでWSトランスポートを使用するように構成されたプロキシ・サービスは、Oracle WebLogic Server管理コンソールにも表示されます。管理者はOracle WebLogic Server管理コンソールとOracle Service Bus管理コンソールからアクセス制御ポリシーを割り当てることができます。ただし、Oracle WebLogic Server管理コンソールから割り当てられたポリシーには実効性がなく、実行時に評価されません。Oracle Service Bus管理コンソールから割り当てられたアクセス制御ポリシーのみが実施されます。

プロキシ・サービスにトランスポート・アクセス制御を割り当てるには:

1. プロキシ・サービスを検索し、プロキシ・サービスの名前をクリックします。

2. 「プロキシ・サービスの表示」ページで「セキュリティ」タブをクリックします。

図32-2 プロキシ・サービスの「セキュリティ」タブ

3. プロキシ・サービス名をクリックします。
このページでは、プロキシ・サービスのトランスポート・レベルのポリシーを設定できます。

図32-3 トランスポートレベルのポリシー

4. 「条件の追加」をクリックします。「述部の選択」ページが表示されます。

5. 必要な述部を選択し「次へ」をクリックします。「引数の編集」ページが表示されます。

6. ポリシー条件を定義するために述部に関係のあるパラメータと値を入力します。
管理者は次の作業を行うことができます。

- 複合条件を作成し、これらを論理演算子ANDとOR (非排他的なOR)で結合します。条件の結合は必要であれば後から解除できます。

- 条件を否定して、指定したポリシー条件の逆が適用されるようにします。

- ポリシー条件が実行される順序を指定します。

- 既存のポリシー条件を削除します。

- 複数の条件間でANDとORを適用します。

実行時に、条件のコレクション全体がプロキシ・サービスに対してtrueになっている必要があります。

各述部で指定されるパラメータの詳細は、32.3.4.1項「ポリシー条件の追加」を参照してください。

7. 「保存」をクリックします。

8. 「戻る」をクリックし、「更新」をクリックします。

これで指定されたアクセス制御ポリシー条件がプロキシ・サービスに関連付けられ、実行時に適用されます。

32.3.4.1 ポリシー条件の追加

管理者によって設定されたポリシー条件は、プロキシ・サービスのリソースへのアクセスを制御します。ポリシー文に条件を追加するときには、既存のすべての述部やポリシー条件を使用できます。各述部は事前定義された文で、セキュリティ・ポリシー文の定義に使用できます。述部ごとに、その述部に関連付けられた引数を編集する必要があります。

述部のリストを表示するには、「条件の追加」をクリックします。

図32-4 述部のリスト

これらの述部には次のものが含まれます。

- 指定されたユーザー、グループまたはロールの追加や全員に対するアクセスの許可または拒否などを行う基本ポリシー条件

- 指定した日付または時刻に基づいてリソースへのアクセスを許可する場合に使用する日付と時刻に基づくポリシー条件

- HTTPサーブレット・リクエスト属性、HTTPセッション属性、およびEJBメソッドのパラメータの値に基づくポリシーの作成に使用されるコンテキスト要素ポリシー条件

ポリシー条件でロールを追加または削除するには:

1. 「述部リスト」で「ロール」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. ロールを指定し、「追加」をクリックします。
このポリシー条件には、1つまたは複数のロールを追加できます。複数のロールを追加した場合は、ユーザーがこのポリシー条件に関連付けられたロールのいずれかのメンバーであるときに、条件がtrueと評価されます。

注意:

ロールを削除するには、削除リストでロールを選択して「削除」をクリックします。

4. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

ポリシー条件にグループを追加するには:

1. 「述部リスト」で「グループ」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. グループ名を指定し、「追加」をクリックします。
このポリシー条件には、1つまたは複数のグループを追加できます。複数のグループを追加した場合は、ユーザーがこのポリシー条件に関連付けられたグループのいずれかのメンバーであるときに、条件がtrueと評価されます。

注意:

グループを削除するには、「削除」リストから該当グループを選択し、「削除」をクリックします。

4. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

ポリシー条件にユーザーを追加するには:

1. 「述部リスト」で「ユーザー」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. ユーザー名を指定し、「追加」をクリックします。
このロールには1つまたは複数のユーザーを追加できます。

注意:

ユーザーを削除するには、「削除」リストから該当ユーザーを選択し、「削除」をクリックします。

4. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

指定した曜日にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「指定した曜日にアクセスが発生」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. 曜日を入力します。

4. GMTとの時差を入力します。使用する場所の時間帯がGMTよりも進んでいる場合は、GMT + hh:mmと入力し、使用する場所の時間帯がGMTよりも遅れている場合は、GMT -hh:mmと入力します。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

指定した時間帯にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「指定した時間帯にアクセスが発生」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. リソースへのアクセスが有効になる開始時間と終了時間を入力します。時間はhh:mm AM|PMの形式で入力します。

4. GMTとの時差を入力します。使用する場所の時間帯がGMTよりも進んでいる場合は、GMT + hh:mmと入力し、使用する場所の時間帯がGMTよりも遅れている場合は、GMT -hh:mmと入力します。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

コンテキスト要素の値が数値定数よりも大きい場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「コンテキスト要素の値が数値定数より大きい」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. コンテキスト要素の名前を入力します。

4. 数値を入力します。リソースへのアクセスは、指定されたコンテキスト要素の値がこの数字よりも大きい場合にのみ有効になります。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

全員に対してアクセスを拒否するには:

1. 「述部リスト」で「全員に対してアクセスを拒否」を選択します。

2. 「終了」をクリックします。

すべてのユーザーおよびグループで、プロキシ・サービスのリソースへのアクセスが拒否されます。

コンテキスト要素の値が数値定数に等しい場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「コンテキスト要素の値が数値定数と等しい」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. コンテキスト要素の名前を入力します。

4. 数値を入力します。プロキシ・サービスのリソースへのアクセスは、指定されたコンテキスト要素の値がこの数字と等しい場合にのみ有効になります。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

指定した日付よりも前の場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「次の日時より前にアクセスが発生」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. これよりも前の日付である場合に、プロキシ・サービスのリソースへのアクセスが有効になる日付を入力します。日付はm/d/yyまたはm/d/yy hh:mm:ss AM|PMの形式で入力します。

4. GMTとの時差を入力します。使用する場所の時間帯がGMTよりも進んでいる場合は、GMT + hh:mmと入力し、使用する場所の時間帯がGMTよりも遅れている場合は、GMT -hh:mmと入力します。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

月の中で指定した日にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「指定した日にアクセスが発生」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. プロキシ・サービスのリソースへのアクセスが有効になる日を入力します。
プロキシ・サービスのリソースへのアクセスは、月の中である日数が経過した後で有効になります。-31から31の範囲で、現在の月での日数を入力します。負の値は月末から逆に数えることを意味し、-1は月の最終日を表します。0は、その月の初日の前日を表します。

4. GMTとの時差を入力します。使用する場所の時間帯がGMTよりも進んでいる場合は、GMT + hh:mmと入力し、使用する場所の時間帯がGMTよりも遅れている場合は、GMT -hh:mmと入力します。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

コンテキスト要素の値が文字列定数に等しい場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「コンテキスト要素の値が文字列定数と等しい」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. コンテキスト要素の名前を入力します。

4. 文字列値を入力します。プロキシ・サービスのリソースへのアクセスは、指定されたコンテキスト要素の値がこの文字列値と等しい場合にのみ有効になります。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

定義されたコンテキスト要素が使用可能な場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「コンテキスト要素が定義されている」を選択します。

2. 「終了」をクリックします。

プロキシ・サービスのリソースへのアクセスは、指定されたコンテキスト要素が存在する場合にのみ有効になります。

全員に対してアクセスを許可するには:

1. 「述部リスト」で「全員に対してアクセスを許可」を選択します。

2. 「終了」をクリックします。

すべてのユーザーおよびグループで、プロキシ・サービスのリソースへのアクセスが有効になります。

指定した日付よりも後の場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で後のアクセスを許可を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. これよりも後の日付である場合に、プロキシ・サービスのリソースへのアクセスが有効になる日付を入力します。日付はm/d/yyまたはm/d/yy hh:mm:ss AM|PMの形式で入力します。

4. GMTとの時差を入力します。使用する場所の時間帯がGMTよりも進んでいる場合は、GMT + hh:mmと入力し、使用する場所の時間帯がGMTよりも遅れている場合は、GMT -hh:mmと入力します。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

月の中で指定した日より前の場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「指定した日より前にアクセスが発生」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. 月の中のこれよりも前の日ではプロキシ・サービスのリソースへのアクセスが有効になる日を入力します。
プロキシ・サービスのリソースへのアクセスは、月の中である日数が経過する前にのみ有効になります。-31から31の範囲で、現在の月での日数を入力します。負の値は月末から逆に数えることを意味し、-1は月の最終日を表します。0は、その月の初日の前日を表します。

4. GMTとの時差を入力します。使用する場所の時間帯がGMTよりも進んでいる場合は、GMT + hh:mmと入力し、使用する場所の時間帯がGMTよりも遅れている場合は、GMT -hh:mmと入力します。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

コンテキスト要素の値が数値定数よりも小さい場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「コンテキスト要素の値が数値定数より小さい」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. コンテキスト要素の名前を入力します。

4. 数値を入力します。プロキシ・サービスのリソースへのアクセスは、指定されたコンテキスト要素の値がこの数字よりも小さい場合にのみ有効になります。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

月の中で指定した日より後の場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「指定した日より後にアクセスが発生」を選択します。

2. 「次へ」をクリックします。「引数の編集」ページが表示されます。

3. 月の中のこれよりも後の日ではプロキシ・サービスのリソースへのアクセスが有効になる日を入力します。
プロキシ・サービスのリソースへのアクセスは、月の中である日数が経過した後で有効になります。-31から31の範囲で、現在の月での日数を入力します。負の値は月末から逆に数えることを意味し、-1は月の最終日を表します。0は、その月の初日の前日を表します。

4. GMTとの時差を入力します。使用する場所の時間帯がGMTよりも進んでいる場合は、GMT + hh:mmと入力し、使用する場所の時間帯がGMTよりも遅れている場合は、GMT -hh:mmと入力します。

5. 「終了」をクリックします。

条件がポリシー文に追加され、「ポリシー条件」ページに表示されます。

サーバーが開発モードで実行されている場合にのみプロキシ・サービスのリソースへのアクセスを有効にするには:

1. 「述部リスト」で「サーバーが開発モードである」を選択します。

2. 「終了」をクリックします。

ユーザーとグループは、サーバーが開発モードで実行されている場合にのみ、プロキシ・サービスのリソースにアクセスできます。

32.3.5 HTTPプロキシ・サーバーを経由するWSトランスポートのルーティング

HTTPプロキシ・サーバーが構成されている場合、WSビジネス・サービスはHTTPプロキシ・サーバーを使用してアウトバウンド・メッセージを送信します。クライアント・アプリケーションでHTTPプロキシ・サーバーの詳細を指定する方法の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のWebサービスの呼出しに関する項を参照してください。

32.3.6 WSトランスポートを使用するビジネス・サービスの構成

WSトランスポートを使用するビジネス・サービスは、RMアサーションを持つWS-Policyと関連付けられている必要があります。詳細は、32.1.2項「ポリシー」を参照してください。ビジネス・サービスは、外部の信頼性のあるWebサービスを呼び出すクライアントとして動作します。ビジネス・サービスによってサービスにリクエストが送信され、Oracle Service Busによってデプロイされたアプリケーションでレスポンスを受信します。これによりレスポンス・パスが呼び出されます。

Oracle Service Bus管理コンソールでWSDLリソースに基づいてビジネス・サービスを作成する場合、「トランスポート構成」ページでwsの転送プロトコルを選択します。

注意:

ビジネス・サービスの構成方法の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

表32-3は、WSトランスポートを使用するビジネス・サービスを構成する場合に指定する必要があるフィールドについて説明しています。次のフィールドを指定します。

表32-3 WSトランスポートを使用するビジネス・サービスの構成

フィールド

説明

プロトコル

使用可能なプロトコルのリストから「ws」を選択します。

ロード・バランシング・アルゴリズム

ロード・バランシング・アルゴリズムとして次の値の中から1つを指定します。

- ラウンドロビン

- ランダム

- ランダムな重みベース

- なし

エンドポイントURI

Webサービスの場所を指します。WSトランスポートを使用するビジネス・サービスのエンドポイント構成は、HTTP/HTTPSの構成と同様です。http://host:port number/nameまたはhttps://host:port number/nameの形式でURIを指定します。

ビジネス・サービスでは信頼性のある異なるWebサービスを指す複数のエンドポイントURIを指定できます。

再試行回数

アウトバウンド・リクエストの送信時に配信エラーが発生した場合に、個別のURLエンドポイントに対して再試行を行う回数を指定します。このフィールドの数字は、リスト上にあるURIの数ではなく、URIを再試行する回数の合計を示します。

再試行の反復間隔

リストにあるすべてのエンドポイントURIに対してシステムが再試行を行うときに休止する秒数を指定します。

アプリケーション・エラーの再試行

「はい」または「いいえ」を選択します。

アウトバウンド・リクエストを送信する際の配信の失敗に備えて、アプリケーション・エラー(SOAPフォルトなど)に基づいてエンドポイントURIを再試行するかどうかを指定します。詳細は、32.4項「エラー処理」を参照してください。

ビジネス・サービス用にWSトランスポートを構成するには、表32-4に示す値を指定します。

表32-4 ビジネス・サービス用のWSトランスポートの構成

フィールド

説明

レスポンス・タイムアウト

リクエストの送信後、定義された間隔以内にレスポンスが返されない場合、サービスがタイムアウトしたというエラーでレスポンス・パイプラインが呼び出されます。値0が指定されると、レスポンスのタイムアウトが起こらないことを示します。

サービス・アカウント

サービス・アカウントを指定します。

注意: これは基本認証を必要とするWS-PolicyがWSビジネス・サービスにある場合にのみ適用されます。

詳細は、2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

エラー・メッセージをキューに入れる

このオプションは、エラーになったリクエストをエラー・キューに送信する場合に選択します。次のフィールドは、このオプションを選択した場合にのみ使用できます。

エラー・キューURI

ビジネス・サービスでエラーになったリクエストのために使用されるエラー・キューです。jms://host:port/conn-factory-jndi-name/queue-jndi-nameの形式でURIを指定します。

注意: このキューは分散キューにすることができます。エラー・キューは自動的には作成されないので、有効なキューが使用できることを確認してください。詳細は、32.3.2項「エラー・キューの構成」を参照してください。

Oracle WebLogic Serverでは、JNDI名でmyqueues/myqueueのようにフォワード・スラッシュを使用できますが、フォワード・スラッシュのあるJNDI名は、Oracle Service Busに必要とされるURIフォーマットと一致しないため、このような名前を使用することはできません。この問題を回避するには、JMS外部サーバーを定義してURIでその外部サーバーを参照します。詳細は、Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・オンライン・ヘルプの外部サーバーの構成に関する項を参照してください。

JMSエラー・キューのサービス・アカウント

JMSエラー・キューへの接続に使用されるサービス・アカウントです。

エラー・キューにSSLを使用

JMSエラー・キューへの接続にSSLを使用する場合は、このオプションを選択します。

WSトランスポートを使用するビジネス・サービスの構成方法の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

32.4 エラー処理

アプリケーション・エラーを処理するようにWSトランスポートベースのビジネス・サービスを構成できます。これには、アプリケーション・エラーの発生時にビジネス・サービスのエンドポイントURIを再試行するかどうかを指定します。4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」を参照してください。

アプリケーション・エラーは、WSトランスポート・ベースのビジネス・サービスでSOAPフォルトがレスポンスとして受信され、BEA-380001エラー・コードが生成されると発生します。

注意:

ビジネス・サービスに対するリクエストでレスポンスまたはシーケンスのタイムアウトが発生した場合、Oracle Service Busサーバーは、ロード・バランシング・アルゴリズムに基づいてその次のURIにメッセージの送信を試行します。この動作は「アプリケーション・エラーの再試行」オプションに依存しません。

32.5 リソースのインポートとエクスポート

Oracle Service Busドメインにリソースが存在する場合、「セキュリティおよびポリシーの構成を保持」オプションを選択することで、リソースをOracle Service Busにインポートするときにセキュリティおよびポリシーの構成の詳細を保持できます。このオプションを選択すると、リソース内でセキュリティとポリシーについての構成が更新されている場合であっても、インポート時に既存のリソースの値が保持されます。

リソースのインポートの詳細は、2.1.14項「リソースのインポート」を参照してください。

32.6 UDDIレジストリを使用したサービスのインポートとパブリッシュ

プロキシ・サービスがUDDIレジストリにパブリッシュされると、サービスはWSDLを使用するWSビジネス・サービスに変換されます。認証の構成がある場合は、これもUDDIにエクスポートされます。

WSRMポリシーを使用するWSDLベースのビジネス・サービスがUDDIレジストリからOracle Service Busにインポートされる場合は、サービスは自動的にWSトランスポートを使用するように構成されたWSビジネス・サービスとしてインポートされます。詳細は、32.1.2項「ポリシー」を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「UDDI」を参照してください。

33 MQトランスポート

この章では、MQトランスポートの概要と、サービスでの使用および構成方法について説明します。

Oracle Service BusではMQトランスポートを使用したIBM WebSphere MQへのアクセスがサポートされています。このトランスポートでは、インバウンドとアウトバウンドの両方の接続がサポートされます。MQプロキシ・サービスではWebSphere MQからのメッセージの受信が可能で、MQビジネス・サービスではWebSphere MQへのメッセージのルーティングが可能です。

この章の内容は次のとおりです。

- 33.1項「主な機能」

- 33.2項「MQトランスポートを使用する利点」

- 33.3項「サポートされるサービス・タイプ」

- 33.4項「メッセージング・パターン」

- 33.5項「環境値」

- 33.6項「サービスの品質」

- 33.7項「MQクラスタとMQトランスポート」

- 33.8項「MQトランスポートの使用」

- 33.9項「WebSphere JMS MQインタフェースの使用」

33.1 主な機能

MQトランスポートでは、次の主な機能がサポートされます。

- インバウンドおよびアウトバウンド接続。MQプロキシ・サービスではWebSphere MQからのメッセージの受信が可能で、MQビジネス・サービスではWebSphere MQへのメッセージのルーティングが可能です。

- WebSphere MQへのアクセス。詳細は、33.8.1項「環境へのMQクライアント・ライブラリの追加」を参照してください。

- メッセージをXML、バイナリ、XML、テキスト、およびMFLの任意の種類で送受信可能です。

- すべてのMQMD (MQメッセージ記述子)ヘッダーの処理。メッセージ記述子は、送信または受信されたメッセージのプロパティを表す属性です。
アウトバウンド・レスポンスおよびインバウンド・リクエストで構成できるMQヘッダーのリストについては、33.8.5項「トランスポート・ヘッダー」を参照してください。

- WebLogicトランザクション・マネージャを使用した分散(XA)トランザクションのサポート。

- キュー・マネージャに接続するためのTCP/IPおよびバインディング・モード。
Oracle Service Busと同じ物理コンピュータ上にあるWebSphere MQに接続するには、バインディング・モードを使用します。Oracle Service Busと同じコンピュータ上にはないWebSphere MQに接続するには、TCP/IPを使用します。

- インバウンドおよびアウトバウンド・トランスポートにおける一方向および双方向SSL。
SSLは、Oracle Service BusからWebSphere MQへの接続にTCP/IPを使用している場合にのみサポートされます。

33.2 MQトランスポートを使用する利点

WebSphere MQ JMSインタフェースを使用する場合と比べて、MQトランスポートの使用には次のような利点があります。

- MQトランスポートを使用すると、WebSphere MQ JMSインタフェースを使用した場合に比べ、WebSphere MQへの接続がより高速に行えます。

- MQメッセージを読込みおよび生成する機能。JMSインタフェースの使用では、特定のヘッダーは設定できません。

- MQ受信メッセージの送受信のサポート。

- WebLogicのJNDIへのMQ接続ファクトリおよびMQキューの明示的なバインディングは不要です。

- Oracle Service Busの範囲外にあるJMSプロバイダのようなリソースの構成は不要です。

- メッセージが、JMSトランスポートを使用したチャネリングではなく、トランスポートを使用して直接送信されるため、パフォーマンスが向上します。

33.3 サポートされるサービス・タイプ

MQトランスポートは、メッセージ・サービスおよびXMLサービスのサービス・タイプで使用できます。

詳細は、4.3項「プロキシ・サービスの構成」および4.2項「ビジネス・サービスの構成」を参照してください。

33.4 メッセージング・パターン

ネイティブMQトランスポートでは、一方向メッセージおよびリクエスト/レスポンス・メッセージング・パターンがインバウンドおよびアウトバウンド接続の両方でサポートされます。デフォルトでは、一方向メッセージングがサポートされます。プロキシ・サービスまたはビジネス・サービスでは、サービスの構成時に「レスポンスが必要」オプションを設定すると、リクエスト/レスポンス・メッセージングがサポートされます。

インバウンドおよびアウトバウンド・トランスポートでは、リクエストとレスポンス間の相関にmessageIDまたはcorrelationIDを使用する非同期のリクエスト/レスポンス・パターンをサポートします。サービスの構成時にレスポンス相関パターンを設定できます。詳細は、33.8.5項「トランスポート・ヘッダー」「CorrelationID」と「MessageID」を参照してください。

アウトバウンド・トランスポートには、相関ID/messageIDを自動生成するオプションが用意されています。または、メッセージ・フローで指定したものを使用します。トランスポートによって相関ID/メッセージIDが自動生成される必要があることを指示するには、「相関値の自動生成」オプションを選択します。または、メッセージ・フローで指定したものを使用します。

MQの実装で動的キューを使用する場合は、アウトバウンド・トランスポートを使用してレスポンス相関のためにも動的キューを使用できます。

相関値(messageID/correlationID)を自動生成しない場合に、管理対象サーバーがダウンすると、サーバーの再起動時に残っているレスポンス・メッセージが削除されなくなることがあります。Oracleでは、リクエストの有効期限(Expiry)ヘッダーを有限な値に構成し、レポート(Report)ヘッダーにMQC.MQRO_PASS_DISCARD_AND_EXPIRYオプションを設定することをお薦めします。

MQC.MQRO_PASS_DISCARD_AND_EXPIRYオプションは、返信のメッセージ記述子がリクエスト・メッセージの有効期限(Expiry)ヘッダー値から継承される必要があるという、受信クライアントに対する指示として機能します。これにより、構成された有効期限の経過後にMQサーバーによってレスポンス・メッセージが確実に削除されるようになります。相関値が自動生成される場合、残っているレスポンス・メッセージのクリーン・アップはOracle Service Busサーバーによって実施されます。

MQトランスポートではリモート・トランザクションではなくローカル・トランザクションがサポートされます。

サービスの「レスポンスが必要」、「レスポンス相関パターン」、「相関値の自動生成」の構成の詳細は、33.8.3項「MQトランスポートを使用するプロキシ・サービスの構成」および33.8.4項「MQトランスポートを使用するビジネス・サービスの構成」を参照してください。

33.5 環境値

環境値とは、ドメイン間での構成の移動(テスト環境から本番環境への移行など)に伴って変更されることが多い値で、構成データに含まれる特定の事前定義されたフィールドです。環境値の更新の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の環境値の検索と置換に関する項を参照してください。次の項に、ネイティブMQトランスポート・サービスとMQ接続リソースで使用する環境値のリストを示します。

MQトランスポートに基づいたサービスでは、「ワーク・マネージャ」(インバウンドおよびアウトバウンド)環境値がサポートされています。

MQ接続は、複数のMQプロキシ・サービスおよびビジネス・サービスで再使用できる、共有可能なリソースです。MQ接続リソースは、MQキュー・マネージャに接続するために必要な接続パラメータを提供します。MQ接続リソースでは、次の環境値および操作値をサポートしています。

- MQ接続ホスト

- MQ接続ポート

- MQ接続キュー・マネージャ名

- MQ接続チャネル名

- MQ接続プール・サイズ

- MQ接続タイムアウト

- MQモデル・キュー

- MQバージョン

- XA有効

33.6 サービスの品質

インバウンド・トランスポートがMQで、アウトバウンド・トランスポートのサービスの品質(QoS)がexactly-onceである場合、結果として得られるQoSはat-least-onceになります。アウトバウンド・トランスポートのQoSのデフォルトはexactly-onceです。

注意:

パイプライン・エラー・ハンドラに、(任意の再試行ロジックを含む)エラー処理ロジックを作成する必要があります。エラー処理の構成は、2.4.8項「メッセージ・フローへのエラー・ハンドラの追加と構成」を参照してください。

アウトバウンドがリクエスト/レスポンスの場合、アウトバウンド・トランスポートがexactly-once QoSをサポートするように構成されているときのみ、QoSはat-least-onceになります。

Oracle Service BusメッセージでのQoSの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス品質に関する項を参照してください。

33.7 MQクラスタとMQトランスポート

WebSphere MQのクラスタ・サポートは、ストア・アンド・フォワード・メッセージングのサポートであり、ロード・バランシングおよびフェイルオーバーのサポートではありません。WebSphere MQのクラスタ・キューは、キュー・マネージャの1つにローカルで作成され、共有キューに対してリモート・フォワーダとして動作する他のクラスタ・メンバーと共有されます。

MQトランスポートからのリクエストは、ロード・バランシング・アルゴリズムを使用してクラスタのメンバーにメッセージを送信することによってロード・バランシングされます。ただし、トランスポートは、ローカル・キューへの参照を保持するMQサーバー・ノードにアクセスすることによってのみ、メッセージを受信します。

33.8 MQトランスポートの使用

Oracle Service Bus MQトランスポートを使用すると、WebSphere MQからメッセージを取得するMQプロキシ・サービス、およびWebSphere MQにメッセージを送信するMQビジネス・サービスが有効になります。このドキュメントでは、Oracle Service Bus環境にWebSphere MQを追加する方法、Oracle Service Bus MQトランスポートの特性、およびMQプロキシやビジネス・サービスを構成する方法について説明します。

この項の内容は次のとおりです。

- 33.8.1項「環境へのMQクライアント・ライブラリの追加」

- 33.8.2項「MQ接続リソース」

- 33.8.3項「MQトランスポートを使用するプロキシ・サービスの構成」

- 33.8.4項「MQトランスポートを使用するビジネス・サービスの構成」

- 33.8.5項「トランスポート・ヘッダー」

- 33.8.6項「エラー処理」

33.8.1 環境へのMQクライアント・ライブラリの追加

Oracle Service BusはIBM WebSphere MQのクライアントであり、Oracle Service Busではサポート対象のWebSphere MQバージョンについて実行時のサーバー互換性をサポートしていますが、MQライブラリはOracle Service Busインストーラには含まれていません。使用する環境において、MQクライアント・ライブラリcom.ibm.mq.jarのサポート対象のバージョンを利用可能にする必要があります。Oracle Service BusでのWebSphere MQバージョンのサポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の相互運用性のシナリオと考慮事項に関する項を参照してください。

WebSphere MQのシステム要件の詳細は、http://www-306.ibm.com/software/integration/wmq/requirements/index.htmlを参照してください。

MQクライアント・ライブラリを環境に追加するには:

1. ドメイン・サーバーを停止します。

2. WebSphere MQのインストールからcom.ibm.mq.jarファイルをDOMAIN_HOME/domain_name/libディレクトリにコピーします。

3. ドメイン・サーバーを再起動します。

Oracle Service Busと同じコンピュータ上にあるMQキュー・マネージャに接続するためにバインディング・モードを使用する場合は、PATH環境変数に<MQ_install_directory>/binおよび<MQ_install_directory>/java/libを追加します。

33.8.2 MQ接続リソース

MQ接続は、複数のMQプロキシ・サービスおよびビジネス・サービスで再使用できる、共有可能なリソースです。MQプロキシ・サービスおよびビジネス・サービスがMQキューにアクセスするには、前もってMQキュー・マネージャに接続しておく必要があります。MQ接続リソースは、MQキュー・マネージャに接続するために必要な接続パラメータを提供します。

各MQ接続リソースには、接続プールがあります。同じキュー・マネージャを使用している複数のビジネス・サービスまたはプロキシ・サービスは、接続プールを共有することになります。あるMQ接続リソースを使用してキュー・マネージャに接続しているすべてのビジネスまたはプロキシ・サービスでは、そのMQ接続リソース用に作成された同じ接続プールが使用されます。

MQ接続リソースの管理の詳細は、2.6.1項「MQ接続の追加および編集」を参照してください。

キュー・マネージャの詳細は、http://www.redbooks.ibm.com/redbooks/SG247128/wwhelp/wwhimpl/java/html/wwhelp.htmを参照してください。

33.8.2.1 MQ接続リソースの作成

MQ接続リソースを作成するには:

1. Oracle Service Busパースペクティブで「ファイル」→「新規」→「カスタム・リソース」を選択します。「新しいMQ接続リソースの作成」ページが表示されます。

2. 表33-1に示すパラメータを使用して、MQ接続リソースを構成します。

3. 「保存」をクリックします。

これでMQ接続リソースが作成されました。この接続リソースは、このMQトランスポートを使用するプロキシ・サービスおよびビジネス・サービスで共有できます。

33.8.2.2

次の表に、MQ接続リソースの作成時に構成できる接続パラメータのリストとその説明を示します。

表33-1 MQ接続パラメータ

プロパティ

説明

リソース名

MQ接続リソースにユニークな名前を入力します。

名前付けのガイダンスについては、2.1.1項「リソースの名前付けに関する制限事項」を参照してください。名前にはスペースが含まれないようにします。

リソースの説明

MQ接続リソースの説明を入力します。

接続タイプ

MQキュー・マネージャに接続するには、次のいずれかのモードを選択します。

- 「tcpモード」 - Oracle Service Busと同じコンピュータに存在しないキュー・マネージャに接続するには、TCP/IPを使用します。

- 「バインド・モード」 - Oracle Service Busと同じコンピュータに存在するキュー・マネージャに接続するには、バインド・モードを使用します。

MQホスト名

tcpモード接続の場合のみ:

MQキュー・マネージャのホスト名を入力します。

MQポート番号

tcpモード接続の場合のみ:

MQキュー・マネージャ・リスナーのポート番号を入力します。

MQキュー・マネージャ名

接続先のMQキュー・マネージャの名前を入力します。

キュー・マネージャCCSID

tcpモード接続の場合のみ:

接続を確立するときに使用されるCCSID (coded character set identifier)です。CCSIDは、主に国際化をサポートする目的で使用されます。

詳細は、WebSphere MQの基礎概念(http://www.redbooks.ibm.com/redbooks/SG247128/wwhelp/wwhimpl/java/html/wwhelp.htm)を参照してください。

MQキュー・マネージャのチャネル名

tcpモード接続の場合のみ:

キュー・マネージャのサーバー接続チャネル名を入力します。

SSLが必要

tcpモード接続の場合:

このチェック・ボックスを選択すると、メッセージの送信にSSLが使用されます。「双方向SSLが必要」オプションも選択されていない場合、サーバー側のSSLのみが有効になります。

暗号セット

このオプションは、「SSLが必要」チェック・ボックスが選択されている場合のみ使用できます。

SSLで使用される暗号スイート・アルゴリズムを選択します。

暗号スイート・アルゴリズムは、WebSphere MQサーバーとWebSphere MQクライアントの間のメッセージ通信を暗号化および復号化する際に使用されます。そのため、SSLを使用してWebSphere MQサーバーと通信する場合は、暗号スイート・アルゴリズムを指定する必要があります。

双方向SSLが必要

このオプションは、「SSLが必要」チェック・ボックスが選択されている場合のみ使用できます。

このチェック・ボックスを選択すると、クライアント側およびサーバー側のSSL認証が両方とも有効になります。サーバー側のみの認証用の一方向SSLでは、チェック・ボックスを選択解除します。

サービス・キー・プロバイダへの参照

「双方向SSLが必要」を選択した場合は、適切なキーストアと信頼ストアの情報を取得するために、サービス・プロバイダへの参照を提供する必要があります。サービス・キー・プロバイダには、プロキシ・サービスがインバウンドSOAPメッセージの復号化、アウトバウンド認証、およびデジタル署名で使用する、公開鍵インフラストラクチャ(PKI)の資格証明情報が含まれます。

サービス・キー・プロバイダのパス(project/folder)と名前を入力するか、「参照」をクリックして、「サービス・キー・プロバイダの選択」ページから選択します。

サービス・プロバイダ使用の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダに関する項を参照してください。

静的なサービス・アカウントへの参照

tcpモード接続の場合のみ:

ユーザー名とパスワードによる認証に必要です。静的なサービス・アカウントのパス(プロジェクト/フォルダ)および名前を入力するか、「参照」をクリックし、ブラウザからサービス・アカウントを選択します。

WebSphere MQバージョン

WebSphere MQのバージョンを選択します。

- 5.3

- 6.0

- 7.0

注意: IBMでは、バージョン5.3および6.0はサポートされなくなりました。これらのバージョンは、Oracle Service Busでは非推奨です。

MQ接続プール・サイズ

再利用のために接続プールに格納するMQ接続の数を入力します。

MQ接続タイムアウト

未使用の接続が破棄されるまでの時間間隔を秒単位で入力します。デフォルトは1800秒です。

MQ接続Max Wait

接続が利用可能になるまでに待機する最大時間(ミリ秒単位)を入力します。その時間内に接続が確立されない場合、Oracle Service Busが例外をスローします。デフォルトは、3000ミリ秒です。

XA有効

この接続によって処理されるトランザクションが分散(XA)トランザクションである場合は、このオプションを選択します。

XAトランザクションでは、永続性のためにMQキューを構成する必要があります。バージョン5.3または6.0 (いずれも非推奨)を使用している場合は、クラスパスにcom.ibm.mqetclient.jarファイルを追加します。

33.8.3 MQトランスポートを使用するプロキシ・サービスの構成

サービスを構成するとき、「全般的な構成」ページでサービスのタイプとしてメッセージ・サービスかXMLサービスを選択します。詳細は、33.3項「サポートされるサービス・タイプ」および4.3項「プロキシ・サービスの構成」を参照してください。

MQサービスを作成する場合、転送プロトコルとしてmqを選択し、「トランスポート構成」ページでエンドポイントURIを指定します。mq://local-queue-name?conn=mq-connection-resource-refの形式でエンドポイントURIを指定します。

- ここで、local-queue-nameはMQサーバーに構成されているローカル・キューの名前です。

- mq-connection-resource-refはMQ接続リソースの場所です。

たとえば、MQ接続リソースmqConnectionをdefaultMQフォルダに作成し、キュー名がtestQueueである場合、URIはmq://testQueue?conn=defaultMQ/mqConnectionになります。

注意:

エンドポイントURIはスペースを含むことができないので、名前にスペースがあるMQ接続リソースまたはプロジェクト/フォルダを作成しないでください。

次の表で説明する値を使用して、プロキシ・サービスのMQトランスポートを構成します。

表33-2 MQプロキシ・サービスの構成

オプション

説明

レスポンスが必要

アウトバウンド・メッセージの送信後にレスポンスを受け取ることを指定する場合は、このオプションを選択します。

レスポンス相関パターン

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

レスポンス相関パターンがMessageIDまたはCorrelationIDのいずれに基づく必要があるかを指定します。

MQレスポンスURI

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

レスポンスがパブリッシュされる宛先。レスポンスURIを、エンドポイントURIと同じ形式でmq://<local-queue-name>?conn=<mq-connection-resource-ref>のように入力します。

レスポンス・メッセージ・タイプ

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

次のいずれか1つを選択します:

- 「バイト」(未解釈バイトのストリームの場合)

- 「テキスト」(テキスト・メッセージの場合)

トランザクション・タイムアウト

プロキシ・サービスによって開始されたXAトランザクションがタイムアウトするまでに待機する時間を秒単位で入力します。このプロパティは、XAトランザクション用に構成されたMQ接続リソースを使用するサービスにのみ適用されます(つまり、MQ接続リソースに「XA有効」オプションが選択されます)。

デフォルト値は300秒です。

ポーリング間隔

メッセージの次のポーリングまでに待機する間隔をミリ秒単位で入力します。デフォルト値は1000です。

ポーラー・ディスパッチ・ポリシー

ポーラー・スレッドに使用されるディスパッチ・ポリシー。

バックアウトしきい値

「配信失敗メッセージURI」フィールドに指定したキューにパイプラインがメッセージをリダイレクトする前に、メッセージを再試行する回数を示す値を入力します。

このフィールドに値が指定されていない場合は、再試行を実行しないで、メッセージを配信失敗キューにリダイレクトします。

MQ配信失敗メッセージURI

「バックアウトしきい値」フィールドに指定した再試行回数を行った後、リクエスト・メッセージがリダイレクトされる配信失敗メッセージ・キューのURIを入力します。

このフィールドに値を指定しない場合、「バックアウトしきい値」フィールドに指定した再試行回数を行った後、メッセージがキューに戻され、各ポーリングでMQトランスポートによって無視されます。配信失敗メッセージURIの形式はエンドポイントURI形式と同じです。

エンドポイントURI 'GET'オプション

次のオプションでMQ GETメッセージ・オプションを入力します。

- MQC.MQGMO_ACCEPT_TRUNCATED_MSG

- MQC.MQGMO_ALL_MSGS_AVAILABLE

- MQC.MQGMO_BROWSE_FIRST

- MQC.MQGMO_BROWSE_NEXT

- MQC.MQGMO_COMPLETE_MSG

- MQC.MQGMO_CONVERT

- MQC.MQGMO_FAIL_IF_QUIESCING

- MQC.MQGMO_LOCK

- MQC.MQGMO_LOGICAL_ORDER

- MQC.MQGMO_MARK_BROWSE_CO_OP

- MQC.MQGMO_MARK_SKIP_BACKOUT

- MQC.MQGMO_NO_SYNCPOINT

- MQC.MQGMO_NONE

- MQC.MQGMO_NO_WAIT

- MQC.MQGMO_SYNCPOINT

- MQC.MQGMO_SYNCPOINT_IF_PERSISTENT

- MQC.MQGMO_UNLOCK

- MQC.MQGMO_UNMARK_BROWSE_CO_OP

- MQC.MQGMO_UNMARK_BROWSE_HANDLE

- MQC.MQGMO_UNMARKED_BROWSE_MSG

- MQC.MQGMO_VERSION_1

- MQC.MQGMO_VERSION_2

- MQC.MQGMO_VERSION_3

- MQC.MQGMO_WAIT

複数のオプションを区切るには、「|」または「+」を使用します。たとえば、次のように指定できます。

MQC.MQGMO_ACCEPT_TRUNCATED_MSG | MQC.MQGMO_LOCK

インバウンド・キューからのメッセージを読み込む場合、MQ GETメッセージ・オプションが適用されます。

RFH2ヘッダーのプロセス

メッセージ・ペイロードからWebSphere MQ RFH2ヘッダーを解析して、RFH2データを含むRFH2Headersトランスポート・ヘッダーを自動的に生成する場合はこのオプションを選択します。

このオプションを選択しない場合は、ペイロードはそのまま渡されます。

返信先ヘッダーの無視

キュー・マネージャの返信先ヘッダーを無視する場合はこのオプションを選択します。

ワーカー・スレッド・ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

MQトランスポートを使用するプロキシ・サービスの構成の詳細は、2.3項「プロキシ・サービスの操作」の「MQトランスポート構成ページ」を参照してください。

33.8.4 MQトランスポートを使用するビジネス・サービスの構成

サービスを構成するとき、「全般的な構成」ページでサービスのタイプとしてメッセージ・サービスかXMLサービスを選択します。詳細は、4.2項「ビジネス・サービスの構成」を参照してください。

MQサービスを作成する場合、転送プロトコルとしてmqを選択し、「トランスポート構成」ページでエンドポイントURIを指定します。mq://local-queue-name?conn=mq-connection-resource-refの形式でエンドポイントURIを指定します。

ここで、local-queue-nameはMQサーバーに構成されているローカル・キューの名前です。

mq-connection-resource-refはMQ接続リソースの場所です。

たとえば、MQ接続リソースmqConnectionをdefaultMQフォルダに作成し、キュー名がtestQueueである場合、URIはmq://testQueue?conn=defaultMQ/mqConnectionになります。

注意:

エンドポイントURIはスペースを含むことができないので、名前にスペースがあるMQ接続リソースまたはプロジェクト/フォルダを作成しないでください。

ビジネス・サービスでMQトランスポートを構成するには、次の表で説明する値を指定します。

表33-3 MQビジネス・サービスの構成

オプション

説明

メッセージ・タイプ

次のいずれか1つを選択します:

- 「バイト」(未解釈バイトのストリームの場合)

- 「テキスト」(テキスト・メッセージの場合)

レスポンスが必要

アウトバウンド・メッセージの送信後にレスポンスを受け取ることを指定する場合は、このオプションを選択します。

レスポンス相関パターン

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

レスポンス相関パターンのベースとして次のいずれかを指定します。

- MessageID

- CorrelationID

- 「動的キュー」 - レスポンス相関のためにWebSphere MQ実装が動的キューを使用する場合はこのオプションを選択します。MQトランスポートでサポートされるのは一時的な動的キューのみです。

相関値の自動生成

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

このチェック・ボックスを選択して、CorrelationIDまたはMessageIDを自動的に生成します。

モデル・キュー

「動的キュー」のレスポンス相関パターン専用。動的キューを生成するために使用されるモデルの名前を入力します。

MQレスポンスURI

このオプションは、「レスポンスが必要」オプションが選択されている場合のみ使用できます。

レスポンスがパブリッシュされる宛先。次のようにエンドポイントURIと同じ形式でレスポンスURIを入力します。

mq://local_queue_name?conn=mq_connection_resource

または、次の動的キューを使用します。

mq://dynamic_queue_prefix?conn=mq_connection_resource

dynamic_queue_prefix(最長32文字)は、MQサーバーに動的キューを作成するために使用されます。キュー名は接頭辞に一意のIDを追加したものです。たとえば、dynamic_queue_prefixがexampleの場合、動的キューの名前はexample123129083821のようになります。

動的キューのレスポンスURIではワイルドカードとしてアスタリスク(*)も使用できます。例:

mq://dynamic_queue_prefix*?conn=mq_connection_resource

mq://dynamic_queue_prefix*

mq://*

URIにdynamic_queue_prefixを指定しない場合、トランスポートはMQサーバーによって生成される動的キュー名を使用します。URIに明示的なmq_connection_resourceを指定しない場合(ベスト・プラクティス)、トランスポートはエンドポイントURIのmq_connection_resourceを使用します。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のMQトランスポートに関する項(http://www.oracle.com/pls/as1111/lookup?id=OSBDV1117)を参照してください。

レスポンス・タイムアウト

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

接続を切断するまでのレスポンスの待機時間を秒単位で入力します。デフォルトは300です。

ポーリング間隔

このオプションは、「レスポンスが必要」チェック・ボックスが選択されている場合のみ使用できます。

ポーリング間隔をミリ秒単位で入力します。デフォルト値は1000です。

ポーラー・ディスパッチ・ポリシー

ポーラー・スレッドに使用されるディスパッチ・ポリシー。

動的キュー・プーリング

「動的キュー」のレスポンス相関パターン専用。動的接続に対してプーリングされた接続をサービスで使用する場合は、このオプションを選択します。

動的キューに対して別の接続プールを使用する場合は、動的キューのために専用のMQ接続リソースを構成することを検討してください。

各リクエストに新しい動的キュー・インスタンスを作成する場合(レスポンスの後でキューを破棄する場合)は、このオプションを選択しないでください。

エンドポイントURI 'PUT'オプション

次の中からMQ PUTメッセージ・オプションを入力します。

- MQC.MQPMO_ALTERNATE_USER_AUTHORITY

- MQC.MQPMO_DEFAULT_CONTEXT

- MQC.MQPMO_FAIL_IF_QUIESCING

- MQC.MQPMO_LOGICAL_ORDER

- MQC.MQPMO_NEW_CORREL_ID

- MQC.MQPMO_NEW_MSG_ID

- MQC.MQPMO_NO_CONTEXT

- MQC.MQPMO_NO_SYNCPOINT

- MQC.MQPMO_NONE

- MQC.MQPMO_PASS_ALL_CONTEXT

- MQC.MQPMO_PASS_IDENTITY_CONTEXT

- MQC.MQPMO_RESOLVE_LOCAL_Q

- MQC.MQPMO_SET_ALL_CONTEXT

- MQC.MQPMO_SET_IDENTITY_CONTEXT

- MQC.MQPMO_SYNCPOINT

- MQC.MQPMO_VERSION_1

- MQC.MQPMO_VERSION_2

複数のオプションを区切るには、「|」または「+」を使用します。たとえば、次のように指定できます。

MQC.MQPMO_LOGICAL_ORDER | MQC.MQPMO_NEW_MSG_ID

MQ PUTメッセージ・オプションは、メッセージがアウトバウンド・キューに配置された場合に適用されます。

MQ認識できないレスポンスURI

認識できないレスポンス・メッセージの送信先のキューを示すURIを入力します。「相関値の自動生成」チェック・ボックスが選択された場合のみ、設定が有効になります。

このフィールドの値を指定しない場合、認証できないレスポンス・メッセージが削除されます。

RFH2ヘッダーのプロセス

メッセージ・ペイロードからWebSphere MQ RFH2ヘッダーを解析して、RFH2データを含むRFH2Headersトランスポート・ヘッダーを自動的に生成する場合はこのオプションを選択します。

このオプションを選択しない場合は、ペイロードはそのまま渡されます。

MQトランスポートによるRFH2ヘッダーの処理方法の詳細は、33.8.5.1.1項「RFH2ヘッダーについて」を参照してください。

ワーカー・スレッド・ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

MQトランスポートを使用するビジネス・サービスの構成の詳細は、2.2項「ビジネス・サービスの操作」の「MQトランスポート構成ページ」を参照してください。

33.8.5 トランスポート・ヘッダー

MQ転送で使用される各種のヘッダーを表33-4に示します。ヘッダーの多くはアウトバウンド・リクエストとインバウンド・レスポンスの両方で共通になっています。返信先キュー名、返信先キュー・マネージャ名、ユーザーID、およびバージョンの各ヘッダーはインバウンド・レスポンス用としてのみ編集できます。

プロキシ・サービスを構成するときに、トランスポート・ヘッダー・アクションを使用してメッセージのヘッダー値を設定できます。

表33-4 トランスポート・ヘッダー

ヘッダー

説明

インバウンド・レスポンス/アウトバウンド・リクエスト

アカウンティング・トークン

アカウンティング・トークンは、メッセージのIDコンテキストの一部です。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

アプリケーションIDデータ

アプリケーションIDデータは、メッセージのIDコンテキストの一部です。この値を使用して、メッセージまたはメッセージの送信元についての追加情報を提供できます。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

アプリケーション送信元データ

送信元アプリケーションについてのデータです。この値は、メッセージの送信元についての追加情報を提供するためにアプリケーションが使用できます。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

バックアウト・カウント

1単位の処理の一部として、メッセージがMQキューから返され、その後取り消された回数です。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

文字セット

アプリケーション・メッセージ・データ内の文字データのコード化文字セット識別子です。

インバウンド・トランスポート・アクション: このフィールドは、データを特定の表現に変換するためにインバウンド・トランスポートによって使用されます。リクエスト/レスポンス・メッセージングの場合、リクエスト・メッセージのcharacterSetヘッダーはレスポンス・メッセージにコピーされます。このヘッダーがインバウンド・リクエストで構成されていない場合、デフォルト値であるMQC.MQCCSI_Q_MGR値が使用されます。

アウトバウンド・トランスポート・アクション: このヘッダーは、アウトバウンド・トランスポート用にパイプラインで設定できます。このヘッダー値が設定されていない場合は、デフォルト値のMQC.MQCCSI_Q_MGRが使用されます。

両方

相関ID

取得する必要があるメッセージの相関IDです。

インバウンド・トランスポート・アクション: correlationIDに基づくレスポンス相関パターンでは、リクエストのcorrelationIDがレスポンスにエコーされます。ユーザーはレスポンス・パイプライン内でcorrelationIDをオーバーライドできます。

アウトバウンド・トランスポート・アクション: サービスの構成中にcorrelationIDの自動生成オプションが選択されている場合、アウトバウンド・トランスポートは自動的にcorrelationIDを生成し、トランスポート・ヘッダーからのcorrelationIDが上書きされます。この値が指定されていない場合、パイプラインで指定されているcorrelationIDが使用されます。

一方向メッセージングの場合、パイプラインで指定されているcorrelationIDが(アウトバウンド)リクエストで使用されます。

両方

エンコーディング

アプリケーション・メッセージ・データ内の数値に使用される表現です。

インバウンド・トランスポート・アクション: インバウンド・トランスポートでは、このヘッダーを使用して着信メッセージ・データを解釈します。レスポンス・パイプラインでこのヘッダーが構成されていない場合、デフォルト値であるMQC.MQENC_NATIVEが使用されます。

アウトバウンド・トランスポート・アクション: このヘッダーがアウトバウンド・トランスポートのパイプラインで設定されていない場合、デフォルト値であるMQC.MQENC_NATIVEが使用されます。

両方

有効期限

有効期限は、メッセージを送信するアプリケーションによって設定されます(10分の1秒単位)。有効期限が過ぎたメッセージは、キュー・マネージャによって破棄されます。

インバウンド・トランスポート・アクション: リクエスト/レスポンス・メッセージングでは、リクエストの有効期限ヘッダーはインバウンド・トランスポートによってレスポンスにコピーされます。

アウトバウンド・トランスポート・アクション: 対応するトランスポート・ヘッダーがパイプラインで設定されている場合、このヘッダーはアウトバウンド・リクエスト・メッセージにコピーされます。

注意: レポート・ヘッダーには(他のオプションに加えて)MQC.MQRO_PASS_DISCARD_AND_EXPIRYオプションが必ず含まれています。このオプションは元のメッセージの有効期限をレポートまたは返信メッセージにコピーする必要があるという、受信側クライアントに対する指示です。

両方

フィードバック

フィード・バック・レポートの性質です。この値は、MQC.MQMT_REPORTというメッセージのタイプと共に使用して、レポートの性質を示すために使用します。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

書式

メッセージ・データのフォーマット名です。フォーマット名は、メッセージの送信者によって使用され、受信者にメッセージのデータの性質を示すものです。

インバウンド・トランスポート・アクション: このフィールドがMQC.MQFMT_MD_EXTENSIONに設定されると、インバウンド・トランスポートは拡張MQMDオブジェクトを読み込みます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

グループID

物理メッセージが属しているメッセージ・グループを識別する値です。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

オフセット

セグメント化されたメッセージにおいて、論理メッセージの先頭からの、物理メッセージのデータのオフセットです。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

元の長さ

セグメント化されたメッセージの元の長さです。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

メッセージ・フラグ

メッセージのセグメント化とステータスを制御するフラグです。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

メッセージID

取得するメッセージのIDです。

インバウンド・トランスポート・アクション: messageIDがレスポンス・パイプライン内で指定されていない場合、messageIDヘッダーはMQC.MQMI_NONEに設定されます。

messageIDに基づく相関の場合、インバウンド・トランスポートによってリクエストのmessageIDがレスポンスのcorrelationIDヘッダーにコピーされます。レポート・ヘッダーにMQC.MQRO_COPY_MSG_ID_TO_CORREL_IDオプションが含まれている場合、messageIDに基づく相関が使用されます。

アウトバウンド・トランスポート・アクション: サービスの構成時にmessageIDの自動生成オプションが指定されていると、アウトバウンド・トランスポートによりmessageIDが自動生成され、トランスポート・ヘッダーのmessageIDが上書きされます。この値が指定されていない場合は、messageIDトランスポート・ヘッダーが使用されます。

一方向メッセージングの場合、パイプラインで指定されているmessageIDがアウトバウンド・リクエストで使用されます。この値が指定されていない場合、messageIDはトランスポートにより自動生成されます。

両方

メッセージ・シーケンス番号

グループ内の論理メッセージのシーケンス番号です。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

メッセージ・タイプ

メッセージのタイプです。

インバウンド・トランスポート・アクション: インバウンド・トランスポートでは、MQC.MQMT_REQUEST、MQC.MQMT_DATAGRAM、MQC.MQMT_REPLY、およびMQC.MQMT_REPORTを含むすべてのタイプのメッセージを読み込んで処理を行います。インバウンド・トランスポートではレポート・メッセージは生成されません。

アウトバウンド・トランスポート・アクション: アウトバウンド・トランスポートではMQC.MQMT_DATAGRAM、MQC.MQMT_REQUEST、MQC.MQMT_REPLY、およびMQC.MQMT_REPORTを含むすべてのタイプのメッセージを生成します。messageTypeヘッダーがパイプライン内で構成されていない場合、メッセージング・パターンが一方向のときにはMQC.MQMT_DATAGRAMタイプのメッセージが、メッセージング・パターンがリクエスト/レスポンスのときにはMQC.MQMT_REQUESTタイプのメッセージがトランスポートによって生成されます。

両方

永続性

メッセージの永続性を示します。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

優先度

メッセージの優先度です。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

配信アプリケーション名

メッセージを配信するアプリケーションの名前です。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

配信アプリケーションの種類

メッセージを配信するアプリケーションの種類です。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

Put Date Time

メッセージが配信された日付と時刻です。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

両方

返信先キュー名

返信の送信先となるキューの名前です。

メッセージの取得リクエストを発行したアプリケーションは、MQC.MQFMT_REPLYおよびMQC.MQFMT_REPORTメッセージをこのキューに送信できます。

インバウンド・トランスポート・アクション: このフィールドが設定されていると、インバウンド・トランスポートではreplyToQueueNameをレスポンス・キューの名前として使用します。この値が設定されていない場合は、デフォルトの宛先URIからキューの名前が導出されます。

アウトバウンド・トランスポート・アクション: リクエスト/レスポンス・メッセージ・パターンでは、メッセージ・フローで設定されたreplyToQueueNameは無視されます。一方向メッセージ・パターンでは、メッセージ・フローで設定されたreplyToQueueNameがアウトバウンド・メッセージで使用されます。

インバウンド・レスポンス

返信先キュー・マネージャ名

返信またはレポート・メッセージを送信できるキュー・マネージャの名前です。

インバウンド・トランスポート・アクション: リクエスト/レスポンス・メッセージ・パターンでは、インバウンド・メッセージのreplyToQueueManagerヘッダー値が、レスポンスURIでキュー・マネージャについて構成された値と一致しない場合、レスポンス・メッセージは破棄され、トランスポート・エラーがログに記録されます。

アウトバウンド・トランスポート・アクション: リクエスト/レスポンス・メッセージ・パターンでは、メッセージ・フローで設定されたreplyToQueueManagerは無視されます。一方向メッセージ・パターンでは、メッセージ・フローで設定されたreplyToQueueManagerがアウトバウンド・メッセージで使用されます。

インバウンド・レスポンス

レポート

レポートとは、他のメッセージに関するメッセージです。このフィールドでは、元のメッセージを送信しているアプリケーションでどのレポート・メッセージが必要か、これらのレポート・メッセージにアプリケーション・メッセージ・データを含める必要があるかどうか、またレポートまたは応答にメッセージIDおよび相関IDを設定する方法を指定します。これはMQCクラスの1つ以上の定数を「+」または「|」演算子で組み合せることによって構成されます。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。リクエスト/レスポンス・メッセージングの場合、このヘッダーはレスポンス・パイプライン内に構成できます。

アウトバウンド・トランスポート・アクション: トランスポートによってレポート・フィールドに次のオプションの組合せが必ず設定されます。

messageIDに基づく相関パターンが使用される場合にはMQC.MQRO_COPY_MSG_ID_TO_CORREL_IDが設定され、correlationIDに基づく相関パターンが使用される場合は、MQC.MQRO_PASS_CORREL_IDが設定されます。MQC.MQRO_PASS_DISCARD_AND_EXPIRYは常に設定されます。

注意: これらのオプションは、パイプラインの対応するトランスポート・ヘッダーで指定されているオプションに追加して設定されます。

両方

ユーザーID

メッセージIDの一部であり、メッセージ送信元のユーザーを識別します。

インバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。このヘッダーはパイプライン内でトランスポート・ヘッダーにコピーされます。

アウトバウンド・トランスポート・アクション: トランスポートによる明示的な処理は行われません。対応するトランスポート・ヘッダーがパイプライン内で設定されている場合は、リクエスト・メッセージにコピーされます。

インバウンド・レスポンス

バージョン

メッセージ記述子のバージョン番号です。

インバウンド・トランスポート・アクション: インバウンド・トランスポートは、メッセージ記述子バージョン1とバージョン2の両方をサポートしています。

アウトバウンド・トランスポート・アクション: デフォルトでは、アウトバウンド・トランスポートはバージョン2のヘッダーを生成します。ただし、このフィールドはパイプライン内でオーバーライドされることがあります。

インバウンド・レスポンス

RFH2Headers

トランスポート構成に「RFH2ヘッダーの処理」オプションが設定されている場合のペイロードにあるRFH2ヘッダー。RFH2HeadersヘッダーはStringです。

インバウンド・トランスポート・アクション: RFH2ヘッダーは、対応するトランスポート・メタデータ・ヘッダーを作成するためにMQペイロードから抽出されます。

アウトバウンド・トランスポート・アクション: アウトバウンドMQペイロードに挿入されたRFH2ヘッダー(各ヘッダー用の内容の長さを含む)を抽出するために、RFH2Headersデータを解析します。

両方

33.8.5.1 トランスポート・ヘッダーの構成

メッセージ・フローでは、インバウンド・リクエストおよびアウトバウンド・リクエストの両方についてトランスポート・ヘッダーを構成できます。MQトランスポートに関連するトランスポート・ヘッダーの詳細は、33.8.5項「トランスポート・ヘッダー」を参照してください。

メッセージ・フローで、トランスポート・ヘッダー・アクションを使用してメッセージのヘッダー値を設定します。詳細は、2.4.32項「メッセージ・フローへのトランスポート・ヘッダー・アクションの追加と構成」を参照してください。

メッセージ・フローにおいて、トランスポート・ヘッダーが明示的に設定されている場合、次のシナリオを除いて、この値がヘッダー値をオーバーライドします。

- アウトバウンド・リクエスト/レスポンス・パターンの場合、「相関値の自動生成」オプションがリクエスト/レスポンス・メッセージ・パターンのアウトバウンド・リクエストで選択されていると、この値がメッセージ・フローで設定されている場合であっても、相関IDが常に生成されます。

- メッセージ・フローでレポート・ヘッダーが設定されている場合、レポート・ヘッダーに関連付けられた複数のディレクティブの組合せがデフォルトのディレクティブにマージされます。

- リクエスト/レスポンス・メッセージ・パターンのアウトバウンド・リクエストについて、メッセージ・フローでreplyToQueueManagerNameまたはreplyToQueueNameヘッダーが設定されている場合、これらの値は無視されます。そのかわりに、これらのトランスポート・ヘッダーの値はビジネス・サービス用に構成されたレスポンスURIから導出されます。

- インバウンド・レスポンスの場合、replyToQueueManagerNameヘッダーにある値が、レスポンスURIで指定されたキュー・マネージャ名と一致しないと、エラー・メッセージが生成され、レスポンス・メッセージは送信されません。

- インバウンド・リクエスト・ヘッダーに設定されたreplyToQueueNameは、プロキシ・サービスの返信先URIで構成された値をオーバーライドします。

- 一方向ビジネス・サービスの場合、メッセージ・タイプのヘッダーがメッセージ・フローでリクエスト・タイプに構成されていると、replyToQueueNameヘッダーを指定する必要があります。この値が指定されていない場合は、MQサーバーでエラーが発生すると、メッセージはロール・バックされます。

33.8.5.1.1 RFH2ヘッダーについて

RFH2Headerヘッダーは複数の<RFH2Header>ブロックがあります。各ブロックには複数のフォルダが含まれています。MQトランスポートによって、各ブロックが、フォルダの線形リストを含む1つのRFH2ヘッダーに統合されます。

たとえば、次のブロックが一つのRFH2Headerヘッダーに統合されます。

<RFH2Header>
<mcd><Msd>jms_bytes</Msd></mcd>
</RFH2Header>
<RFH2Header>
<usr><clientId>DASHBOARD</clientId></usr>
</RFH2Header>

33.8.6 エラー処理

次のように、MQトランスポート・ビジネス・サービスを構成して、アプリケーション・エラーおよび通信エラーを処理できます。

- アプリケーション・エラー - アプリケーション・エラーが発生したときにビジネス・サービスのエンドポイントURIを再試行するかどうかを指定できます。詳細は、4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」の「アプリケーション・エラーの再試行」オプションを参照してください。

- 通信エラー-通信エラーが発生した場合に、ビジネス・サービスのURIがオフラインになるように構成できます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のビジネス・サービス・エンドポイントURIのオフラインの有効化に関する項およびビジネス・サービスのエンドポイントURIのメトリックの表示に関する項を参照してください。

33.8.7 MQトランスポートの制限

MQトランスポートの制限は次のとおりです。

- MQプロキシ・サービスに基づくリクエスト/レスポンス・プロキシ・サービスを、次の方法で呼び出すことはできません。

- ルート・アクションまたは動的ルーティングおよびルーティング表アクションを使用して構成されているプロキシ・サービスから。
サービス・コールアウト・アクションを使用して。

- ターゲットがMQトランスポートに基づくリクエスト/レスポンス・プロキシ・サービスである場合、サービス・コールアウトを使用してプロキシ・サービスを呼び出すことはできません。

- Oracle Service Busテスト・コンソールで、リクエスト/レスポンスMQプロキシ・サービスへの間接呼出しを使用することはできません。

33.9 WebSphere JMS MQインタフェースの使用

次の項では、Oracle Service BusがWebSphere MQへ接続する方法について概説し、WebSphere MQとOracle Service Bus間の通信で使用されるメッセージ・タイプのいくつかについて概要を示します。

- 33.9.1項「WebSphere MQ JMSインタフェースの使用」

- 33.9.2項「メッセージングのタイプ」

- 33.9.3項「WebSphere MQのチューニング」

33.9.1 WebSphere MQ JMSインタフェースの使用

Oracle Service Busは、WebSphere MQ JMSインタフェースを介してWebSphere MQに接続します。つまり、Oracle Service BusはWebSphere MQ JMSクライアントです。

WLSの外部JMSサーバーでは、WebSphere MQサーバーに対する初期コンテキスト・ファクトリ、接続ファクトリ、およびキューを指定します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JMSの構成と管理』のサード・パーティJMSプロバイダにアクセスする外部サーバー・リソースの構成に関する項を参照してください。

WebSphere MQ JMSでは、2種類のトランスポート方式がサポートされます。

- BINDINGS

- CLIENT

WebSphere MQ JMSクライアントがキュー・マネージャと物理的に同じマシン上で実行されている場合は、トランスポートのタイプをBINDINGSに設定できます。それ以外の場合は、CLIENTタイプのみ使用できます。

WebSphere MQは、次の2通りの方法でOracle Service Busと対話できます。

- Oracle Service BusがWebSphere MQのフロント・エンドとして機能し、他のアプリケーションからのサービス・リクエストを受け入れ、それらをWebSphere MQリクエストに変換します。図33-1を参照してください。

- WebSphere MQがOracle Service Busを介して他のアプリケーションにメッセージを送信します。図33-2を参照してください。

図33-1 Oracle Service Busフロント・エンド

図33-2 Oracle Service Busを介して送信されるメッセージ

33.9.2 メッセージングのタイプ

Oracle Service Busでは、次のメッセージングのタイプがサポートされます。

- 33.9.2.1項「非永続メッセージング」

- 33.9.2.2項「非XA永続メッセージング」

- 33.9.2.3項「XAメッセージング」

33.9.2.1 非永続メッセージング

リクエストが欠落しているなど、信頼性のない配信を受け入れる場合、必要に応じて非永続メッセージを使用できます。WebSphere MQのロギングとWebLogic JMSメッセージの永続化は永続メッセージに対してのみ実行されるため、非永続メッセージを使用すると関連するI/Oアクティビティが不要になります。

注意:

非永続メッセージのスループットは、通常はコンピュータのプロセッサ速度によって制限されます。ただし、物理メモリーが不足している場合は、サーバー・システムがページングI/OでCPUサイクルを消費することがあります。

33.9.2.2 非XA永続メッセージング

WebSphere MQ永続メッセージのスループットは、通常はキュー・マネージャおよびログへの書込みのI/Oレイテンシによって制限されます。

33.9.2.3 XAメッセージング

キューへのトランザクション(XA)アクセスのサポートを有効にするには、次のいずれかを使用します。

- Oracle Service BusがIBM WebSphere MQと同じコンピュータ上にある場合は、BINDINGSを使用してキュー・マネージャにアクセスします。

- Oracle Service BusとIBM WebSphere MQが異なるコンピュータ上に存在する場合は、CLIENTを使用します。ただし、CLIENTを使用する場合、XAトランザクションをサポートするIBM WebSphere MQクライアントの特殊なバージョンが必要です。このバージョンは、WebSphere MQ Extended Transaction Clientと呼ばれます。

ヒント:

デプロイメント記述子をXA対応リソース(JMS、TUXEDO、EJB)に適切に設定するには、プロキシ・サービスを作成する前に、参照接続ファクトリのXA属性を設定する必要があります。

33.9.3 WebSphere MQのチューニング

Oracle Service Busと共に使用する場合、WebSphere MQのチューニングには次のガイドラインが役に立ちます。WebSphere MQの詳細は、WebSphere MQの適切なドキュメントを参照してください。

- Oracle Service Busおよびキュー・マネージャが同じコンピュータにデプロイされている場合は、トランスポートのタイプとしてBINDINGSを使用します。

- アプリケーション・リクエストのごく一部にのみXAが必要な場合は、別の接続オブジェクトを作成してXAを無効にします。

- アクティブ・ログを多くのボリュームに分散させます。システムで高い永続メッセージ・スループットを処理する必要がある場合は、他のデータ・セットの使用との競合を最小限に抑えるために、高速の直接アクセス・ストレージ・デバイス(DASD)にログ・ファイルを置く必要があります。各アクティブ・ログを使用率の低い個別のボリュームに割り当てることをお薦めします。

- バッファ・オーバーフローを削減するために、バッファ・プールとページ・セットをチューニングします。バッファ・オーバーフローにより、ハード・ディスクのフラッシュが発生します。

- Oracle Service Bus JMSからMQキューへの接続が切断されないように、アクティブなチャネル数を増やして100を超えるようにします。デフォルトでは、アクティブなチャネル数は10です。

34 Oracle BPEL Process Managerトランスポート(Oracle SOA Suite 10gで使用する場合のみ)

この章では、BPEL-10gトランスポートの概要と、サービスでの使用および構成方法について説明します。

注意:

BPEL Process Managerトランスポート(ユーザー・インタフェースではbpel-10g)は、Oracle SOA Suite 10g リリース3のみとのメッセージングに対応します。Oracle SOA Suite 11g以上で使用するためには、Oracle Service BusによってSOA-DIRECTトランスポートが提供されます。詳細は、第24章「Oracle SOA Suiteトランスポート(SOA-DIRECT)」を参照してください。

このドキュメントでは、Oracle Service Busを使用してサービス指向アーキテクチャ(SOA)環境にOracle BPEL Process Managerを導入する方法について説明します。内容は次のとおりです。

- 34.1項「概要」

- 34.2項「簡単な使用例(同期)」

- 34.3項「高度な使用例(非同期)」

- 34.4項「トランスポート構成のリファレンス」

- 34.5項「セキュリティ」

- 34.6項「エラー処理」

- 34.7項「WS-Addressingのリファレンス」

- 34.8項「XMLの例」

34.1 概要

Oracle Service Busでは、Oracle BPEL Process Managerとの通信をサポートしており、サービス指向アーキテクチャ(SOA)にBPELプロセスを含めることができます。Oracle Service BusのOracle BPEL Process Manager用ネイティブ・トランスポート(BPELトランスポート)を使用して、BPELプロセスをWebサービスとしてサービス・バス・レイヤーに公開し、他のサービスからBPELプロセスを呼び出せるようにできます。

同様に、Oracle BPEL Process Managerからサービス・バス・レイヤーにあるサービスを呼び出して、Oracle BPEL Process Manager自体のプロセスで使用できます。

このガイドでは、Oracle Service BusとOracle BPEL Process Managerの組込みの統合(Oracle Service Bus APIレベルで有効な統合)に重点を置いていますが、ソリューションはこのガイドで提供されるものだけではありません。Oracle Service Busに用意されている他の標準の通信プロトコル(HTTP、JMS、Fileなど)を使用することもできます。

Oracle BPEL Process Managerの詳細は、http://www.oracle.com/technetwork/middleware/bpel/overview/index.htmlを参照してください。

34.1.1 SOAPサポート

Oracle BPEL Process ManagerとOracle Service Busの間の通信は、SOAPだけを介して行われます。

Oracle Service BusおよびOracle BPEL Process ManagerはSOAP RPCエンコーディングを完全サポートしていません。BPELトランスポートはSOAP RPCエンコーディングのバインディングを受け入れますが、multiRefなど一部のエンコーディング・メカニズムではランタイム・エラーが発生する場合があります。

BPELトランスポートは次の機能をサポートしています。

- SOAP 1.1。SOAP 1.2は、Oracle Service BusからOracle BPEL Process Managerへの同期通信でのみサポートされています。

- SOAPヘッダー

BPELトランスポートには次の制限があります。

- 添付ファイルなし

- WS-SecurityまたはWS-RMなし

34.1.2 トランザクション伝播

Oracle BPEL Process Managerは、APIを使用したトランザクション伝播をサポートしており、BPELトランスポートはトランザクション対応です。そのため、Oracle WebLogic ServerにOracle BPEL Process Managerがデプロイされている場合はトランザクション伝播がサポートされます。たとえば、Oracle BPEL Process Manager以外のサービスでプロセスが始まった場合、Oracle Service BusはBPELトランスポートを通じてそのトランザクションをOracle BPEL Process Managerに伝播し、トランザクションを完了できます。

BPEL Process ManagerからSBトランスポート・ベースのプロキシ・サービスを介したOracle Service Busへのトランザクション伝播もサポートされています。

注意:

トランザクション伝播は、OracleサーバーOC4JおよびOracle ASではまだサポートされておらず、IBM WebSphereではまだ認証されていません。

34.1.3 SSLサポート

Oracle Service BusからOracle BPEL Process Managerへの呼出しはRMIを使用して行われるので、BPELトランスポートは一方向SSLを使用した呼出しレベルのセキュリティをサポートしています。詳細は、34.4.1項「エンドポイントURI」を参照してください。

34.1.4 環境変数

BPELトランスポートでは次の環境変数を宣言します。これらは、異なるデプロイメント環境間でOracle Service Bus構成を移動する場合も保持できます。

表34-1 BPELトランスポートの環境変数

環境変数

説明

ディスパッチ・ポリシー

サービス・エンドポイントのディスパッチ・ポリシーに使用されるOracle WebLogic Serverワーク・マネージャ・インスタンス。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

サービス・アカウント

JNDIコンテキスト・セキュリティの場合、Oracle BPEL Process Manager配信サービスへのアクセスに使用されるサービス・アカウント。

エンドポイントURI

サービスのURI。

34.2 簡単な使用例(同期)

この項では、Oracle Service Busを介してOracle BPEL Process Managerと通信する簡単で最も一般的な使用例(一方向またはリクエスト/レスポンスの同期通信)について説明します。

34.2.1 同期: Oracle BPEL Process Managerのプロセスの呼出し

図34-1は、Oracle Service Busを介したクライアントとOracle BPEL Process Managerの同期通信パターンを示します。

図34-1 Oracle Service Busを介したOracle BPELプロセスの同期呼出し

34.2.1.1 サービスの作成と構成

次のガイドラインに従って、クライアントからOracle BPEL Process Managerプロセスを呼び出します。

- Oracle Service Busで、呼び出すBPELプロセスに相当するビジネス・サービスを作成します。

- WSDLベースのビジネス・サービスを作成します。WSDLは、Oracle BPEL Process Managerから生成します。

- ビジネス・サービスの構成で bpel-10g トランスポートを選択します。

- 表34-2の説明に従ってエンドポイントURIを設定します。

- ビジネス・サービスの残りの部分を構成します。34.4項「トランスポート構成のリファレンス」を参照してください。

- ビジネス・サービスを呼び出すOracle Service Busでのプロキシ・サービスを作成します。2.3項「プロキシ・サービスの操作」を参照してください。

メッセージを正しい会話に関連付けるには、34.2.3項「メッセージと正しい会話の関連付け」を参照してください。

34.2.2 同期: Oracle BPEL Process Managerからの外部サービスの呼出し

図34-2は、Oracle Service Busを介したOracle BPEL Process Managerとサービス・プロバイダの同期通信パターンを示します。

図34-2 Oracle Service Busを介してサービスを同期的に呼び出すOracle BPELプロセス

34.2.2.1 サービスの作成と構成

次のガイドラインに従って、Oracle BPEL Process Managerから外部サービスを呼び出します。

- 呼び出したい外部サービスを表すOracle Service Busでのビジネス・サービスを作成します。2.2項「ビジネス・サービスの操作」を参照してください。

- ビジネス・サービスを呼び出すOracle Service Busでのプロキシ・サービスを作成します。

- ビジネス・サービスを呼び出すために、SOAP WSDLを使用してプロキシを作成する必要があります。プロキシ・サービスを定義するときに、サービス・タイプとして「WSDL Webサービス」を選択し、目的のポートまたはバインディングを選択します。

- プロキシ・サービスの構成で sb トランスポートを選択します。

- Oracle BPEL Process Managerからプロキシ・サービスを呼び出すために、プロキシ・サービスの有効なWSDLをエクスポートし、Oracle BPEL Process Manager開発環境にインポートします。通常どおり、Oracle BPEL Process Managerからプロキシ・サービスを呼び出します。

構成の詳細は、2.3項「プロキシ・サービスの操作」および第27章「SBトランスポート」を参照してください。

メッセージを正しい会話に関連付けるには、34.2.3項「メッセージと正しい会話の関連付け」を参照してください。

34.2.3 メッセージと正しい会話の関連付け

ステートフル・メッセージを使用する場合、Oracle Service BusとOracle BPEL Process Managerの間で同期的に送信されるメッセージは、会話と呼ばれます。Oracle BPEL Process Managerは、メッセージを会話の一部として相互に正しく関連付けるために、次のメカニズムをサポートしています。これらのメカニズムは互いに独立していて、正しい関連付けを実現するために両方とも使用するように指定できます。

- BPEL相関 - BPEL相関はBPEL仕様に含まれています。Oracle Service BusのWSDLベースのビジネス・サービスからBPELプロセスにメッセージを送信すると、BPELエンジンによってメッセージが調べられ、ターゲットのBPELプロセス・インスタンスが検出されます。

- WS-Addressingを使用した不明瞭な相関 -クライアントからOracle Service Busを介してBPELプロセスへの会話を開始すると、BPELエンジンによってWS-Addressing SOAPヘッダーの「messageID」の値が調べられ、新しい会話のIDとして使用されます。会話IDは、「RelatesTo」の値としてその会話が終わるまで維持されます。
WS-Addressingの詳細は、「WS-Addressingのリファレンス」にある34.7.2項「MessageID / RelatesTo」を参照してください。会話IDの設定例は、34.8.1項「会話IDの例」を参照してください。

34.3 高度な使用例(非同期)

この項では、Oracle Service Busを介したOracle BPEL Process Managerとの非同期通信のより高度な使用例を説明します。

34.3.1 非同期: Oracle BPEL Process Managerのプロセスの呼出し

図34-3は、Oracle Service Busを介したOracle BPEL Process Managerとサービス・プロバイダの非同期通信パターンを示します。

図34-3 Oracle Service Busを介したOracle BPELプロセスの非同期呼出し

非同期のメッセージ交換では、リクエストとは別の接続でコールバックが送信されます。

34.3.1.1 サービスの作成と構成

次のガイドラインに従って、クライアントからOracle Service Busを介してOracle BPEL Process Managerプロセスを非同期的に呼び出します。

- Oracle Service Busで2つのプロキシ・サービスを作成します。ビジネス・サービスを呼び出すサービスと、コールバックを処理するサービスです。
リクエスト・プロキシ・サービス

- 非同期通信では別の接続でコールバックが送信されるので、リクエスト・プロキシでコールバック・アドレスを設定する必要があります。このコールバック・アドレスは、メッセージが正しいクライアントに戻るように、コールバック・プロキシ・サービスとコールバック・ビジネス・サービスに渡されます。
ビジネス・サービスの構成で、「コールバック・プロキシ」を選択します。実行時に、BPELトランスポートでこのプロキシをコールバック・プロキシとして使用します。

ビジネス・サービスでコールバック・プロキシを選択しない場合のコールバック・アドレスの設定方法は、34.7項「WS-Addressingのリファレンス」および34.8.2項「Oracle Service Busを介したBPEL間非同期通信の例」を参照してください。

コールバック・プロキシ・サービス

- サービス・タイプとしてWSDL SOAPまたは任意のSOAPサービス、およびSBまたはHTTPトランスポートを使用するようにプロキシを構成します。Oracle BPEL Process ManagerからOracle Service Busへのトランザクション伝播を行う場合はSBトランスポートを使用します。
このプロキシ・サービスをビジネス・サービスのコールバック・プロキシとして選択すると、実行時にBPELトランスポートにより正しいコールバックURIが提供されます。

プロキシ構成の詳細は、2.3項「プロキシ・サービスの操作」を参照してください。

- Oracle Service Busで2つのビジネス・サービスを作成します。対話相手のOracle BPEL Process Managerプロセスへのリクエストを行うサービスと、コールバックを処理するサービスです。
リクエスト・ビジネス・サービス

- WSDLベースのビジネス・サービスを作成します。WSDLは、Oracle BPEL Process Managerから生成します。サービス・タイプとして「WSDL Webサービス」を選択し、WSDLで適切なバインディングまたはポートを選択します。

- ビジネス・サービスの構成で bpel-10g トランスポートを選択します。

- ロールを「非同期クライアント」に設定します。

- 表34-2の説明に従ってエンドポイントURIを設定します。

- bpel-10gトランスポート構成ページの「コールバック・プロキシ」フィールドを使用して、作成したコールバック・プロキシを選択します。

コールバック・ビジネス・サービス

コールバックの処理に必要なビジネス・プロセスを構成します。

34.4項「トランスポート構成のリファレンス」を参照してください。ここで説明していない構成情報については、4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」も参照してください。

34.3.2 非同期: Oracle BPEL Process Managerからのサービス・プロバイダの呼出し

この項では、Oracle Service Busを介したサービスの呼出しを行うためにOracle BPEL Process Managerで必要な手順と構成について説明します。

図34-4は、Oracle Service Busを介したOracle BPEL Process Managerとサービス・プロバイダの非同期通信パターンを示します。

図34-4 Oracle Service Busを介してサービスを非同期的に呼び出すOracle BPELプロセス

非同期のメッセージ交換では、リクエストとは別の接続でコールバックが送信されます。

34.3.2.1 サービスの作成と構成

次のガイドラインに従って、Oracle BPEL Process ManagerからOracle Service Busを介して外部サービスを非同期的に呼び出します。

- Oracle Service Busで2つのプロキシ・サービスを作成します。ビジネス・サービスを呼び出すリクエスト・サービスと、コールバックを処理するサービスです。
リクエスト・プロキシ・サービス

- sbトランスポートを使用するようにプロキシ・サービスを構成します。

- 非同期通信では別の接続でコールバックが送信されるので、メッセージが正しいクライアントに戻るようにコールバック・アドレスを設定する必要があります。
コールバック・アドレスの設定の詳細は、「WS-Addressingのリファレンス」にある34.7.1項「ReplyTo」と、34.8.2項「Oracle Service Busを介したBPEL間非同期通信の例」を参照してください。

コールバック・プロキシ・サービス

- コールバック・アドレスをビジネス・サービスに渡すようにプロキシ・サービスを構成します。コールバックURIはリクエスト内で指定されます。URI再書込みを使用してコールバックURIを抽出し、ビジネス・サービスに転送します。

プロキシ構成の詳細は、2.3項「プロキシ・サービスの操作」および第27章「SBトランスポート」を参照してください。

- Oracle Service Busで2つのビジネス・サービスを作成します。外部サービスを呼び出すリクエスト・ビジネス・サービスと、コールバック・ビジネス・サービスです。
リクエスト・ビジネス・サービス

- ビジネス・サービスが外部サービスを呼び出すように構成します。

コールバック・ビジネス・サービス

- コールバック・ビジネス・サービスは、コールバック・プロキシからコールバック・アドレスを受け取ります。コールバック・プロキシ・サービスで実行されるURI再書込みによって、レスポンスの送信先のBPELプロセスを判断します。
WSDLベースのビジネス・サービスを作成します。WSDLは、Oracle BPEL Process Managerから生成します。サービス・タイプとして「WSDL Webサービス」を選択し、WSDLで適切なバインディングまたはポートを選択します。

- ビジネス・サービスの構成で bpel-10g トランスポートを選択します。

- エンドポイントURIをbpel://callbackに設定します(表34-2の説明に従ってください)。コールバックURIは、コールバック・プロキシ・サービスによって提供されます。

注意:

トレーディング・パートナ契約によってクライアントとBPELサービスがリンクしている場合など、コールバック・アドレスが常にわかっている場合は、bpel://callbackを使用するのではなく、そのコールバック・アドレスをコールバック・ビジネス・サービスに設定できます。

- bpel-10gトランスポートの構成ページでロールを「サービス・コールバック」に設定します(表34-2の説明に従ってください)。

ビジネス・サービスの残りの部分を構成します。34.4項「トランスポート構成のリファレンス」を参照してください。ここで説明していない構成情報については、4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」も参照してください。

34.4 トランスポート構成のリファレンス

ここでは、BPELトランスポート固有の構成オプションについて説明します。ビジネス・サービスの他の構成オプションは、2.2項「ビジネス・サービスの操作」を参照してください。

34.4.1 エンドポイントURI

BPELトランスポートのURIフォーマットは表34-2で説明します。これらは、EclipseまたはOracle Service Bus管理コンソールのビジネス・サービスのメインの「トランスポート」ページで構成します。

表34-2 エンドポイントURIの指定

トランスポートのロール

エンドポイントURIフォーマット

同期クライアントまたは非同期クライアント・ロール

次のエンドポイントURIフォーマットで、大カッコで囲まれているのはオプションの要素です。その次に説明を示します。

protocol://host[:port][/protocol-path]/domain/process[/version[/partnerlink/role]]

protocol

次のいずれかのRMI/JNDIプロトコルを使用します。

- iiop / iiops -サーバーにとらわれない汎用プロトコルです。

- t3 / t3s - Oracle WebLogic Serverで使用されます。

- http / https -トンネリングおよびOracle WebLogic Serverで使用します。

- ormi/ormis - OC4J (Oracle Container for JEE)でのスタンドアロン開発で使用します。

エンドポイントURIの他の要素の説明は次のとおりです。

- port - ormiおよびopmnプロトコルでのみ使用します。サーバーがデフォルト・ポートを使用するように構成されている場合はオプションです。

- protocol-path - opmn/opmnsプロトコルでのみ使用します。protocol-pathはクラスタ内のサーバー・インスタンスです。

- version -オプション。呼び出すプロセスのバージョンです。

- partnerlink/role -オプション。バージョンを指定する場合、フル・パスの記述に含めます。

クラスタの例

クラスタ内の特定のノードをターゲットとする場合は、次のURIフォーマットを使用することもできます。

protocol://host1:port1,host2:port2/<remainder_of_URI>

サービス・コールバック

bpel://callback

トレーディング・パートナ契約によってクライアントとBPELサービスがリンクしている場合など、コールバック・アドレスが常にわかっている場合は、bpel://callbackを使用するのではなく、そのコールバック・アドレスをエンドポイントURIに設定できます。

34.4.2 bpel-10gトランスポート構成

表34-2に、EclipseまたはOracle Service Bus管理コンソールにおけるBPELトランスポートの構成ページに含まれるオプションを示します。

表34-3 BPELトランスポート構成

プロパティ

説明

ロール

BPELトランスポートは、Oracle Service BusからOracle BPEL Process Managerにリクエスト・メッセージを送信するために使用します。ビジネス・サービスでは、次のロールを処理できます。

- 「同期クライアント」
Oracle Service Busクライアントとの同期通信では、必要な場所情報はBPELアドレスのみです。このアドレスは、(表34-2で説明したように)エンドポイントURIとして静的に取得されるか、URI再書込みを通じて動的に取得されます。

- 「非同期クライアント」
Oracle Service Busクライアントとの非同期通信では、Oracle BPEL Process ManagerからOracle Service Busへのコールバックはリクエストとは別の接続で送信されます。正しいコールバック・アドレスを提供するようにOracle Service Busを構成する必要があります。詳細は、34.3項「高度な使用例(非同期)」のガイドラインを参照してください。

- 「サービス・コールバック」
ビジネス・サービスをOracle BPEL Process Managerへのサービス・コールバックとして設計する場合はこのロールを使用します(この場合、Oracle BPEL Process ManagerはOracle Service Busを介してサービス・プロバイダを非同期的に呼び出します)。

サービス・コールバック・ビジネス・サービスでは、ロード・バランシングまたはフェイルオーバーはサポートされません。

サービス・コールバックの使用方法は、表34-2の「サービス・コールバック」と、34.3.2項「非同期: Oracle BPEL Process Managerからのサービス・プロバイダの呼出し」を参照してください。

コールバック・プロキシ

このオプションのフィールドは、非同期クライアント・ロールでのみ使用可能です。このフィールドでは、リクエストを行ったOracle Service Busクライアントへのコールバックのルーティングに使用されるプロキシ・サービス(WSDL SOAPまたは任意のSOAPタイプのSBまたはHTTPプロキシである必要があります)を選択します。詳細は、34.3項「高度な使用例(非同期)」のガイドラインを参照してください。

サービス・アカウント

JNDIコンテキスト・セキュリティの場合は、Oracle BPEL Process Manager配信サービスへのアクセスに使用されます。「参照」をクリックし、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

静的またはパススルーなど、構成できるサービス・アカウントのタイプに制限はありませんが、ランタイムはユーザー名とパスワードにアクセスできる必要があります。

トランザクションを中断

「トランザクションを中断」を選択すると、ビジネス・サービスがトランザクションによって呼び出された場合でも、ビジネス・サービスは非トランザクションになります。

「トランザクションを中断」を選択しない場合は、次のようになります。

- プロトコルによって、Oracle WebLogic Serverでサポートされるプロトコル(t3、iiop、http)が指定されている場合は、トランザクションが伝播されます。

- プロトコルがOC4Jサーバー(ormi、opmn)を指定している場合、OC4Jではトランザクションの伝播がサポートされないため、BPELトランスポートで例外がスローされます。

BPELトランスポートでは、次の状況で「トランザクションを中断」オプションが無視されます。

- サービスの品質(QoS)をBEST_EFFORTに設定してビジネス・サービスが呼び出される場合。BPELトランスポートでは、QoSをサポートしていないトランザクションが自動的に中断されます。

- ビジネス・サービスが、EXACTLY_ONCEに設定されたQoSで呼び出され、トランザクションがない場合。

トランザクション伝播の説明については、34.1.2項「トランザクション伝播」を参照してください。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

- 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

34.5 セキュリティ

Oracle BPEL Process Managerのセキュリティは、EJBレベルで扱われます。

BPELトランスポートは、表34-2で説明したように、JNDIコンテキストの作成およびEJBルックアップに使用するJNDIの「サービス・アカウント」オプションをサポートしています。BPELトランスポートはユーザー名とパスワードを取得します。サービス・アカウントが構成されていない場合は、匿名サブジェクトが仮定されます。

BPELトランスポートは、呼出しレベルのセキュリティもサポートしており、Oracle Service BusからOracle BPEL Process ManagerへのURIのプロトコル部分で一方向SSLを指定できます。詳細は、34.4.1項「エンドポイントURI」を参照してください。

34.5.1 Oracle Service BusからOracleサーバーへの通信でのSSLの使用

(ormisおよびopmnsプロトコルを使用した)Oracle Service BusからOC4JおよびOracle ASサーバーへの通信にSSLを使用するには、Oracle Service Busサーバーで、ドメインのsetDomainEnvスクリプトに次のプロパティを追加してSSLを構成する必要があります。

-Djavax.net.ssl.trustStorePassword=passphrase

-Djavax.net.ssl.trustStore=<信頼性のある証明書のキーストアへのファイル・パス>

34.6 エラー処理

BPELトランスポートでは、Oracle BPEL Process Managerの例外を複数の方法で処理します。

34.6.1 アプリケーション・エラー

BPELプロセスの返信にフォルトがあった場合、BPELトランスポートはAPIでそのフォルト・メッセージをインターセプトし、SOAPフォルトに変換します。

BPELトランスポートのアプリケーション・エラー自動処理機能により、アプリケーション・エラーが発生した場合に自動的にアプリケーション・エラー(この場合はBPELフォルト)を再試行するかどうかを指定できます。たとえば、問題が解決するまでアプリケーション・エラーで必ず失敗するように指定できます。アプリケーションの再試行を有効または無効にするには、「トランスポート構成」・ページの「アプリケーション・エラーの再試行」オプションを使用します。

34.6.2 接続エラー

Oracle BPEL Process Managerは、エラーではない次の例外をスローすることがあります。BPELトランスポートでは、これらの例外を自動的にTransportException接続エラーとして分類します。

- NamingException

- RemoteException

トランスポートの接続エラー自動処理機能により、接続エラーを再試行するかどうか、および接続エラーの再試行頻度を指定できます。再試行回数、および接続エラー時に次の再試行まで待機する秒数を指定するには、「トランスポート構成」ページの「再試行回数」オプションと「再試行の反復間隔」オプションを使用します。「再試行の反復間隔」を0に設定すると、接続エラーは再試行されません。

34.6.3 その他のエラー

その他の、アプリケーションおよび接続以外の例外は、一般的なTransportExceptionエラーとして再スローされます。

34.7 WS-Addressingのリファレンス

ここでは、BPELトランスポートとOracle BPEL Process Managerの通信に使用する特定のWS-Addressingプロパティについて説明します。また、34.3項「高度な使用例(同期)」のガイドラインで取り上げた、非同期通信でコールバック・アドレスを指定する方法についても説明します。

WS-Addressingの例は、34.8項「XMLの例」を参照してください。

34.7.1 ReplyTo

非同期通信では、リクエストとは別の接続でコールバックが送信されます。サービス開発者は、非同期のやり取りで正しいコールバック・アドレスを提供してコールバックが正しいクライアントに送信されるようにする必要があります。

34.7.1.1 Oracle Service Busを介したBPELプロセスの非同期呼出し

BPELトランスポートには、正しいコールバック・アドレスを指定するためのメカニズムが組み込まれています。Oracle Service BusでBPELビジネス・サービスを作成するときに、コールバックを処理するコールバック・プロキシを選択でき、BPELトランスポートによって正しいコールバック・アドレスが自動的に設定されます。手動で「ReplyTo」を指定する必要はありません。

詳細は、34.3.1項「非同期: Oracle BPEL Process Managerのプロセスの呼出し」を参照してください。

34.7.1.2 Oracle Service Busを介して外部サービスを呼び出すBPELプロセス

Oracle BPEL Process ManagerからOracle Service Busを介して外部サービスを呼び出す場合は、コールバック・アドレスを手動で設定する必要があります。WS-Addressingでこれを行うには、リクエスト・プロキシ・サービスでコールバック・アドレスを「ReplyTo」の値として設定します。そのURIがビジネス・サービスのBPELトランスポートによってコールバック・アドレスとして使用されます。

詳細は、34.3.2項「非同期: Oracle BPEL Process Managerからのサービス・プロバイダの呼出し」を参照してください。

34.7.2 MessageID / RelatesTo

「MessageID」および「RelatesTo」は、Oracle Service BusとOracle BPEL Process Managerの会話で会話IDの格納に使用され、関連するメッセージが同じ会話内に維持されるようにします。

BPELトランスポートでは、特定の操作が開始操作か続行操作かを指定できません。かわりに、BPELトランスポートでは、「MessageID」および「RelatesTo」プロパティを検索し、それぞれ設定します。

次に、同期会話と非同期会話で「MessageID」と「RelatesTo」がどのように使用されるかを説明します。

- 同期会話:最初のリクエストで、「MessageID」によって会話IDが決定されます。残りの通信で、会話IDはRelatesToの値として提供されます。
「MessageID」または「RelatesTo」に値が割り当てられていない場合、BPELトランスポートは、会話が発生していないか、またはOracle BPEL Process Managerが相関付けを処理中であると想定します。

- 非同期コールバック: 最初のリクエストで、「MessageID」によって会話IDが決定されます。残りの通信で、会話IDはコールバックの「RelatesTo」の値として提供されます。
「MessageID」または「RelatesTo」に値が割り当てられていない場合、BPELトランスポートは、会話が発生していないか、またはOracle BPEL Process Managerが相関付けを処理中であると想定します。

メッセージが正しい会話に関連付けられるように会話IDを設定する方法の詳細は、 34.2.3項「メッセージと正しい会話の関連付け」および34.8.1項「会話IDの例」を参照してください。

34.8 XMLの例

Oracle Service BusとOracle BPEL Process Managerの間のXMLメッセージングの問題の例を次に示します。

34.8.1 会話IDの例

この項では、Oracle Service BusとOracle BPEL Process Managerの会話内のメッセージに共通IDを設定する様々な例を挙げます。

図34-5では、クライアントがOracle BPEL Process Managerのプロセスを同期的に呼び出しています。ビジネス・サービス(B1)は、BPELトランスポートを使用してプロセスを呼び出します。プロキシ・サービス(P1)は、必要な会話IDマッピングを処理します。

図34-5 Oracle Service Busを介した同期的なやりとりでの操作

34.8.1.1 ポートとメッセージの定義

この項の例では、WSDLで定義された次のポートおよびメッセージ定義を使用します。

<wsdl:types>
<xsd:schema
targetNamespace="http://www.sample.org/spec/samples/types"
elementFormDefault="qualified">
<xsd:complexType name="ValueHolder">
<xsd:all>
<xsd:any minOccurs="1"/>
</xsd:all>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<message name="create"/>
<message name="putRequest">
<part name="key" type="xsd:string"/>
<part name="value" type="types:ValueHolder"/>
</message>
<message name="putResponse">
<part name="value" type="types:ValueHolder"/>
</message>
...
<message name="dispose"/>
<portType name="ServiceMap">
<operation name="create">
<input message="tns:create"/>
</operation>
<operation name="put">
<input message="tns:putRequest"/>
<output message="tns:putResponse"/>
</operation>
...
<operation name="dispose">
<input message="tns:dispose"/>
</operation>
</portType>

34.8.1.2 WS-Addressingでの会話IDの設定

この例は、WS-Addressingを使用して会話内のメッセージに会話IDを設定する方法を示しています。

図34-5に通信パターンが示されています。

作成操作

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:123456789</wsa03:MessageID>
</soap:Header>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>

プット操作

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:111111111</wsa03:MessageID>
<wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
</soap:Header>
<soap:Body>
<put>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

<put>操作にもMessageIDがありますが、RelatesToに会話IDを示す値があるので無視されます。

34.8.1.3 メッセージ・ペイロード・データでの会話IDの設定

この例は、メッセージ・ペイロード・データを使用して会話内のメッセージに会話IDを設定する方法を示しています。

これらの例では、プロキシ・サービスがIDをMessageID/RelatesTo SOAPヘッダーにマッピングします。

図34-5に通信パターンが示されています。

作成操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<createResponse>
<mapID>uuid:123456789</mapID>
</createResponse>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからBPELプロセス(ビジネス・サービスを経由)

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:123456789</wsa03:MessageID>
</soap:Header>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>

説明なし: IDはプロキシ・サービス・パイプラインのリクエストで生成され、プロセスを呼び出す前に<wsa03:MessageID>として挿入されました。プロセス側では、作成操作は一方向の操作なので、クライアントに応答する前にSOAPレスポンスが作成される必要があります。プロキシ・サービスで生成されたIDがレスポンスによって返送されます。

プット操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Body>
<put>
<mapID>uuid:123456789</mapID>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからBPELプロセス(ビジネス・サービスを経由)

<soap:Envelope>
<soap:Header>
<wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
</soap:Header>
<soap:Body>
<put>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

破棄操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Body>
<dispose>
<mapID>uuid:123456789</mapID>
</dispose>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからBPELプロセス(ビジネス・サービスを経由)

<soap:Envelope>
<soap:Header>
<wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
</soap:Header>
<soap:Body>
<dispose/>
</soap:Body>
</soap:Envelope>

34.8.1.4 変換の例

これらの例では、クライアントがWS-Addressing仕様の新しいバージョン(wsa04接頭辞)を使用します。プロキシ・サービスで、wsa03接頭辞を使用するようにSOAPヘッダーの変換を行う必要があります。プロキシ・サービス開発者はトランスフォーメーションを構成します。

図34-5に通信パターンが示されています。

作成操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Header>
<wsa04:MessageID>uuid:123456789</wsa04:MessageID>
</soap:Header>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからBPELプロセス(ビジネス・サービスを経由)

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:123456789</wsa03:MessageID>
</soap:Header>
<soap:Body>
<create/>
</soap:Body>
</soap:Envelope>

プット操作

クライアントからプロキシ・サービス

<soap:Envelope>
<soap:Header>
<wsa04:MessageID>uuid:111111111</wsa04:MessageID>
<wsa04:RelatesTo>uuid:123456789</wsa04:RelatesTo>
</soap:Header>
<soap:Body>
<put>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

プロキシ・サービスからBPELプロセス(ビジネス・サービスを経由)

<soap:Envelope>
<soap:Header>
<wsa03:MessageID>uuid:111111111</wsa03:MessageID>
<wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
</soap:Header>
<soap:Body>
<put>
<key>key</key>
<value>
<PO/>
</value>
</put>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<putResponse>
<value/>
</putResponse>
</soap:Body>
</soap:Envelope>

34.8.2 Oracle Service Busを介したBPEL間非同期通信の例

次の例は、Oracle Service Busを介して別のBPELプロセスを非同期的に呼び出すBPELプロセスに関係するSOAPヘッダーを示します。

図34-6では、P1とP2はプロキシ・サービスであり、B1およびB2ビジネス・サービスにメッセージを渡します(そして、変換を実行します)。B1およびB2、Oracle Service Bus BPELトランスポートを使用してBPELプロセスを呼び出すために必要です。

図34-6 Oracle Service Busを介して別のBPELプロセスを呼び出すBPELプロセス

次のSOAPヘッダー例は、図34-6を参照してください。

34.8.2.1 ポートとメッセージの定義

<message name="LoanServiceRequestMessage">
<part name="payload" element="types:loanApplication"/>
</message>
<message name="LoanServiceResultMessage">
<part name="payload" element="types:loanOffer"/>
</message>
<portType name="LoanService">
<operation name="initiate">
<input message="tns:LoanServiceRequestMessage"/>
</operation>
</portType>
<portType name="LoanServiceCallback">
<operation name="onResult">
<input message="tns:LoanServiceResultMessage"/>
</operation>
</portType>

34.8.2.2 BP1からP1 - 開始操作

<soap:Envelope>
<soap:Header>
<wsa03:ReplyTo>
<wsa03:Address>                ormi://serverB:7001/default/AmericanLoanClient/1.0/service/LoanServiceRequester
</wsa03:Address>
</wsa03:ReplyTo>
<MessageID>AmericanLoanClient~1.0/60007</MessageID>
</soap:Header>
<soap:Body >
<loanApplication>
...
</loanApplication>
</soap:Body>
</soap:Envelope>

34.8.2.3 P1/B1からBP2

<soap:Envelope>
<soap:Header>
<wsa03:ReplyTo>
<wsa03:Address>http://serverB:7001/P2</wsa03:Address>
<wsa03:ReferenceProperties>
<osb:Callback>
<osb:Address>
ormi//localhost/default/AmericanLoanClient/1.0/service/LoanServiceRequester
</osb:Address>
</osb:Callback>
</wsa03:ReferenceProperties>
</wsa03:ReplyTo>
<MessageID>AmericanLoanClient~1.0/60007</MessageID>
</soap:Header>
<soap:Body >
<loanApplication>
...
</loanApplication>
</soap:Body>
</soap:Envelope>

ReplyToコールバック・アドレスはB1で設定されます。B1は、表34-2の説明にあるように、BPELトランスポート構成の「コールバック・プロキシ」フィールドから値を取得します。B1のコールバック・プロキシはP2です。

元のreplyTo情報は、(後に続く) onResultコールバック・メッセージに反映されるように、ラップして参照プロパティとして送信する必要があります。

注意:

このサンプルでは、説明のためにosb:Callbackとosb:Addressを使用しています。WS-Addressingのサポートのために定義された標準またはOracle Service Bus標準の要素はありません。

34.8.2.4 BP2からP2 - onResult操作

<soap:Envelope>
<soap:Header>
<wsa03:RelatesTo>AmericanLoanClient~1.0/60007</wsa03:RelatesTo>
<osb:Callback>
<osb:Address>                        ormi//localhost/default/AmericanLoanClient/1.0/service/LoanServiceRequester
</osb:Address>
</osb:Callback>
</soap:Header>
<soap:Body >
<loanOffer>
...
</loanOffer>
</soap:Body>
</soap:Envelope>

参照プロパティosb:Callbackは、Oracle BPEL Process ManagerエンジンによってSOAPヘッダーとして返送されます。

34.8.2.5 P2/B2からBP1 - onResult操作

<soap:Envelope>
<soap:Header>
<wsa03:RelatesTo>AmericanLoanClient~1.0/60007</wsa03:RelatesTo>
</soap:Header>
<soap:Body >
<loanOffer>
...
</loanOffer>
</soap:Body>
</soap:Envelope>

この一時的なosb:Callbackヘッダーはプロキシ・サービスP2で削除されますが、このヘッダーを削除する前に、ビジネス・サービスB2のBPELトランスポートがコールバック・メッセージを正しいBPELプロセスに送信できるようにreplyToアドレス値が$outbound変数にコピーされます。

35 Tuxedoトランスポート

この章では、Tuxedoトランスポートの概要と、サービスでの使用および構成方法について説明します。

Oracle Service Bus Tuxedoトランスポートを使用すると、Tuxedoサービスをサービス・バス環境にもたらすことができます。

この章の内容は次のとおりです。

- 35.1項「概要」

- 35.2項「Oracle Tuxedo Connectorの構成」

- 35.3項「Oracle Service BusでのTuxedoサービスの使用」

- 35.4項「TuxedoでのOracle Service Busの使用」

- 35.5項「Tuxedoトランスポートのバッファ変換」

- 35.6項「Tuxedoトランスポートのトランザクション処理」

35.1 概要

Oracle Service BusとOracle Tuxedoを相互運用して、各製品に用意されているサービスを使用できます。Tuxedoトランスポートを使用すると、Oracle Service BusからTuxedoドメインへの、安全で保証された、高パフォーマンスの双方向アクセスが可能になります。Tuxedoトランスポートでは、Tuxedoドメインからサービスを呼び出すことも、Tuxedoドメインにあるサービスを呼び出すこともできます。

- Oracle Service Busが、Tuxedoに用意されているサービスを使用する場合、TuxedoトランスポートによりそれらのTuxedoサービスへのアクセスが容易になります。アウトバウンドという用語はこのビジネス・サービス・シナリオを表します。

- TuxedoでOracle Service Busに用意されているサービスを使用する場合、TuxedoサービスはOracle Service Busサービスを、もう1つのTuxedoアプリケーションのように呼び出すことができます。インバウンドという用語はこのプロキシ・サービス・シナリオを表します。

Tuxedoトランスポートは、Oracle Service Bus管理コンソールを使用して構成します。特定のパラメータによって、プロキシ・サービスとビジネス・サービスの両方を定義します。Tuxedoトランスポートの構成を有効にするには、1つのローカル・アクセス・ポイントおよび1つのリモート・アクセス・ポイントを含む、基本的なOracle Tuxedo Connector (WTC)構成が必要です。トランザクション・コンテキストとセキュリティ・コンテキストもサポートされます。

次の図に、このメッセージ処理プロセスをまとめます。

図35-1 WTCのメッセージ処理

35.1.1 Tuxedoトランスポートの機能

Oracle Service BusのネイティブなTuxedoトランスポートでは、次の機能が使用できます。

- 高水準の階層トランスポート
ネイティブなTuxedoトランスポートは、Oracle Service Bus管理コンソールに完全に統合されています。Tuxedoビジネス・サービスとTuxedoプロキシ・サービスの両方を構成、管理、およびモニターできます。

- 双方向アクセス
Oracle Service Busは、SOAP、JMS、または他のサービスとTuxedo間の仲介として機能します。Tuxedoトランスポートにより、Oracle Service Busのビジネス・サービスとしてTuxedo ATMIサービスへのアクセスが可能になります。また、Tuxedoで、Oracle Service Busのプロキシ・サービスを別のATMIサービスとして表示できるようになります。

- バッファ変換
XMLメッセージをTuxedoバッファ・タイプに、またTuxedoバッファ・タイプをXMLに変換できます。すべての標準のTuxedoバッファ・タイプがサポートされており、変換は自動的および透過的に行われます。詳細は、35.5項「Tuxedoトランスポートのバッファ変換」を参照してください。

- トランザクションの整合性
Tuxedoトランスポートにより、インバウンド・メッセージとアウトバウンド・メッセージのトランザクションの整合性を実現します。Tuxedoサービスを、「必ず1回」のサービス品質(QoS)が可能なグローバル・トランザクションのコンテキスト内で呼び出すことができます。Tuxedoアプリケーションは、トランザクションを開始し、Oracle Service Busベースのサービスを呼び出すことができ、XAトランザクション・コンテキストはOracle Service Bus、パイプラインに送信され、最終的に目的のトランスポートに送信されます。詳細は、35.6項「Tuxedoトランスポートのトランザクション処理」を参照してください。

- セキュリティの伝播
メッセージ・フローの最初で確立されたセキュリティ・コンテキストは、TuxedoクライアントまたはOracle Service Busクライアントのいずれかから、もう一方のシステムに伝播します。つまり、受信した、認証が必要なOracle Service BusへのSOAP over HTTPリクエストは、Oracle Service Busによって認証されます。トランザクションと同様に、このサポートも完全に双方向であるため、Tuxedoに対し認証されたクライアントは、Oracle Service Busサービスにも、再度認証を必要とせずにリクエストを行うことができます。

- 暗号化されたネットワーク接続
WTC構成によってOracle Service BusとTuxedo間の接続を暗号化し、2つのシステム間の通信のセキュリティとプライバシを確保できます。

- ロード・バランシング
Oracle Service BusとTuxedoドメインの接続の要件は、単一のネットワーク接続のみです。ただし、コンピュータまたはネットワーク障害の場合は複数の接続が必要になる場合があります。ロード・バランシングのために、単一のドメインまたは複数のドメインに、複数の接続を確立できます。

次のシナリオの構成の詳細は、次の項を参照してください。

- 35.2項「Oracle Tuxedo Connectorの構成」

- 35.3項「Oracle Service BusでのTuxedoサービスの使用」

- 35.4項「TuxedoでのOracle Service Busの使用」

- 『Oracle Fusion Middleware Oracle WebLogic Server Tuxedo Connector管理ガイド』のOracle TuxedoとOracle WebLogic Server間のセキュリティを設定するためのOracle WebLogic Tuxedo Connectorの構成方法に関する項

35.2 Oracle Tuxedo Connectorの構成

Oracle Service BusのTuxedoトランスポートにより、Oracle Tuxedo Connector (WTC)を使用してTuxedoサービスにアクセスできます。Tuxedoトランスポートを使用するには、1つのローカル・アクセス・ポイントおよび1つのリモート・アクセス・ポイントを含む基本のWTCサーバーを構成する必要があります。

次の項では、WTCを構成する方法を説明します。

- 35.2.1項「始める前に」

- 35.2.2項「Oracle Tuxedo Connectorの構成」

35.2.1 始める前に

Oracle Service Busで使用するTuxedoアプリケーションに関する次の情報を収集します。

- Tuxedoローカル・アクセス・ポイントのID

- Tuxedoローカル・アクセス・ポイントのネットワーク・アドレス

- エクスポートされたTuxedoサービスの名前

- サービスで、XMLからFMLおよびFMLからXMLへの変換、あるいはViewからXMLまたはXMLからViewへの変換が必要かどうか
次の項で説明する例では、FML/FML32バッファ・タイプの使用を前提とします。

- Tuxedoドメイン・ゲートウェイがこのOracle Tuxedo Connectorインスタンスを表すために使用する アクセス・ポイントのID 。(アクセス・ポイントID: これはリモート・アクセス・ポイントIDとも呼ばれます。)

- Tuxedoドメイン・ゲートウェイがこのOracle Tuxedo Connectorローカル・アクセス・ポイントのために定義した ネットワーク・アドレス 。(ネットワーク・アドレス: これはリモート・ネットワーク・アドレスとも呼ばれます。)

35.2.2 Oracle Tuxedo Connectorの構成

Oracle Service BusにTuxedoビジネスおよびプロキシ・サービスを作成またはインポートする場合、サービス構成にはOracle WebLogic ServerコンソールのWebLogic Tuxedo Connectorリソースとして表示されるWebLogic Tuxedo Connector構成が含まれています。Oracle Service Busは同時に使用するWebLogic Tuxedo Connectorリソースを保つ必要があります。Oracle WebLogic ServerコンソールにあるそれらのWebLogic Tuxedo Connectorリソースを変更すると、このリソースとOracle Service Busは同期しなくなります。また、Oracle Service Busにサービスを再インポートすると、サービス・アクティブ化エラーが発生します。

Oracle Service BusでWebLogic Tuxedo Connectorリソースを使用および構成するには、次のガイドラインに従ってください。

- Oracle Service Busプロキシおよびビジネス・サービスに使用されるOracle WebLogic Server ConsoleにあるWebLogic Tuxedo Connectorリソースは変更しないでください。Oracle Service Busサービス構成のWebLogic Tuxedo Connector構成を変更します。

- Oracle Service BusおよびOracle WebLogic Server ConsoleでのTuxedoサービス間にWebLogic Tuxedo Connector構成は同期していない場合、Oracle WebLogic Server ConsoleにあるWebLogic Tuxedo Connectorリソースを削除し、Oracle Service BusのTuxedoサービスを再構成するか、または再インポートする簡単な方法で、構成を同期できます。

TuxedoサービスをOracle Service Busから使用するには、35.3.1項「新しいビジネス・サービスの構成」にある手順に従います。Oracle Service BusサービスをTuxedoから使用するには、35.4.1項「プロキシ・サービスの追加と構成」にある手順に従います。

35.3 Oracle Service BusでのTuxedoサービスの使用

次の項では、Oracle Service BusからTuxedoサービスを使用する方法を説明します。

- 35.3.1項「新しいビジネス・サービスの構成」

- 35.3.2項「ロード・バランシングおよびフェイルオーバー」

- 35.3.3項「エラー処理」

- 35.3.4項「構成のテスト」

35.3.1 新しいビジネス・サービスの構成

Oracle Service BusからTuxedoサービスを使用するには、Oracle Service Bus管理コンソールで新しいビジネス・サービスを構成する必要があります。ビジネス・サービスの詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

Oracle Service Bus管理コンソールにログインします。次の項の指示に従って、構成手順を順番に実行します。

- 35.3.1.1項「新しいプロジェクトの追加」

- 35.3.1.2項「ビジネス・サービスの追加」

35.3.1.1 新しいプロジェクトの追加

次の手順を実行します。

1. チェンジ・センターで、「作成」をクリックして新しいセッションを作成するか、または「編集」をクリックして既存のセッションに入ります。
リソースの編集はセッション内で行う必要があります。

2. 「プロジェクト・エクスプローラ」を選択します。

3. 新しいプロジェクトの名前を入力し、「プロジェクトの追加」をクリックします。
ページ上部に、プロジェクトの追加に成功したことを示すメッセージが表示されます。

35.3.1.2 ビジネス・サービスの追加

次の手順を実行します。

1. 新しく作成したプロジェクトの名前をクリックします。

2. 「リソースの作成」フィールドで「ビジネス・サービス」を選択します。

3. 「ビジネス・サービスの作成」 - 「全般的な構成」ページで、次の値を入力します。
「サービス名」 - サービスの名前です。

「サービス・タイプ」 - 「任意のXMLサービス」(デフォルト)を選択します。

注意:

Tuxedoトランスポートは、サービスのタイプとして、任意のXMLサービスとメッセージング・サービスのみをサポートします。

4. 「次へ」をクリックします。

5. 「ビジネス・サービスの作成」 - 「トランスポート構成」ページで、次の値を入力します。
「プロトコル」 - tuxedoを選択します。

「ロード・バランシング・アルゴリズム」 - デフォルトのままにするか、別のアルゴリズムを選択します。

「エンドポイントURI」 -次の形式のいずれかを使用して1つまたは複数のエンドポイントURIを指定し、「追加」をクリックします。

- Tuxedoサービスへのアウトバウンド呼出しのURI形式はtuxedo:resourcename[/remotename]となります。

- ここでresourcenameは、WTCインポート・サービス名に対応します。resourcenameは必須です。

- remotenameは、リモートTuxedoドメインよりエクスポートされたサービス名に対応します。remotenameは省略可能です。

複数のURIが指定されている場合、エンドポイントには一意のリソース名を付ける必要があります。リモート名が指定されていない場合は、その値がリソース名の値になります。リモート名が入力されていない、またはリモート名およびリソース名が同じである場合は、1つのURIのみを使用できます。これにより、既に定義されたWTCインポート・サービスでWTCロード・バランシングおよびフェイルオーバーを使用できるようになります。

注意:

同一のURIを2つ構成すると、そのサービス名がすでに存在していることを通知するエラーが表示されます。

Tuxedoトランスポートでは、URIからリソース名とリモート名を使用して、WTCインポート・サービスを動的に作成します。

- /QタイプのTuxedoリソースのアウトバウンド呼出しのURI形式は、tuxedo-queue:sendQspace/sendQname[/[rcvQspace:]/rcvQname][/failureQname]となります。各項目の意味は次のとおりです。

- tuxedo-queue は、/Q呼出しが行われることを示します。

- sendQspace は、Tuxedoドメインのキュー・スペースのユニークな名前に対応します。 sendQspace は必須です。

- sendQname は、リクエストが格納されるキュー・スペースのキュー名に対応します。 sendQname は必須です。

次の2つの値は省略可能です。どちらも指定しないと、ランタイムは直ちに戻り、レスポンスは想定されません。また、「レスポンスが必要」オプション(Tuxedoトランスポート構成ページにある)が使用できなくなります。

どちらかの値を指定した場合に、「レスポンスが必要」オプションを選択していないと、指定した値は無視されます。

- rcvQspace は、返信が受信されるTuxedoドメインのキュー・スペースのユニークな名前に対応します。 rcvQspace は省略可能です。指定されていない場合は、 sendQspace の値が使用されます。

- rcvQname は、返信が受信されるTuxedoドメインのキューの名前に対応します。 rcvQname は省略可能です。

最後の値も省略可能です。rcvQspaceとrcvQnameのどちらも指定されていないのに、failureQnameが指定されている場合、URI形式はtuxedo-queue:sendQspace/sendQname//failureQnameになります。

- failureQname は、Tuxedoドメイン内でエラー・メッセージが格納されるキューの名前に対応します。 failureQname は省略可能です。

注意:

レスポンスが想定されている場合は、リクエストを送信したのと同じスレッドでレスポンスが発生します。

6. 「次へ」をクリックします。

7. Tuxedoトランスポート構成ページで、次の値を入力します。
「」フィールド表クラス」 - 省略可能です。受信されるFMLまたはFML32バッファを表すクラス名を入力します。これらは、フィールド名を要素名にマップするために、FMLまたはFML32からXMLへの変換ルーチンで使用されます。完全修飾クラス名をスペースで区切ってリストします。

「Viewクラス」 - 省略可能です。送受信されるVIEWまたはVIEW32バッファを表すクラス名を入力します。これらは、フィールド名を要素名にマップするために、VIEW/VIEW32からXMLへの変換ルーチンで使用されます。完全修飾クラス名をスペースで区切ってリストします。

「クラスJar」 - このエンドポイント・オペレーションに必要なFML/FML32またはVIEW/VIEW32クラスを持つJARファイルを含んだJARリソースを選択します。

「リモート・アクセス・ポイント」 - リストから、WTCインポート・サービスに関連付けられたリモート・アクセス・ポイントを選択します。このリストには、WTCで構成されたリモート・アクセス・ポイントが含まれます。関連付けられたリモート・アクセス・ポイントがない場合、ビジネス・サービスは作成できません。

リモート・アクセス・ポイントがない場合、または新規ポイントを作成する場合は「新規」を選択します。対応する「アクセス・ポイント名」と「ネットワーク・アドレス」を隣のフィールドに入力します。エンドポイントの検証時に、各WTCサーバーのWTC構成にアクセス・ポイントが追加されます。WTCサーバーがない場合は、新しいサーバーが作成されます。

「新規」オプションを選択した後では、既存のアクセス・ポイント名を入力できます。この場合、既存の情報が新しいパラメータで更新されます。変更できるのは、ホスト名とポート番号に限られます。

複数のURIを指定した場合、URIごとに1つのリモート・アクセス・ポイントが存在し、そのURIが参照用に表示されます。複数のURIが存在している場合、各URIに異なるリモート・アクセス・ポイントが必要です。既存のWTCリソースに対応するURIがすでに指定されている場合、対応するリモート・アクセス・ポイントが表示されますが、編集することはできません。

「リモート・アクセス・ポイント」 -このフィールドは、「リモート・アクセス・ポイント」フィールドで「新規」を選択した場合にのみ表示されます。リストから、新しく作成されたリモート・アクセス・ポイントと関連付けられるローカル・アクセス・ポイントを選択します。存在しない場合または新規作成する場合は、「新規」を選択します。横にあるフィールドに、対応する「ローカル・アクセス・ポイント名」と「ローカル・ネットワーク・アドレス」を入力します。

注意:

アクセス・ポイントは複数のエンドポイントから使用されることがあるため、エンドポイントが削除されても、トランスポートによってアクセス・ポイントが削除されることはありません。アクセス・ポイントを削除するには、Oracle WebLogic Server管理コンソールを使用します。

「リクエスト・バッファ・タイプ」 - リストから、リモートTuxedoサービスが受信するバッファのタイプを選択します。

「リクエスト・バッファ・サブタイプ」 - 「リクエスト・バッファ・タイプ」の値がVIEWまたはVIEW32である場合、このフィールドが有効になります。リクエスト・バッファに関連付けるバッファのサブタイプを入力します。

「レスポンスが必要」 -このチェック・ボックスを選択すると、双方向の呼出しが指定されます。選択しない場合、基礎になるtpcallがTPNOREPLYフラグで呼び出され、nullレスポンスが非同期的に返されます。

「トランザクションを中断」 -トランザクションがある場合、このチェック・ボックスを選択してトランザクションを中断します。この機能は、リモート・サービスがトランザクションに対応していない場合に役立ちます。

/QタイプのTuxedoリソースを呼び出す場合は、レスポンスの想定の有無に関わらず、「トランザクションを中断」オプションを使用します。一方向の呼出しから正常に戻ってきたことは、メッセージがキューに正しく置かれたことを意味します。

注意:

「トランザクションを中断」オプションが選択されていない場合、/Qモード・エンドポイントへのTuxedoトランスポートは、非同期のトランザクションを伴うトランスポートだとみなされます。これによりフレームワークがデッドロック状態に陥る事態が防止されます。

/Qモードでは、エンドポイントが返信を想定している場合、複数の管理対象サーバーにある複数のスレッドが同じ宛先に返信を行うことがあります。このため、実行時に返信が想定される場合は、ユニークな相関IDがリクエストと共に送信されます。

デキュー操作では、この相関IDを持つメッセージを待機します。相関IDはJMSトランスポートの同様の状況で使用される場合と同等の方法で構成されます。

「ディスパッチ・ポリシー」 - リストから使用可能な場合は、Oracle WebLogic Serverワーク・マネージャを選択します。デフォルトのワーク・マネージャは、他のワーク・マネージャがない場合に使用されます。ワーク・マネージャは、一方向の呼出しの場合に非同期にnullレスポンスをポストします。

「リクエストのエンコーディング」 - Tuxedoトランスポートのリクエストにおける文字セットのエンコーディング指定します。

「レスポンスのエンコーディング」 - Tuxedoトランスポートのレスポンスにおける文字セットのエンコーディング指定します。

「変換スタイル」 - FMLまたはFML32バッファがXMLに変換される際の要素の順序またはグループ化を示します。次のいずれかを選択します。

- 「なし」: (デフォルト)フィールドの順序を無視します。

- 「順序付け」: すべてのフィールドを正しい順序で表示します。

- 順序付けとグループ別: フィールドが論理的にレコード構造になっている場合、発生順に並べ替えられ、レコードごとにグループ化されます。

「タイムアウト」 - トランスポートのランタイムが返信を待機する最大時間(秒単位)を0以上の整数値で指定します。指定されていない場合、またはゼロ(デフォルト)に指定されている場合は、ローカルのTuxedoアクセス・ポイントがブロック呼出しを許可する最大秒数であるBLOCKTIMEの時点で返信はタイムアウトします。

実行時、タイムアウト値を超えている返信は無視され、TPETIME例外でエラー・メッセージが返されます。

タイムアウト値は、リクエスト/レスポンスサービスでのみ指定します。/Qまたは一方向エンドポイントでは、「タイムアウト」フィールドは使用できません。アウトバウンド呼出しの一部がトランザクションである場合、タイムアウト値は無視されます。

注意:

WTC BLOCKTIME値がタイムアウト値よりも短い場合、WTC BLOCKTIME値が優先されます。たとえばエンドポイントのタイムアウト値が30秒で、WTC BLOCKTIMEが20秒の場合、呼出しは20秒でタイムアウトします。

8. 「終了」をクリックします。

9. 「サマリー」ページで「保存」をクリックします。

35.3.2 ロード・バランシングおよびフェイルオーバー

ビジネス・サービスを指定し、エンドポイントURIを定義する場合に、リソース名とは異なるリモート名を入力すると、Oracle Service Busのロード・バランシングおよびフェイルオーバー機能が使用できます。この場合、複数のサービス名を定義し、それらを、複数のリモート・ドメインにレプリケートされたサービスに関連付けることができます。リソース名はユニークである必要がありますが、リモート名はユニークである必要はありません。

35.3.3 エラー処理

Tuxedoトランスポートのビジネス・サービスでアプリケーションと通信のエラーを処理するには、次のように構成します。

- アプリケーション・エラー - アプリケーション・エラーが発生したときにビジネス・サービスのエンドポイントURIを再試行するかどうかを指定できます。4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」の「アプリケーション・エラーの再試行」オプションを参照してください。

- 通信エラー-通信エラーが発生した場合に、ビジネス・サービスのURIがオフラインになるように構成できます。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「ビジネス・サービスの操作設定の構成」のビジネス・サービス・エンドポイントURIのオフラインの有効化に関する項およびビジネス・サービスのエンドポイントURIのメトリックの表示に関する項を参照してください。

表35-1はTuxedo例外と例外によって示されるOracle Service Busエラーについて説明しています。

表35-1 Tuxedo例外

例外

説明

TPESVCFAIL

サービスが失敗しました。アプリケーション・エラーです。

TPENOENT

リクエストしたエントリが存在しません。通信エラーです。

TPEPERM

パーミッション・エラーが発生しました。通信エラーです。

35.3.4 構成のテスト

Oracle Service BusでTuxedoが動作するための構成が終了したら、Oracle Service Bus管理コンソールにあるテスト・コンソールを使用して構成をテストできます。

次のタスク・リストは、Oracle Service BusによるTuxedoのアウトバウンドでの使用をテストするプロセスをまとめたものです。

1. Tuxedoサーバーを構築して起動します。

2. Oracle Service Busプロキシ・サービスを呼び出すようにTuxedoサービスを設定します。

3. Oracle Service Bus管理コンソールで、「チェンジ・センター」の「アクティブ化」をクリックしてテスト・コンソールを有効にします。

4. 「プロジェクト・エクスプローラ」で、テストするビジネス・サービスに関連付けられた「テスト・コンソールの起動」アイコンをクリックします。

5. テスト・コンソールにペイロードを入力します。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のビジネス・サービスのテストに関する項を参照してください。

6. 「実行」をクリックします。
レスポンス・ページに、サービス・リクエストの結果が表示されます。

35.4 TuxedoでのOracle Service Busの使用

次の項では、TuxedoからOracle Service Busサービスを使用する方法について説明します。

- 35.4.1項「プロキシ・サービスの追加と構成」

- 35.4.2項「構成のテスト」

35.4.1 プロキシ・サービスの追加と構成

TuxedoからOracle Service Busサービスを使用するには、Oracle Service Bus管理コンソールを使用して新しいプロキシ・サービスを構成する必要があります。プロキシ・サービスの詳細は、2.3項「プロキシ・サービスの操作」を参照してください。

Oracle Service Bus管理コンソールにログインし、次の手順を順番に実行します。

この構成を完了するには、次の項で説明するタスクを実行します。

- 35.4.1.1項「新しいプロジェクトの追加」

- 35.4.1.2項「プロキシ・サービスの追加」

- 35.4.1.3項「プロキシ・サービスの構成」

35.4.1.1 新しいプロジェクトの追加

次の手順を実行します。

1. チェンジ・センターで、「作成」をクリックして新しいセッションを作成するか、または「編集」をクリックして既存のセッションに入ります。
リソースの編集はセッション内で行う必要があります。

2. 「プロジェクト・エクスプローラ」を選択します。

3. 新しいプロジェクトの名前を入力し、「プロジェクトの追加」をクリックします。
ページ上部に、プロジェクトの追加に成功したことを示すメッセージが表示されます。

35.4.1.2 プロキシ・サービスの追加

次の手順を実行します。

1. 新しく作成したプロジェクトの名前をクリックします。

2. 「リソースの作成」フィールドで「プロキシ・サービス」を選択します。

3. 「プロキシ・サービスの作成」 - 「全般的な構成」ページで、次の値を入力します。
「サービス名」 - サービスの名前です。

「サービス・タイプ」 - 「任意のXMLサービス」(デフォルト)を選択します。

注意:

Tuxedoトランスポートは、サービスのタイプとして、任意のXMLサービスとメッセージング・サービスのみをサポートします。

4. 「次へ」をクリックします。

5. 「プロキシ・サービスの作成」 - 「トランスポート構成」ページで、次の値を入力します。
「プロトコル」 - tuxedoを選択します。

「エンドポイントURI」 - サービスがデプロイされたTuxedoサーバー上のエンドポイントURIに対応するサービス名を入力します。

6. 「次へ」をクリックします。

7. Tuxedoトランスポート構成ページで、次の値を入力します。
「」フィールド表クラス」 - 省略可能です。受信されるFMLまたはFML32バッファを表すクラス名を入力します。これらは、フィールド名を要素名にマップするために、FMLまたはFML32からXMLへの変換ルーチンで使用されます。完全修飾クラス名をスペースで区切ってリストします。

「Viewクラス」 - 省略可能です。送受信されるVIEWまたはVIEW32バッファを表すクラス名を入力します。これらは、フィールド名を要素名にマップするために、VIEW/VIEW32からXMLへの変換ルーチンで使用されます。完全修飾クラス名をスペースで区切ってリストします。

注意:

Tuxedoのバッファ・タイプX_C_TYPEとX_COMMONは、VIEW/VIEW32バッファと同様に処理されます。

着信リクエストにVIEWバッファが含まれる場合は、該当するVIEWクラスをOracle Service BusのCLASSPATHで指定します。

「クラスJar」 - このエンドポイント・オペレーションに必要なFML/FML32またはVIEW/VIEW32クラスを持つJARファイルを含んだJARリソースを選択します。

「ローカル・アクセス・ポイント」 -リストから、WTCエクスポート・サービスに関連付けられたローカル・アクセス・ポイントを選択します。このリストには、WTCで構成されたローカル・アクセス・ポイントが含まれます。関連付けられたローカル・アクセス・ポイントがない場合、プロキシ・サービスは作成できません。

ローカル・アクセス・ポイントが存在しない場合、または、新しいローカル・アクセス・ポイントを作成する場合は、「新規」を選択します。対応する「ローカル・アクセス・ポイント名」と「ローカル・ネットワーク・アドレス」を隣のフィールドに入力します。エンドポイントの検証時に、各WTCサーバーのWTC構成にアクセス・ポイントが追加されます。WTCサーバーがない場合は、新しいサーバーが作成されます。

「新規」オプションを選択した後では、既存のアクセス・ポイント名を入力できます。この場合、既存の情報が新しいパラメータで更新されます。変更できるのは、ホスト名とポート番号に限られます。

「リモート・アクセス・ポイント」 - このフィールドは、「ローカル・アクセス・ポイント」フィールドで「新規」を選択した場合にのみ表示されます。リストから、新しく作成されたローカル・アクセス・ポイントと関連付けられるリモート・アクセス・ポイントを選択します。存在しない場合または新規作成する場合は、「新規」を選択します。横にあるフィールドに、対応する「アクセス・ポイント名」と「ネットワーク・アドレス」を入力します。

リモート・アクセス・ポイントは、インバウンド・リクエストに対するWTC接続の認証プリンシパルにもなります。オプションとして、デフォルトのセキュリティ・レルムで同じアクセス・ポイントIDを持つユーザーを作成して、インバウンド呼出しを許可することができます。

これを行うには、「ユーザーを作成しますか。」フィールドで「はい」を選択します。セキュリティの問題を回避するために、パスワードは一時変数を使用してランダムに生成されます。

注意:

アクセス・ポイントとユーザーは複数のエンドポイントから使用されることがあるため、エンドポイントが削除されても、トランスポートによってアクセス・ポイントとユーザーが削除されることはありません。アクセス・ポイントを削除するには、Oracle WebLogic Server管理コンソールを使用します。

「レスポンス・バッファ・タイプ」 - リストから、リモートTuxedoクライアントが受信するバッファのタイプを選択します。このフィールドは、「レスポンスが必要」フィールドが選択されている場合に有効になります。

「応答バッファ・サブタイプ」 - 「リクエスト・バッファ・タイプ」の値がVIEWまたはVIEW32である場合、このフィールドが有効になります。応答バッファに関連付けるバッファのサブタイプを入力します。

「レスポンスが必要」 -このサービスにレスポンスの送信が想定されている場合は、チェック・ボックスを選択します。このチェック・ボックスは、デフォルトのステータスで選択されています。ただし、サービス・タイプが「メッセージ・サービス」であり、レスポンス・タイプが「なし」の場合は、このチェック・ボックスは選択されておらず、フィールドは無効になっています。

「リクエストのエンコーディング」 - Tuxedoトランスポートのリクエストにおける文字セットのエンコーディング指定します。

「レスポンスのエンコーディング」 - Tuxedoトランスポートのレスポンスにおける文字セットのエンコーディング指定します。

「変換スタイル」 - FMLまたはFML32バッファがXMLに変換される際の要素の順序またはグループ化を示します。次のいずれかを選択します。

- 「なし」: (デフォルト)フィールドの順序を無視します。

- 「順序付け」: すべてのフィールドを正しい順序で表示します。

- 順序付けとグループ別: フィールドが論理的にレコード構造になっている場合、発生順に並べ替えられ、レコードごとにグループ化されます。

8. 「終了」をクリックします。

9. 「サマリー」ページで「保存」をクリックします。

35.4.1.3 プロキシ・サービスの構成

Oracle Service Busのメッセージ・フローは、プロキシ・サービスの実装を定義します。メッセージ・フローには、パイプライン・ペア(プロキシ・サービス、またはサービスの処理用のリクエスト・パイプラインとレスポンス・パイプライン)と、ステージ、パイプライン、およびプロキシ・サービスに対して定義できるエラー・ハンドラをゼロ個以上入れることができます。パイプラインは、1つまたは複数のステージを持つことができ、ステージはアクションを持ちます。

メッセージ・フローの作成、編集および表示の詳細は、2.4項「プロキシ・サービス・メッセージ・フローの操作」および『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのメッセージ・フローのモデル化に関する項を参照してください。

次の項では、次の作業を行って、プロキシ・サービスのルーティング動作を変更し、このメッセージ・フローを編集する方法の例について説明します。

- ルート・ノードの追加

- プロキシ・サービスからビジネス・サービスへルーティングを行うアクションの構成

次の手順を実行します。

1. Oracle Service Bus管理コンソールで、「リソース・ブラウザ」→「プロキシ・サービス」を選択します。

2. 35.4.1.2項「プロキシ・サービスの追加」で作成したプロキシ・サービスの行にある「メッセージ・フローの編集」アイコンをクリックします。
「メッセージ・フローの編集」ページにデフォルトのメッセージ・フローの構成が表示されます。これにはサービスの開始ノードであることを表す「プロキシ・サービス」アイコンが1つ含まれています。これはメッセージ・フローの最小構成です。メッセージ・フローの動作は順番に行われます。

3. 「プロキシ・サービス」アイコンをクリックし、「ルートの追加」を選択します。

4. 「ルート・ノード」アイコンをクリックし、名前と説明の編集をクリックします。必要に応じて名前と説明を変更し、「保存」をクリックします。
メッセージ・フローで、ノードの名前が変更され、ルート・ノード名が表示されます。

5. 名前を付けた「ルート・ノード」アイコンをクリックし、「ルートの編集」を選択します。
「ステージ構成の編集」ページに表示されるオブジェクトは「アクションの追加」アイコンのみです。

ステージはパイプラインの要素であり、パイプラインに定義されたアクションのコンテナです。アクションとは、プロキシ・サービスを通過するメッセージの処理を定義するパイプライン・ステージの要素です。

6. 「アクションの追加」アイコンをクリックし、「アクションの追加」→「通信」→「ルーティング」の順に選択します。
「ステージ構成の編集」ページが変更され、アクションの内容が表示されます。アクションの内容は、作成したノードのタイプ(ルート・ノード)によって定義されます。

7. 「サービス」をクリックします。
サービス・ブラウザに作成したプロキシ・サービスとビジネス・サービスが表示されます。

8. Tuxedoに公開するビジネス・サービスを選択します。

9. 「発行」をクリックします。
画面が更新され、ビジネス・サービスへのルーティングが表示されます。

構成が完了し、テストの準備が整いました。

35.4.2 構成のテスト

TuxedoをOracle Service Busと共に使用するように構成したら、正しく動作することを確認するためのテストを実行できます。XMLからFML32およびFML32からXMLへの変換を使用している場合は、Tuxedoに含まれているud32 Tuxedoクライアント・プログラムを使用してこの構成をテストできます。(FML変換を使用している場合は、udクライアントを使用できます。) ud32は、FMLバッファのテキスト表現で構成される入力を読み込みます。

XMLからFMLおよびFMLからXMLへの変換を使用しない場合は、テスト・クライアント・プログラムをTuxedoで開発してこの構成をテストする必要があります。

35.5 Tuxedoトランスポートのバッファ変換

Oracle Service BusとTuxedoを相互運用して、各製品に用意されているバッファ変換を含めたサービスを使用できます。Oracle Service BusのサービスのタイプとTuxedoのバッファ・タイプによって変換の方法が決まります。

TuxedoトランスポートがOracle Service Busでサポートするサービスのタイプは、任意のXMLサービスおよびメッセージング・サービスです。

- 任意のXMLサービス(SOAP以外) - XMLベースのサービスへのメッセージはXMLですが、サービスの構成で許可された任意のTuxedoのバッファ・タイプを使用できます。

- メッセージング・サービス - メッセージング・サービスは、あるデータ型のメッセージを受信し、レスポンスとして別のデータ型のメッセージを返すことができます。サポートされるデータ型は、XML、MFL、テキスト、および型なしバイナリです。

次の項では、Tuxedoトランスポートでのバッファ変換の処理方法について説明します。

- 35.5.1項「任意のXMLサービス・タイプ」

- 35.5.2項「メッセージング・サービス・タイプ」

35.5.1 任意のXMLサービス・タイプ

表35-2に、サービスのタイプが任意のXMLサービスの場合の、Tuxedoのバッファ・タイプに応じたTuxedoトランスポートの動作を示します。

注意:

任意のXMLサービスの場合、ペイロードは整形式のXMLドキュメントであることが必要です。

表35-2 任意のXMLサービスの場合のバッファ変換

Tuxedoのバッファ・タイプ

Tuxedoトランスポートの動作

STRING

バッファをそのまま渡します。

CARRAY

X_OCTET

バッファをそのまま渡します。

FML/FML32

構成されたフィールド・クラスを使用して、バッファをXMLに(またはXMLからバッファに)変換します。

XML

バッファをそのまま渡します。

注意: TuxedoのバッファがXMLの場合、TuxedoアプリケーションはNULLバイトを送信しません。

VIEW/VIEW32

X_C_TYPE

X_COMMON

構成されたViewクラスを使用して、バッファをXMLに(またはXMLからバッファに)変換します。

MBSTRING

バッファをそのまま渡します。

注意: エンコーディングは、送受信されたメッセージのMetaDataのencoding要素によって決まります。

35.5.2 メッセージング・サービス・タイプ

表35-3に、サービスのタイプがメッセージング・サービスの場合の、Tuxedoのバッファ・タイプに応じたTuxedoトランスポートの動作を示します。

注意:

サブタイプになしが指定されている場合、Tuxedoトランスポートはバッファを受信しません。

表35-3 メッセージング・サービスの場合のバッファ変換

Tuxedoのバッファ・タイプ

バイナリ・メッセージング・タイプ

テキスト・メッセージング・タイプ

MFLメッセージング・タイプ

XMLメッセージング・タイプ

STRING

そのまま渡されます。

そのまま渡されます。

バッファが適切な形式であると仮定し、そのまま渡されます。そうでない場合、トランスポートによってエラーが返されます。

XML

CARRAY

そのまま渡されます。

サポートされません

バッファが適切な形式であると仮定し、そのまま渡されます。そうでない場合、トランスポートによってエラーが返されます。

XML

FML/FML32

そのまま渡されます。

サポートされません

サポートされません

XML

XML

そのまま渡されます。

そのまま渡されます。

サポートされません

XML

VIEW/VIEW32

そのまま渡されます。

サポートされません

サポートされません

XML

MBSTRING

そのまま渡されます。

そのまま渡されます。

バッファが適切な形式であると仮定し、そのまま渡されます。そうでない場合、トランスポートによってエラーが返されます。

XML

Tuxedoトランスポートはバッファ処理を、任意のXMLサービス・タイプのサービスと同様に行います。

35.6 Tuxedoトランスポートのトランザクション処理

Oracle Service BusとTuxedoを相互運用して、各製品に用意されているサービスを使用できます。多くの場合、サービスにはトランザクション処理が含まれます。Tuxedoトランスポートは、Oracle Service Busでのトランザクションを活用、または開始します。

注意:

このトランザクション・サポートの例外は、インバウンド・トランスポートがトランザクション対応のメッセージのあるTuxedoで、アウトバウンドがリクエストおよびレスポンスXA/JMSの場合です。この場合、Oracle Service Busは例外を検出し、結果はTPESYSTEMエラーになります。

Tuxedoトランスポートのトランザクション動作は、メッセージ・コンテキスト・レベルで使用できるサービスの品質(QoS)設定に基づきます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス品質に関する項を参照してください。

次の項では、Tuxedoトランスポートでのトランザクションの処理方法について説明します。

- 35.5.1項「任意のXMLサービス・タイプ」

- 35.6.2項「アウトバウンド・サービス」

35.6.1 インバウンド・サービス

トランザクション・コンテキストを受信すると、パイプラインに送信されるメッセージによって、QoSが「必ず1回」に設定されるか、そうでない場合は、QoSは「ベスト・エフォート」に設定されます。

応答がクライアントに返される前にTransportExceptionが捕捉された場合、TPESYSTEM例外をスローしてリクエストが中断され、トランザクションは結果をロールバックします。

35.6.2 アウトバウンド・サービス

ビジネス・サービスを呼び出すスレッドにトランザクション・コンテキストがある場合、Tuxedoトランスポートは次のように動作します。

- QoSが「必ず1回」に設定されている場合、エンドポイントがトランザクションを中断するように構成されている場合を除いて、Tuxedoトランスポートは、自動的にトランザクション・コンテキストをリモート・ドメインに転送します。

- QoSが「ベスト・エフォート」に設定されている場合、Tuxedoトランスポートは、呼出しを行う前にトランザクションを中断し、呼出しが行われてから再開します。これは、TPNOTRANフラグを設定してATMI呼出しを行う場合と同じです。

ビジネス・サービスを呼び出すスレッドに、関連付けられているトランザクションがない場合、QoS設定に関係なく、Tuxedo呼出しは非トランザクションとして行われます。この場合、TPNOTRANフラグが設定されたtpcall()またはtpacall()に相当します。

36 DSPおよびOracle Data Service Integratorトランスポート

この章では、DSP (Oracle Data Service Integrator)トランスポートの概要と、サービスでの使用および構成方法について説明します。

Oracle Service BusとOracle Data Service Integratorとの相互運用性サポートの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の相互運用性のシナリオと考慮事項に関する項を参照してください。

Oracle Data Service IntegratorはOracle Service Busトランスポートからアクセスできます。このようにして、Oracle Service Busはデータ・サービスを最大限に活用できます。また、データ・サービスをWebサービスとして公開する方法と比較すると、この方法を使用した方が効率的で柔軟にデータ・サービスにアクセスできます。

Oracle Data Service Integratorの詳細は、http://download.oracle.com/docs/cd/E13162_01/odsi/docs10gr3/index.htmlにあるドキュメントを参照してください。

この章の内容は次のとおりです。

- 36.1項「Oracle Service Busのデータ・サービスの有効化」

- 36.2項「DSPトランスポートの使用」

36.1 Oracle Service Busのデータ・サービスの有効化

Oracle Data Service Integratorデータ・サービスをOracle Service Busクライアントで使用できるようにするには、次の作業が必要です。

- データ・サービスのためにWSDLファイルを生成し、その新しいWSDLを推奨の手順でOracle Service Busにインポートします。

- WSDLに基づいてビジネス・サービスを構成または作成します。

- ビジネス・サービスに基づいてプロキシ・サービスを構成または作成します。

これらの作業が完了したら、Oracle Service Busからデータ・サービスを呼び出すことができます。

図36-1は、Oracle Service BusとOracle Data Service Integratorを介してデータ・ソースにアクセスするクライアントです。

図36-1 データ・ソースからWebサービス・クライアントへ

36.2 DSPトランスポートの使用

この項の例では、Oracle Service Busでデータ・サービスの使用を示します。

36.2.1 Oracle Data Service Integrator内での必要なアクション

Oracle Data Service Integratorで次の手順を実行します。

36.2.1.1 ステップ1. サーバーの起動

Oracle Data Service Integratorサーバーが起動していない場合は、起動します。(この手順を説明するために、Oracle Data Service IntegratorのRetailDataspaceサンプルを使用します。)

36.2.1.2 ステップ2. データ・サービスからのWSDLの生成

次の2つの方法で、データ・サービスからWSDLを生成することができます。

- オプションA: Data Services Studioを使用したWSDLファイルの生成 - 手順の詳細は、「データ・サービスからのWebサービス・マップとWSDLの生成方法」(http://download.oracle.com/docs/cd/E13162_01/odsi/docs10gr3/datasrvc/Generate%20a%20Web%20Service%20Map%20from%20a%20Data%20Service.html)を参照してください。

- オプションB: Oracle Data Service Integratorコンソールを使用してWSDLをエクスポートします。
WSファイルが使用できる場合、Oracle Data Service Integratorを使用してWSDLファイルを生成することができます。

1. Oracle Data Service Integratorコンソール(http://host:port/dspconsole)を起動します。

2. ログインします。サンプルでは、ユーザー名とパスワードのどちらにもweblogicが使用されます。

3. サービス・エクスプローラをクリックします。

4. WSDLファイルを作成するデータ・サービスに対応したWebサービス・マップ(たとえばRetailWebServices.ws)に移動します。

5. 全般タブのWSDL定義の表示をクリックします。Oracle Data Service Integratorコンソールにより新しいウィンドウが開き、WSDLの定義が表示されます。

6. テキスト・エディタを使用し、新しいテキスト・ドキュメントでWSDLの定義をコピー・アンド・ペーストして、WSDLファイルを保存します。
Oracle Data Service Integrator管理のスタート・ガイド(http://download.oracle.com/docs/cd/E13162_01/odsi/docs10gr3/admin/getting_strtd.html)を参照してください。

7. データ・サービス・アプリケーションをビルドしていない場合は、ビルドします(デプロイメントはビルドによって自動的に行われます)。デプロイされたアプリケーションは、クライアント・プロセスがデータ・サービスを使用してデータにアクセスするために必要です。

36.2.1.3 ステップ3: Webサービス・アドレスの取得

WSDLへのURLアドレスが必要です。Data Services Studioでこのアドレスを取得するには:

1. WSファイル(たとえばOrderService.ws)を右クリックします。

2. Webサービスのテストを選択します。

3. テスト・クライアントが開いたら、URLアドレスを保存します。OrderService例のアドレスを次に示します。
http://localhost:7001/RetailDataspace/RetailApplication/OrderManagement/OrderService.ws?WSDL

36.2.2 Oracle Service Bus内での必要なアクション

Oracle Service Busで次の手順を実行します。

36.2.2.1 ステップ4: データ・サービスWSDLのOracle Service Busへのインポート

Oracle Data Service Integratorで生成されたWSDLをOracle Service Busにインポートするために必要な手順を次に説明します。

1. Oracle Service Busサーバーが起動していない場合は、起動します。この例のために、Oracle Service Busサンプル・サーバーとデフォルト・プロジェクトを使用します。

2. Oracle Service Bus管理コンソール(http://host:port/sbconsole)を起動します。

3. ログインします。デフォルトのユーザー名およびパスワードはweblogicです。

4. 「プロジェクト・エクスプローラ」をクリックします。

5. 新しいプロジェクト名(たとえばdataServiceTest)を入力します。

6. 新しいプロジェクトの名前をクリックします。

7. 「プロジェクト・エクスプローラ」でWSDLとスキーマ・リソースを一括インポートします。

注意:

2.1.14項「リソースのインポート」で説明されているように、リソースをOracle Service Bus IDEにインポートすることもできます。

36.2.2.2 ステップ5: ビジネス・サービスの作成

Oracle Data Service IntegratorからインポートしたWSDLに基づいてビジネス・サービスを作成します。次のガイダンスに従ってビジネス・サービスを構成します。

- 「サービス・タイプ」として「WSDL Webサービス」を選択し、インポートしたWSDLを参照し、適切なポートまたはバインド(たとえばOrderServiceSoapBinding)を選択します。

- dspトランスポートを選択します。
DSPトランスポートの構成の詳細は、3.1.2項「DSPトランスポート構成ページ(ビジネス・サービス)」を参照してください。

- 「エンドポイントURI」では、Oracle Data Service IntegratorプロジェクトのURI(たとえばt3://localhost:7001/RetailDataspace)を入力します。

ビジネス・サービスの作成の詳細は、2.2.1項「ビジネス・サービスの作成」を参照してください。

36.2.2.3 ステップ6: プロキシ・サービスの作成

2.3.1.1項「既存のサービスからプロキシ・サービスを生成する」または2.3.1項「プロキシ・サービスの作成」に従って、ビジネス・サービスからプロキシ・サービスを生成します。

実際には、暗号化キー、デジタル署名キー、およびSSLクライアント認証キーを識別する可能性があります。しかし、この例ではいずれも識別する必要はありません。

DSPトランスポートでは、プロキシ・サービス提供の文字セットを使用します。したがって、データ・サービス・トランスポートを呼び出す前にデフォルトの文字セットを変更する必要がある場合、変換のエンコーディングは、プロキシ・サービス自体で処理する必要があります。

36.2.2.4 ステップ7: 設定のテスト

次の手順を使用すると、上記の手順で生成したプロキシからOracle Data Service Integratorデータ・サービスにアクセスできるかどうかをテストできます。

1. Oracle Service Bus管理コンソールで、セッションをアクティブ化します。

2. プロジェクト・エクスプローラで作成したプロキシ・サービス(たとえばorderService)を見つけます。

3. 「アクション」の下の「テスト・コンソールの起動」アイコンを選択します。「プロキシ・サービス・テスト」コンソールが表示されます。

4. 「使用可能な操作」リストからデータ・サービス操作(たとえばgetOrderByCustID)を選択します。

5. データ・サービスで必要な情報を使用してペイロードを変更します(たとえばCUSTOMER3)。

<ord:getOrderByCustID xmlns:ord="ld:RetailApplication/OrderManagement/OrderService.ws">
&nbsp;&nbsp;&nbsp; <ord:custID>CUSTOMER3</ord:custID>
</ord:getOrderByCustID>

6. 「実行」をクリックします。図36-2のようにレスポンス・ドキュメントにデータが表示されます。

図36-2 Oracle Service Busテスト・コンソールからのリクエストとレスポンス

第VI部

トランスポートSDK

この部では、Oracle Service Busでの、トランスポートSDKを使用したカスタム・トランスポート・プロバイダの設計、作成およびデプロイに関する情報を説明します。次の章が含まれます。

- 第37章「はじめに」

- 第38章「設計上の考慮事項」

- 第39章「トランスポート・プロバイダの開発」

- 第40章「Eclipse用のOracle Service Busトランスポートの開発」

- 第41章「トランスポートSDKのインタフェースおよびクラス」

- 第42章「サンプル・ソケット・トランスポート・プロバイダ」

- 第43章「トランスポート・プロバイダのデプロイ」

37 はじめに

ここでは、Oracle Service Bus Transport SDKについて説明します。このSDKは、Oracle Service Busで新しいカスタム・トランスポート・プロバイダを設計し、作成してデプロイすることを目的とする、経験豊かなJava開発者を対象としています。

Transport SDKのドキュメントでは、Webサービス・テクノロジ、Oracle Service Bus、Oracle Service Busで使用予定のトランスポート・プロトコル、そしてOracle WebLogic Serverに関する深い知識があることを前提としています。

38 設計上の考慮事項

この章では、Oracle Service Busで使用するカスタム・トランスポート・プロバイダを開発する際の概念、機能および設計上の考慮事項について説明します。

開発作業を綿密に計画すると、カスタム・トランスポート・プロバイダの開発に要する時間と労力を大幅に削減できます。

この章の内容は次のとおりです。

- 38.1項「トランスポート・プロバイダとは」

- 38.2項「トランスポートSDKとは」

- 38.3項「カスタム・トランスポート・プロバイダの開発の必要性」

- 38.4項「トランスポート・プロバイダのコンポーネント」

- 38.5項「トランザクション・モデル」

- 38.6項「セキュリティ・モデル」

- 38.7項「スレッディング・モデル」

- 38.8項「メッセージ・コンテンツの設計」

38.1 トランスポート・プロバイダとは

トランスポート・プロバイダは、トランスポートSDKのインタフェースを実装し、Oracle Service Busとメッセージを送受信するメカニズムとの橋渡しをします。このようなメカニズムには、HTTPなどの特定の転送プロトコルのみでなく、ファイルや電子メール・メッセージなど、他のエンティティが含まれる場合もあります。トランスポート・プロバイダは、トランスポート・エンドポイントのライフ・サイクルおよび実行時の動作を管理します。エンドポイントは、メッセージの送信元または送信先となるリソースです。

図38-1は、Oracle Service Busを介した基本的なメッセージの流れを示したものです。クライアントは、特定の転送プロトコルを使用してOracle Service Busにメッセージを送信します。トランスポート・プロバイダは、インバウンド・メッセージを処理します。サービス・クライアント・エンドポイントとの通信を処理し、Oracle Service Busへのメッセージのエントリ・ポイントとして機能します。

図38-1 Oracle Service Busを介したメッセージ・フロー

図38-1にはバインディング・レイヤーも示されています。これは、メッセージのパックおよびアンパック、メッセージのセキュリティ処理を行い、Oracle Service Busパイプラインにメッセージを渡します。

ヒント:

Oracle Service Busのメッセージ・ブローカリングおよびトランスポート・レイヤーの役割の詳細は、『Oracle Fusion Middleware Oracle Service Busコンセプトおよびアーキテクチャ』を参照してください。Oracle Service Busを介したメッセージ・フローについてのより詳細なシーケンス・ダイアグラムは、付録A「トランスポートSDKのUMLシーケンス・ダイアグラム」を参照してください。

デフォルトでは、Oracle Service Busには、HTTP、JMS、ファイル、FTPなど、一般的に使用されている複数の転送プロトコルをサポートするトランスポート・プロバイダが用意されています。これらのネイティブなプロバイダを使用して、前述の一般的な転送プロトコルを必要とするプロキシ・サービスおよびビジネス・サービスを構成できます。

ヒント:

ネイティブなトランスポート・プロバイダの使用および構成の詳細は、第V部「トランスポート」を参照してください。

38.2 トランスポートSDKとは

この項では、トランスポートSDKの用途および機能について簡単に説明します。この項の内容は次のとおりです。

- 38.2.1項「SDKの用途」

- 38.2.2項「トランスポートSDKの機能」

- 38.2.3項「トランスポート・プロバイダのモード」

- 38.2.4項「関連機能」

38.2.1 SDKの用途

Oracle Service Busのメッセージ処理は、メッセージの送受信方法とは関係なく行われます。トランスポートSDKは、Oracle Service Busと、Oracle Service Busで送受信されるデータ・フローを扱うコンポーネントの間に抽象化レイヤーを提供します。この抽象化レイヤーがあることで、一意の転送プロトコルを扱うための新しいトランスポート・プロバイダを開発できます。

SDKは、Oracle Service Busの他の部分から次を抽象化します。

- 特定のトランスポート・バインディングの処理

- サービス・エンドポイントのトランスポート・バインディングへのデプロイ。エンドポイントではメッセージの送信も受信も行うことができます。

- モニター情報の収集

- エンドポイントの管理(中断または再開操作の実行、および接続プロパティの設定など)

- サービス・レベル・アグリーメント(SLA)動作の適用(接続のタイムアウトなど)

38.2.2 トランスポートSDKの機能

この項では、トランスポートSDKの主要な機能について説明します。

38.2.2.1 インバウンド・メッセージおよびアウトバウンド・メッセージの処理

トランスポートSDKを使用して開発されたトランスポート・プロバイダは、次のようにインバウンド・メッセージおよびアウトバウンド・メッセージを処理します。

- 通常、インバウンド・メッセージは、HTTPクライアントなどの外部ソースからOracle Service Busに送信されます。ペイロードおよびトランスポート・レベル・ヘッダーがある場合、トランスポートSDKは、それらを汎用的なデータ構造にパッケージ化します。その後、トランスポートSDKは、汎用フォーマットでOracle Service Busパイプラインにメッセージを渡します。

- アウトバウンド・メッセージは、Oracle Service Busのビジネス・サービスから発信され、WebサービスまたはJMSキューなどの外部で管理されているエンドポイントに送信されます。トランスポートSDKは、Oracle Service Busパイプラインから汎用的なデータ構造を受け取り、対応するトランスポート固有のヘッダーおよびペイロードに変換し、外部システムに送信します。

トランスポートSDKは、アウトバウンド・メッセージおよびインバウンド・メッセージを個別に処理します。インバウンド・メッセージを1つの転送プロトコルにバインドし、アウトバウンド・エンドポイントで異なる転送プロトコルにバインドすることもできます。

38.2.2.2 トランスポート関連のアーティファクトのデプロイ

一部のトランスポートでは、アーティファクトをOracle WebLogic Serverにデプロイする必要があります。たとえば、JMSプロキシは、メッセージドリブンBeanとして実装されます。このアーティファクト、EARファイルは、新しいJMSプロキシを登録する際にデプロイする必要があります。同様に、EJBトランスポート・プロバイダではEARファイルを使用しますが、これは新しいEJBビジネス・サービスを登録する際にデプロイする必要があります。サービス登録の一環としてキューおよびトピックを作成することがあるJMSトランスポートなどのように、その他のタイプのアーティファクトのデプロイが必要になる場合があります。SDKにより、これらのアーティファクトをサポートし、WLSのデプロイメント・サイクルに参加できます。これらのアーティファクト・ファイルのいずれかのデプロイメントが失敗した場合、Oracle Service Busのセッションに通知され、デプロイメントはキャンセルされます。SDKのこの機能により、サービスを最小単位で作成できます。失敗が発生した場合、セッションは以前の状態に戻ります。

注意:

WLSのデプロイメント・サイクルに参加するには、トランスポート・プロバイダがTransportWLSArtifactDeployerインタフェースを実装している必要があります。この方法の第一の利点は、最小単位でOracle WebLogic Serverをデプロイできる点であり、必要に応じてロールバックすることもできます。このインタフェースの詳細は、41.3.2項「汎用インタフェースのサマリー」および39.11項「TransportWLSArtifactDeployerの実装が適している場合」を参照してください。

38.2.2.3 メッセージの非同期的な処理

メッセージを処理する際、サーバーで動作するスレッド数には限りがあるため、非同期的に行うことが重要です。この機能により、多数のメッセージを処理できるようにOracle Service Busを拡張できます。リクエストが処理されると、スレッドは解放されます。ビジネス・サービスがレスポンスを受信すると(または、一方向の場合はリクエストを処理し終えると)、コールバックによってOracle Service Busに非同期的に通知します。

38.5.2項「同期トランザクションのサポート」および38.7項「スレッディング・モデル」も参照してください。

38.2.3 トランスポート・プロバイダのモード

トランスポートSDKを使用して、インバウンド・プロパティのモードおよびアウトバウンド・プロパティのモードを実装できます。これらの接続モードおよびエンドポイント・モードは、トランスポート・プロバイダのXMLスキーマ定義ファイルで指定します。このファイルの詳細は、39.3.3項「3.トランスポート固有のアーティファクトのXMLスキーマ・ファイルの作成」を参照してください。このスキーマは、Oracle Service Busパイプラインでフィルタ処理およびルーティングを行う際に使用できます。

38.2.4 関連機能

この項では、トランスポート・マネージャによって提供される関連機能について示します。トランスポート・マネージャは、様々なトランスポート・プロバイダの管理、エンドポイントの登録、制御、インバウンド・メッセージとアウトバウンド・メッセージの処理、およびその他の機能を一元化するための主要ポイントとなります。これらの機能は、トランスポート・プロバイダによる特定のサポートを必要としません。

38.2.4.1 ロード・バランシング

トランスポートSDKは、アウトバウンド・メッセージのロード・バランシングおよびフェイルオーバーをサポートします。サポートされているロード・バランシングのオプションは次のとおりです。

- なし - アウトバウンド・リクエストごとに、トランスポート・プロバイダが、URIが記載されているリストを巡回し、送信が成功するまで、各URIにメッセージの送信を試みます。

- ラウンド・ロビン - 「なし」と似ていますが、トランスポート・プロバイダは最後に試行されたURIを追跡します。メッセージが送信されるたびに、プロバイダはリストの最後の位置から開始します。

- ランダム - トランスポート・プロバイダは、URIが記載されているリストからランダムに試行します。

- ランダムな重みベース - 各URIは、任意の重みに関連付けられます。アルゴリズムを使用して、この重みに基づいてURIを選択します。

38.2.4.2 モニターおよびメトリック

トランスポート・マネージャが、response-time、message-count、error-count、failover-count、throttling-time、cache-hit-countなどのメトリックのモニターを処理します。

38.3 カスタム・トランスポート・プロバイダの開発の必要性

この項では、カスタム・トランスポート・プロバイダの記述が必要となる基本的な使用例について説明します。別の方法を選択した方が適切な場合もあります。この項の内容は次のとおりです。

- 38.3.1項「トランスポートSDKの機能が適している場合」

- 38.3.2項「別の方法を選択した方が良い場合」

38.3.1 トランスポートSDKの使用が適している場合

トランスポートSDKの主要な使用例の1つは、既に内部アプリケーション間の通信に使用している特別なトランスポートをサポートすることです。このようなトランスポートでは、セット・アップされたハンドシェイク、ヘッダー・フィールド、メタデータ、またはトランスポート・レベルのセキュリティに独自の概念が用いられている場合があります。トランスポートSDKを使用して、個々のエンドポイントや、インバウンドおよびアウトバウンドのいずれか、または両方の構成を可能にする、Oracle Service Busのトランスポートの実装を作成できます。カスタム・トランスポートを実装することで、特別なトランスポートのメタデータおよびヘッダー・フィールドをプロキシ・サービス・パイプラインで使用できるコンテキスト変数にマッピングできます。

信頼性、セキュリティ、パフォーマンス、管理、ユーザー・インタフェースおよびUDDIレジストリの使用のために、トランスポート・プロバイダをOracle Service Busのあらゆる側面にシームレスに統合する必要がある場合は、トランスポートSDKを使用してください。

トランスポートSDKを使用してカスタム・トランスポートを開発した方が良い場合の例を次に示します。

- カスタム・インタフェースを必要とし、組織の既存のアプリケーションをサポートする、独自開発のトランスポートを使用している場合。

- CORBAアプリケーションとの通信にCORBAまたはIIOPプロトコルを使用している場合。

- IMSおよびMainframeなど、その他のレガシー・システムを使用している場合。

- SFTP (Secure FTP)やIBMのネイティブWebSphere MQ API (WebSphere MQ JMSのかわりとして)などの、既存のトランスポートのバリエーションを使用している場合。

- LLP、AS3、およびACCORDなどの業界固有のトランスポートを使用している場合。

- TEXTメッセージまたはXMLメッセージで生ソケットを使用している可能性がある場合。このタイプのトランスポートの実装のサンプルについては、第42章「サンプル・ソケット・トランスポート・プロバイダ」を参照してください。

また、トランスポートSDKを使用して、Oracle Service Busで提供される既存のトランスポートの1つで特別なプロトコルをサポートできます。この例には、次のサポートが含まれます。

- HTTPを介した、解析済またはバイナリのXMLで構成されたメッセージ。

- HTTPを介したWS-RMまたは新しいWebサービス標準。

- JMSを介したリクエスト/レスポンス・メッセージ。ただし、Oracle Service BusのJMSトランスポートでサポートされている2つのパターンのいずれとも異なるレスポンス・パターンを持つもの(たとえば、メッセージ・コンテキストで定義されているレスポンス・キューなど)。

38.3.2 別の方法を選択した方が良い場合

トランスポートSDKを使用して新しいOracle Service Busトランスポート・プロバイダを作成する場合、多大な労力が必要となることがあります。トランスポートSDKは、カスタム・トランスポートが、Oracle Service Busにネイティブに付属するトランスポートの利便性と機能をすべて活用できるようにするために、多彩な機能をすべて備えた環境を提供します。ただし、このような多彩な機能を持ったカスタム・トランスポートは複雑になります。場合によっては、より簡単な別の方法を検討することをお薦めします。

既存のプロトコルを介して送受信される、異なるフォーマットのメッセージをサポートするためだけに拡張機能が必要な場合は、既存のトランスポートおよびJavaコールアウトを使用してメッセージを変換できる場合があります。たとえば、標準のJMSプロトコルを介して送信される(ASN.1またはシリアライズされたJavaオブジェクトなどの)特別なバイナリ・フォーマットを使用しているとします。この場合、サービスのタイプがバイナリの入出力メッセージを使用するメッセージング・サービスである、標準のJMSトランスポートを使用したサービスを定義することも検討できます。次に、パイプラインでメッセージ・コンテンツが必要な場合は、Javaコールアウト・アクションを使用してメッセージをXMLに変換したりXMLから変換したりできます。Javaコールアウトの使用の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のJavaコールアウトおよびPOJOを使用するExtensibilityに関する項を参照してください。

トランスポートSDKを使用してカスタム・トランスポートを開発することが最適とは言えないその他の例を次に示します。

- 既存のOracleソリューション(Oracle WebLogic Server、Oracle WebLogic Integration、Oracle Data Service Integrator、Oracle Business Process Management、Oracle Tuxedo、Oracle WebLogic Portalなど)をOracle Service Busと組み合せることにより、トランスポートの要件を満たします。

- Eclipseなどのサービス有効化ツールを使用することによって、SOA方式を実装するためのより簡略な標準ベースのメカニズムが提供される場合。

- (Oracle Service Busで動作確認されている)別の接続ソリューションでも要件に対応できる場合。例: iWayアダプタおよびCycloneのB2B。

- ある種の簡単なJava機能を抽象化する手段として、EJBを代用できる場合。

38.4 トランスポート・プロバイダのコンポーネント

この項では、トランスポート・プロバイダの実行時および設計時のコンポーネントについて説明したUMLダイアグラムを示します。この項の内容は次のとおりです。

- 38.4.1項「概要」

- 38.4.2項「設計時のコンポーネント」

- 38.4.3項「実行時のコンポーネント」

38.4.1 概要

通常、カスタム・トランスポート・プロバイダは設計時部分と実行時部分から構成されています。設計時部分では、トランスポート・プロバイダへのエンドポイントの登録を行います。この構成動作は、UIインタフェースの実装によって実行されます。実行時部分では、メッセージの送受信のメカニズムを実装します。

新しいカスタム・トランスポート・プロバイダを開発する場合は、SDKによって提供される多数のインタフェースを実装する必要があります。この項では、SDKの設計時部分および実行時部分の構成をモデル化したUMLダイアグラムを示します。

ヒント:

Oracle Service Busでは、TransportProviderインタフェースの実装は、転送プロトコル固有の構成プロパティおよび実行時プロパティの集中的な管理ポイントとなります。サポートされているプロトコルごとに、TransportProviderオブジェクトの単一のインスタンスが存在します。たとえば、HTTPトランスポート・プロバイダ、JMSトランスポート・プロバイダ、およびその他のトランスポート・プロバイダに、それぞれ単一のインスタンスが存在します。

詳細は、第39章「トランスポート・プロバイダの開発」で、必要なインタフェースのリストを参照してください。トランスポートSDKによって提供されるインタフェースおよびクラスのサマリーは、第41章「トランスポートSDKのインタフェースおよびクラス」を参照してください。詳細な説明は、Oracle Fusion Middleware Oracle Service Bus Java APIリファレンスにあります。

38.4.2 設計時のコンポーネント

カスタム・トランスポート・プロバイダの設計時部分はユーザー・インタフェースの構成で成り立っています。この構成は、新しいビジネス・サービスまたはプロキシ・サービスが登録される際に、Oracle Service Bus管理コンソールまたはIDEによって呼び出されます。図38-2に、トランスポート・プロバイダの設計時部分の構造を説明したUMLダイアグラムを示します。ダイアグラムでは次のインタフェースについて説明しています。

- TransportManager - トランスポート・プロバイダはこのインタフェースを介してトランスポート・マネージャと通信します。実装は公開されていません。

- TransportProvider - サード・パーティはこのインタフェースを実装する必要があります。TransportProviderは、TransportEndpointオブジェクトを追跡します。TransportProviderは、エンドポイントのライフ・サイクルも管理します。たとえば、トランスポート・エンドポイントは中断できますが、これはTransportProviderインタフェースを介して管理されます。

- TransportUIBinding - Oracle Service Bus管理コンソールが、トランスポート固有のページを表示できるようにします。

図38-2 設計時のUMLダイアグラム

注意:

各トランスポート・エンドポイントの構成は、任意のトランスポート・プロバイダのすべてのエンドポイントに対して汎用なプロパティ(URIなど)と、そのプロバイダのエンドポイントだけに固有のプロパティとで構成されます。図38-3は、共有のエンドポイント構成プロパティとトランスポート・プロバイダ固有の構成プロパティの関係を示しています。詳細は38.5.1項「トランスポート・エンドポイントのプロパティの概要」を参照してください。

図38-3 EndPointConfigurationのプロパティ

38.4.3 実行時のコンポーネント

カスタム・トランスポート・プロバイダの実行時部分では、次を行います。

- メッセージを受信し、それらをOracle Service Busランタイムに配信します。

- Oracle Service Busランタイムから外部サービスにアウトバウンド・メッセージを配信します。

実行時フレームワークでは、トランスポート・プロバイダは、トランスポート・マネージャを呼び出してインバウンド・メッセージを受信したことを認識します。トランスポート・メッセージ・コンテキストにはインバウンド・メッセージのヘッダーおよび本文が含まれています。アウトバウンド・メッセージの場合、TransportSendListenerおよびTransportSenderがあります。トランスポート・プロバイダは、メッセージからヘッダーおよび本文を取得します。

図38-2に、トランスポート・プロバイダの実行時部分の構造を説明したUMLダイアグラムを示します。

図38-4 実行時のUMLダイアグラム

38.5 トランザクション・モデル

トランスポートSDKを使用して新しいトランスポート・プロバイダを開発する前に、メッセージ・エンドポイントのトランザクション・モデルを検討することが重要です。この項では、Oracle Service Busで使用されるトランザクション・モデル、およびそのモデルがトランスポートSDKにどのように関係するかを説明します。

この項の内容は次のとおりです。

- 38.5.1項「トランスポート・エンドポイントのプロパティの概要」

- 38.5.2項「同期トランザクションのサポート」

38.5.1 トランスポート・エンドポイントのプロパティの概要

トランスポート・エンドポイントは、JMSプロキシ・サービスなどのOracle Service Busリソースであり、メッセージの送信元または送信先となります。Oracle Service Busでは、トランスポート・エンドポイントはプロトコル固有のトランスポート・プロバイダによって管理されます。トランスポート・プロバイダは、トランスポート・エンドポイントのライフ・サイクルおよび実行時動作を管理するプラグイン・オブジェクトです。

Oracle Service Busのトランザクション・モデルを理解するには、サービス・トランスポート・エンドポイントのプロパティを確認しておくと役に立ちます。

38.5.1.1 トランザクション対応のエンドポイントとトランザクション非対応のエンドポイント

エンドポイントはトランザクション対応の場合と非対応の場合があります。トランザクション対応のエンドポイントは、メッセージを処理する際に、グローバル・トランザクションのコンテキスト内で開始または追加できます。次の例では、トランザクションのプロパティがエンドポイントによってどのように異なるかを示します。

- XA接続ファクトリを使用するJMSプロキシ・サービスはトランザクション対応のエンドポイントです。メッセージを受信すると、コンテナは、トランザクションのコンテキスト内でメッセージが処理されるように、トランザクションが開始されたことを確認します。

- Tuxedoプロキシ・サービスは、トランザクション対応でない場合があります。Tuxedoプロキシ・サービスは、メッセージを受信する前にTuxedoクライアント・アプリケーションによってトランザクションが開始された場合にのみトランザクション対応になります。

- HTTPクライアントによって呼び出されるHTTPプロキシ・サービスには通常はトランザクションが関連付けられませんが、トランザクションを開始して、そのトランザクションのコンテキストでメッセージ・フローを実行するというオプションをHTTPプロキシ構成で設定できます。

38.5.1.2 サポートされているメッセージ・パターン

任意のエンドポイントで、次のメッセージ・パターンのいずれかを使用できます。

- 一方向 - レスポンスを受け取りません。一方向のエンドポイントの例としては、レスポンスを受け取らないJMSプロキシ・サービスがあります。

- 同期 - リクエストまたはレスポンスを意味します。この場合、レスポンス・メッセージとリクエスト・メッセージは暗黙的にペアになります。これは、リクエストが出された時点からレスポンスを受け取るまでの間にトランスポート・チャネルで他のトラフィックが発生し得ないためです。ほとんどの場合、同期メッセージは、アウトバウンド・リクエストの呼出しのブロックを意味します。EJBエンドポイントは同期です。HTTPエンドポイントも同期です(レスポンスを受信するまで新しいリクエストは送信できません)。

- 非同期 - リクエストおよびレスポンスを意味します。レスポンスは、JMSトランスポートおよびJMSCorrelationIDメッセージ・プロパティによる相関関係などの、トランスポート固有のメカニズムによってリクエストと関連付けられます。たとえば、リクエストおよびレスポンスを持つJMSビジネス・サービス・エンドポイントは非同期です。

38.5.2 同期トランザクションのサポート

すべてのOracle Service Busプロキシ・サービスはトランザクション伝播をサポートします。すなわち、トランザクションが存在していない場合に開始することができます。また、アウトバウンド・ビジネス・サービスが非同期の場合でも、オプションとして、レスポンスがそのトランザクションのコンテキストで発生するように保証できます。つまり、非同期パターンを実質的に同期パターンに変換します。アウトバウンド・ビジネス・サービスでは、既存トランザクションの中断など、その他のトランザクション・サポートも提供されます。

同期トランザクション対応トランスポートでは、次の例がサポートされます。

38.5.2.1 使用例1(レスポンス・パイプラインの処理)

レスポンス・パイプラインの処理が受信トランザクションに含まれるのは、インバウンド・トランスポートが同期トランザクションをサポートする場合、またはトランザクションをレスポンスに伝播するようにプロキシ・サービスを構成する場合です。この例は、インバウンド・トランスポートが他のアウトバウンド・トランスポートとペアである場合にサポートされますが、次の「注意」に示すように例外があります。

注意:

インバウンド・トランスポートが同期トランザクションでアウトバウンド・トランスポートが非同期トランザクションの場合、デッドロック状況が発生します。デッドロックが発生する原因は、トランザクションがコミットされるまではアウトバウンド・リクエストがビジネス・サービスで受信できないにもかかわらず、トランザクションが外部で開始され、Oracle Service Busがレスポンスを受け取って制御が戻るまでコミットされないためです。トランスポート・マネージャはこの状況を認識し、ランタイム・エラーをスローしてデッドロックを回避します。

たとえば、Tuxedoプロキシ・サービスなどの同期トランザクションのインバウンド・エンドポイントを使用していて、JMSビジネス・サービスなどのようにアウトバウンド・エンドポイントが非同期トランザクションである場合、レスポンスを受信するまでアウトバウンド・リクエストはトランザクションをコミットしません。外部エンティティがリクエストを受け取り、処理するまでは、レスポンスを受信できません。

また、この場合、レスポンス・パイプラインで実行されるOracle Service Busパブリッシュ・アクションは、トランザクションの一部として行われます。これはリクエスト・パイプラインで実行されるパブリッシュ・アクションがトランザクションの一部として行われるのと同様です。

注意:

複数のアクションが(リクエスト・パイプラインまたはレスポンス・パイプラインの)トランザクションに参加できます。これには、パブリッシュ・アクション、サービス・コールアウト・アクション、およびレポート・アクションが含まれます。

たとえば、インバウンドTuxedoトランスポートが同期トランザクションの場合、リクエスト・パイプラインおよびレスポンス・パイプラインが完了した場合のみコミットできます。この場合、トランスポート・マネージャは、トランザクション・コンテキストをインバウンド・スレッドからアウトバウンド・スレッドに転送します。レスポンス・スレッドが終了すると、トランザクション・コントロールおよび結果が呼出しクライアントに返されます。

38.5.2.2 使用例2(サービス・コールアウトの処理)

Oracle Service Busサービス・コールアウトを使用すると、あるプロキシ・サービスから別のサービスへのコールアウトを行うことができます。同期トランザクション対応のトランスポートに対しサービス・コールアウト・アクションが実行された場合、「ベスト・エフォート」のサービス品質に加えて、「必ず1回」のサービス品質がサポートされます。「必ず1回」では、アウトバウンド・メッセージの送信が開始されるまでは終了エラーが発生しないことを前提として、メッセージがインバウンドからアウトバウンドに1回だけ配信されます「ベスト・エフォート」では、それぞれの送信で独自のトランザクション・コンテキストが定義されます(トランザクション対応のトランスポート方式の場合)。「ベスト・エフォート」が指定されている場合、メッセージングの機能に信頼性はなく、重複するメッセージは除去されませんが、パフォーマンスが最適化されます。39.7項「TransportOptionsの操作」も参照してください。

同期トランザクション対応のトランスポートへのコールアウトは必要に応じて既存のトランザクションの一部になります。たとえば、グローバル・トランザクション中にリクエスト・パイプラインを実行しいても、サービス・コールアウトはトランザクションへの参加を許可されます。たとえば、EJBサービスへのコールアウトがある場合、必要に応じてサービス品質の値を「必ず1回」に設定することで、サービスがそのトランザクションに参加できます。

サービス・コールアウトの詳細は、2.4.29項「メッセージ・フローへのサービス・コールアウト・アクションの追加と構成」を参照してください。

38.5.2.3 使用例3(トランザクションの中断)

次の条件に当てはまる場合、トランスポート・プロバイダを呼び出してアウトバウンド・リクエストを送信する前に、トランスポート・フレームワークがトランザクションを中断します。

- アウトバウンド・サービス・エンドポイントがトランザクション対応です。

- 進行中のグローバルXAトランザクションがあります。

- サービス品質が「ベスト・エフォート」に設定されている場合。

送信操作が完了すると、中断されていたトランザクションが再開されます。

38.5.2.4 使用例4(複数のURI)

任意のアウトバウンド・サービス・エンドポイントに、関連付けられているURIが複数あり、トランザクション対応である場合、フェイルオーバーが発生する場合は、トランザクションの間にのみ発生し、ロールバックのマークは付けられていません。たとえば、URIが呼び出され、サービスがエラーを返した場合、フェイルオーバーは正常にトリガーされます。この場合、トランスポート・フレームワークが、トランザクションにロールバックのマークが付けられていることを検出するため、フレームワークは、別のURIに対しフェイルオーバーを実行しません。

38.6 セキュリティ・モデル

トランスポートSDKにより、ユーザーおよびサード・パーティは、Oracle Service Busに新しいトランスポートをプラグインできます。Oracle Service Busのセキュリティ・モデル内では、トランスポート・プロバイダは信頼性のあるコードと見なされます。セキュリティ・ホールによる潜在的なセキュリティ上の脅威を避けるため、トランスポート・プロバイダの実装は慎重に設計することが重要です。このドキュメントには、安全なトランスポート・プロバイダを開発する方法についての具体的なガイドラインは含まれていませんが、この項では、次のトランスポートSDKのセキュリティ目標について説明します。

- 38.6.1項「インバウンド・リクエストの認証」

- 38.6.2項「アウトバウンド・リクエストの認証」

- 38.6.3項「リンクレベルまたは接続レベルの資格証明」

- 38.6.4項「プロキシ・サービスへの一貫したアクセス制御」

- 38.6.5項「IDの伝播および資格証明マッピング」

38.6.1 インバウンド・リクエストの認証

トランスポート・プロバイダは、インバウンド認証のメカニズムがそのトランスポートに適しているものはすべて自由に実装できます。例:HTTPトランスポートは次の認証方式をサポートします。

- HTTP BASIC

- HTTPヘッダーで送信されるカスタム認証トークン

HTTPSトランスポート・プロバイダは、上記の認証方法の他に、SSLクライアント認証をサポートします。HTTPトランスポート・プロバイダおよびHTTPSトランスポート・プロバイダのどちらも、匿名のクライアント・リクエストをサポートします。

トランスポート・プロバイダは、適用可能な任意のトランスポート・レベル認証スキームを実装します(存在する場合)。トランスポート・プロバイダがクライアントを認証する場合、weblogic.security.Security.runAs(subject)のスコープ内でTransportManager.receiveMessage()を呼び出し、Oracle Service BusがクライアントのSubjectオブジェクトを使用できるようにする必要があります。このメソッドの詳細は、Oracle Fusion MiddlewareのOracle Service Bus Java APIリファレンスを参照してください。

ヒント:

JavaのSubjectクラスの詳細は、http://docs.oracle.com/javase/6/docs/api/javax/security/auth/Subject.htmlを参照してください。

プロキシは、次のように、このSubjectを使用します。

- プロキシ・サービスへのアクセス制御中

- メッセージ・コンテキスト変数$inbound/ctx:security/ctx:transportClient/*へのデータの入力

- IDの伝播および資格証明マッピングの入力として(メッセージ・レベルのクライアント認証もある場合を除く)

トランスポート・プロバイダが認証をサポートしない、または匿名のリクエストをサポートする場合、リクエストをディスパッチする前に匿名サブジェクトがスレッド上にあることを確認する必要があります。通常、トランスポート・プロバイダは、匿名としてすでに実行しています。そうでない場合、プロバイダは次を呼び出す必要があります。

Subject anonymous = SubjectUtils.getAnonymousUser()
Security.runAs(anonymous, action)

トランスポート・プロバイダは、インバウンド・クライアント認証の構成に必要な、任意のOracle Service Bus管理コンソール構成ページの提供も行います。

トランスポート・プロバイダは、インバウンド認証モデルを明確に記録しておく必要があります。

38.6.2 アウトバウンド・リクエストの認証

トランスポート・プロバイダは、アウトバウンド認証スキームがそのトランスポートに適しているものはすべて自由に実装できます。トランスポートSDKには、ユーザー名およびパスワードによるアウトバウンド認証、(双方向) SSLクライアント認証、およびJAAS Subject認証を容易に実現するためのAPIが含まれています。

38.6.2.1 ユーザー名およびパスワードによるアウトバウンド認証

Oracle Service Busのサービス・アカウントを使用して、ユーザー名およびパスワードによるアウトバウンド認証を実装できます。サービス・アカウントは、最上位のOracle Service Busリソースです。サービス・アカウントは、Oracle Service Bus管理コンソールで作成および管理されます。トランスポート・プロバイダでは、それぞれのトランスポート固有の構成を自由に設計し、サービス・アカウントへの参照を含めることができます。このようにして、トランスポート・プロバイダは、Oracle Service Busのサービス・アカウントによって提供される資格証明管理メカニズムを利用することができます。

トランスポート・プロバイダでは、サービス・アカウントの構成の詳細について懸念する必要はありません。サービス・アカウントのタイプは、次の3つです。

- 静的 - 静的なサービス・アカウントは、固定されたユーザー名およびパスワードで構成されます。

- マップされている - マップされたサービス・アカウントには、リモート・ユーザーおよびリモート・パスワードのリストとローカル・ユーザーからリモート・ユーザーへのマップが含まれます。マップされたサービス・アカウントでは、必要に応じて、任意のリモート・ユーザーに匿名サブジェクトをマップできます。

- パススルー - パススルー・サービス・アカウントは、Oracle Service Busクライアントのユーザー名およびパスワードがバックエンドに送信される必要があることを示しています。

アウトバウンド・エンドポイントは、サービス・アカウントへの参照を持つことができます。サービス・アカウントへの参照は、トランスポート固有のエンドポイントの構成に格納する必要があります。プロキシ・サービスが、メッセージをこのアウトバウンド・エンドポイントにルーティングする場合、トランスポート・プロバイダは、サービス・アカウントへの参照をCredentialCallback.getUsernamePasswordCredential(ref)に渡します。Oracle Service Busは、サービス・アカウントの構成に応じて、ユーザー名およびパスワードを返します。この方法には、IDの伝播と資格証明マッピングの構成をトランスポート固有の詳細な作業から分離することで、トランスポートSDKを簡素化できるという利点があります。また、この構成の共有も可能になります。複数のエンドポイントが同じサービス・アカウントを参照できます。

注意:

CredentialCallbackオブジェクトは、TransportSender.getCredentialCallback()を呼び出すことによりトランスポート・プロバイダで使用できるようになります。

CredentialCallback.getUsernamePasswordCredential()は、weblogic.security.UsernameAndPasswordインスタンスを返します。これは、ユーザー名およびパスワードを取得するためのメソッドを持つ簡単なクラスです。返されるユーザー名およびパスワードは、サービス・アカウントのタイプによって異なります。サービス・アカウントのタイプが静的である場合、固定されたユーザー名およびパスワードが返されます。サービス・アカウントのタイプがマップされている場合、クライアント・サブジェクトを使用してリモートのユーザー名およびパスワードがルックアップされます。サービス・アカウントがパススルーである場合、クライアントのユーザー名およびパスワードが返されます。

注意:

次の場合、マップされたサービス・アカウントは、CredentialNotFoundExceptionをスローします。

- インバウンド・クライアントのマップが存在しない場合、または

- インバウンドのセキュリティ・コンテキストが匿名であり、匿名マップが存在しない場合

38.6.2.2 アウトバウンドSSLクライアント認証(双方向SSL)

Oracle Service Busは、アウトバウンドSSLクライアント認証もサポートします。この場合、アウトバウンドSSLリクエストを出すプロキシを、SSL用のPKIキー・ペアを使用して構成する必要があります。これには、プロキシ・サービス・プロバイダへの参照が含まれますが、このドキュメントでは、詳細については取り上げていません。SSLクライアント認証用のキー・ペアを取得するには、トランスポート・プロバイダがCredentialCallback.getKeyPair()を呼び出す必要があります。この例として、HTTPSトランスポート・プロバイダがあります。

38.6.2.3 アウトバウンドJAAS Subject認証

一部のトランスポート・プロバイダは、認証トークンとして、シリアライズされたJAAS Subjectを回線で送信します。インバウンド・サブジェクトを取得するには、トランスポート・プロバイダがCredentialCallback.getSubject()を呼び出す必要があります。

注意:

戻り値は、匿名サブジェクトである場合があります。

38.6.3 リンクレベルまたは接続レベルの資格証明

一部のトランスポートでは、サービスに接続するために資格証明が必要になります。たとえば、FTPサーバーへの認証には、FTPエンドポイントが必要になる場合があります。トランスポート・プロバイダは、静的なサービス・アカウントを利用して、接続を確立するためのユーザー名およびパスワードを取得できます。これらの接続は、特定のクライアント・リクエストのかわりとして確立されるものではないため、この場合、マップされたサービス・アカウントまたはパススルー・サービス・アカウントは使用できません。トランスポート・プロバイダでこのアプローチを採用する場合は、サービス・アカウントへの参照を使用してエンドポイントを構成する必要があります。実行時に、トランスポート・プロバイダは、TransportManagerHelper.getUsernamePassword()を呼び出して、静的なサービス・アカウントへの参照を渡す必要があります。

38.6.4 プロキシ・サービスへの一貫したアクセス制御

Oracle Service Busは、すべてのインバウンド・リクエストについてプロキシ・サービスへのアクセス制御を実施します。トランスポート・プロバイダでは、アクセス制御を実施するための、またはアクセス制御ポリシーを管理するためのインタフェースを提供する必要はありません。

注意:

アクセス制御ポリシーはほとんどの使用例を対象としていますが、トランスポート・プロバイダに固有の理由で、(Oracle Service Busによって行われるアクセス制御チェックの他に)独自のアクセス制御メカニズムが必要な場合は、それらを実装できます。この場合は、Oracle販売代理店にお問い合せください。通常は、トランスポート・プロバイダで、Oracle Service Busを使用してアクセス制御を処理する方法をお薦めします。

アクセスが拒否されると、TransportManager.receiveMessage()は、TransportException内にラップされているAccessNotAllowedExceptionをスローします。トランスポート・プロバイダは、TransportExceptionの根本原因を確認します。根本原因がAccessNotAllowedExceptionである場合、トランスポート・プロバイダは、特別なエラー処理を行う場合があります。たとえば、この場合、HTTP/Sトランスポート・プロバイダはHTTP 403 (forbidden)エラー・コードを返します。

注意:

Oracle Service Busは、アクセス制御の判断を行うために、認可プロバイダがリクエスト・ヘッダーを使用できるようにします。

38.6.5 IDの伝播および資格証明マッピング

38.6.2項「アウトバウンド・リクエストの認証」で説明したように、Oracle Service Busには、3つのタイプのサービス・アカウントが用意されています。トランスポート・プロバイダは、サービス・アカウントを利用して、アウトバウンド認証のためのユーザー名およびパスワードにアクセスできます。サービス・アカウントは、Oracle Service Busのトランスポート・プロバイダに対し、すべてのIDの伝播および資格証明マッピングの詳細を非表示にしています。

38.7 スレッディング・モデル

この項では、Oracle Service Busで使用されるスレッディング・モデル、およびそのモデルがトランスポートSDKにどのように関係するかを説明します。この項の内容は次のとおりです。

- 38.7.1項「概要」

- 38.7.2項「インバウンド・リクエスト・メッセージのスレッド」

- 38.7.3項「アウトバウンド・レスポンス・メッセージのスレッド」

- 38.7.4項「非同期のサポート」

- 38.7.5項「パブリッシュおよびサービス・コールアウトのスレッディング」

38.7.1 概要

図38-5に、1つのインバウンド・メッセージを処理する仮想のトランスポート・エンドポイントを表す、Oracle Service Busのスレッディング・モデルを示します。

Servletなどのフロント・エンド・アーティファクトが、インバウンド・メッセージを取得します。リクエストを、アウトバウンド・エンドポイントにルーティングし、非同期的に送信できます。この時点で、スレッドは解放されます。その後しばらくして、コールバックを使用して、レスポンスがOracle Service Busに送り返されます。レスポンスが受信され、パッケージ化されて、Oracle Service Busパイプラインに渡されます。その後、パイプラインが、レスポンスをクライアントに送信する準備ができていることをインバウンド・エンドポイントに通知します。スレッドが使用できないのは必要な間のみであるため、この処理はスケーラブルです。

図38-5 Oracle Service Busのスレッディング・モデルのサンプル

38.7.2 インバウンド・リクエスト・メッセージのスレッド

同じスレッドで次のアクションが実行されます。

1. トランスポート・エンドポイントのフロント・エンド・アーティファクトがインバウンド・メッセージを受信します。このフロント・エンド・アーティファクトは、HTTPサーブレットやJMSメッセージドリブンBeanのインスタンスなどです。

2. トランスポート・エンドポイントの実装により、メッセージはTransportMessageContextオブジェクトにパッケージ化され、Oracle Service Busランタイムに渡されます。TransportMessageContextインタフェースの詳細は、41.5項「リクエストおよびレスポンス・メッセージのメタデータおよびヘッダーの表現」を参照してください。

3. パイプラインは、プロキシに構成されているリクエスト・パイプライン・アクションを実行します。

4. Oracle Service Busパイプラインでインバウンド・メッセージを処理すると同時に、同じ(リクエスト)スレッドで、Oracle Service Busランタイムは、アウトバウンド・メッセージを外部サービスに配信するよう、登録されているアウトバウンド・トランスポート・エンドポイント(このエンドポイントは、同じプロバイダで管理されていない場合もある)に要求します。

5. その後しばらくして、外部サービスは、レスポンス・メッセージを配信するよう、アウトバウンド・エンドポイントに非同期的に要求します。アウトバウンド・エンドポイントは、トランスポート固有のコールバック・オブジェクトを使用して、事前に登録されている必要があります。

注意:

この時点で、最初のリクエスト・スレッドは解放され、別のリクエストが使用できるようにOracle WebLogic Serverのスレッド・プールに戻されます。

38.7.3 アウトバウンド・レスポンス・メッセージのスレッド

同じスレッドで次のアクションが実行されます。

1. レスポンス・メッセージは、TransportMessageContextオブジェクトにパッケージ化され、レスポンス処理のためにOracle Service Busランタイムに戻されます。この処理は、リクエスト・スレッドとは別のスレッドで実行されます。新しいスレッドは、レスポンス・スレッドと呼ばれます。

2. レスポンス・メッセージが処理された後、Oracle Service Busランタイムは、レスポンスを呼出し元に送り返すタイミングであることを通知するよう、InboundTransportMessageContextオブジェクトに要求します。InboundTransportMessageContextインタフェースの詳細は、41.5項「リクエストおよびレスポンス・メッセージのメタデータおよびヘッダーの表現」を参照してください。
トランスポート・プロバイダが、非同期の(非ブロッキング)アウトバウンド呼出しをネイティブに実装していない場合は、インバウンド・リクエスト・メッセージを受信したスレッドとは別のスレッドで、Oracle Service Busランタイムにレスポンスを返す必要があります。これを行うためにトランスポート・プロバイダは、リクエスト・スレッドでブロッキング呼出しを実行し、トランスポートSDKのヘルパー・メソッドを使用して、Oracle Service Busランタイムにレスポンスを返します。

たとえば、EJBトランスポート・プロバイダは、非同期(非ブロッキング)のアウトバウンド呼出しを実装していません。基底のAPIはブロッキングAPIです。これに対処するには、プロバイダがブロッキング呼出しを行い、その後で、TransportManagerHelper.schedule()を使用して処理に対するレスポンスをスケジュールします。EJBトランスポート・プロバイダの詳細は、第28章「EJBトランスポート・」を参照してください。

38.7.4 非同期のサポート

トランスポート・サブシステムは、意図的に、Oracle Service Busと非同期的に対話するようになっています。これは、非同期での動作が、同期での動作よりもスケーラブルであるため望ましいからです。非同期の対話用に1つ、および同期の対話用に1つと、2つの別々のAPIを作成するのではなく、Oracle Service Busランタイムでは非同期の対話が必要です。この処理は、ブロッキング呼出しやコールバックでのレスポンスをポストするなどの方法により、トランスポート開発者が行う必要があります。いずれにせよ、レスポンスは、リクエストとは別のスレッドで実行する必要があります。

38.7.5 パブリッシュおよびサービス・コールアウトのスレッディング

図38-5に示すスレッド・ダイアグラムは、ルーティングに焦点を当てたものです。トランスポート・サブシステムは、リクエストまたはレスポンス・パイプラインの処理中に実行されるOracle Service Busのパブリッシュ・アクションとサービス・コールアウト・アクションに対して同じように動作します。これらのアクションは、トランスポート・サブシステムの範囲外およびOracle Service Busパイプラインの範囲内で実行されます。そのため、パブリッシュおよびサービス・コールアウトのスレッディング動作とトランスポート・プロバイダのスレッディング動作には違いがいくつかあります。

ただし、次の場合に注意してください。

- サービス・コールアウト - 非同期的にレスポンスを受信するまで、パイプライン・プロセッサがスレッドをブロックします。その後、ブロックされたスレッドはパイプラインの実行を再開します。この目的は、後でパイプライン・アクションで使用できる変数をバインドし、ビジネス・ロジックを実行することです。そのため、レスポンスが返される前にビジネス・ロジックが実行されるように、これらのアクションがブロックする必要があります。

- パブリッシュ - 非同期的にレスポンスを受信するまで、パイプライン・プロセッサがスレッドをブロックしない場合もあります。その後、このスレッドは、残りのリクエストまたはレスポンス・パイプラインの処理の実行を続行します。

ヒント:

サービス・コールアウト・アクションにより、ユーザーは、Oracle Service Busにすでに登録されているプロキシまたはビジネス・サービスに対し、同期(ブロッキング)呼出しを構成することができます。メッセージのターゲット・サービスを特定し、そのサービスへメッセージをパッケージ化し、送信する方法を構成するには、パブリッシュ・アクションを使用してください。サービス・コールアウト・アクションおよびパブリッシュ・アクションの詳細は、2.4.29項「メッセージ・フローへのサービス・コールアウト・アクションの追加と構成」および2.4.17項「メッセージ・フローへのパブリッシュ・アクションの追加と構成」を参照してください。

38.8 メッセージ・コンテンツの設計

この項の内容は次のとおりです。

- 38.8.1項「概要」

- 38.8.2項「SourceおよびTransformer」

- 38.8.3項「SourceおよびMessageContextオブジェクト」

- 38.8.4項「組込みのトランスフォーメーション」

38.8.1 概要

トランスポート・プロバイダには、メッセージ・コンテンツの独自のネイティブ表現があります。たとえば、HTTPトランスポートはjava.io.InputStreamを使用し、JMSは、様々なタイプのMessageオブジェクトがあります。また、Tuxedoにはバッファがあり、WLS WebサービスのスタックはSAAJを使用します。ただし、プロキシ・サービスの実行時は、コンテンツのネイティブ表現は、メッセージ・コンテキストです。Oracle Service Busは、InputStreamからメッセージ・コンテキストへの、またはその逆などの一部の一般的な変換シナリオをサポートしますが、トランスポートでの表現とメッセージ・コンテキストの間の変換は、最終的にはトランスポート・プロバイダが行います。

通常、トランスポートSDKが、トランスポートの2つの異なるコンテンツ表現を直接変換することはありません。ただし、2つのトランスポートが互換性のある表現を使用していて、コンテンツを再エンコードする必要がない場合は、SDKによって、(たとえば、インバウンド・ファイル・トランスポートからアウトバウンドHTTPトランスポートにFileInputStreamを渡すことにより)ソース・コンテンツを直接パススルーできます。ただし、ソース・コンテンツで何らかの処理が必要な場合は、最初にソース・コンテンツをメッセージ・コンテキストに復号化し、その後で標準のメカニズムを使用して送信トランスポート用のコンテンツを生成した方が適切です。

38.8.2 SourceおよびTransformer

コンテンツは、Sourceインタフェースのインスタンスとして表されます。TransportSenderやTransportMessageContextなどのメッセージ・コンテンツを処理するトランスポートSDKインタフェースは、すべてメッセージ・ペイロードを渡す際に、Sourceインタフェースを使用します。Sourceにおける要件はごくわずかです。Sourceは、基本となるSourceインタフェースで定義されている2つのメソッドを使用した、バイト単位のストリームへのプルベースおよびプッシュ・ベースの変換をサポートする必要があります。Sourceは、シリアライゼーション中に、TransformOptionsパラメータで指定されている、文字セット・エンコーディングなどの様々なトランスフォーメーションのオプションを考慮しない場合があります。

すべてのSourceオブジェクトは基底のシリアライゼーション・インタフェースを実装する必要がありますが、Sourceオブジェクトの基礎となる表現は実装固有のものです。そのため、InputStream、JMS Messageオブジェクト、String、または特定のトランスポートに最も適している表現に基づいたSourceオブジェクトを使用できます。通常、Sourceを実装することで、基本的なシリアライゼーション・メソッドだけでなく、基底のコンテンツに直接アクセスできるようになります。たとえば、内部でStringオブジェクトを使用してそのコンテンツを格納するStringSourceは、内部データにアクセスするためのgetString()メソッドを提供します。その後、Sourceの最終的なコンシューマは、これらのソース固有のAPIを呼び出して、基底のコンテンツを抽出し、シリアライゼーションのオーバーヘッドを回避することができます。

また、Transformerオブジェクトを使用して、Sourceを他のタイプのSourceに変換することもできます。トランスポート・プロバイダなどのSourceコンシューマが、認識できないSourceインスタンスを受け取った場合は、多くの場合、認識できるSourceインスタンスに変換できます。その後、ソース固有のAPIを使用して、認識できるSourceから基底のコンテンツを抽出できます。ただし、トランスポート・プロバイダは多くの場合、単に基本的なシリアライゼーション・メソッドを使用してコンテンツをシリアライズし送信します。41.4項「SourceおよびTransformerクラスとインタフェース」も参照してください。

38.8.3 SourceおよびMessageContextオブジェクト

Sourceは、トランスポート・レイヤーとバインディング・レイヤーの間の一般的なコンテンツ表現です。バインディング・レイヤーは、トランスポート・レイヤーで使用されるSource表現と実行時にパイプラインで使用されるメッセージ・コンテキストとの間でコンテンツを変換するエンティティです。変換がどのように行われるかは、サービスのタイプ(そのバインディングのタイプ)と添付の有無によって異なります。厳密にはトランスポートSDKの役割ではありませんが、独自のSourceオブジェクトを定義しているすべてのトランスポート・プロバイダは、この変換プロセスを認識している必要があります。

添付が存在しない場合、受信したSourceは単にコアとなるメッセージ・コンテンツを示します。受信したSourceを特定のタイプのSourceに変換し、その後で基底のコンテンツを抽出することでMessageContextが初期化されます。たとえば、XMLベースのサービスの場合、受信したSourceはXmlObjectSourceに変換されます。その後、XmlObjectSourceからXmlObjectが抽出され、$bodyコンテキスト変数内でペイロードとして使用されます。同様に、SOAPサービスはXmlObjectSourceに変換されます。ただし、<SOAP:Header>および<SOAP:Body>要素を抽出して$headerおよび$bodyコンテキスト変数を初期化できるようにするために、抽出されたXmlObjectがSOAP Envelopeである必要がある点が異なります。

定義された一連のサービス・タイプで使用される標準的なSourceのタイプを次に示します。

- SOAP - XmlObjectSource

- XML - XmlObjectSource

- TEXT - StringSource

- MFL - MFLSource

バイナリ・サービスの場合、Sourceの変換は行われません。かわりに、Sourceは、SourceRepositoryに登録され、結果の<binary-content/> XMLは、$body内でペイロードとして使用されます。

添付が存在する場合、Sourceは最初にMessageContextSourceに変換されます。MessageContextSourceから、2つのタイプのSourceオブジェクトが取得されます。1つが添付で、もう1つがコア・メッセージです。コア・メッセージのSourceは、前述のとおり処理されます。添付を表すSourceは、AttachmentsSourceに変換されます。AttachmentsSourceから、XMLが取得され、$attachmentsコンテキスト変数、および任意のバイナリの添付コンテンツを表す登録済のSourceを含むSourceRepositoryの初期化に使用されます。図38-6に、このプロセス全体を示します。

図38-6 添付のフロー

トランスポート・レイヤーに渡すためにMessageContext内のデータからSourceを作成する場合にも、同様の変換が実行されます。コア・メッセージは、サービスのタイプの標準的なSourceに変換できるSourceインスタンスで表現されています。ほとんどの場合、Sourceは、すでに標準的なSourceのインスタンスになっていますが、必ずしもそうであるとはかぎりません。添付が存在する場合、トランスポート・レイヤーに渡されるSourceは、MessageContextSourceインスタンスに変換できるSourceになります。トランスポート・プロバイダが、事前定義されたトランスポート・ヘッダーとしてContent-Typeをサポートする場合、一般的に、配信されたSourceはMessageContextSourceのインスタンスになります。それ以外の場合、配信されたSourceはMimeSourceのインスタンスであることが多いですが、これもMessageContextSourceに変換できます。

この違いの理由は、トランスポート・ヘッダーとしてContent-Typeをネイティブにサポートするトランスポートでは、ペイロードではなく、トランスポート・ヘッダーにトップ・レベルのMIMEヘッダーが含まれている必要があるためです。この例としては、HTTPおよび電子メールがあります。Content-Typeをネイティブにサポートしないトランスポートでは、これらのトップ・レベルのMIMEヘッダーがペイロードに含まれている必要があります。Content-Typeヘッダーは、複数のMIMEパッケージのデコードに不可欠であるためです。

38.8.4 組込みのトランスフォーメーション

表38-1はソースと、そのソースを組込みのトランスフォーメーションによって変換できるソース・タイプの一覧を示しています。たとえば、StringSourceからXmlObjectSourceへの変換を処理する組込みのトランスフォーメーションはありますが、StringSourceをXmlObjectSourceに変換できるトランスフォーメーションはありません。通常、次に示すトランスフォーメーションは、両方のソース・タイプで使用される内部データ表示の情報を利用します。

表38-1 組込みのトランスフォーメーション

パブリック・ソース

変換後のソース・タイプ

Source

- StreamSource

- ByteArraySource

- StringSource

- XmlObjectSource

- DOMSource

- MFLSource

- SAAJSource

StreamSource

StreamSource

ByteArraySource

ByteArraySource

StringSource

- StringSource

- XmlObjectSource

- DOMSource

XmlObjectSource

- StringSource

- XmlObjectSource

- DOMSource

- MFLSource

DOMSource

- StringSource

- XmlObjectSource

- DOMSource

- MFLSource

MFLSource

- XmlObjectSource

- DOMSource

- MFLSource

MimeSource

- MimeSource

- SAAJSource

- MessageContextSource

SAAJSource

- MimeSource

- SAAJSource

- MessageContextSource

MessageContextSource

- MimeSource

- SAAJSource

- MessageContextSource

これらの一般的なトランスフォーメーションは元のソース・タイプの情報を使用せずに行われますが、かわりに、すべてのSourceが実装している基本的なシリアライゼーション・メソッドのgetInputStream()およびwriteTo()を利用します。したがって、XmlObjectSourceからByteArraySourceへの変換は最終的には可能ですが、XmlObjectSourceの内部情報を使用して行われることはありません。

注意:

トランスポートで実装されているカスタムSourceの多くは、(基底のデータが構造化されていないバイトの収集である場合は特に)これらの一般的なトランスフォーメーションで処理できます。たとえば、ファイル・トランスポートは、ディスク上のファイルから直接コンテンツを取り出すカスタムSourceを使用します。ただし、データは構造のない単なるバイトのセットであるため、XmlObjectSourceなどへのカスタム・トランスフォーメーションを実行する必要はありません。SourceからXmlObjectSourceへの一般的なトランスフォーメーションで、すべてのSourceが実装している基本的なシリアライゼーション・メソッドのみを使用して、このカスタムFileSourceを処理することができます。

詳細は、41.4項「SourceおよびTransformerクラスとインタフェース」を参照してください。

39 トランスポート・プロバイダの開発

この章では、カスタム・トランスポート・プロバイダの開発に必要な基本手順について説明します。

トランスポートSDKは、転送プロトコルとOracle Service Busランタイム・システムとの間に抽象のレイヤーを提供します。この抽象のレイヤーでは、新しいトランスポート・プロバイダを開発してOracle Service Busにプラグインできます。トランスポートSDKインタフェースは、HTTPなどの転送プロトコルとOracle Service Busランタイムの間を橋渡しします。

ヒント:

この章を読む前に、必ず第38章「設計上の考慮事項」を確認してください。

この章の内容は次のとおりです。

- 39.1項「開発の流れ」

- 39.2項「始める前に」

- 39.3項「基本の開発手順」

- 39.4項「開発に関する重要事項」

39.1 開発の流れ

カスタム・トランスポート・プロバイダを設計および構築するプロセスは複雑です。この項では、トランスポート・プロバイダを開発する際の推奨事項について説明します。カスタム・トランスポート・プロバイダの開発は、次の基本的な手順に分類されます。

- 39.1.1項「計画」

- 39.1.2項「開発」

- 39.1.3項「パッケージ化およびデプロイ」

39.1.1 計画

カスタム・トランスポート・プロバイダを開発する前に、次の計画手順を確認します。

1. カスタム・トランスポート・プロバイダを開発する必要があるかどうかを判断します。38.3項「カスタム・トランスポート・プロバイダの開発の必要性」を参照してください。

2. ソケット・トランスポート・プロバイダのサンプルを実行して検討します。このプロバイダのソース・コードはOracle Service Busと共にインストールされます。また、内容を検討したり再利用したりできるように一般に公開されています。第42章「サンプル・ソケット・トランスポート・プロバイダ」を参照してください。

3. 第38章「設計上の考慮事項」を確認します。ここでは、転送プロバイダのアーキテクチャ、および、転送プロバイダで使用されるセキュリティ・モデルやスレッディング・モデルなど、転送プロバイダの設計さまざまな側面について説明しています。

4. 39.2項「始める前に」を確認します。

39.1.2 開発

39.3項「開発の基本手順」では、スキーマの構成、インタフェースの実装を含め、トランスポート・プロバイダを開発する際に必要な手順について説明します。

39.4項「開発に関する重要事項」では、開発サイクルで参照する必要がある、いくつかの項目を詳細に説明します。また、39.5項「メッセージの処理」、39.6項「メッセージの変換」、39.8項「エラー処理」などについて詳細に説明します。

39.1.3 パッケージ化およびデプロイ

トランスポート・プロバイダのパッケージ化およびデプロイの詳細は、第43章「トランスポート・プロバイダのデプロイ」を参照してください。

39.2 始める前に

カスタム・トランスポート・プロバイダを開発する前に、次のような設計上の問題について、検討および確認する必要があります。

- カスタム・トランスポート・プロバイダを開発する必要があるかどうかを判断します。38.3項「カスタム・トランスポート・プロバイダの開発の必要性」を参照してください。

- メッセージ・エンドポイントをトランザクション対応にするか、またはトランザクション非対応にするかを判断します。38.5.1.1項「トランザクション対応のエンドポイントとトランザクション非対応のエンドポイント」を参照してください。

- メッセージ・エンドポイントを一方向、同期、非同期のいずれにするかを判断します。38.5.1.2項「サポートされているメッセージ・パターン」および38.5.2項「同期トランザクションのサポート」を参照してください。

- 送信メッセージと着信メッセージのセキュリティ要件を決定します。38.6項「セキュリティ・モデル」を参照してください。

- Oracle Service Busで使用されるスレッディング・モデルについて理解します。38.7項「スレッディング・モデル」を参照してください。

- トランスポート・プロバイダで同期アウトバウンド呼出しと非同期アウトバウンド呼出しのどちらがサポートされるかについて理解します。38.7.4項「非同期のサポート」を参照してください。

- トランスポートSDKに用意されているインタフェースとクラスについて確認し、トランスポート・プロバイダの設計時部分および実行時部分にどのように適合するのかを理解します。第41章「トランスポートSDKのインタフェースおよびクラス」を参照してください。

- カスタム・トランスポート・プロバイダをパッケージ化およびデプロイする方法について理解します。43章「トランスポート・プロバイダのデプロイ」を参照してください。

- トランスポート・フレームワークを介したメソッド呼出しのフローを確認します。付録A「トランスポートSDKのUMLシーケンス・ダイアグラム」を参照してください。

39.3 開発の基本手順

カスタム・トランスポート・プロバイダを開発する際に従う基本手順は次のとおりです。

39.3.1項「1. トランスポート・フレームワーク・コンポーネントの確認」

39.3.2項「2. トランスポート・プロジェクトのディレクトリ構造の作成」

39.3.3項「3. トランスポート固有のアーティファクトのXMLスキーマ・ファイルの作成」

39.3.4項「4. トランスポート固有のアーティファクトの定義」

39.3.5項「5. XMLBean TransportProviderConfigurationの定義」

39.3.6項「6. トランスポート・プロバイダのユーザー・インタフェースの実装」

39.3.7項「7. 実行時インタフェースの実装」

39.3.8項「8. トランスポート・プロバイダのデプロイ」

39.3.1 1. トランスポート・フレームワーク・コンポーネントの確認

図39-1は、カスタム・トランスポート・プロバイダを作成する際に、実装および構成する必要があるコンポーネントを示しています。トランスポート・マネージャは、トランスポート・プロバイダの登録を制御および管理し、Oracle Service Busとの通信を処理します。トランスポート・プロバイダは、トランスポート・エンドポイント(メッセージの送信元または送信先となるリソース)のライフ・サイクルおよび実行時の動作を管理します。カスタム・トランスポート・プロバイダを開発するには、トランスポートSDKを使用します。トランスポートSDKを使用してカスタム・トランスポート・プロバイダを開発することが、この章のテーマです。

図39-1 トランスポート・サブシステムの概要

実装および構成する必要があるトランスポート・サブシステムには、次のものがあります。

- トランスポートUIバインディング - トランスポート・プロバイダのユーザー・インタフェース・コンポーネント。関連するインタフェースの概要は、41.6項「ユーザー・インタフェースの構成」を参照してください。

- トランスポート・エンドポイント - メッセージの送受信を行います。関連するインタフェースの概要は、41.3項「汎用クラスおよびインタフェース」を参照してください。

- エンドポイント構成 - エンドポイント構成を格納します。関連するインタフェースの概要は、41.2項「スキーマで生成されるインタフェース」を参照してください。

- トランスポート・メッセージ・コンテキスト - メッセージ(インバウンドおよびアウトバウンド)のリクエスト・ヘッダー、レスポンス・ヘッダー、およびその他の部分のメタデータが含まれています。41.4項「SourceおよびTransformerクラスとインタフェース」および41.5項「リクエストおよびレスポンス・メッセージのメタデータおよびヘッダーの表現」も参照してください。

- WLSアーティファクト・デプロイヤ - (オプション)メッセージを送受信するサーブレットなどの、アーティファクトをデプロイします。

- トランスポートの送信者 - アウトバウンド・メッセージおよびペイロードのメタデータを取得します。関連するインタフェースのサマリーは、41.3.2項「汎用インタフェースのサマリー」を参照してください。

- トランスポートのリスナー - アウトバウンド・エンドポイントがOracle Service Busの残りの部分にアウトバウンド・リクエストの結果をポストできるようにします。41.5項「リクエストおよびレスポンス・メッセージのメタデータおよびヘッダーの表現」も参照してください。

- リクエスト/レスポンスのメタデータ - 関連するインタフェースの概要については、41.5項「リクエストおよびレスポンス・メッセージのメタデータおよびヘッダーの表現」を参照してください。

39.3.2 2. トランスポート・プロジェクトのディレクトリ構造の作成

新しいトランスポート・プロバイダを開発する前に、プロジェクトの適切なディレクトリ構造をセットアップします。サンプル・ソケット・トランスポート・プロバイダに使用されているディレクトリ構造をコピーすることをお薦めします。この構造の詳細は、42.2項「サンプルの場所とディレクトリ構造」を参照してください。

39.3.3 3. トランスポート固有のアーティファクトのXMLスキーマ・ファイルの作成

XMLスキーマ(xsd)ファイルを作成し、トランスポート固有の定義を記述します。このファイルは、サンプル・ソケット・トランスポート・プロバイダ用に開発されたスキーマ・ファイル(OSB_ORACLE_HOME/samples/servicebus/sample-transport/schemas/SocketTransport.xsd)を基に作成できます。

注意:

SocketTransport.xsdファイルにより、TransportCommon.xsdファイルがインポートされます。このファイルは、サービス・エンドポイントの構成用の基本となるスキーマ定義ファイルです。このファイルは、OSB_ORACLE_HOME/lib/sb-schemas.jarにあります。続行する前に、このファイルのコンテンツを確認しておきます。

39.3.4 4. トランスポート固有のアーティファクトの定義

前項の39.3.3項「3.トランスポート固有のアーティファクトのXMLスキーマ・ファイルの作成」で説明されているXMLスキーマ・ファイルで、次のトランスポート固有のアーティファクトのXMLスキーマを定義します。

- EndpointConfiguration

- RequestMetaDataXML

- ResponseMetaDataXML

注意:

トランスポート・プロバイダ固有のメタデータおよびヘッダーを定義する場合は、単純なXMLタイプのみサポートされています。たとえば、ネストされた要素を持つ複雑なタイプはサポートされていません。さらに、特定の名前を持つヘッダーは最大1つしか使用できないという制限もあります。

ヒント:

これらの各スキーマ定義は、対応するJavaファイルに変換された後、コンパイルされます。サンプル・ソケット・トランスポート・プロバイダの変換済Javaソース・ファイルは、次のディレクトリにあります。 sample-transport/build/classes/com/bea/alsb/transports/sock/impl

39.3.4.1 EndPointConfiguration

EndPointConfigurationは、エンドポイント構成のベース・タイプで、インバウンド・エンドポイントおよびアウトバウンド・エンドポイントのデプロイメントと操作に必要なパラメータの完全なセットを表します。この構成は、汎用的な部分とプロバイダ固有の部分で成り立ちます。EndPointConfigurationスキーマ定義の詳細は、TransportCommon.xsdファイルのドキュメント要素を参照してください。

プロバイダ固有のエンドポイント構成をスキーマ・ファイルに指定する必要があります。例39-1に、SocketTransport.xsdの抜粋を示します。

例39-1 SocketEndPointConfiguration定義のサンプル

<xs:complexType name="SocketEndpointConfiguration">
<xs:annotation>
<xs:documentation>
SocketTransport - specific configuration
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice>
<xs:element name="outbound-properties"
type="SocketOutboundPropertiesType"/>
<xs:element name="inbound-properties"
type="SocketInboundPropertiesType"/>
</xs:choice>
<xs:element name="request-response" type="xs:boolean">
<xs:annotation>
<xs:documentation>
Whether the message pattern is synchronous
request-response or one-way.
</xs:documentation>
</xs:annotation>
</xs:element>
...

39.3.4.2 RequestMetaDataXML

各トランスポート・プロバイダは、メタデータ(メッセージ・ヘッダー)をPOJO (Plain Old Java Object)に格納し、パイプラインに渡す必要があります。メタデータとして送信できる情報の例には、Content-Typeヘッダー、セキュリティ情報、ロケール情報などがあります。RequestMetaData POJOは、RequestMetaData抽象クラスを拡張する汎用オブジェクトで、インバウンド・リクエストやアウトバウンド・リクエストのメッセージ・メタデータを表します。トランスポート・プロバイダでは、RequestMetaData POJOのメッセージ・メタデータをOracle Service Busランタイムに配信する必要があります。39.5.3項「リクエスト/レスポンスのメタデータの処理」も参照してください。

RequestMetaDataXMLは、同じRequestMetaData POJOをXMLで表現したものです。このXML表現では、Apache XML Beanテクノロジを使用します。アウトバウンド・リクエストのメタデータ全体を特定のXMLフラグメントに設定するなど、メッセージを処理するときにメタデータのXML表現を必要とするパイプラインでの操作を伴う場合のみ、Oracle Service Busランタイムで必要になります。

リクエスト・メタデータの構成をスキーマ・ファイルに指定する必要があります。例39-2に、SocketTransport.xsdの抜粋を示します。

例39-2 SocketRequestMetaDataXML定義のサンプル

<xs:complexType name="SocketRequestMetaDataXML">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ts:RequestMetaDataXML">
<xs:sequence>
<xs:element name="client-host"
type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
Client host name
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="client-port" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>Client port</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

39.3.4.3 RequestHeadersXML

RequestHeadersXMLは、一連のインバウンド・リクエスト・ヘッダーまたはアウトバウンド・リクエスト・ヘッダーのベース・タイプです。RequestHeadersXMLの構成をスキーマ・ファイルに指定する必要があります。例39-2に、SocketTransport.xsdの抜粋を示します。

例39-3 SocketRequestHeadersXML定義のサンプル

<xs:complexType name="SocketRequestHeadersXML">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ts:RequestHeadersXML">
<xs:sequence>
<xs:element name="message-count" type="xs:long" minOccurs="0">
<xs:annotation>
<xs:documentation>
Number of messages passed till now.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

39.3.4.4 ResponseMetaDataXML

ResponseMetaDataXMLは、インバウンド・メッセージまたはアウトバウンド・メッセージに対するレスポンスのメタデータのベース・タイプです。ResponseMetaDataXMLの構成をスキーマ・ファイルに指定する必要があります。例39-2に、SocketTransport.xsdの抜粋を示します。

例39-4 SocketResponseMetaDataXML定義のサンプル

<xs:complexType name="SocketResponseMetaDataXML">
<xs:complexContent>
<xs:extension base="ts:ResponseMetaDataXML">
<xs:sequence>
<xs:element name="service-endpoint-host"
type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
Host name of the service end point connection.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="service-endpoint-ip"
type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
IP address of the service end point connection.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

39.3.4.5 ResponseHeadersXML

ResponseHeadersXMLは、一連のレスポンス・ヘッダーのベース・タイプです。ResponseHeadersXMLの構成をスキーマ・ファイルに指定する必要があります。例39-2に、SocketTransport.xsdの抜粋を示します。

例39-5 SocketResponseHeadersXML定義のサンプル

<xs:complexType name="SocketResponseHeadersXML">
<xs:annotation>
<xs:documentation/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ts:ResponseHeadersXML"/>
</xs:complexContent>
</xs:complexType>

39.3.5 5. XMLBean TransportProviderConfigurationの定義

TransportProviderConfiguration XML Beanを構成するには、トランスポート・プロバイダの構成ファイルを編集します。このXMLファイルは、トランスポート・プロバイダ・ルート・ディレクトリのconfigディレクトリにあります。サンプル・ソケット・トランスポート・プロバイダを実装する場合、このファイル(SocketConfig.xml)の場所については、42.2項「サンプルの場所とディレクトリ構造」を参照してください。

- プロキシ・サービスでトランスポートを使用できるようにする場合、inbound-direction-supported要素をtrueに設定します。

- ビジネス・サービスでトランスポートを使用できるようにする場合、outbound-direction-supported要素をtrueに設定します。

- トランスポートが自己記述型の場合、self-described要素の値をtrueに設定します。自己記述トランスポートでは、そのサービスがエンドポイント構成に基づいて形式(スキーマまたはWSDL)を記述します。

- トランスポートのtModelをUDDIにパブリッシュする場合、UDDI要素を含めます。詳細は、39.10項「UDDIレジストリへのプロキシ・サービスのパブリッシュ」を参照してください。

ヒント:

TransportProviderConfigurationのスキーマは、OSB_ORACLE_HOME/lib/sb-schemas.jarにあるTransportCommon.xsdに定義されています。詳細は、スキーマ・ファイルを参照してください。

39.3.6 6. トランスポート・プロバイダのユーザー・インタフェースの実装

Oracle Service Bus管理コンソールを使用してビジネス・サービスまたはプロキシ・サービスを追加する場合、サービス作成ウィザードでトランスポート・プロバイダを選択します。ウィザードには、Oracle Service Busで用意されているトランスポート・プロバイダ、およびトランスポートSDKで開発されたカスタム・トランスポート・プロバイダが表示されます。

この項では、カスタム・トランスポート・プロバイダをOracle Service Bus管理コンソールのユーザー・インタフェースにバインドする、トランスポートSDK APIコンポーネントについて説明します。プロバイダをユーザー・インタフェースに接続するには、これらのAPIを実装する必要があります。

ヒント:

ここでは、サービス作成ウィザードに慣れていることを前提としています。詳細な例は、42.5項「ソケット・トランスポートの構成のサンプル」を参照してください。

カスタム・トランスポートのユーザー・インタフェースの作成

1. 新しいサービスを作成し、サービス作成ウィザードで「サービス・タイプ」を選択したら、そのサービスの種類に対して適切なトランスポート・プロバイダを選択する必要があります。選択内容を検証するために、ウィザードによりTransportUIBindingインタフェースの次のメソッドが呼び出されます。

public boolean isServiceTypeSupported(BindingTypeInfo binding)

このメソッドにより、トランスポート・プロバイダが、選択したサービスの種類に適しているかどうかが判定されます。

2. 有効なトランスポート・プロバイダを選択したら、エンドポイントURIを入力します。このURIを検証するために、ウィザードによりTransportUIBindingインタフェースの次のメソッドが呼び出されます。

public TransportUIError[] validateMainForm(TransportEditField[] fields)

3. 次に、トランスポート固有の構成のページがウィザードに表示されます。このページを表示するために、ウィザードによりTransportUIBindingインタフェースの次のメソッドが呼び出されます。

public TransportEditField[] getEditPage(EndPointConfiguration config, BindingTypeInfo binding) throws TransportException

トランスポートSDKは、構成ページにフィールドを表示する、TransportUIObjectsのセットを提供します。たとえば、テキスト・ボックス、チェック・ボックス、およびその他のタイプのUI要素を追加できます。これらを作成するには、TransportUIFactoryを使用します。作成したら、同じファクトリを使用して追加のプロパティを指定して、サービス作成ウィザードで表示可能なTransportEditFieldオブジェクトを取得します。

ヒント:

イベントを大部分のUIフィールドに関連付けることができます。イベントは、TransportUIBindingクラスのコールバック・メカニズムのように動作するため、構成ページをリフレッシュ、検証、および更新することができます。イベントがトリガーされると、ウィザードにより次のメソッドが呼び出されます。

updateEditPage(TransportEditField[] fields, String name) throws TransportException

4. トランスポートの構成が完了すると、ウィザードにより次の検証メソッドが呼び出されます。

TransportUIError[] validateProviderSpecificForm(TransportEditField[] fields)

5. サービスを保存すると、トランスポート・マネージャによりTransportProviderクラスの次のメソッドが呼び出されます。

void validateEndPointConfiguration(TransportValidationContext context)

エラーが報告されない場合は、新しいエンドポイントが作成されます。次に、トランスポート・マネージャにより次のメソッドが呼び出されます。

TransportEndPoint createEndPoint(EndPointOperations.Create context) throws TransportException

このメソッドが正常に返されると、新しいサービスがOracle Service Bus管理コンソールにリストされ、基底のトランスポート構成がTransportProviderのエンドポイントに関連付けられます。

注意:

エンドポイント構成は、Oracle Service Busセッションに格納されます。サーバーを再起動するときに、トランスポート・プロバイダで保持したり復元したりする必要はありません。

6. セッションがアクティブになったら、エンドポイントをデプロイして、リクエストの処理を開始する必要があります。エンドポイントのデプロイおよびリクエストの処理の詳細は、39.11項「TransportWLSArtifactDeployerの実装が適している場合」および43.4項「クラスタへのデプロイ」を参照してください。

ヒント:

サンプル・ソケット・トランスポート・プロバイダの場合、これらのインタフェースの実装はsample-transport/srcディレクトリにあります。

39.3.7 7. 実行時インタフェースの実装

新しいカスタム・トランスポート・プロバイダでは、次の実行時インタフェースを実装している必要があります。トランスポートSDKインタフェースのサマリー、および関連するクラスは、第41章「トランスポートSDKのインタフェースおよびクラス」を参照してください。インタフェースとクラスの詳細は、Oracle Fusion Middleware Oracle Service Bus Java APIリファレンスを参照してください。

ヒント:

サンプル・ソケット・トランスポート・プロバイダの場合、これらのインタフェースの実装はsample-transport/srcディレクトリにあります。

次の実行時インタフェースを実装します。

- TransportProvider

- TransportWLSArtifactDeployer

注意:

エンドポイント作成時にOracle WebLogic Serverの変更リストに組み込まれるOracle WebLogic Server関連のアーティファクト(EAR/WAR/JARファイルなど)をトランスポート・プロバイダがデプロイする必要がある場合のみ、TransportWLSArtifactDeployerインタフェースを実装してください。詳細は、39.11項「TransportWLSArtifactDeployerの実装が適している場合」を参照してください。

- TransportEndPoint

- InboundTransportMessageContext

- OutboundTransportMessageContext

- Transformer

注意:

トランスポート・プロバイダで、非標準のペイロード・バインディング(ストリーム、DOM、SAXまたはXMLBean以外)を使用する必要がある場合のみ、Transformerインタフェースを実装してください。詳細は、39.6項「メッセージの変換」を参照してください。

39.3.8 8. トランスポート・プロバイダのデプロイ

デプロイメントの詳細は、第43章「トランスポート・プロバイダのデプロイ」を参照してください。

39.4 開発に関する重要事項

この項では、カスタム・トランスポート・プロバイダの開発時に経験することがある、いくつかの内容について説明します。次のような項があります。

- 39.5項「メッセージの処理」

- 39.6項「メッセージの変換」

- 39.7項「TransportOptionsの操作」

- 39.8項「エラー処理」

- 39.9項「カスタム環境の値タイプの定義」

- 39.10項「UDDIレジストリへのプロキシ・サービスのパブリッシュ」

- 39.11項「TransportWLSArtifactDeployerの実装が適している場合」

- 39.12項「カスタム・トランスポートのヘルプの作成」

39.5 メッセージの処理

この項では、トランスポート・プロバイダでのメッセージ処理について説明します。内容は次のとおりです。

- 39.5.1項「概要」

- 39.5.2項「メッセージ・データの送受信」

- 39.5.3項「リクエスト/レスポンスのメタデータの処理」

- 39.5.4項「文字セット・エンコーディング」

- 39.5.5項「同じ場所に配置された呼出し」

- 39.5.6項「Oracle Service Busランタイムへのアウトバウンド・レスポンスの返信」

39.5.1 概要

トランスポートSDKは、メッセージ・ペイロードを柔軟に表現できる点に特徴があります。ペイロードを処理するすべてのトランスポートSDK APIが、Sourceインタフェースを使用してメッセージ・コンテンツを表示します。

トランスポートSDKに用意されているSource派生のメッセージ・タイプには、次のものがあります。

- StreamSource

- ByteArraySource

- StringSource

- XmlObjectSource

- DOMSource

- MFLSource

- SAAJSource

- MimeSource

注意:

StreamSourceは、1度しか使用できないソースです。つまり、マーカー・インタフェースSingleUseSourceを実装しています。他のSourceの場合は、ソースから入力ストリームを何度でも取得できます。Sourceオブジェクトでは、毎回、入力ストリームを最初から取得します。SingleUseSourceの場合は、入力ストリームは1度しか取得できません。入力は、1度使用すると削除されます(ネットワーク・ソケットからのストリームなど)。ただし、Oracle Service Busでは、SingleUseSourceからの入力をバッファに入れ、基本的には、そのデータのすべてのコピーを保持します。

転送プロバイダにSourceクラスを実装する場合、入力ストリームを最初から再取得できるかどうかを判断する必要があります。入力ストリームが、その性質上1度しか使用できないものである場合は、Sourceクラスでマーカー・インタフェースSingleUseStreamを実装してください。

トランスポートSDKには、Sourceオブジェクト間で変換するための、一連のトランスフォーマが用意されています。一連の標準表現との変換をサポートするものであれば、必要に応じて、新しいトランスフォーマを実装できます。詳細は、39.6項「メッセージの変換」を参照してください。また、38.8項「メッセージ・コンテンツの設計」も参照してください。

39.5.2 メッセージ・データの送受信

インバウンド・エンドポイントを実装して、インバウンド・メッセージをOracle Service Busランタイムに配信する場合、TransportManager.receiveMessage()を呼び出す必要があります。トランスポート・プロバイダは、ストリーム、DOM、SAXなどの標準のSource派生オブジェクトやカスタム・オブジェクトのいずれかで、着信メッセージ・ペイロードを自由に公開します。

Oracle Service Busでは、リクエストを送信したクライアントに対してレスポンス・メッセージを返信する必要がある場合、InboundTransportMessageContextでメソッドsetResponseMetaData()、setResponsePayload()、およびclose()を呼び出して、レスポンスの返信準備ができていることを示します。Oracle Service Busランタイムがインバウンド・トランスポート・メッセージ・コンテキストclose()メソッドを呼び出す場合、これは、インバウンド・リクエスト・メッセージを受信したスレッドとは異なるスレッドから行われます。トランザクションのセマンティクスに影響する可能性があるため、トランスポート・プロバイダでは、このことを認識している必要があります。また、close()メソッドが呼び出されるまで、トランスポート・プロバイダは、レスポンス・ペイロードおよびメタデータへのアクセスを試行できません。

39.5.3 リクエスト/レスポンスのメタデータの処理

各トランスポート・プロバイダでは、メタデータおよびヘッダーをPOJO (Plain Old Java Object)に格納し、パイプラインに渡す必要があります。Oracle Service BusでXMLBeanが必要となる場合もあります。このような場合は、APIを使用して、POJOからXMLBeanへの変換を実装する必要があります。

POJOからXMLに変換するために、実装する必要があるメソッドを次に示します。

RequestHeaders.toXML()

RequestMetaData<T>.toXML()

ResponseHeaders.toXML()

ResponseMetaData<T>.toXML()

逆方向(XMLからPOJO)の場合は、次のメソッドを実装する必要があります。

TransportEndPoint.createRequestMetaData(RequestMetaDataXML)

InboundTransportMessageContext.createResponseMetaData(ResponseMetaDataXML)

39.5.4 文字セット・エンコーディング

各トランスポート・プロバイダは、Oracle Service Busに対して、着信メッセージ・ペイロードの文字セット・エンコーディングを指定します。送信メッセージ(アウトバウンド・リクエストとインバウンド・レスポンス)の場合、Oracle Service Busに対して、送信ペイロードに使用する文字セット・エンコーディングを指定します。文字セット・エンコーディングは、リクエストとレスポンスのメタデータに指定されます。

ほとんどの場合、トランスポートがメタデータに挿入する文字コード・エンコーディングは、サービス構成で静的に指定されているエンコードです。数少ない例外の1つがHTTPトランスポートです。HTTPトランスポートでは、charsetパラメータがあるかどうかContent-Typeを検査し、サービスに構成されているすべてのエンコーディングをオーバーライドします。この処理は、HTTP仕様に準拠する上で必要です。他の転送プロトコルでも、同様な問題を処理する必要がある場合があります。

ヒント:

通常、サービスのエンコーディングは固定です。SHIFT_JISに指定されているプロキシに対して、UTF-16でエンコードされたメッセージを送信すると、通常、エラーと見なされます。トランスポート・プロバイダは、単にエンコーディングを確認する目的で、メッセージを検査する必要はありません。

送信メッセージの場合、トランスポート・プロバイダがOracle Service Busに対してアウトバウンド・リクエストに必要なエンコーディングを指定し、Oracle Service Busが必要に応じて変換を実行します。

発信メッセージの場合、トランスポートは常にこのエンコーディングに基づいている必要があります。また、このエンコーディングは、サービス構成に指定されているエンコーディングと同じであるとはかぎりません。不一致がある場合、転送では不一致を許可できますが、転送以外の部分がエラーとみなして例外をスローする可能性があります。また、転送には、エンコーディング要素を空白のままにする、追加オプションがあります。これにより、パイプラインでは、自由にエンコーディングを指定できます(パススルーを使用する場合など)。

39.5.5 同じ場所に配置された呼出し

特定のトランスポート・プロバイダがプロキシ・サービス・エンドポイントをサポートしている場合、ルーティング手順でそのプロバイダのプロキシ・サービスにルーティングするように、リクエスト・パイプラインを構成できます。さらに、パブリッシュ・アクション、またはビジネス・サービスではなくプロキシ・サービスに対してメッセージを送信するサービス・コールアウト・アクションが発生する場合があります。この使用例は、同じ場所に配置された呼出しと呼ばれます。

トランスポート・プロバイダは、同じ場所に配置された呼出しを認識し、それに応じて呼出しを処理する必要があります。プロキシ・サービス・エンドポイントの実装の性質によって異なりますが、トランスポート・プロバイダは呼出しの最適化を選択できます。その場合、呼出しは、トランスポート通信スタック全体およびすべてのインバウンド認可/認証を経由せずに、直ちにTransportManager.receiveMessage()を実質的に呼び出す直接呼出しになります。

ヒント:

Oracle Service Busは、この最適化をHTTP、ファイル、電子メール、およびFTPトランスポート・プロバイダで実装しています。JMSプロバイダでは、送信操作と受信操作のトランザクション・セマンティクスを分離する必要があるため、この最適化は使用されません。

カスタム・トランスポート・プロバイダでこの最適化を使用する場合は、CoLocatedTransportMessageContextクラスを拡張して、TransportProvider.sendMessageAsync()が呼び出されたときにsend()メソッドを呼び出す必要があります。

39.5.6 Oracle Service Busランタイムへのアウトバウンド・レスポンスの返信

Oracle Service Busランタイムがアウトバウンド・エンドポイントにメッセージを送信し、レスポンス・メッセージが返される場合、トランスポート・プロバイダは、このレスポンスを非同期で返す必要があります。TransportSendListener.onReceiveResponse()メソッドまたはTransportSendListener.onError()メソッドは、TransportProvider.sendMessageAsync()が呼び出されたスレッドとは異なるスレッドから呼び出される必要があるということです。

トランスポート・プロバイダで、非同期レスポンス・オプションの使用時に、JMSリクエストやHTTPリクエストへのレスポンスなど、レスポンスを非同期で取得する組込みのメカニズムがある場合、これは自然に行われます。ただし、トランスポート・プロバイダで、レスポンスを非同期で取得する組込みのメカニズムがない場合は、ブロック方式でアウトバウンド・リクエストを実行し、TransportManagerHelper.schedule()メソッドを使用して、新しいワーカー・スレッドをスケジュールできます。この場合、レスポンスはTransportSendListenerにポストされます。

39.6 メッセージの変換

Oracle Service Busで、リクエスト・ペイロードをアウトバウンド・メッセージに設定するか、またはレスポンス・ペイロードをインバウンド・メッセージに設定する必要がある場合、Sourceインタフェースから派生したオブジェクトを介して設定を行うようにトランスポート・プロバイダに依頼します。トランスポート・プロバイダでは、基底のトランスポート・レイヤーで必要な表現を決定し、Transformer.transform()メソッドを使用して、Sourceオブジェクトを目的のソースに変換する必要があります。

ヒント:

メッセージ変換の詳細は、38.8項「メッセージ・コンテンツの設計」を参照してください。組込み変換のリストは、38.8.4項「組込みのトランスフォーメーション」および41.4項「SourceおよびTransformerクラスとインタフェース」を参照してください。

カスタム・トランスポート・プロバイダでは、新しい種類のトランスフォーメーションをサポートできます。アウトバウンド・メッセージを送信するために、トランスポート・プロバイダがDOMオブジェクトを使用する必要があるとします。setRequestPayload(Source src)で呼び出された場合、トランスポート・プロバイダは、次のメソッドを呼び出す必要があります。

TransportManagerHelper.getTransportManager().getTransformer().
transform(src, DOMSource.class, transformOptions)

メソッドの戻り値はDOMSourceで、DOMノードを取得する際に使用されます。

注意:

トランスポート・プロバイダでストリームが必要な場合は、簡単な方法を使用できます。各Sourceオブジェクトでは、ストリームへのトランスフォーメーションをネイティブにサポートしています。

新しいトランスフォーメーションをカスタム・トランスポート・プロバイダに追加できます。たとえば、XYZSourceと呼ばれる、新しい種類のSource派生クラスを追加するとします。パフォーマンス上の理由から、トランスポート・プロバイダではXYZSourceから2つの標準SourceオブジェクトXmlObjectSourceおよびStreamSourceのいずれかへの変換を提供することをお薦めします。このような変換を行わない場合は、XYZSourceのStreamSource表現に基づいた汎用トランスフォーマが使用されます。もちろん、XYZSourceが内部構造を持たない単純なバイト・ベースのSourceである場合は、通常は、汎用トランスフォーマで十分です。TransportManagerに登録されているカスタム・トランスフォーマは、スレッド・セーフかつステートレスであることが前提です。

添付ファイルをサポートする場合、トランスポート・プロバイダには次の3つのオプションがあります。

- TransportMessageContextが返すSourceは、MessageContextSourceのインスタンスである必要があります。このオプションには、MessageContextSourceでは、コンテンツがすでにコア・メッセージSourceと添付ファイルSourceに区分されている必要があるという制約があります。

- SourceはMimeSourceのインスタンスで、Headersオブジェクトにはマルチ・パートContent-Typeヘッダーが含まれています。

- Content-Typeは、固有の値multipart/relatedを持つ、トランスポート・プロバイダに事前定義されたヘッダーです。HTTPトランスポートと電子メール・トランスポートはいずれも、この3つ目のオプションに基づいて添付ファイルをサポートします。

39.7 TransportOptionsの操作

TransportOptionsオブジェクトは、メッセージを送受信する際のオプションを指定するために使用されます。TransportOptionsオブジェクトは、インバウンド・メッセージの場合、トランスポート・プロバイダからトランスポート・マネージャに渡されます。アウトバウンド・メッセージの場合は、TransportOptionsオブジェクトは、Oracle Service Busランタイムからトランスポート・マネージャに渡され、最後にトランスポート・プロバイダに渡されます。

この項の内容は次のとおりです。

- 39.7.1項「インバウンド処理」

- 39.7.2項「アウトバウンド処理」

- 39.7.3項「リクエスト・モード」

39.7.1 インバウンド処理

トランスポート・プロバイダは、TransportManager.receiveMessage()に次のパラメータを提供します。

- QOS - exactly-onceまたはbest-effortのサービス品質を指定します。exactly-onceのサービス品質は、着信メッセージがトランザクション対応の場合に指定されます。

- エラー発生時にスロー - このフラグを設定すると、Oracle Service Busのパイプラインの処理中にエラーが発生した場合に、メソッドTransportManager.receiveMessage()の呼ばれた側に対して、例外がスローされます。例外スローのオプションには、インバウンド・メッセージに対して例外を返したり、エラーからレスポンス・メッセージを生成して、そのレスポンス・メッセージでインバウンド・メッセージに通知するものがあります。通常、QOSがexactly-once(トランザクション対応のメッセージ)の場合は、「エラー発生時にスロー」をtrueに設定します。
たとえば、JMS/XAではこのフラグをtrueに設定し、同じリクエスト・スレッドで例外をスローするため、例外をロールバックするようにマークできます。HTTPでは再試行のメカニズムがないため、このフラグをfalseに設定します。エラーがステータス・コードに変換され、レスポンス・メッセージが返されます。

- トランスポート固有の不透明なデータ - 不透明なデータは、トランスポート・プロバイダによって設定された任意のデータで、パイプラインを介してアウトバウンド呼出しに渡されます。この方法を使用すると、インバウンドとアウトバウンドで同じトランスポートを使用する場合に、パフォーマンスを最適化できます。不透明なデータは、パイプラインを介して、インバウンド・トランスポートからアウトバウンド・トランスポートに直接渡されます。たとえば、HTTP/Sトランスポート・プロバイダでは、IDのパススルー伝播を効率的にサポートするために、ユーザー名とパスワードをインバウンドからアウトバウンドに直接渡すことができます。

39.7.2 アウトバウンド処理

アウトバウンド処理の場合、Oracle Service Busランタイムは、トランスポート・マネージャに次のパラメータを指定します。トランスポート・マネージャは、これらのパラメータのいくつかを内部的に使用し、TransportProvider.sendMessageAsync()に伝播します。パラメータには次のものが含まれます。

- QOS - exactly-onceのサービス品質を実現可能かどうかを指定します。たとえば、HTTPでは、サービス品質をexactly-onceに設定している場合、HTTP呼出しはブロックされています。best-effortに設定している場合、HTTP呼出しはブロックされません。

- モード - 一方向または双方向(リクエスト/レスポンス)を指定します。38.2.3項「トランスポート・プロバイダのモード」も参照してください。

- URI、再試行間隔、回数 - トランスポート・プロバイダは、URIを使用してアウトバウンド・トランスポート接続を初期化します。たとえば、HTTPトランスポート・プロバイダは、新しいHttpURLConnectionをインストールする際にURIを使用します。トランスポート・プロバイダでは、再試行間隔および回数を使用する必要はありません。

- OperationName - トランスポート・プロバイダは、使用されているアウトバウンドWebサービスを認識する必要がある場合にOperationNameを使用します。トランスポート・マネージャは、このパラメータを使用してモニター統計を追跡します。

- トランスポート固有の不透明なデータ - トランスポート固有の不透明なデータの例としては、HTTP/Sの認可ヘッダーの値があります。

39.7.3 リクエスト・モード

リクエスト・モードは、REQUEST_ONLY(「一方向」とも呼ばれる)およびREQUEST_RESPONSEの2つの値を持つ列挙値として定義されます。これらのモードは、リクエストおよびレスポンスについて次のように解釈されます。

- アウトバウンド・リクエストでは、パイプラインがTransportOptionsを介してモードを示し、トランスポート・プロバイダはそのモードを使用する必要があります。

- インバウンド・リクエストでは、パイプラインがモードを認識し、REQUEST_ONLYモードを算出した場合は、インバウンド・リクエストを閉じてレスポンスを送信しません。

- パイプラインがレスポンスを送信する場合は、レスポンスが空のときでもレスポンスが発生します。

- 本質的に一方向のトランスポートでは、トランスポートでレスポンス・メタデータを指定する必要はありません。

39.8 エラー処理

実行時例外がトランザクション対応モデルに与える影響については、3つの異なるケースがあります。これらのケースには、次のようなものがあります。

- 39.8.1項「ケース1」: ビジネス・サービスのアウトバウンド呼出しの前に、リクエスト・パイプラインで例外が発生します。

- 39.8.2項「ケース2」: ビジネス・サービスの呼出し中に、例外が発生します。

- 39.8.3項「ケース3」: ビジネス・サービスの呼出しの後に、レスポンス・パイプラインで例外が発生します。

- 39.8.4項「アプリケーション・エラーの捕捉」

- 39.8.5項「接続エラーの捕捉」

39.8.1 ケース1

図39-2に示すように、ビジネス・サービスのアウトバウンド呼出しの前に、例外がリクエスト・パイプラインで発生します。たとえば、リクエスト・メッセージのコンテンツに対して特定のXQueryを実行すると、例外が生成されます。

リクエスト・パイプラインにユーザー構成エラー・ハンドラを構成している場合、ユーザー構成に従ってエラーが処理されます。それ以外の場合は、引数としてreceiveMessage()呼出しに渡されるトランスポート・オプションに従って、プロキシ・サービスがTransportManager.receiveMessage()の呼出し時に例外を捕捉するか、レスポンス・メタデータを介してエラーのInboundTransportMessageContext.close()メソッドで通知されます。プロキシ・サービスが、例外をスローする必要があることを示している場合は、try/catch句でreceiveMessage()を囲み、トランザクションをロールバックするようにマークします。

図39-2 エラーの発生例1

39.8.2 ケース2

図39-3に示すように、ビジネス・サービスの呼出し中に、例外が発生します。アウトバウンド・トランスポート・プロバイダでは、次の処理のいずれかが行われます。

- TransportProvider.sendMessageAsync()から例外をスローします。たとえば、外部サービスへのソケット接続を確立している最中にエラーが発生した場合、アウトバウンド・プロバイダは例外をスローします。このような状況は、誤ったURLや接続障害などのために、ビジネス・サービスを呼び出すことができない場合に発生します。この場合、トランスポート・プロバイダが例外を生成する必要があります。

- TransportSendListener.onError()を介して、リスナーに通知します。たとえば、ビジネス・サービスを呼び出したときに、呼出しがエラーになった場合(SOAPフォルトなど)、トランスポート・プロバイダは例外を生成するかわりにTransportSendListener.onError()を呼び出す必要があります。

最初の例では、39.8.1項「ケース1」で説明したものと同じ例外処理が行われます。2つ目の例では、レスポンス・パイプラインにエラー・ハンドラを構成している場合、ユーザー構成に従ってエラーが処理されます。それ以外の場合は、InboundTransportMessageContext.close()のレスポンス・メタデータを介して、例外がプロキシ・サービス・エンドポイントに逆に伝播されます。

図39-3 エラーの発生例2

39.8.3 ケース3

図39-4に示すように、ビジネス・サービスを呼び出した後、レスポンス・パイプラインで例外が発生します。レスポンス・パイプラインにユーザー定義のエラー・ハンドラがない場合、適切なレスポンス・メタデータを持つInboundTransportMessageContext.close()メソッドを使用して、エラーがプロキシ・サービス・エンドポイントに通知されます。インバウンド・トランスポート・エンドポイントが同期トランザクション・エンドポイントの場合、リクエストを受信したときにアクティブであったトランザクションがまだなおアクティブで、ロールバックできることが保証されます。インバウンド・エンドポイントがトランザクション対応でも同期型でもない場合、ロールバックするインバウンド・トランザクション・コンテキストがないため、他のアクションを実行する必要があります。

図39-4 エラーの発生例3

39.8.4 アプリケーション・エラーの捕捉

ビジネス・サービスが外部サービスへのアクセスを試行した時に、外部サービス・アプリケーションにSOAPフォルトなどのエラーが発生する場合、アプリケーションが修正されるまで、サービスによる後続の再試行によってエラーが発生します。

Oracle Service Busによって、アプリケーション・エラーの識別が可能になり、トランスポートを使用するときにアプリケーション・エラーの再試行を回避するオプションが提供されます。

この項では、トランスポート内のアプリケーション・エラーを捕捉して、アプリケーション・エラーの再試行を回避できるようにトランスポートを構成する方法について説明します。

39.8.4.1 アプリケーション・エラーの識別

トランスポート・プロバイダのコードでは、アプリケーション・エラーが発生した条件を識別する必要があります。

たとえば、Oracle Service Bus HTTPトランスポートにおいて、アプリケーション・エラーとは、HTTPレスポンスに500ステータス・コードがあり、空でないペイロードがあり、サービス・タイプと一致するコンテンツ・タイプ(SOAP用XMLなど)を持つエラーです。

エラーが定義されたアプリケーション・エラー条件を満たしている場合、次のメソッドの1つを用いて、「TRANSPORT_ERROR_APPLICATION」タイプを返します。

- リクエストでエラーが発生する - TransportProvider.sendMessageAsync()においてTRANSPORT_ERROR_APPLICATIONエラー・コードでTransportExceptionをスローします。

- レスポンスでエラーが発生する - TRANSPORT_ERROR_APPLICATIONエラー・コードを使用して TransportSendListener.onError() スケジュールします。

トランスポートSDKは、発生したアプリケーション・エラーを識別して、それに応じて処理することができます。

トランスポートSDKは、アプリケーション・エラーをパイプラインの$fault変数に送信することもできます。

39.8.4.2 アプリケーション・エラーの再試行の構成

<Transport>Config.xmlファイルでは、 /osb_10.3/lib/sb-schemas.jarのTransportCommon.xsdスキーマに準拠して<ProviderConfiguration>要素の子として次の要素を入力します。

<declare-application-errors>true</declare-application-errors>

ユーザーがトランスポートを選択する場合、このエントリはビジネス・サービスのメインの「トランスポート構成」ページの「アプリケーション・エラーの再試行」オプションを提供します。この要素を入力しないと、デフォルト値はfalseで、アプリケーション・エラーを捕捉できず、アプリケーション・エラーの再試行オプションが提供されません。

39.8.5 接続エラーの捕捉

Oracle Service Busはトランスポートにある接続エラーを識別することができます。これにより、アクセスできないエンドポイントURIを自動オフラインにするように、トランスポートSDKをトリガーします。たとえば、Oracle Service Busが管理対象サーバーで実行されているクラスタで、サービス・リクエストに対して接続エラーが発生した管理対象サーバーは、自動的にエンドポイントURIをオフラインとしてマークすることができます。

次の方法でエンドポイントURIを再有効化することができます。

- ビジネス・サービスを構成すると、接続エラー後に再試行の頻度と回数を決定するために「再試行回数」と「再試行の反復間隔」を設定することができます。再試行により自動的にエンドポイントURIが再有効化された後の、サービスへの正常な接続。
「再試行の反復間隔」をゼロ(0)にすると、エンドポイントURIは無期限でオフラインになるため、手動で再有効化する必要があります。

- ビジネス・サービスのための「操作設定」ページで、Oracle Service Bus管理コンソールのオフラインになっているエンドポイントURIを手動で再有効化することができます。

自動化接続エラーの機能は次の状況に対して適用されません。

- サービス・パイプラインはエンドポイントURIを動的に$outbound/ctx:transport/ctx:uriに設定すると、トランスポートSDKは、エンドポイントURIが サービス構成に設定されていないので、URIをオフラインにすることはできません。

- トランスポートSDKは接続ステータスを保持しません。サーバーを再起動すると、すべてのエンドポイントURIはオンラインと見なされます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のビジネス・サービスのエンドポイントURIの管理に関する項を参照してください。

39.8.5.1 接続エラーの識別

この項では、トランスポートにおける接続エラーを識別する方法について説明します。エラーがスローされた後、接続エラーは、自動で影響を受けるエンドポイントURIをオフラインにするようにトランスポートSDKを設定します。

トランスポート・プロバイダのコードでは、接続エラーが発生した条件を識別する必要があります。

たとえば、Oracle Service Bus HTTPトランスポートにおいて、接続エラーとは、エンドポイントURIで接続しようとするとき、HTTPレスポンスに404ステータス・コードがあり、またはIOExceptionが発生するかを識別します。

例外が定義された接続エラー条件を満たしている場合、次のメソッドの1つを用いて、「TRANSPORT_ERROR_CONNECTION」タイプを返します。

- リクエストでエラーが発生する - TransportProvider.sendMessageAsync()においてTRANSPORT_ERROR_CONNECTIONエラー・コードでTransportExceptionをスローします。

- レスポンスでエラーが発生する - TRANSPORT_ERROR_CONNECTIONエラー・コードを使用して TransportSendListener.onError() をスケジュールします。

これにより、トランスポートSDKは、接続エラーが発生した時にそのエラーを識別し、それに応じて処理できるようになります。

また、トランスポートSDKは、接続エラーをパイプラインの$fault変数に送信し、それをレスポンスに追加します。

39.9 カスタム環境の値タイプの定義

この項では、トランスポートの実装に使用するカスタム環境の値タイプを定義する方法について説明します。TransportProvider.getEnvValues()メソッドを使用してエンドポイントに対する環境値を返す際に、これらのカスタム・タイプの環境値を宣言できます。

トランスポートを使用した場合、構成をインポートした後、値をカスタマイズするか、検索して置き換えるか、保存するためにOracle Service Busで使用される標準な環境値と同じようにカスタム環境の値タイプを使用できます。たとえば、トランスポート構成にあるサービス・アカウントまたはJMSキューにリファレンスを定義して保持することができます。

環境値のタイプは環境、操作、およびセキュリティの3つのカテゴリに分けられます。

カスタム変数は<Transport>Config.xmlファイルに追加します。XML構造を決定するスキーマはTransportCommon.xsdで、/osb_10.3/lib/sb-schemas.jarにあります。

次に示すのは、JMSトランスポートのJmsConfig.xmlにあるカスタム・セキュリティ変数の例です。

<env-value-type>
<name>JMS Service Accounts</name>
<localized-display-name>
<localizer-class>com.bea.wli.sb.transports.messages.
TransportsTextLocalizer</localizer-class>
<message-id>JMS_SERVICE_ACCOUNTS</message-id>
</localized-display-name>
<localized-description>
<localizer-class>com.bea.wli.sb.transports.messages.
TransportsTextLocalizer</localizer-class>
<message-id>JMS_SERVICE_ACCOUNTS</message-id>
</localized-description>
<simple-value>true</simple-value>
<category>security</category>
</env-value-type>

カスタム環境の値タイプに関する主要な要素の説明は、次のとおりです。

- name -トランスポートSDKで使用する変数名です。

- display-name - Oracle Service Busユーザー・インタフェースに表示する変数名です。次に、ローカライゼーションの代替手段を示します。

- localized-display-name - display-nameの代替のローカライズされたバージョン。

- localizer-class -ローカライズされたdisplay-nameを含むローカライゼーション・プロパティのテキスト・ファイル。.properties拡張子は必須ではありません。

- message-id -表示名の値を提供するローカライゼーション・プロパティ・ファイルにあるプロパティ。

- description -環境値タイプの説明。ローカライゼーションでは、display-nameで説明されているlocalizer-classとmessage-idの子要素のかわりにlocalized-description要素を使用します。

- simple-value - 環境値タイプが「環境」カテゴリである場合、simple-valueはOracle Service Busの検索と置換の機能を使用してこのタイプを検索できるかを決定します(trueまたはfalseの値)。

- category - 環境値のカテゴリ(「環境」、「セキュリティ」、または「操作」)。カテゴリが「セキュリティ」または「操作」である場合、構成をインポートするときに環境値のタイプを保持するかどうかを決定できます。カテゴリが「環境」である場合、環境値のタイプを検索および置換できます。

39.10 UDDIレジストリへのプロキシ・サービスのパブリッシュ

UDDI (Universal Description, Discovery, and Integration)は、インターネット上のWebサービスを記述および検索するための標準メカニズムです。カスタム・トランスポート・プロバイダに基づいて、プロキシ・サービスをUDDIレジストリにパブリッシュできます。これにより、ビジネス・サービスをホストするサービスとして、プロキシ・サービスを異なるドメインのOracle Service Busサーバーにインポートできます。

プロキシ・サービスをパブリッシュするには、トランスポート・プロバイダは、TransportProviderConfiguration XMLスキーマ定義の「UDDI」セクションで、トランスポートのタイプを表すtModelを定義する必要があります(スキーマで生成されるインタフェースの詳細は、41.2項「スキーマで生成されるインタフェース」を参照してください)。

このtModelには、CategoryBagおよびkeyedReferenceが含まれている必要があります。また、keyedReferenceでは、tModelKeyがUDDIタイプのカテゴリ・システムに設定され、keyValueが「transport」になっている必要があります。このtModelでは、UDDI V3 tModelキーのみ指定する必要があります。

UDDIがこのトランスポートのタイプにtModelを定義している場合は、定義をコピーして、UDDIセクションに貼り付けてください。

例39-6に、このようなtModelの例を示します。

例39-6 tModelの例

<?xml version="1.0" encoding="UTF-8"?>
<ProviderConfiguration xmlns="http://www.bea.com/wli/sb/transports">
. . .
. . .
<UDDI>
<TModelDefinition>
<tModel tModelKey="uddi:bea.uddi.org:transport:socket">
<name>uddi-org:socket</name>
<description>Socket transport based webservice</description>
<overviewDoc>
<overviewURL useType="text">
http://www.bea.com/wli/sb/UDDIMapping#socket
</overviewURL>
</overviewDoc>
<categoryBag>
<keyedReference keyName="uddi-org:types:transport"
keyValue="transport"
tModelKey="uddi:uddi.org:categorization:types"/>
</categoryBag>
</tModel>
</TModelDefinition>
</UDDI>
</ProviderConfiguration>

UDDIがこのトランスポートのタイプにtModelを定義していない場合、Oracle Service Busは、構成されたレジストリに、ここで定義するtModelをパブリッシュできます。Oracle Service BusにUDDIレジストリを構成している場合、「tModelsをレジストリにロード」オプションを指定できます。このオプションにより、カスタム・トランスポート・プロバイダのtModelを含め、Oracle Service BusのすべてのtModelが、UDDIレジストリにパブリッシュされます。トランスポート・プロバイダをデプロイすると、UDDIレジストリの構成を更新して、tModelをパブリッシュできます。

UDDIのエクスポート中に、TransportProvider.getBusinessServicePropertiesForProxy(Ref)が呼び出され、生成されたマップがUDDIレジストリにパブリッシュされます。UDDIのインポート処理中に、情報が失われることなくビジネス・サービスの定義を正確に作成できるよう、プロバイダは、ビジネス・サービスの重要なプロパティすべてをマップ内に確実に保持します。

UDDIのインポート中に、TransportProvider.getProviderSpecificConfiguration(Map)が呼び出され、プロバイダ固有のエンドポイント構成スキーマに準拠するXmlObjectが生成されて、サービス定義に含められます。

ヒント:

OASIS (Organization for the Advancement of Structured Information Standards)では、UDDI標準を作成しています。完全な技術仕様を含め、UDDIの詳細は、http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=uddi-specを参照してください。

39.11 TransportWLSArtifactDeployerの実装が適している場合

個々のサービス登録を処理する、2セットのトランスポート・プロバイダ・インタフェースが用意されています。TransportProviderには、作成、更新、削除、中断、再開などのメソッドがあります。また、TransportWLSArtifactDeployerにも同じメソッドがあります。この節では、これら2つの実装について説明します。また、TransportWLSArtifactDeployerを実装する必要がある場合についても説明します。

TransportWLSArtifactDeployerを実装するのは、プロバイダが、Oracle Service BusドメインのOracle WebLogic Serverアーティファクトを変更する必要がある場合だけです。TransportWLSArtifactDeployerのメソッドは、管理サーバーでのみ呼び出すことができます。この場合、渡されたDomainMBean引数を使用して変更が行われ、クラスタ全体に変更が伝播されます。

TransportProviderメソッドは、ドメインのすべてのサーバー(管理サーバーおよび管理対象サーバー)で呼び出されます。管理対象サーバーでOracle Service Busドメインのアーティファクトは変更できないため、TransportProviderのメソッドを呼び出すのは、内部データ構造を更新する場合だけです。

特定のトランスポート・プロバイダがTransportWLSArtifactDeployerインタフェースを実装する場合、TransportProviderの対応するメソッドが呼び出される前に、TransportWLSArtifactDeployerのメソッドが呼び出されます。たとえば、TransportProvider.createEndPoint()が呼び出される前に、TransportWLSArtifactDeployer.onCreate()が呼び出されます。

TransportWLSArtifactDeployerの詳細は、41.3.2項「汎用インタフェースのサマリー」を参照してください。

39.12 カスタム・トランスポートのヘルプの作成

設計環境(Eclipse)および実行時環境(Oracle Service Bus管理コンソール)でカスタム・トランスポートのオンライン・ヘルプを提供することができます。ヘルプの提供は省略可能です。しかし、ヘルプを提供することで、サービスの作成者に転送の構成プロセスを説明する際に非常に役立つ場合があります。

図39-5は、開発環境および実行時環境での、カスタム・トランスポートに付属するヘルプを示しています。

図39-5 開発環境および実行時環境でのカスタム・トランスポートのヘルプ

この項の内容は次のとおりです。

- 39.12.1項「カスタム・トランスポートのヘルプの概要」

- 39.12.2項「Eclipseでのカスタム・トランスポートのヘルプの提供」

- 39.12.3項「Oracle Service Bus管理コンソールでのカスタム・トランスポートのヘルプの提供」

39.12.1 カスタム・トランスポートのヘルプの概要

ここでは、EclipseおよびOracle Service Bus管理コンソールでカスタム・トランスポートのヘルプを提供するために使用できる様々なオプションについて説明します。

注意:

EclipseとOracle Service Bus管理コンソールでは、トランスポートの構成においてユーザー・インタフェースおよび機能の点で異なる可能性があるため、両方の環境で個別のヘルプ・トピックを作成することを検討してください。

39.12.1.1 Eclipseヘルプ

Eclipseヘルプは、Eclipseヘルプ・フレームワークに基づいています。Eclipseでカスタム・トランスポートのヘルプを実装する場合、次の選択肢があります。

- 39.12.1.1.1項「状況依存ヘルプ([F1])」

- 39.12.1.1.2項「Eclipseヘルプの目次」

39.12.1.1.1 状況依存ヘルプ([F1])

Eclipseで[F1]を押すと起動する状況依存ヘルプは、ヘルプ・システム全体を表示する個別のヘルプ・ウィンドウを表示するのではなく、Eclipse内でヘルプ・トピックを表示します。図39-6は、Eclipseで状況依存ヘルプがどのように表示されるかを示しています。

図39-6 「トランスポート構成」ページで[F1]を押すとトランスポートのヘルプが表示される

すべてのネイティブなOracle Service Busトランスポートは、それぞれのトランスポート構成エディタから、状況依存ヘルプを提供します。

状況依存ヘルプの利点は、ユーザーがEclipseを離れずに、対象のヘルプ・トピックに迅速にアクセスできることです。これは、カスタム・トランスポートのヘルプで特に役立ちます。

39.12.1.1.2 Eclipseヘルプの目次

Eclipseの「Help」メニューからアクセスできる、Eclipseヘルプ・システムで、カスタム・トランスポートのヘルプ・コンテンツを提供できます。Eclipseヘルプを起動すると、個別のウィンドウがヘルプ・システム全体の目次を表示します。

図39-7は、Eclipseヘルプ・システムでのトランスポートのオンライン・ヘルプを示しています。

図39-7 Eclipseでのカスタム・トランスポートのヘルプ

図39-7に示すように、カスタム・トランスポートのパッケージ化および構成方法に応じて、ヘルプ・トピックを、ヘルプ・システムの目次の別の場所に表示させることができます。たとえば、トランスポートのヘルプをOracle Service Busヘルプ・トピックのトランスポートのセクションとマージしたり、トランスポートのヘルプをヘルプ・システムの最上位で提供したりすることができます。

39.12.1.2 Oracle Service Bus管理コンソール・ヘルプ

Oracle Service Bus管理コンソールで、実行時にトランスポート構成のヘルプを提供することもできます。Oracle Service Bus管理コンソールは、独自の統合されたヘルプ・システムを提供しますが、Oracle Service Busは、図39-8に示すように、カスタム・トランスポートのヘルプを専用の独立したブラウザ・ウィンドウで表示します。カスタム・トランスポートのヘルプは、「トランスポート構成」ページで「ヘルプ」をクリックすると表示されます。

図39-8 Oracle Service Bus管理コンソールから表示したカスタム・トランスポートのヘルプ

以降の項では、EclipseおよびOracle Service Bus管理コンソールの両方で、カスタム・トランスポートのオンライン・ヘルプを提供する方法を示します。

39.12.2 Eclipseでのカスタム・トランスポートのヘルプの提供

Eclipseで、カスタム・トランスポートをサービスの構成で使用できるようにする場合、Eclipseの状況依存ヘルプまたはEclipseヘルプ・システムのいずれか、あるいはその両方として表示されるヘルプ・コンテンツを提供することができます。ここでは、その方法を示します。

サンプル・ソケット・トランスポートおよびOracle Service Busのネイティブなトランスポートは、Eclipseヘルプのベスト・プラクティスの参照実装を提供します。ここでは、これらを例として使用します。

トランスポートのヘルプは、トランスポート用に作成するEclipseプラグインの一部です。プラグインの作成の詳細は、第40章「Eclipse用のOracle Service Busトランスポートの開発」を参照してください。

39.12.2.1 Eclipseでの状況依存ヘルプの提供

状況依存ヘルプでは、ユーザーがEclipseでトランスポートを構成しているときに、トランスポート構成に関する情報をEclipseで直接得られます。

Eclipseのサービス・エディタのトランスポート構成ページで状況依存ヘルプを指定できます。

状況依存ヘルプを提供するには、次の手順を実行する必要があります。

1. plugin.xmlで、context.xmlファイルを指し示すorg.eclipse.help.contextsの拡張を追加します。例39-7のorg.eclipse.help.contextsの例を参照してください。
このエントリは、context.xmlファイルを見つける場所をプラグインに示します。context.xmlファイルへのパスは、プラグインのルートからの相対パスです。

2. トランスポート構成のユーザー・インタフェースのコンテキストIDをヘルプ・ファイルにマップするcontext.xmlを作成します。Oracle Service Busでは、カスタム・トランスポートのコンテキストIDを自動的に提供します。39.12.2.3.3項「context.xml」を参照してください。

3. ヘルプ・トピックを作成します。39.12.2.3.4項「ヘルプ・コンテンツとリソース」を参照してください。

4. すべてのヘルプ・ファイルをパッケージ化します。39.12.2.4項「トランスポート・プラグインのヘルプのパッケージ化」を参照してください。

39.12.2.2 Eclipseヘルプ・システムでのヘルプの提供

メインのEclipseヘルプ・システムにトランスポートのヘルプを追加できます。図39-7に示すように、ヘルプ・トピックが目次に表示されます。

1. plugin.xmlで、toc.xmlファイルを指し示すorg.eclipse.help.tocの拡張を追加します。例39-7のorg.eclipse.help.contextsの例を参照してください。次のガイダンスに従って、primary属性を設定します。

- プラグインをJARファイルとしてパッケージ化する場合、または、図39-7の「Sample Transport」エントリで示されているように、トランスポートのヘルプをヘルプの目次の最上位に表示させる場合は、primary="true"を設定します。

- 図39-7のように、トランスポート・ヘルプをOracle Service Busのヘルプ・トピックとマージして表示する場合は、primary="false"と設定します。
トランスポート・ヘルプをOracle Service Busのメイン・ヘルプとマージして表示する場合は、トランスポート・プラグインを展開ディレクトリとしてパッケージ化する必要があります。

プラグインのパッケージ化の詳細は、第40章「Eclipse用のOracle Service Busトランスポートの開発」を参照してください。

2. トランスポートのヘルプの目次構造を提供するtoc.xmlファイルを作成します。39.12.2.3.2項「toc.xml」の例を参照してください。

3. ヘルプ・トピックを作成します。39.12.2.3.4項「ヘルプ・コンテンツとリソース」を参照してください。

4. すべてのヘルプ・ファイルをパッケージ化します。39.12.2.4項「トランスポート・プラグインのヘルプのパッケージ化」を参照してください。

39.12.2.3 ヘルプ実装のリファレンス

Eclipseヘルプ・フレームワークを基盤とするEclipseヘルプは、ここで説明するリソースを必要とします。

前に説明した手順と共にこのリファレンスを使用して、Eclipseでのトランスポートのヘルプの実装を行ってください。

注意:

Oracle Service Busは、OSB_ORACLE_HOME/samples/servicebus/sample-transportにあるサンプル・ソケット・トランスポートで、サンプルのヘルプ実装を提供しています。サンプル・トランスポートは、独自のカスタム・トランスポートおよびヘルプを開発する上で良い参考となる実装です。サンプルのplugin.xmlは/eclipseサブディレクトリに、ヘルプ・リソースは/helpサブディレクトリにあります。

ここでは、次のEclipseヘルプ・リソースについて説明します。

- 39.12.2.3.1項「plugin.xml」 - Eclipse(ヘルプ・システム)に追加するコンポーネントを指定する重要なファイルです。

- 39.12.2.3.2項「toc.xml」 - 図39-7に示されているように、ヘルプ・システムの目次に表示されるヘルプ・トピックの階層です。

- 39.12.2.3.3項「context.xml」 - トランスポート構成のユーザー・インタフェースの状況依存ヘルプを有効にします。

- 39.12.2.3.4項「ヘルプ・コンテンツとリソース」 - HTMLファイル、CSSファイル、イメージ、および提供する必要がある他のヘルプ・リソースです。

39.12.2.3.1 plugin.xml

plugin.xmlファイルは、トランスポートおよびトランスポートのヘルプ・ファイルをEclipse環境に追加するための鍵となるファイルです。plugin.xmlに、ヘルプの目次(toc.xml)および状況依存ヘルプ(context.xml)のエントリを追加する必要があります。

例39-7は、OSB_ORACLE_HOME/samples/servicebus/sample-transport/eclipseディレクトリにあるサンプル・ソケット・トランスポートのplugin.xmlファイルでのtoc.xmlおよびcontext.xml (contexts_socketTransport.xml)エントリを示しています。

例39-7 トランスポートのplugin.xmlのサンプル

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
...
<extension
point="org.eclipse.help.toc">
<toc file="/help/en/toc.xml" primary="true"/>
</extension>
<extension
point="org.eclipse.help.contexts">
<contexts
file="/help/en/contexts_socketTransport.xml"
plugin="Socket_Transport"/>
</extension>
</plugin>

plugin.xmlの重要な部分

- すべてのパスは、プラグインのルート・ディレクトリからの相対パスです。

- org.eclipse.help.toc拡張ポイントは、Eclipseヘルプ・システムの左側のナビゲーション領域への接続を作成します。
<toc file...>エントリは、トランスポートのヘルプ用に作成したヘルプ・トピックの階層を含むtoc.xmlファイルを参照します。

- primary="true"属性は重要です。trueに設定した場合、トランスポートの目次がEclipseヘルプ・システムの最上位に表示されます。カスタム・トランスポート・プラグインをJARファイルとしてパッケージ化する場合は、trueに設定してください。
falseに設定した場合、toc.xmlはEclipseによって既存のtoc.xml (Oracle Service Busのメイン・ヘルプ・システムなど)の階層にマージされます。詳細は、次のtoc.xmlの項を参照してください。

- org.eclipse.help.contextsのエントリにより、トランスポートのEclipseベースの状況依存([F1])ヘルプを実装できます。状況依存のヘルプ・トピックのリンクは、Eclipseの「Help」ビューの「Related Topics」領域に表示されます。

プラグインのパッケージ化の詳細は、第40章「Eclipse用のOracle Service Busトランスポートの開発」を参照してください。

39.12.2.3.2 toc.xml

toc.xmlファイルによって、カスタム・トランスポートのヘルプがEclipseヘルプ・システムの左側のナビゲーション領域にどのように表示されるかが決まります。例39-8は、Eclipseヘルプ・システムの目次の最上位レベルにトランスポートのヘルプを表示する方法を示します。

例39-8 サンプル・ソケット・トランスポートのtoc.xml (Eclipseヘルプ・システムの最上位エントリ)

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?NLS TYPE="org.eclipse.help.toc"?>
<toc label="Socket Transport Sample">
<topic label="Socket Transport Configuration Page (Business Services)"
href="help/en/tpSOCKETTransportBizService.html"/>
<topic label="Socket Transport Configuration Page (Proxy Services)"
href="help/en/tpSOCKETTransportProxyService.html"/>
<topic label="Configuring the Socket Transport Sample (Service Bus Console)"
href="help/en/example.html"/>
</toc>

トランスポートのヘルプをEclipseヘルプ・システムの目次の最上位エントリに組み込む場合は、必ずplugin.xmlのorg.eclipse.help.toc拡張ポイントでprimary="true"を設定してください。

39.12.2.3.3 context.xml

例39-9で示されているcontext.xmlファイルは、トランスポート・エディタ・ページのコンテキストIDをヘルプ・トピックにマップします。ユーザーがトランスポート構成ページで[F1]を押すと、図39-6に示すように、Eclipseが「Help」ビューにヘルプ・リンクを表示します。

例39-9 サンプル・ソケット・トランスポートのcontext.xmlサンプル(contexts_socketTransport.xml)

<?xml version="1.0" encoding="UTF-8"?>
<?NLS TYPE="org.eclipse.help.contexts"?>
<contexts>
<!-- Default Socket Transport help -->
<context id="tpSOCKETTransportBizService"
title="Socket Transport Configuration page (Business Service)">
<description>The Sample socket transport illustrates Transport SDK
concepts.</description>
<topic href="help/en/tpSOCKETTransportBizService.html"
label="Socket Transport Configuration Page (Business Services)"/>
</context>
<context id="tpSOCKETTransportProxyService"
title="Socket Transport Configuration page (Proxy Service)">
<description>The Sample socket transport illustrates Transport SDK
concepts.</description>
<topic href="help/en/tpSOCKETTransportProxyService.html"
label="Socket Transport Configuration Page (Proxy Services)"/>
</context>
</contexts>

context.xmlの重要な部分

- context id属性の値は、エディタのユーザー・インタフェースのコンテキストIDです。

- topic href属性は、ユーザーが[F1]を押したときにリンクするヘルプ・トピックをEclipseに示します。

- topic label属性は、Eclipseの「Help」ビューの「Related Topics」領域に表示されるリンク・テキストを決定します。

- description要素は、ユーザーが[F1]を押したときに表示されるリンクの上にテキストを提供します。

- トランスポートのユーザー・インタフェースのコンテキストIDは自動的に提供されます。表39-1に示されているcontext id属性のパターンを大文字と小文字を区別してそのまま使用してください。idの値が正しくない場合、トランスポートの状況依存ヘルプが機能しません。

表39-1 トランスポート構成ページのコンテキストID

ユーザー・インタフェース・コンポーネント

ID属性の値

ビジネス・サービス・エディタのトランスポート構成ページ

tp<TRANSPORT_ID>TransportBizService -例:

tpSOCKETTransportBizService

プロキシ・サービス・エディタのトランスポート構成ページ

tp<TRANSPORT_ID>TransportProxyService -例:

tpSOCKETTransportProxyService

<TRANSPORT_ID>の値は、トランスポートの文字列IDを設定するTransportProviderクラスの実装によって得られます。トランスポートIDに小文字を使用して名前を付けた場合でも、<TRANSPORT_ID>はすべて大文字である必要がある点に注意してください。

- plugin.xmlで正確なパスを指定しさえすれば、context.xmlにユニークな名前(.xml拡張子を持つ)を付け、プラグイン・ディレクトリ内の任意の場所に配置できます。

- context.xml内のすべてのパスは、プラグインのルート・ディレクトリからの相対パスです。

39.12.2.3.4 ヘルプ・コンテンツとリソース

グラフィックスを含まない1つの単純なテキスト・ページから、多数のグラフィックス、PDFファイル、埋め込みのビデオなどを含む複数のページまで、提供するヘルプ・コンテンツのタイプを非常に柔軟に決定できます。

たとえば、単一のHTMLファイルを作成し、そのファイルをtoc.xmlおよびcontext.xmlファイルから参照したり、ビジネス・サービスおよびプロキシ・サービスのトランスポート構成のフィールドについて説明するヘルプ・ファイルや、概要を示すヘルプ・ファイルも個別に作成して、toc.xmlおよびcontext.xmlから、異なる組合せで3つのヘルプ・ファイルを指し示すこともできます。

ヘルプ・トピックとリソースは、toc.xmlおよびcontext.xmlでそれらを正確に参照しさえすれば、トランスポート・プラグインの任意の場所に格納することができます。

EclipseとOracle Service Bus管理コンソールでは、トランスポートの構成においてユーザー・インタフェースおよび機能の点で異なる可能性があるため、EclipseとOracle Service Bus管理コンソールで個別のヘルプ・トピックを作成することを検討してください。

39.12.2.4 トランスポート・プラグインのヘルプのパッケージ化

トランスポート・プラグインには、次のものが含まれている必要があります。

- plugin.xmlファイル

- トランスポート・クラスおよびサポート・ファイルを含むトランスポートJAR

- toc.xml、context.xml、およびヘルプ・ファイルを含むhelpディレクトリ

トランスポート・プラグインのパッケージ化をJARとして行うか、展開ディレクトリとして行うかにかかわらず、トランスポートのヘルプとその他のリソースの関係については、次のパッケージ化構造が推奨されます。

/plugin_root

plugin.xml

transport.jar

/help

/en(ロケール)

toc.xml

context.xml

/html

<ヘルプ・ファイルとリソース>

/enディレクトリを使用して、ローカライゼーションをサポートするようにヘルプがパッケージ化される点に注意してください。ローカライゼーションを行うには、Eclipseドキュメントの説明に従って、各ロケールのプラグインを作成する必要があります。

注意:

ヘルプ・ファイルをdoc.zipファイルにパッケージ化することもできます。詳細は、『Eclipseプラットフォーム・プラグイン開発者ガイド』(http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.isv/guide/ua_help_content_files.htm)を参照してください。

39.12.2.5 関連項目

Eclipseヘルプ・フレームワークの詳細は、http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.isv/guide/ua_help.htmにあるEclipseヘルプ・システムを参照してください。

プラグインのパッケージ化の詳細は、第40章「Eclipse用のOracle Service Busトランスポートの開発」を参照してください。

39.12.3 Oracle Service Bus管理コンソールでのカスタム・トランスポートのヘルプの提供

ここでは、Oracle Service Bus管理コンソールで実行時にカスタム・トランスポートのヘルプを提供する方法を示します。Oracle Service Busは、図39-8に示されているように、カスタム・トランスポートのヘルプを、ブラウザで独立したヘルプ・ページとして表示します。

図39-9は、カスタム・トランスポートのOracle Service Bus管理コンソール・ヘルプ・フレームワークの概要を示しています。

図39-9 Oracle Service Bus管理コンソール・ヘルプ・フレームワーク

特定のOracle Service Busインタフェースを実装し、getHelpPage()メソッドを使用すると、ユーザー・インタフェースにフォーカスがある場合に、Oracle Service Bus管理コンソールでユーザーが「ヘルプ」をクリックすると、単一のHTMLページが起動します。HTMLファイルには、次の内容を含めることができます。

- テキスト、インラインCSS定義、インラインJavaScript関数

- グラフィックスおよびその他のリソースへの参照。これは、これらのリソースがWebアプリケーションまたは外部Webサイトでホストされている場合にかぎります。

ほとんどの場合、カスタム・トランスポートのすべてのヘルプにテキストおよびインライン形式を含めることができます。

ただし、グラフィックスおよびその他の外部リソースを含むすべての機能を備えたWebベースのヘルプを提供する場合は、それらのリソースがWebアプリケーションまたは外部Webサイトでホストされている必要があります。それらの外部リソースをHTMLファイルで参照するか、または、HTMLファイルから外部の場所へのリンクを提供する必要があります。たとえば、サンプル・ソケット・トランスポートのヘルプでは、最初のHTMLファイルから、カスタムWebアプリケーションで実行されているグラフィックスを含むヘルプ・トピックへのリンクを提供しています。埋め込みのJavaScript呼出しを使用して、希望する拡張されたヘルプのURLに自動的にリダイレクトするようにHTMLファイルをセット・アップすることもできます。

Oracle Service Bus管理コンソールでのカスタム・トランスポートのヘルプの作成には、次のタスクが含まれます。

- 39.12.3.1項「CustomHelpProviderインタフェースの実装」

- 39.12.3.2項「起動するHTMLファイルの作成」

- 39.12.3.3項「拡張されたヘルプを表示する簡単なWebアプリケーションの作成(オプション)」

- 39.12.3.4項「Oracle Service Bus管理コンソールのトランスポートのヘルプのパッケージ化」

39.12.3.1 CustomHelpProviderインタフェースの実装

カスタム・トランスポートの構成ユーザー・インタフェースを開発するには、TransportUIBindingインタフェースをカスタム・クラスに実装します。Oracle Service Bus管理コンソールでトランスポート構成のユーザー・インタフェースのヘルプを提供するには、CustomHelpProviderインタフェースも実装する必要があります。CustomHelpProviderには、Oracle Service Bus管理コンソールでトランスポート構成ページのヘルプを起動するために必要なgetHelpPage()メソッドが含まれます。

サンプル・ソケット・トランスポートでは、OSB_ORACLE_HOME/samples/servicebus/sample-transport/src/com/bea/alsb/transports/sockにあるSocketTransportUIBinding.javaクラスでCustomHelpProviderを実装します。

例39-10には、CustomHelpProviderの実装を示すスニペットが含まれています。

例39-10 Oracle Service Bus管理コンソールでトランスポートのヘルプを提供するためのCustomHelpProviderの実装

public class SocketTransportUIBinding
implements TransportUIBinding, CustomHelpProvider {
.
.
.
public Reader getHelpPage() {
String helpFile = "help/en/contexts_socketTransport.html";
ClassLoader clLoader = Thread.currentThread().getContextClassLoader();
InputStream is = clLoader.getResourceAsStream(helpFile);
InputStreamReader helpReader = null;
if(is!=null)
helpReader = new InputStreamReader(is);
else
SocketTransportUtil.logger
.warning(SocketTransportMessagesLogger.noHelpPageAvailableLoggable().
getMessage(uiContext.getLocale()));
return helpReader;
}
}

例39-10では、Reader getHelpPage()が、Oracle Service Bus管理コンソールがブラウザにHTMLページを送信するために使用するReaderストリームを返します。helpFileのパスは、トランスポートJAR内のルートからの相対パスです。

複数の言語でヘルプを提供する場合は、TransportUIContext.getLocale()を使用して、ローカライズされたコンテンツへの適切なパスを提供します。この場合は、/help/<ロケール>/your.htmlのロケールの値を提供します。

39.12.3.2 起動するHTMLファイルの作成

例39-10のhelp/en/contexts_socketTransport.htmlで示されているように、getHelpPage()メソッドが起動するHTMLファイルを作成します。

ヘルプの実装を簡潔に維持する場合は、テキスト、インラインCSS定義、およびインラインJavaScript関数を使用するHTMLファイルを作成してください。こうすることで、グラフィックスまたはその他の外部リソースをホストする個別のWebアプリケーションを作成する必要がなくなります。

ただし、グラフィックスやその他のリソースを含むように拡張したヘルプを作成する場合は、それらの外部リソースを次のようにHTMLファイルで参照してください。

img src="/help_socket/help/en/wwimages/addProject.gif"

または

a href="http://www.yoursite.com"

例39-11で示されているように、埋込みのJavaScript呼出しを使用して、拡張されたヘルプに自動的にリダイレクトするようにHTMLファイルをセットアップすることもできます。この例では、サンプル・ソケット・トランスポートのHTMLページから、拡張されたhelp_socket Webアプリケーションのヘルプ・コンテンツにリダイレクトしています。

例39-11 リダイレクトを提供するJavaScript関数

<script language="JavaScript" type="text/javascript">
<!-- Begin
window.location="/help_socket/help/en/example.html";
// End -->
</script>

サンプル・ソケット・トランスポートのHTMLファイルが、拡張されたヘルプへのリンクを提供しています。HTMLファイルcontexts_socketTransport.htmlは、OSB_ORACLE_HOME/samples/servicebus/sample-transport/resources/help/en/にあります。

39.12.3.3 拡張されたヘルプを表示する簡単なWebアプリケーションの作成(オプション)

トランスポートのヘルプで基本的なテキストのHTMLファイル以上のものが必要な場合は、次の様々な方法を使用して、グラフィックスやその他のリソースを含めた拡張ヘルプを提供することができます。

- 独立したHTMLファイルから既存のURLにリンクします(トランスポートに関するドキュメントを含む既存のWebサイトがある場合など)。必要な作業は、独立したHTMLファイルからURLへのリンクの提供のみです。外部サイトでホストされているグラフィックスやその他のリソースへの参照を挿入することもできます。

- 拡張されたヘルプ用のWebアプリケーションを作成して、トランスポートにバンドルし、リンクするか、HTMLファイルからグラフィックスやその他のリソースを参照します。この項では、トランスポートEARにバンドルして、拡張されたトランスポートのヘルプを表示するWebアプリケーションの作成手順について説明します。

Webアプリケーションの次のファイルを作成します。

39.12.3.3.1 META-INF/application.xml

application.xmlで、WebアプリケーションのルートURLに使用されるコンテキスト・ルートをWebアプリケーションに提供します。たとえば、例39-12は、サンプル・ソケット・トランスポートのWebアプリケーションのコンテキスト・ルートを示しています。

例39-12 サンプル・ソケット・トランスポートのWebアプリケーションのapplication.xml

<application>
<display-name>Socket Transport</display-name>
<description>Socket Transport</description>
<module>
<web>
<web-uri>webapp</web-uri>
<context-root>help_socket</context-root>
</web>
</module>
</application>

サンプル・ソケット・トランスポートのapplication.xmlファイルはOSB_ORACLE_HOME/samples/servicebus/sample-transport/META-INF/にあります。

このエントリは、ファイル・システムのディレクトリ/webappをエイリアスのWebアプリケーションのルートURLにマップします。

http://server:port/help_socket/

ヘルプ・ファイルが、/help/en/などのディレクトリにあるWebアプリケーション内にある場合、拡張されたヘルプの完全なURLは次のようになります。

http://server:port/help_socket/help/en/index.html

ただし、ヘルプへの内部リンクの場合は、単に次のようになります。

/help_socket/help/en/index.html

ここで、index.htmlは、リンク先のHTMLページです。

39.12.3.3.2 WEB-INF/web.xml

web.xmlで、Webアプリケーションの表示名および説明を入力します。これは、標準のデプロイメント記述子情報です。たとえば、例39-13は、サンプル・ソケット・トランスポートのWebアプリケーションの名前および説明を示しています。

例39-13 サンプル・ソケット・トランスポートのWebアプリケーションのweb.xml

<web-app>
<display-name>Sample Socket Transport Help WebApp</display-name>
<description>
This webapp implements the help webapp for the socket transport.
</description>
</web-app>

サンプル・ソケット・トランスポートのweb.xmlファイルはOSB_ORACLE_HOME/samples/servicebus/sample-transport/webapp/WEB-INF/にあります。

39.12.3.3.3 ヘルプ・コンテンツとリソース

拡張されたヘルプ・ファイルを作成し、Webアプリケーション・ディレクトリ内にパッケージ化します。サンプル・ソケット・トランスポートでは、ヘルプ・ファイルはOSB_ORACLE_HOME/samples/servicebus/sample-transport/resources/help/enに格納されています。

注意:

ソケット・トランスポートのヘルプ・ファイルが/webappディレクトリに格納されてないのは、helpディレクトリにEclipseプラグインとOracle Service Bus管理コンソールの両方のヘルプ・ファイルとリソースが格納されているためです。サンプル・ソケットのANTビルドが、トランスポートJAR、トランスポートEAR、およびEclipseプラグインを作成する場合は、ヘルプは別の方法でパッケージ化されます。トランスポートEARのビルドの場合、ヘルプ・ファイルは/webappディレクトリの下に移動します。

EclipseとOracle Service Bus管理コンソールでは、トランスポートの構成においてユーザー・インタフェースおよび機能の点で異なる可能性があるため、EclipseとOracle Service Bus管理コンソールで個別のヘルプ・トピックを作成することを検討してください。

39.12.3.4 Oracle Service Bus管理コンソールのトランスポートのヘルプのパッケージ化

トランスポートEARには、次のものが含まれている必要があります。

- 次を含む、APP-INF/libに格納されたトランスポートJAR

- トランスポート・クラスとサポート・ファイル

- トランスポートのヘルプのHTMLファイル。ローカライゼーションをサポートするためにhelp/en/などのディレクトリにあることが理想的です。

- (オプション)トランスポートの拡張されたヘルプを含むWebアプリケーション

40 Eclipse用のOracle Service Busトランスポートの開発

この章では、Oracle Service Bus IDEで使用するカスタム・トランスポートを開発するためのベスト・プラクティス、設計上の考慮事項、およびパッケージ化について説明します。トランスポートSDKのインタフェースは、転送プロトコルとOracle Service Busランタイムの間の橋渡しを行います。

ヒント:

この章を開始する前に、第38章「設計上の考慮事項」を確認してください。

この章の内容は次のとおりです。

- 40.1項「はじめに」

- 40.2項「サービスのランタイムとサービスの構成」

- 40.3項「Eclipseプラグインとしてのトランスポートのパッケージ化」

- 40.4項「リファレンス」

40.1 はじめに

Oracle Service Busトランスポートは、本来、Oracle Service BusサーバーにデプロイしてOracle Service Bus管理コンソールを通じて構成するように設計されています。Eclipseなどの設計環境で使用する場合、SDKと既存のトランスポートを多少変更する必要があります。

このドキュメントでは、Oracle Service Bus管理コンソールの外部のプラットフォームでOracle Service Busトランスポートのデザイン・タイムを使用できるようにする追加手順について説明します。

サンプル・ソケット・トランスポートは、Eclipseに移植されており、Eclipse統合のベスト・プラクティスとみなすことができます。サンプル・ソケットのリソースは、OSB_ORACLE_HOME/samples/servicebus/sample-transport/にあります。Javaソース・ファイルは/srcサブディレクトリにあります。サンプルにはビルド・スクリプトも含まれており、Eclipse統合とOracle Service Bus管理コンソール・デプロイメント両方のためにサンプル・ソケット・トランスポートを自動的にパッケージ化できます。サンプル・ソケット・トランスポートのビルドおよびデプロイについては、第42章「サンプル・ソケット・トランスポート・プロバイダ」を参照してください。

40.2 サービスのランタイムとサービスの構成

トランスポートを開発する場合は、ランタイム・アスペクトと構成アスペクトを区別する必要があります。ランタイム・アスペクトには、プロキシ・サービスまたはビジネス・サービスのデプロイメントおよびサービスの実行時の呼出しが含まれます。構成アスペクトには、プロキシまたはサービスの構成と検証が含まれます。

ランタイム・アスペクトは、Oracle Service Busサーバーが実行されている状況で常に実行されるため、変更する必要はありません。ただし、構成アスペクトは、設計環境に依存します。

開発者は、次の3種類のモードを考慮する必要があります。

1. オンライン・モード - カスタム・トランスポートのサービスが、実行中のOracle Service BusサーバーのOracle Service Bus管理コンソールを使用して構成されます。

2. オフライン・モード - トランスポートが、Oracle Service Busサーバーの外部で実行されている設計環境を使用して構成されます。リモート・サーバーは使用できません。

3. オフライン・モード(リモート・サーバーあり) - トランスポートが、Oracle Service Busサーバーの外部で実行されている設計環境を使用して構成されます。ただし、リモート・サーバーが利用可能であり、検証および構成の両方の目的に使用できます。

Eclipseで実行されるトランスポートは、オフライン・モードと、必要に応じて、オフライン・モード(リモート・サーバーあり)をサポートする必要があります。

この項の内容は次のとおりです。

- 40.2.1項「オフライン・メソッド」

- 40.2.2項「オフラインで作業する場合の制限」

- 40.2.3項「オフライン(リモート・サーバーあり)での作業」

- 40.2.4項「オフライン・モードでのトランスポートのブートストラップ」

- 40.2.5項「オフライン・モードでのトランスポートのパッケージ化」

- 40.3項「Eclipseプラグインとしてのトランスポートのパッケージ化」

- 40.4項「リファレンス」

40.2.1 オフライン・メソッド

オフライン・モードでトランスポートをデプロイする場合、構成フレームワークは、すべてのリソースの構成用に1つのセッションを作成します。このセッションがアクティブ化されることはありません。プロキシ・サービスまたはビジネス・サービスは、実行中のOracle Service Busサーバーにしかデプロイできないため、セッションをアクティブ化する必要はありません。ただし、やはり競合および構成エラーの検出は重要であるため、検証メソッドは引続き実行されます。

次に、オフライン・モードで実装する必要がある、トランスポートSDKによって定義されているクラスおよびメソッドの最小セットのリストを示します。読みやすくするために、例外はメソッド・シグネチャから削除されています。

注意:

オフライン・モード用にトランスポートを完全に再実装する必要はありません。ほとんどの場合、トランスポートは、既存のメソッドにいくつかの変更を加えるだけで、オンライン・モードとオフライン・モードの両方をサポートできます。

オフライン・メソッドのために実装する必要があるクラスとメソッド

- public interface TransportProviderクラス

String getId();
void validateEndPointConfiguration(TransportValidationContext context);
SchemaType getEndPointConfigurationSchemaType();
SchemaType getRequestMetaDataSchemaType();
SchemaType getRequestHeadersSchemaType();
SchemaType getResponseMetaDataSchemaType();
SchemaType getResponseHeadersSchemaType();
TransportProviderConfiguration getProviderConfiguration();
TransportUIBinding getUIBinding(TransportUIContext context);
void shutdown();
Collection<NonQualifiedEnvValue> getEnvValues(Ref ref, EndPointConfiguration epConfig);
void setEnvValues(Ref ref, EndPointConfiguration epConfig, Collection<NonQualifiedEnvValue> envValues);
Collection<Ref> getExternalReferences(EndPointConfiguration epConfig);
void setExternalReferences(Map<Ref, Ref> mapRefs, EndPointConfiguration epConfig);
Map<String, String> getBusinessServicePropertiesForProxy(Ref ref);
XmlObject getProviderSpecificConfiguration(Ref ref, Map<String, String> props);

- public interface TransportProviderFactoryクラス
このインタフェースは、トランスポートをオフライン・モードで登録します。詳細は、43章「トランスポート・プロバイダのデプロイ」を参照してください。

- public interface TransportUIBindingクラス
このインタフェースですべてのメソッドを実装して、プロキシ・サービスまたはビジネス・サービスの構成に使用されるユーザー・インタフェースを定義する必要があります。

ヘルパー・クラス

- public class TransportManagerHelperクラス
このクラスは、通常はTransportProviderの開発者によって使用されます。プロバイダを実装する際にコードがオフラインで実行しているかどうかを判別するためのboolean isOffline()メソッドを提供します。

オフライン・モードで無効な一部のメソッドは次のように例外をスローします。他のメソッドは、public isAdmin()のようにランタイムまたはデプロイメントのみに対応します。

オフライン・モード(リモート・サーバーあり)で作業するときは次のメソッドも使用できます。

- public Set<String> getDispatchPolicies(JMXConnector connector);メソッド

- public DomainRuntimeServiceMBean getDomainRuntimeServiceMBean(JMXConnector connector);メソッド
詳細は、40.2.3項「オフライン(リモート・サーバーあり)での作業」を参照してください。

オフライン・モードでは、次のメソッドは呼び出さないでください。

- isAdmin()メソッドは例外をスローします(public static boolean isAdmin();)。このメソッドは、java.lang.IllegalStateExceptionメッセージをスローします。

- clusterExists()メソッドは、常にfalseを返します(public static boolean clusterExists();)。このメソッドは、常にfalseを返します。

注意:

ランタイムのステータスをチェックするための推奨メソッドは、isRuntimeEnabled()とgetRuntimeServers()の組合せです。

40.2.2 オフラインで作業する場合の制限

オフラインで作業する場合、サーバー上で実行されているOracle WebLogic Serverサービスは使用できません。40.2.1項「オフライン・メソッド」で説明されているメソッド内でこれらのサービスを使用しないでください。

次に、オフラインで作業する場合の制限の例を示します。

- WLS MBeanは使用できません。

- サーバーJavaプロパティは使用できません。

- JNDIツリーに直接アクセスすることはできません。ただし、JNDIプロパティがサービス構成で定義されている場合は、それらの使用を試みることができます。

- サービスがクラスタまたはスタンドアロン・サーバーのどちらで実行されるのかを判断することはできません。

- Oracle WebLogic Serverセキュリティ・インフラストラクチャにアクセスすることはできません。

- サーバーにある静的なシングルトン・サービスにアクセスすることはできません。

一部のサービスが使用できないため、トランスポートのユーザー・インタフェースがどのように影響を受けるかを評価する必要があります。一般的に、ユーザー・インタフェースは、ユーザーが値をサーバー環境から取得しようとするかわりに、値を手動で構成できるだけの柔軟性を備えている必要があります。

Eclipseデザイン・タイムでは、現時点では、Oracle Service Busクラスタ環境へのデプロイメントはサポートされていません。そのため、クラスタがないものとしてユーザー・インタフェースを設定する必要があります。必要に応じて、ユーザーは、カスタム・ファイルを使用して構成を更新し、Oracle Service Busクラスタへのデプロイメントを強制することができます。

たとえば、一部のトランスポートでは、TransportManagerHelperを使用し、ユーザーがリストから選択できるようにして、使用可能なWorkManager項目のリストを取得します。ただし、オフライン・モードではMBeanが使用できないため、リストを設定することはできません。トランスポート・プロバイダには次の2つの選択肢があります。

1. ユーザーが正確なWorkManager名を入力できるようにします。この場合、オフラインで作業する際は、ユーザー・インタフェースを、リストではなくテキスト・ボックスに変更する必要があります。

2. より柔軟性の低いもう1つの選択肢は、デフォルトのWorkManagerだけを使用してリストを設定する方法です。サービスが実行中のOracle Service Busサーバーにプッシュされるときに、環境値の代入を使用してWorkManager名を切り替えることができます。

40.2.3 オフライン(リモート・サーバーあり)での作業

オフラインで作業する場合に、リモート・サーバーを使用できる場合があります。たとえば、Eclipseでサービスを構成するときに、ユーザーが、リモートのOracle Service Busサーバーを現在のプロジェクトに関連付けることができます。トランスポート・プロバイダは、Oracle WebLogic Server MBeanにアクセスして情報を取得することで、リモート・サーバーを利用することができます。このモードは、オンラインでの作業に似ていますが、コードがサーバーで実行されず、MBeanしか使用できないため、やはりいくつかの制限が適用されます。

オフラインで作業する場合、次の説明が適用されます。

- サーバーJavaプロパティは使用できません。

- 40.2.1項「オフライン・メソッド」で説明されているように、多くのTransportManagerHelperメソッドは使用できません。

- JNDIツリーに直接アクセスすることはできません。ただし、JNDIプロパティがサービス構成で定義されている場合は、それらの使用を試みることができます。

- サーバーにある静的なシングルトン・サービスにアクセスすることはできません。

MBeanにアクセスするために、フレームワークは、TransportUIオブジェクトをリクエストするとき、または、プロバイダに構成を検証するようにリクエストするときに、JMXConnectorのインスタンスを提供します。JMXConnectorはTransportUIContextまたはTransportValidationContextで使用できます。

JMXConnector connector = (JMXConnector)uiContext.get(TransportValidationContext.JMXCONNECTOR);

詳細は、40.4項「リファレンス」のサンプル・トランスポートを参照してください。

コネクタが存在しない場合、リモート・サーバーは使用できません。このコネクタ・オブジェクトはその後MBeanへのアクセスに使用できます。ヘルパー・メソッドがTransportManagerHelperに追加されたため、WorkManagerおよびOracle WebLogic ServerドメインMBeanのリストを取得できます。

注意:

この動作は、オンライン・モードおよびオフライン・モード用に汎用化されています。TransactionManagerHelperで定義されているpublic static Set<String> getDispatchPolicies()メソッドは非推奨となるため、JMXConnectorをパラメータとして持つ同じメソッドで置き換える必要があります。置換えない場合、com.bea.wli.sb.transports.TransportExceptionエラーが表示されます。

40.2.4 オフライン・モードでのトランスポートのブートストラップ

オンライン・モードでは、トランスポートをEARファイルとしてパッケージ化し、Oracle Service Busサーバーにデプロイする必要があります。起動時にEARがロードされると、トランスポートは、起動イベントでコールバックを登録し、TransportProviderのインスタンスをTransportManagerに登録します。

オフライン・モードでは、トランスポートを登録するcom.bea.wli.sb.transports.TransportProviderFactoryというインタフェースがSDKで提供されます。トランスポートの開発者は、このインタフェースを実装し、デフォルトのコンストラクタをパブリックにする必要があります。このインタフェースは、40.4項「リファレンス」でサンプル実装と共に提供されています。

TransportProvideFactoryがインスタンス化された場合、トランスポートを(リモート・サーバーの有無にかかわらず)オフライン・モードで動作させる必要があると想定できます。

注意:

トランスポートがオフライン・モードで実行されているかどうかを判断するためにコンストラクタが呼び出されるときに、TransportManagerHelperでブール演算子を設定できます。この情報は、TransportUIContextおよびTransportValidationContextにも渡すことができます。この決定に際しては、技術部門に支援を受けることができます。

40.2.5 オフライン・モードでのトランスポートのパッケージ化

オフライン・モードでは、異なる設計環境でトランスポートを使用することができます。Eclipse環境は特定のパッケージ化を定義しています。これについては、次の項で説明します。一般的に、転送は、独立したJARファイルとして、外部の設計時環境から使用できる必要があります。独立したJARファイルでは、トランスポートのconfig.xmlファイル、ヘッダー、メタデータ・スキーマ、XBeanクラス、TransportManagerHelper実装、およびコンパイル済のトランスポート・クラスがJARファイルに含まれます。

40.3 Eclipseプラグインとしてのトランスポートのパッケージ化

Eclipseプラグインとしてカスタム・トランスポートをパッケージ化し、同時にトランスポートのユーザー・インタフェースを実装することで、サービスの開発者が、開発環境でそのトランスポートを選択および構成できるようになります。

図40-1は、選択したトランスポートの構成ページが含まれる(サービス作成後の)サービス・エディタを示しています。

図40-1 Eclipseのトランスポート構成ページ

注意:

TransportUIBindingインタフェースの実装によって、EclipseとOracle Service Bus管理コンソールでの、トランスポートを選択および構成するためのユーザー・インタフェースが決まります。

Oracle Service Busは、Eclipse用のEclipseベースのプラグインを提供しています。Oracle Service Busのコア・プラグインであるcom.bea.alsb.coreは、Eclipse環境で、Oracle Service Busトランスポートをプラグインとして登録するために使用される拡張ポイント(com.bea.alsb.core.transports)を定義しています。

40.3.1 トランスポート・プラグインのリソース

トランスポート・プラグインは、次のリソースを提供する必要があります。

- MANIFEST.MFファイル - トランスポート・プラグインに関する重要な情報が含まれます。参考として、サンプル・ソケット・トランスポートのMANIFEST.MFを使用してください。40.4.5項「MANIFEST.MF」を参照してください。

- plugin.xmlファイルで、トランスポートをプラグインとしてEclipseに登録する拡張ポイントを提供します。参考として、サンプル・ソケット・トランスポートのプラグインを使用してください。40.4.4項「plugin.xml」を参照してください。

- トランスポートの実装を含むトランスポートJARファイル。

- (オプション)オンライン・ヘルプを提供するためのリソース。

40.3.2 トランスポート・プラグインのパッケージ化

トランスポート・プラグインをJARファイルとして、または展開ディレクトリにパッケージ化できます。JARとしてパッケージ化すると、トランスポートの移動がより容易になります。展開ディレクトリとしてパッケージ化すると、その他のOracle Service Busプラグインのリソースを参照できるようになります。たとえば、トランスポートのヘルプをEclipseヘルプ・システムのOracle Service Busトランスポートのトピックとマージする場合、39.12.2項「Eclipseでのカスタム・トランスポートのヘルプの提供」の説明に従って、トランスポート・プラグインを展開ディレクトリにパッケージ化する必要があります。

プラグインをJARまたは展開ディレクトリのどちらにパッケージ化するかにかかわらず、トランスポートの実装をJARファイルにパッケージ化する必要があります。

トランスポートをプラグインとしてパッケージ化するには、次のガイドラインに従います。

- プラグインJARまたは展開ディレクトリの名前を作成する場合は、MANIFEST.MFファイルからBundle-VersionをBundle-SymbolicNameに付加します。たとえば、サンプル・ソケット・トランスポートのJARは、Socket_Transport_3.0.0.0.jarという名前が付けられています。

- 図40-2に示されているように、次のディレクトリ構造でパッケージ化します。

- plugin.xml (プラグインのルート)

- /lib/your_transport.jar (トランスポート・クラスおよびリソース)

- /META-INF/Manifest.mf

- /help - トランスポートのヘルプを提供する場合、39.12.2項「Eclipseでのカスタム・トランスポートのヘルプの提供」の説明に従って、ヘルプ・リソースの/helpディレクトリを含めてください。

図40-2 プラグインのパッケージ化

トランスポート・プラグインのパッケージ化の詳細は、第42章「サンプル・ソケット・トランスポート・プロバイダ」を参照してください。サンプル・ソケット・トランスポートをビルドし、生成されるSocket_Transport_3.0.0.0.jarを確認します。

40.4 リファレンス

この項の内容は次のとおりです。

- 40.4.1項「異なるモードでの動作」

- 40.4.2項「TransportProviderFactory」

- 40.4.3項「拡張ポイント・スキーマ」

- 40.4.4項「plugin.xml」

- 40.4.5項「MANIFEST.MF」

- 40.4.6項「build.xml」

- 40.4.7項「TransportManagerHelperメソッド」

40.4.1 異なるモードでの動作

ほとんどのトランスポートでディスパッチ・ポリシーが使用されており、これによりサービスの抑制が可能になります。このコードは、40.2項「サービスのランタイムとサービスの構成」で説明されている、次の3つのモードを区別します。

- オンライン・モード

- オフライン・モード

- オフライン・モード(リモート・サーバーあり)

例40-1に示すように、リモート・サーバーへの接続はコンテキストから取得されます。

例40-1 リモート・サーバーへの接続

/**
* Builds the dispatch policies in the ui object.
*
* @param curDispatchPolicy
* @return TransportEditField containing existing dispatch policies.
*/
public TransportEditField getDispatchPolicyEditField(StringcurDispatch
Policy) {
TransportUIFactory.TransportUIObject uiObject = null;
Set<String> wmSet = null;

if (SocketTransportManagerHelper.isOffline()) { // if on
Eclipse try to get the MBeans from the UIContext
JMXConnector connector = (JMXConnector)uiContext.get
(TransportValidationContext.JMXCONNECTOR);
if (connector != null) {
try {
wmSet = TransportManagerHelper.getDispatchPolicies
(connector);
} catch (Exception ex) {
wmSet = null; //continue
}
}
} else { // if running on the server use the helper to get the
policies
try {
wmSet = TransportManagerHelper.getDispatchPolicies();
} catch (TransportException e) {
SocketTransportUtil.logger
.error(SocketTransportMessagesLogger.
noDispatchPolicies(), e);
}
}

if (wmSet == null) // if JMXConnector not available or impossible
to connect provide a simple edit field
{
uiObject = TransportUIFactory.createTextBox
(curDispatchPolicy);
} else // create a drop down list
{
// adding default work manager to the list.
wmSet.add(DEFAULT_WORK_MANAGER);
String[] values = wmSet.toArray(new String[wmSet.size()]);
uiObject = TransportUIFactory.createSelectObject(
values,
values,
curDispatchPolicy,
TransportUIFactory.SelectObject.DISPLAY_LIST,
false);
}
return TransportUIFactory.createEditField(DISPATCH_POLICY,
TextMessages.getMessage(TextMessages.DISPATCH_POLICY,
locale),
TextMessages.getMessage(TextMessages.DISPATCH_POLICY_INFO,
locale), uiObject);
}

40.4.2 TransportProviderFactory

TransportProviderFactory(例40-2)を使用して、Eclipseに開発時の機能を提供できます。

例40-2 TransportProviderFactoryクラス

package com.bea.wli.sb.transports;

import com.bea.wli.sb.transports.TransportException;
import com.bea.wli.sb.transports.TransportManager;

/**
* This interface is the extension point to plug custom ALSB transports in
Eclipse.
* The implementation must declare the default class constructor.
*/
public interface TransportProviderFactory {

/**
* Registers a new provider with the transport manager. Typically
* called by the ALSB core eclipse plugin.
* @param tm the transport manager to which to register
*/
public void registerProvider(TransportManager tm) throws
TransportException;
/**
* @return a unique string that identifies this provider, like "http"
* This method must return the same ID than provider.getId()
*/
String getId();
}

例40-3のコード・サンプルは、ソケット・トランスポートがこのインタフェースをどのように実装するかを示しています。

例40-3 インタフェースを実装するソケット・トランスポートの例

package com.bea.alsb.transports.sock;

import com.bea.wli.sb.transports.TransportManager;
import com.bea.wli.sb.transports.TransportException;
import com.bea.wli.sb.transports.TransportProviderFactory;
public class SocketTransportProviderFactory implements
TransportProviderFactory {

public static boolean isOffline() {
return isOffline;
}

private static boolean isOffline = false;

public void registerProvider(TransportManager tm) throws
TransportException {
isOffline = true;
SocketTransportProvider instance =
SocketTransportProvider.getInstance();
tm.registerProvider(instance, null);
}

public String getId() {
return SocketTransportProvider.ID;
}
}

40.4.3 拡張ポイント・スキーマ

例40-4は、40.4.4項「plugin.xml」で示されているように、トランスポートをEclipseプラグインとして追加するためのtransport要素およびtransport-provider属性を定義している拡張ポイント・スキーマからの抜粋です。

例40-4 拡張ポイント・スキーマの一部

<element name="transport">
<complexType>
<attribute name="transport-provider" type="string" use="required">
<annotation>
<documentation>
</documentation>
<appInfo>
<meta.attribute kind="java" basedOn="
com.bea.wli.sb.transports.Transport
ProviderFactory"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>

40.4.4 plugin.xml

例40-5は、サンプル・ソケット・トランスポートのplugin.xmlファイルでのトランスポートの拡張を示しています。このファイルは、OSB_ORACLE_HOME/samples/servicebus/sample-transport/eclipse/にあります。

例40-5 Plugin.xmlファイル

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
<extension
id="socket"
name="Socket Transport"
point="com.bea.alsb.core.transports">
<transport transport-provider="com.bea.alsb.transports
.sock.SocketTransportProviderFactory"/>
</extension>
</plugin>

plugin.xmlの重要な部分

- extension point属性の値は、トランスポートでは常にcom.bea.alsb.core.transportsです。

- transport-provider属性は、TransportProviderFactory実装クラスの完全修飾パスです。

注意:

通常、Eclipse内のライフ・サイクル管理にトランスポート・プロバイダは必要ないため、標準のプラグインのようにorg.eclipse.core.runtime.Pluginクラスを拡張する必要はありません。

Eclipseでカスタム・トランスポートのヘルプを提供する場合、plugin.xmlにもヘルプ・エントリを持つことになります。詳細は、39.12項「カスタム・トランスポートのヘルプの作成」を参照してください。

40.4.5 MANIFEST.MF

例40-6はサンプル・ソケット・トランスポートのMANIFEST.MFファイルを示しています。このファイルは、OSB_ORACLE_HOME/samples/servicebus/sample-transport/eclipse/META-INF/にあります。

例40-6 MANIFEST.MFファイルのサンプル

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Socket Transport Plug-in
Bundle-SymbolicName: Socket_Transport;singleton:=true
Bundle-Version: 3.0.0.0
Bundle-Localization: plugin
Bundle-ClassPath: .,
lib/sock_transport.jar
Require-Bundle: com.bea.alsb.core

40.4.6 build.xml

トランスポートのコンパイルとパッケージ化のためのビルド・ファイルのサンプルは、ソケット・サンプルのビルド・ファイルOSB_ORACLE_HOME/samples/servicebus/sample-transport/build.xmlを参照してください。

サンプル・ソケット・トランスポートのビルドの詳細は、第42章「サンプル・ソケット・トランスポート・プロバイダ」を参照してください。

40.4.7 TransportManagerHelperメソッド

例40-7に、TransportManagerHelperメソッドを示します。

例40-7 TransportManagerHelperメソッド

public static Set<String> getDispatchPolicies(JMXConnector connector)
throws TransportException;

public static DomainRuntimeServiceMBean
getDomainRuntimeService(JMXConnector connector)
throws TransportException;

41 トランスポートSDKのインタフェースおよびクラス

この章では、トランスポートSDKで提供されるOracle Service Busクラスおよびインタフェースを示し、それらについて簡単に説明します。カスタム・トランスポート・プロバイダの開発に必要なインタフェースの詳細は、第39章「トランスポート・プロバイダの開発」を参照してください。

この章には次の項があります。

- 41.1項「はじめに」

- 41.2項「スキーマで生成されるインタフェース」

- 41.3項「汎用クラスおよびインタフェース」

- 41.4項「SourceおよびTransformerクラスとインタフェース」

- 41.5項「リクエストおよびレスポンス・メッセージのメタデータおよびヘッダーの表現」

- 41.6項「ユーザー・インタフェースの構成」

41.1 はじめに

この章で説明されているクラスおよびインタフェースは、特に記載のないかぎり、OSB_ORACLE_HOME/lib/sb-kernel-api.jarにあります。

クラスとメソッドの詳細は、Oracle Fusion MiddlewareのOracle Service Bus Java APIリファレンスを参照してください。

41.2 スキーマで生成されるインタフェース

インタフェースの多くは、XMLスキーマ・コンパイラ・ツールによってXMLから生成されます。次のインタフェースのソース(XMLスキーマ)は、ファイルTransportCommon.xsdで提供されています。このファイルは、サービス・エンドポイントの構成用の基本となるスキーマ定義ファイルです。このファイルは、OSB_ORACLE_HOME/lib/sb-schemas.jarにあります。

ここで、OSB_ORACLE_HOMEはOracle Service Busをインストールしたディレクトリです。

スキーマで生成されるインタフェース

- EndPointConfiguration - エンドポイント構成のベース・タイプ。エンドポイントは、メッセージの送信元または送信先となるOracle Service Busリソースです。EndPointConfigurationは、インバウンド・エンドポイントまたはアウトバウンド・エンドポイントのデプロイメントおよび操作に必要なパラメータ一式を示します。

- RequestMetaDataXML - インバウンド・リクエストまたはアウトバウンド・リクエストのメタデータのベース・タイプ。メタデータは、メッセージのペイロードに含まれず、個別に送信され、メッセージを処理するための「コンテキスト」として使用されます。メタデータとして送信できる情報の例には、Content-Typeヘッダー、セキュリティ情報、ロケール情報などがあります。

- RequestHeadersXML - 一連のインバウンドまたはアウトバウンド・リクエスト・ヘッダーのベース・タイプ。

- ResponseMetaDataXML - インバウンド・メッセージまたはアウトバウンド・メッセージのレスポンス・メタデータのベース・タイプ。

- ResponseHeadersXML - 一連のレスポンス・ヘッダーのベース・タイプ。

- TransportProviderConfiguration - このプロバイダがエンドポイントのサービスの説明(WSDLなど)を生成するかどうか、インバウンド(プロキシ)エンドポイントをサポートするかどうか、またはアウトバウンド(ビジネス・サービス)エンドポイントをサポートするかどうかを構成できます。

41.3 汎用クラスおよびインタフェース

この項では、トランスポートSDKの汎用クラスおよびインタフェースについて簡単に説明します。

この項の内容は次のとおりです。

- 41.3.1項「汎用クラスのサマリー」

- 41.3.2項「汎用インタフェースのサマリー」

注意:

ここで説明する各クラスおよびインタフェースの詳細は、Oracle Fusion MiddlewareのOracle Service Bus Java APIリファレンスを参照してください。

41.3.1 汎用クラスのサマリー

TransportManagerHelperクラス - クライアントがトランスポート・サブシステムに関する一部の一般的なタスクを実行できるようにするヘルパー・クラス。

ServiceInfoクラス - トランスポートの構成およびバインディング・タイプなどのサービスについての情報を示すラッパー・クラス。

TransportOptionsクラス -メッセージの送受信に関するオプションを提供します。TransportOptionsには、複数行セットアップおよび単一行使用の2つの使用スタイルがあります。

EndPointOperationsクラス - 様々なタイプのトランスポート・エンドポイントのライフサイクル関連のイベントについて説明します。このイベントによって、トランスポート・プロバイダへの通知を行います。ネストされたクラスには、CommonOperation、Create、Delete、EndPointOperationTypeEnum、Resume、Suspend、およびUpdateがあります。

Refクラス - 構成システムで管理されるリソース、プロジェクトまたはフォルダを一意に表します。このクラスは、OSB_ORACLE_HOME/modules/com.bea.common.configfwk_version.jarにあります。

TransportValidationContextクラス - エンドポイント構成の検証チェックを実装する際に使用できる情報をトランスポート・プロバイダに提供するコンテナ。

Diagnosticsクラス - 特定のリソースに関連するDiagnosticエントリの集合が含まれます。このクラスは、OSB_ORACLE_HOME/modules/com.bea.common.configfwk_<version>.jarにあります。

Diagnosticクラス - リソースに関連する特定の検証メッセージを表します。Diagnosticオブジェクトは、リソースに変更があった際に実行される検証の結果として生成されます。このようなシステム内の変更は、変更されたリソース、および変更されたリソースに(過渡的に)依存するその他のすべてのリソースの検証をトリガーします。このクラスは、OSB_ORACLE_HOME/modules/com.bea.common.configfwk_version.jarにあります。

NonQualifiedEnvValueクラス - 構成データ内にある環境依存の値のインスタンスを表します。通常、環境依存の値は、あるドメインから別のドメインに構成が移動された場合に変わります。たとえば、サービスのURIは、テスト・ドメインと本番ドメインで異なる場合があります。このクラスは、OSB_ORACLE_HOME/modules/com.bea.common.configfwk_version.jarにあります。

41.3.2 汎用インタフェースのサマリー

TransportManagerインタフェース - 様々なトランスポート・プロバイダの管理、エンドポイントの登録、制御、インバウンド・メッセージおよびアウトバウンド・メッセージの処理などを一元化するための主要ポイントを提供するシングルトン・オブジェクト。

TransportProviderインタフェース - 転送プロトコル固有の構成および実行時プロパティの中心的な管理ポイントを表します。サポートされているプロトコルごとに、TransportProviderの単一のインスタンスが存在します。たとえば、HTTPトランスポート・プロバイダやJMSトランスポート・プロバイダに、それぞれ単一のインスタンスが存在します。

BindingTypeInfoインタフェース - サービスのバインディングの詳細について説明します。実装は、Oracle Service Busの複数の内部構造を包むコンビニエンス・ラッパー・クラスです。トランスポート・プロバイダの必要に応じて他のメソッドを追加できます。

TransportWLSArtifactDeployerインタフェース - Oracle Service Busのデプロイメントと共に、WLS関連のアーティファクトをデプロイ、アンデプロイ、または変更する必要があるモジュール用のプラグイン・インタフェース。たとえば、場合によっては、サービスの作成に応じてWLSのキューをデプロイする必要があります。

ヒント:

詳細は、39.11項「TransportWLSArtifactDeployerの実装が適している場合」を参照してください。

SelfDescribedTransportProviderインタフェース - TransportProviderを拡張します。任意のトランスポート・エンドポイントからサービスのバインディング・タイプについての説明を生成するトランスポート・プロバイダは、このインタフェースを実装する必要があります。この例としては、EJBトランスポート・プロバイダがあります。

SelfDescribedBindingTypeInfoインタフェース - (EJBサービスなどの)自己記述型のサービスのBindingTypeInfoインタフェースを拡張します。

WsdlDescriptionインタフェース - 登録されているOracle Service Busサービスに関連付けられているWSDLについて説明します。

TransportCustomBindingProviderインタフェース - WSDLベースのトランスポートのための効果的なWSDLの生成中に使用される、SOAPバインディングの拡張可能要素またはカスタムOracle Service Busバインディングのすべての要素の生成を促進するためのクラスを表します。オブジェクトは、<soap:binding>要素のトランスポートURIや、<soap:address>のロケーション属性などの情報の生成を促進します。

ServiceTransportSenderインタフェース - トランスポート・エンドポイントに関連付けられている登録済のサービスにアウトバウンド・メッセージを送信します。TransportProvider.sendMessageAsync()は、(TransportSenderを拡張する)ServiceTransportSenderのインスタンスを取得します。プロバイダは、このインスタンスから、アウトバウンド・リクエストのペイロードおよびメタデータを取得できます。

CredentialCallbackインタフェース - トランスポート・プロバイダは、Oracle Service Busからこのコールバック・インタフェースのインスタンスを取得します。トランスポート・プロバイダは、そのメソッドを呼び出して、アウトバウンド認証に使用する資格証明を取得できます。

TransportEndPointインタフェース - トランスポート・エンドポイントは、サービス・メッセージの送信元または送信先となるOracle Service Busのエンティティまたはリソースです。

41.4 SourceおよびTransformerクラスとインタフェース

次に、SourceおよびTransformerの基本インタフェース、Oracle Service Busで提供される具体的なSource、およびサポート・クラスについて説明します。

詳細は、38.8項「メッセージ・コンテンツの設計」を参照してください。

41.4.1 SourceおよびTransformerインタフェースのサマリー

Sourceインタフェース - 任意の形式のソース・コンテンツを表します。Sourceは、Transformerインスタンスを介して他のSourceに変換できます。Sourceは、少なくとも、このインタフェースで定義されている2つのメソッドを介して、バイト・ベースのストリームへの変換をネイティブにサポートする必要があります。Sourceでは、シリアライゼーション中に文字セット・エンコーディングなどの様々なTransformOptionsを考慮することもできます。

SingleUseSourceインタフェース - あるタイプのSourceが1回にかぎり使用できることを示すマーカー・インタフェース。Sourceがまだ「使用できる」(有効である)かどうかを判断するために使用できる1つのヘルパー・メソッドも提供します。

Sourceインタフェースを実装するSourceクラスを作成する場合、Oracle Service Busは、最初から入力ストリームを取得するたびに複数回getInputStream()メソッドを呼び出すことができます。SourceクラスがSingleUseSourceを実装する場合、Oracle Service Busは、getInputStream()を1回だけ呼び出します。ただし、この場合、Oracle Service Busは、メッセージ全体をメモリーにバッファします。

Transformerインタフェース - あるタイプのSourceを別のタイプに変換します。このインスタンスは、どのタイプのソース間で変換できるかを示します。サポートされる入力ソースおよび出力ソースによって示される完全な製品間トランスフォーメーションをサポートするには、トランスフォーマが必要です。つまり、トランスフォーマは、サポートされるすべての入力ソースを、サポートされるすべての出力ソースに変換できる必要があります。

41.4.2 SourceおよびTransformerクラスのサマリー

StreamSourceクラス - InputStreamからコンテンツを読み込むバイト・ストリームSource。バイト・ストリームSourceであるため、シリアライゼーション・メソッドはトランスフォーメーションのオプションを考慮しません。

注意:

このストリームはInputStreamによってバックアップされるため、このソースは1回のみ使用するソースとなります。両方のシリアライゼーション・メソッドは、基底の同じInputStreamから取得され、そのコンテンツは1度使用すると、失われます。エラーが発生しないことを前提とした場合、プッシュ・ベースのwriteTo()メソッドによりすべてのデータが即時に使用されます。プルベースのgetInputStream()は、実際に基底のInputStreamを呼出し元に直接提供します。

ByteArraySourceクラス - バイト配列からコンテンツを読み込むバイト・ストリームSource。バイト・ストリームSourceであるため、シリアライゼーション・メソッドはトランスフォーメーションのオプションを考慮しません。

StringSourceクラス - 単一のStringによってバックアップされるSource。シリアライゼーションは、単に、文字セット・エンコーディングが設定された文字データです。

XmlObjectSourceクラス - Apache XBeanのSourceコンテンツはApache XBeanとして表されます。XBeanは、型付きであるため、SchemaTypeオブジェクトおよび関連するClassLoaderが付随する場合があります。ただし、これらはどちらも省略可能であり、XBeanを型なしのXMLにすることもできます。

DOMSourceクラス - そのコンテンツがDOMノードに由来するSource。参照されるノードは、独立したorg.w3c.dom.Documentである場合も、より大きなドキュメント内の内部ノードである場合もあります。

MFLSourceクラス - MFLコンテンツを表します。MFLデータは、基本的には、MFL定義によって論理構造が指定されたバイナリ・データです。CSVはMFLデータの簡単な例ですが、構造は任意に複雑になる場合もあります。データの論理的表現およびメモリー内表現は、XMLドキュメントですが、シリアライズされた表現は構造化されていない生のバイナリ・データです。

SAAJSourceクラス - SAAJ SOAPMessageオブジェクトによってバックアップされるSource。通常、SAAJSourceは、MessageContextSourceおよびMimeSourceとの間で変換されます。

MimeSourceクラス - ヘッダーを持つ任意のコンテンツを示すSource。基本的に、これはMIMEの部分を表すSourceです。ヘッダーはRFC822に準拠する必要がありますが、Sourceは任意のタイプのソースでかまいません。このSourceのシリアライゼーション形式は、完全準拠のMIMEパッケージです。このソースは、Content-Transfer-Encodingにも対応しており、ヘッダーがある場合、基底のコンテンツ・ストリームを適切にエンコードします。これは、コンストラクタに提供されているSourceが、まだエンコードされておらず、生の形式である必要があることを意味しています。

MessageContextSourceクラス - すべてのメッセージ・コンテンツを示すSource。メッセージと添付のSourceは、後で処理できるように型なしのままになっています。ただし、最終的に、添付ソースの多くはオブジェクトに変換され、メッセージ・ソースの多くは、XmlObjectSourceやStringSourceなどの特定の型付きのソースに変換されます。

注意:

MessageContextSourceのシリアライゼーション形式は、メッセージ・ソースおよび添付ソースのネイティブのシリアライゼーションにかかわらず、MIME multipart/relatedパッケージです。ただし、シリアライズされたオブジェクトが複数回必要な場合は、SourceをMimeSourceに変換する方法が最適です。

TransformOptionsクラス - 一連のトランスフォーメーションのオプションを表します。このクラスのインスタンスは、Transformerクラスと併せて使用され、入力ソースの出力ソースへの変換方法に影響を及ぼします(たとえば、SHIFT_JISからEUC-JPへの文字セット・エンコーディングの変更など)。このクラスは、SourceインタフェースのInputStream/OutputStreamメソッドでも使用されます。これは、事実上この使用方法が、InputStream/OutputStreamにおけるSourceとバイトレベルの表現との変換でもあるためです。

JavaObjectSourceクラス - JavaObjectSourceは、Javaメッセージング・タイプを提供するOracle Service Busトランスポート(JMSトランスポートなど)で送信されるペイロードを表します。このペイロードに含まれるオブジェクトは、バインディング・レイヤーによってプロキシ・サービス・パイプラインのJavaオブジェクト・リポジトリに登録されます。そのコンテンツは、<ctx:java-content ref='jcid:xyz' xmlns:ctx="http://www.bea.com/wli/sb/context" /> XML要素を介してメッセージ・コンテキスト変数で表示できます。この例では、refは、Javaオブジェクト・リポジトリにあるオブジェクトの一意のIDを指します。

JavaXmlSourceクラス - JavaXmlSourceは、引数としてJavaオブジェクトをサポートするサービス(JEJBトランスポートなど)によって送信されるペイロードを表します。JavaXmlSourceは、プロキシ・サービス・パイプラインのメッセージ本文の形式を定義するXML表現と、一意のキーに対してJavaオブジェクトを含むマップで構成されます。このXML表現で、Javaオブジェクト引数は<ctx:java-content ref='jcid:xyz' xmlns:ctx="http://www.bea.com/wli/sb/context" />要素で代入されます。このref属性は、置換されるJavaオブジェクトの索引として機能するJavaObjectsマップのキーと等しくなります。このマップには、XML表現の一意IDに対して、パイプラインJavaオブジェクト・リポジトリに登録されるオブジェクトが含まれます。

41.5 リクエストおよびレスポンス・メッセージのメタデータおよびヘッダーの表現

ここでは、リクエスト・メッセージおよびレスポンス・メッセージのメタデータ表現を処理するクラスおよびインタフェースを示します。39.5項「メッセージの処理」および38.8項「メッセージ・コンテンツの設計」も参照してください。

この項の内容は次のとおりです。

- 41.5.1項「メッセージ・コンテンツの実行時表現」

- 41.5.2項「インタフェース」

41.5.1 メッセージ・コンテンツの実行時表現

CoLocatedMessageContext抽象クラス - トランスポート・レイヤーのかわりにJavaメソッド呼出しを実行するために、同じ場所に配置されているアウトバウンド呼出しの最適化を実装するトランスポート・プロバイダによって拡張される必要があります。実装の例は、com.bea.alsb.transports.sock.SocketCoLocatedMessageContext.javaクラスを参照してください。このクラスは、第41章「トランスポートSDKのインタフェースおよびクラス」で説明されているサンプル・ソケット・トランスポートに組み込まれています。39.5.5項「同じ場所に配置された呼出し」も参照してください。

RequestHeaders抽象クラス - 任意のインバウンド・リクエスト・メッセージまたはアウトバウンド・リクエスト・メッセージの、標準およびユーザー定義のヘッダーのユニオンを表します。一連の標準ヘッダーは、各トランスポート・プロバイダに固有です。これは、それぞれのバージョンのリクエスト・ヘッダーを実装するために、各トランスポート・プロバイダによって拡張される必要のある抽象クラスです。

RequestMetaData<T extends RequestHeaders>抽象クラス - インバウンド・リクエスト・メッセージまたはアウトバウンド・リクエスト・メッセージのメタデータ情報(ヘッダー、リクエストの文字セット・エンコーディングなど)を表します。トランスポート・プロバイダは、トランスポート・プロバイダに応じたメタデータ情報を追加する、このクラスの拡張を提供します。たとえば、HTTPトランスポート・プロバイダは、get/setQueryString()メソッド、get/setClientHost()メソッド、およびその他のメソッドを追加します。

ResponseHeaders抽象クラス - 任意のインバウンド・レスポンス・メッセージまたはアウトバウンド・レスポンス・メッセージの、標準およびユーザー定義のヘッダーのユニオンを表します。一連の標準ヘッダーは、各トランスポート・プロバイダに固有です。これは、それぞれのバージョンのレスポンス・ヘッダーを実装するために、各トランスポート・プロバイダによって拡張される必要のある抽象クラスです。

ResponseMetaData<T extends ResponseHeaders>抽象クラス - インバウンド・レスポンス・メッセージまたはアウトバウンド・レスポンス・メッセージのメタデータ情報(ヘッダー、リクエストの文字セット・エンコーディングなど)を表します。トランスポート・プロバイダは、トランスポート・プロバイダに応じたメタデータ情報を追加する、このクラスの拡張を提供します。たとえば、HTTPトランスポート・プロバイダは、get/setHttpResponseCode()メソッドおよびその他のメソッドを追加します。

41.5.2 インタフェース

TransportMessageContextインタフェース - ほとんどのメッセージ指向ミドルウェア(MOM)製品は、メッセージをヘッダーとペイロードで構成される軽量エンティティとして処理します。ヘッダーにはメッセージのルーティングおよび識別情報に使用されるフィールドが含まれ、ペイロードには送信中のアプリケーション・データが含まれます。通常、トランスポートレベルのメッセージ・コンテキストは、メッセージID、RequestMetadata、リクエスト・ペイロード、ResponseMetaData、レスポンス・ペイロード、および関連プロパティで構成されます。

InboundTransportMessageContextインタフェース - 着信メッセージのメッセージ・コンテキストの抽象化を実装します。

OutboundTransportMessageContextインタフェース - アウトバウンド・メッセージのメッセージ・コンテキストの抽象化を実装します。

ServiceTransportSenderインタフェース - 登録済のサービスにアウトバウンド・メッセージを送信します。サービスは、トランスポート・エンドポイントに関連付けられています。

TransportSendListenerインタフェース - これは、アウトバウンド・トランスポートに提供されるコールバック・オブジェクトで、システムにレスポンス処理を進めることができることを通知できるようにします。このコールバック・オブジェクトは、リクエスト・メッセージとは別のスレッドで呼び出す必要があります。

41.6 ユーザー・インタフェースの構成

この項の内容は次のとおりです。

- 41.6.1項「概要」

- 41.6.2項「UIインタフェースのサマリー」

- 41.6.3項「UIクラスのサマリー」

41.6.1 概要

各トランスポート・プロバイダは、永続化するサービス・エンドポイント固有の構成プロパティのリストを決定できるため、ユーザーが新しいサービス・エンドポイントごとのトランスポート固有の構成プロパティを入力できる、柔軟なユーザー・インタフェースが必要です。次に、Oracle Service Bus管理コンソールのOracle Service Busサービス定義ウィザードの一環としてユーザーが入力できるように、各トランスポート・プロバイダが独自のプロパティを公開できるクラスおよびインタフェースのセットを示します。

この項では、新しいトランスポートのユーザー・インタフェースを開発するために必要なインタフェースおよびクラスを示します。

41.6.2 UIインタフェースのサマリー

TransportProviderFactoryインタフェース - このインタフェースはカスタムOracle Service BusトランスポートをEclipseにプラグインするための拡張ポイントです。

TransportUIBindingインタフェース - サービスの定義、サマリー、およびトランスポート・プロバイダ固有のエンドポイントの構成の検証で使用される、プロバイダ固有のUIページを表示するオブジェクトを表します。

CustomHelpProviderインタフェース - Oracle Service Bus管理コンソールに追加する、カスタム・トランスポートなどの機能の状況依存ヘルプを提供できます。実装の詳細は、39.12項「カスタム・トランスポートのヘルプの作成」を参照してください。

41.6.3 UIクラスのサマリー

TransportUIContextクラス - トランスポート・プロバイダ固有のユーザー・インタフェースのオプションを提供します。これは、各トランスポート・プロバイダにOracle Service Bus管理コンソールから渡されます。

TransportUIGenericInfoクラス - Oracle Service Busのサービス定義ウィザードでの、共通のトランスポート・ページのトランスポート固有のUI情報を保持します。

TransportUIFactoryクラス - トランスポートの変更フィールドおよびフィールドに関連付けられている様々なTransport UIオブジェクトを作成するファクトリ・メソッドを提供します。これらのオブジェクト内の値にアクセスするためのヘルパー・メソッドも提供します。

TransportEditFieldクラス - Oracle Service Bus管理コンソールのサービス登録ウィザードのプロバイダ固有の部分で、編集可能な単一のUI要素を表します。

TransportViewFieldクラス - Oracle Service Bus管理コンソールのサービス登録ウィザードの「サービス・サマリー」ページのプロバイダ固有の部分で、読取り専用の単一のUI要素を表します。

TransportUIErrorクラス - Oracle Service Bus管理コンソールに検証エラーを返します。

42 サンプル・ソケット・トランスポート・プロバイダ

この章では、サンプル・ソケット・トランスポート・プロバイダをビルドおよび実行する方法について説明します。このサンプルとソース・コードは、Oracle Service Busとともにインストールされます。このサンプルは、カスタム・トランスポート・プロバイダの実装例として使用できます。

この章の内容は次のとおりです。

- 42.1項「サンプル・ソケット・トランスポート・プロバイダの設計」

- 42.2項「サンプルの場所とディレクトリ構造」

- 42.3項「サンプルのビルドとデプロイ」

- 42.4項「ソケット・サーバーの起動とテスト」

- 42.5項「ソケット・トランスポート・サンプルの構成」

- 42.6項「ソケット・トランスポート・プロバイダのテスト」

42.1 サンプル・ソケット・トランスポート・プロバイダの設計

サンプル・ソケット・トランスポート・プロバイダの主な目的は、トランスポート・プロバイダの実装例として機能することです。一般に公開されているこのサンプルでは、トランスポートSDKの実装および構成の詳細について説明します。

この項の内容は次のとおりです。

- 42.1.1項「サンプルによって説明される概念」

- 42.1.2項「サンプルの基本アーキテクチャ」

- 42.1.3項「構成のプロパティ」

42.1.1 サンプルによって説明される概念

サンプル・トランスポートは、ストリーミングしたデータをOracle Service Busに構成されているTCPソケットとの間で送受信するために設計されています。サンプル・トランスポートの目的は、トランスポートSDKの次のような概念を示すことにあります。

- カスタム・トランスポートのビルドに必要な、トランスポートSDK APIのセットを実装します。

- 構成されたアドレスでリスニングするソケット・エンドポイントがないことを確認するなど、トランスポート・エンドポイントの検証を実行します。

- ソケット・プロパティ、メッセージ・パターンなど、様々なUI構成オプションを実装します。

- 一方向または同期型のリクエスト/レスポンス・メッセージ・パターンを実装します。

- エンドポイント・リクエスト/レスポンスのメタデータおよびヘッダーにPOJO (Plain Old Java Object)を使用します。

- Oracle Service Busパイプラインでのストリーミングの使用方法を示します。

42.1.2 サンプルの基本アーキテクチャ

図42-1に、サンプル・ソケット・トランスポート・プロバイダの基本アーキテクチャを示します。どのクライアントでも、サーバー・ソケットに接続できます。データは、サーバー・ソケットで受信され、パイプラインを介して渡されます。レスポンスは、アウトバウンド・トランスポートを介して戻されます。レスポンスは、最後にインバウンド・トランスポートに返送され、クライアントに戻されます。

図42-1 サンプル・ソケット・トランスポートのアーキテクチャ

42.1.3 構成のプロパティ

図42-2に、トランスポート・エンドポイントの構成のプロパティを示します。これらのプロパティは、スキーマ・ファイルSocketTransport.xsdで構成されています。このファイルの場所の詳細は、42.2項「サンプルの場所とディレクトリ構造」を参照してください。このファイルを使用すると、SDKの共通のスキーマに定義されている、基本的なプロパティ・セットを拡張できます。各プロパティは、SocketTransport.xsdファイルを参照してください。

ヒント:

これらの構成のプロパティの詳細は、39.3.4項「4.トランスポート固有のアーティファクトの定義」を参照してください。

図42-2 SocketEndpointConfigurationのプロパティ

また、図42-3に示すように、SocketTransport.xsdファイルには、リクエスト/レスポンス・ヘッダーおよびメタデータのプロパティが含まれています。各プロパティの詳細は、SocketTransport.xsdファイルを参照してください。

図42-3 リクエスト/レスポンス・ヘッダーおよびメタデータの構成

42.2 サンプルの場所とディレクトリ構造

サンプル・ソケット・トランスポート・プロバイダはOracle Service Busにインストールされ、OSB_ORACLE_HOME/samples/servicebus/sample-transportディレクトリにあります。

ここでは、サンプル・プロジェクトのいくつかの重要なフォルダについて簡単に説明します。このディレクトリ構造を、カスタム・トランスポート・プロバイダを開発する際のモデルとして使用できます。

表42-1に、重要なサンプル・トランスポート・ディレクトリを示して、簡単に説明します。

表42-1 サンプル・トランスポート・プロバイダの重要なディレクトリ

ディレクトリ

説明

build

サンプル・ソケット・トランスポートをビルドするときに作成されます。Oracle Service Busで使用するビルド化およびパッケージ化されたトランスポートを含みます。

eclipse

Eclipse環境にサンプル・トランスポートを追加するために必要なplugin.xmlファイルを含みます。

l10n

国際化のための次のファイルを含みます。

SocketTransportMessages.xml - Oracle Service Bus管理コンソールに表示されるテキスト・メッセージのための構成ファイルです。

SocketTransportTextMessages.xml

META-INF

次のアプリケーション・デプロイメント記述子ファイルを含みます。

application.xml - J2EEアプリケーション記述子ファイル

weblogic-application.xml - WebLogicアプリケーション記述子ファイル

resources

SocketConfig.xml - トランスポートSDKが使用する、ソケット・トランスポート・プロバイダの構成です。

トランスポートのサンプル・ヘルプ・ファイル。

schemas

このトランスポート用に定義されている、次の関連スキーマを含みます。

SocketTransport.xsd - ソケットのエンドポイント・リクエスト/レスポンスのメタデータ/ヘッダーを記述します。

src

サンプル・トランスポートのソース・ツリー

test

(非表示)次のテスト・ファイルのディレクトリ。

src - テスト・サーバーとクライアントのソース・ツリー

webapp

サンプル・トランスポート・ヘルプWebアプリケーションで必要なデプロイメント記述子を含みます。

次のAntビルド・ファイルも、sample-transportディレクトリに格納されています。

- build.properties - Antのプロパティ・ファイルです。

- build.xml - コンパイル、ビルド、およびデプロイ用の異なる対象を含むAntビルド・ファイルです。

42.3 サンプルのビルドとデプロイ

この章では、サンプル・トランスポート・プロバイダをビルドおよびデプロイする方法について説明します。

42.3.1 環境の設定

次の手順を実行して、サンプルをビルドするための環境を設定します。

1. 新しいドメインを作成するか、Oracle Service Busと共にインストールされている、構成済のドメインの1つを使用します。

2. 次のスクリプトを実行して、ドメイン環境を設定します。
DOMAIN_HOME/bin/setDomainEnv.cmd (UNIXシステムではsetDomainEnv.sh)

42.3.2 トランスポートのビルド

ソケット・トランスポートをビルドするには:

1. コマンド・ウィンドウで、次のサンプル・ホーム・ディレクトリに移動します。
OSB_ORACLE_HOME/samples/servicebus/sample-transport

2. コマンドant buildを実行します。このコマンドにより、OSB_ORACLE_HOME/samples/servicebus/sample-transport/buildのソース・ファイルがコンパイルされます。

3. ビルドが正常に終了したら、コマンドant stageを実行します。このコマンドでは次の処理が行われます。

- sock_transport.ear sock_transport.jarがOSB_ORACLE_HOME/lib/transportsにコピーされます。

- OSB_ORACLE_HOME/eclipse/plugins com.bea.alsb.transports.socket_versionが作成され、ソケット・サンプルがプラグインとしてEclipseに登録されます。

42.3.3 サンプル・トランスポート・プロバイダのデプロイ

サーバーにサンプル・トランスポート・プロバイダをデプロイするには、次を行います:

1. 次の変数をsample-transport/build.propertiesに設定します。

wls.hostname

wls.port

wls.username

wls.password

wls.server.name

2. 次のコマンドを実行して、トランスポート・プロバイダをサーバーにデプロイします。

ant deploy

42.4 ソケット・サーバーの起動とテスト

サンプル・プロジェクトには、簡単なソケット・サーバーと、サーバーをテストするためのクライアントが含まれています。このソケット・サーバーを使用して、ソケット・トランスポート・プロバイダをテストします。

この項の内容は次のとおりです。

- 42.4.1項「ソケット・サーバーの起動」

- 42.4.2項「ソケット・トランスポートのテスト」

42.4.1 ソケット・サーバーの起動

次のコマンドを実行して、指定したポートでリスニングしてメッセージを送受信するサーバー・ソケットである、外部サービスを起動します。

java -classpath .\test\build\test-client.jar -Dfile-encoding=utf-8 -Drequest-encoding=utf-8 com.bea.alsb.transports.sample.test.TestServer <port> <message-file-location>

説明:

- port - ServerSocketがリスニングするポート番号であり、ビジネス・サービスのポート番号です。

- message-file-location - (オプション)ビジネス・サービスへのレスポンスとして送信されるメッセージ・ファイルの場所です。

- file-encoding - ファイルのエンコーディングを指定するシステム・プロパティです(デフォルト値はutf-8)。

- request-encoding - ソケット・ビジネス・サービスが送信する、リクエストのエンコーディングです(デフォルト値はutf-8)。

42.4.2 ソケット・トランスポートのテスト

次のコマンドを実行して、構成済のソケット・プロキシ・サービスのクライアントである、サービスを起動します。Oracle Service Busに対してメッセージを送信し、レスポンスを受信します。

java -classpath .\test\build\test-client.jar -Dfile-encoding=utf-8 -Dresponse-encoding=utf-8 com.bea.alsb.transports.sample.test.TestClient <host-name> <port> <thread-ct> <message-file-location>

説明:

- host-name - Oracle Service Busサーバーのホスト名です。

- port - プロキシ・サービスがリスニングするポート番号です。

- thread-ct - Oracle Service Busにメッセージを送信できるクライアントの数です。

- message-file-location - (オプション)ビジネス・サービスへのレスポンスとして送信されるメッセージ・ファイルの場所です。

- file-encoding - ファイルのエンコーディングを指定するオプション引数です(デフォルト値はutf-8)。

- response-encoding - ソケット・プロキシ・サービスから受信したレスポンスのエンコーディングです(デフォルト値はutf-8)。

42.5 ソケット・トランスポート・サンプルの構成

サンプルは、テスト・サーバーとテスト・クライアントで構成されています。クライアントは、サーバーにメッセージを送信します。メッセージを受信および処理するために、Oracle Service Busを構成します。

この項では、次のタスクについて説明します。

- 42.5.1項「新しいプロジェクトの作成」

- 42.5.2項「ビジネス・サービスの作成」

- 42.5.3項「プロキシ・サービスの作成」

- 42.5.4項「パイプラインの編集」

42.5.1 新しいプロジェクトの作成

新しいプロジェクトを作成するには:

1. Oracle Service Bus管理コンソールを起動します。

2. 「プロジェクト・エクスプローラ」を開きます。

3. チェンジ・センターで「編集」をクリックします。

4. 「プロジェクト」パネルで、「新しいプロジェクト名の入力」フィールドにSocketTestと入力します。

5. 「プロジェクトの追加」をクリックします。プロジェクト表に、新しいプロジェクトが表示されます。

42.5.2 ビジネス・サービスの作成

サーバーと通信するために、ビジネス・サービスを作成します。

1. プロジェクト表の「SocketTest」プロジェクト名をクリックします。「SocketTest」パネルが表示されます。

2. サービスの作成メニューで「ビジネス・サービス」を選択します。「全般的な構成」パネルが表示されます。

3. 「全般的な構成」パネルで、「サービス名」フィールドにSocketBSと入力します。

4. 「サービス・タイプ」リストで「任意のXMLサービス」が選択されていることを確認し、「次へ」をクリックします。

5. 図39-1に示すように、「プロトコル」メニューでsocketを選択します。

6. 「エンドポイントURI」フィールドにtcp://localhost:7031と入力し、「追加」をクリックします。

7. 「次へ」をクリックします。

8. 次のパネルで、「次へ」をクリックしてデフォルトを受け入れます。

9. 「サマリー」パネルを確認してから「保存」をクリックします。

10. チェンジ・センターで「アクティブ化」をクリックします。

42.5.3 プロキシ・サービスの作成

この項では、プロキシ・サービスを作成します。

1. 「リソースの作成」メニューで「プロキシ・サービス」を選択します。

2. 「全般的な構成」パネルで、「サービス名」フィールドにSocketProxyと入力します。

3. 「サービス・タイプ」リストで「任意のXMLサービス」が選択されていることを確認し、「次へ」をクリックします。

4. 「プロトコル」メニューでsocketを選択します。

5. 「エンドポイントURI」フィールドにtcp://7032と入力し、「次へ」をクリックします。

6. 次のパネルでデフォルトを受け入れて、「次へ」をクリックします。

7. 「サマリー」パネルを確認してから「保存」をクリックします。

8. チェンジ・センターで「アクティブ化」をクリックします。

9. 「発行」をクリックします。

42.5.4 パイプラインの編集

ビジネス・サービスとプロキシ・サービスを定義したので、着信メッセージをビジネス・サービスにルーティングできるように、パイプラインを編集します。

パイプラインを編集するには:

1. チェンジ・センターで「作成」をクリックします。

2. 図42-4に示すように、「リソース」セクションの「SocketProxy」行で「メッセージ・フローの表示」アイコンをクリックします。

図42-4 メッセージ・フロー・アイコンの選択

3. 図42-5に示すように、メッセージ・フローの編集ウィンドウで「SocketProxy」アイコンをクリックし、メニューから「ルートの追加」を選択します。

図42-5 メッセージ・フローの編集

4. RouteNode1アイコンをクリックし、メニューから「ルートの編集」を選択します。

5. ステージ構成の編集ウィンドウで「アクションの追加」をクリックします。

6. 図42-6に示すように、「ルート・ノード」ウィンドウで「アクションの追加」をクリックし、メニューから「通信」→「ルーティング」を選択します。

図42-6 アクションの追加

7. 次のパネルで「<サービス>」を選択します。

8. 「サービスの選択」ウィンドウで、リストからSocketBSを選択し、「発行」をクリックします。

9. 「ステージ構成の編集」ウィンドウで「保存」をクリックします。

10. 必要に応じて、RouteNode1アイコンをクリックし、名前をSocketBSに変更します。

11. 「保存」をクリックします。

12. チェンジ・センターで「アクティブ化」をクリックし、「発行」をクリックします。

42.6 ソケット・トランスポート・プロバイダのテスト

この項では、Oracle Service Bus管理コンソールを使用してトランスポート・プロバイダをテストします。

1. 42.4.1項「ソケット・サーバーの起動」で説明したように、テスト・サーバーを起動します。

2. プロジェクト・エクスプローラで「SocketTest」をクリックします。

3. 図42-7に示すように、「リソース」表の「SocketProxy」行で「テスト・コンソールの起動」アイコンをクリックします。

図42-7 テスト・コンソールの起動

4. テスト・コンソールで、テキスト領域に有効なXMLスタンザを入力するか、「参照」ボタンを使用して、ローカル・システムの有効なXMLファイルを選択します。たとえば、図42-8では、テキスト領域に簡単なXML式<x/>を入力しています。

図42-8 テスト・コンソール

5. 「実行」をクリックします。テストが正常に終了すると、図42-9に示すような情報がテスト・コンソールに表示されます。また、テスト・コンソールにXMLテキストを入力すると、サーバー・コンソールにエコーされます。

図42-9 成功したテスト

6. テスト・コンソールを閉じます。

43 トランスポート・プロバイダのデプロイ

この章では、Oracle Service Busで使用するためにカスタム・トランスポート・プロバイダをパッケージ化してデプロイする方法について説明します。

この章の内容は次のとおりです。

- 43.1項「トランスポート・プロバイダのパッケージ化」

- 43.2項「トランスポート・プロバイダのデプロイ」

- 43.3項「トランスポート・プロバイダのアンデプロイ」

- 43.4項「クラスタへのデプロイ」

43.1 トランスポート・プロバイダのパッケージ化

カスタム・トランスポート・プロバイダを、完全に独立したEARファイルとしてパッケージ化する必要があります。そうすることにより、Oracle Service Bus Kernel EARおよびその他のOracle Service Bus関連のアプリケーションと共にデプロイできます。

ヒント:

サンプル・ソケット・トランスポート・プロバイダの例では、トランスポート・プロバイダを構成およびデプロイする方法を示しています。詳細は、第42章「サンプル・ソケット・トランスポート・プロバイダ」を参照してください。

各トランスポート・プロバイダは、次の2つの異なる部分で構成されます。

- 構成 - トランスポート・プロバイダの構成部分は、エンドポイントをトランスポート・プロバイダに登録するために、Oracle Service Bus管理コンソールによって使用されます。この構成動作は、UIインタフェースの実装によって実行されます。41.6項「ユーザー・インタフェースの構成」を参照してください。

- ランタイム - トランスポート・プロバイダのランタイム部分は、メッセージを送受信するビジネス・ロジックを実装します。

ヒント:

構成部分とランタイム部分が別のデプロイメント・ユニットに配置されるようにトランスポート・プロバイダをパッケージ化することをお薦めします。これにより、クラスタ・デプロイメントが容易になります。詳細は、43.4項「クラスタへのデプロイ」を参照してください。38.4項「トランスポート・プロバイダのコンポーネント」も参照してください。

43.2 トランスポート・プロバイダのデプロイ

この項では、トランスポート・プロバイダをデプロイする方法について説明します。

ヒント:

Oracle Service Busへのアプリケーションのデプロイの詳細は、『Oracle Fusion Middleware Oracle Service Busデプロイメント・ガイド』を参照してください。

トランスポート・プロバイダのデプロイ可能なEARファイルを作成したら、Oracle Service Busドメインにデプロイする必要があります。EARは、次のいずれかの方法でデプロイすることができます。

- プログラムを実行します(WebLogic Deployment Manager JSR-88 APIを使用)。

- Oracle WebLogic Server管理コンソールを使用します。

- 例43-1のようなエントリをOracle Service Busドメインのconfig.xmlファイルに追加します。

例43-1 アプリケーション・デプロイメント・エントリ

<app-deployment>
<name>My Transport Provider</name>
<target>AdminServer, myCluster</target>
<module-type>ear</module-type>
<source-path>$USER_INSTALL_DIR$/servicebus/lib/mytransport.ear</source-path>
<deployment-order>1234</deployment-order>
</app-deployment>

注意:

トランスポート・プロバイダのEARファイルのデプロイ順序は、トランスポート・プロバイダの前にすべてのOracle Service Bus Kernel EARがデプロイされるようにする必要があります。

43.2.1 トランスポートの登録

サーバーの再起動時に、デプロイしたトランスポートがすぐにサービス・リクエストの処理を開始できるようにすることが可能です。トランスポートをすぐに使用できるようにするには、weblogic.application.ApplicationLifecycleListenerクラスを拡張し、preStart()メソッドを使用して、TransportManager.registerProvider()によってトランスポートを登録します。

サンプル・ソケット・トランスポートには、参考として使用できるApplicationListenerクラスが含まれています。これは、OSB_ORACLE_HOME/samples/servicebus/socket-transport/src/com/bea/alsb/transports/sockにあります。

ApplicationLifecycleListenerを拡張する際は、必ず拡張クラスをMETA-INF/weblogic-application.xmlに登録してください。サンプル・ソケット・トランスポートは、OSB_ORACLE_HOME/samples/servicebus/sample-transport/META-INF/weblogic-application.xmlで、次のApplicationListenerクラスのエントリを提供しています。

<weblogic-application>
<listener>
<!-- This class gives callbacks for the deployment lifecycle and socket
transport is registered with ALSB whenever the application is started.
-->
<listener-class>com.bea.alsb.transports.sock.ApplicationListener
</listener-class>
</listener>
</weblogic-application>

43.3 トランスポート・プロバイダのアンデプロイ

Oracle Service Busに登録されたトランスポート・プロバイダのアンデプロイメントまたは登録取消しはサポートされません。

43.4 クラスタへのデプロイ

トランスポート・プロバイダは、Oracle Service Busがデプロイされているすべてのサーバーとクラスタにデプロイする必要があります。つまり、Oracle Service Busが管理サーバーのみにデプロイされている場合(管理サーバーには常にデプロイされる)、トランスポート・プロバイダを管理サーバーにデプロイする必要があります。Oracle Service Busが管理サーバーと管理対象サーバーのトポロジにデプロイされている場合は、トランスポート・プロバイダを管理サーバーと特定の管理対象サーバーにデプロイする必要があります。さらに、Oracle Service Busがクラスタにデプロイされている場合は、トランスポート・プロバイダを管理サーバーとクラスタにデプロイする必要があります。Oracle Service Busは、ドメインのトポロジに関係なく必ず管理サーバーにデプロイされます。

トランスポート・プロバイダのEARファイルにあるアプリケーション・コードは、トランスポートがどこにデプロイされているか(管理サーバーまたは管理対象サーバー)を動的に認識して、管理サーバーでは構成動作、管理対象サーバーでは実行時の動作のみを行う必要があります。

たとえば、some_transport.ear内の初期化疑似コードで、次のロジックを使用し、プロバイダの構成部分またはランタイム部分をアクティブにするかどうかを決定できます。

protected SomeTransportProvider() throws TransportException {
. . . some other initialization code . . .
if (!isRuntimeEnabled)
_engine = new RuntimeEngine(. . .);
}

この場合、RuntimeEngineクラスのインスタンスの作成は実行時の動作であるため、マルチサーバー・ドメインでは管理対象ノードのみ、シングル・サーバー・ドメインでは管理ノードでのみ実行される必要があります。

さらに、すでに説明したように、クラスタ環境では、TransportProvider.createEndPoint()およびdeleteEndPoint()は、クラスタ内の管理対象サーバーだけでなく管理サーバー上でも呼び出されます(WLS HTTPルーター/フロントエンド・ホストを除く)。一部のトランスポート・プロバイダは、指定された構成(HTTPなど)を持つエンドポイントが存在するという事実の登録以外は何もしないことを選択できます。通常、トランスポート・プロバイダは、createEndPoint()またはdeleteEndPoint()が管理サーバーと管理対象サーバーのどちらで呼び出されたかを確認して適切な動作を決定する必要があります。

第VII部

セキュリティ

ここでは、Oracle Service BusとOracle Service Busで処理されるメッセージを保護する方法を説明します。次の章が含まれます。

- 第44章「はじめに」

- 第45章「Oracle Service Busセキュリティの理解」

- 第46章「Oracle Service Busセキュリティに関するFAQ」

- 第47章「管理セキュリティの構成」

- 第48章「本番環境でのOracle Service Busのセキュリティ」

- 第49章「トランスポートレベルのセキュリティの構成」

- 第50章「Oracle Web Services Managerを使用したOracle Service Busのセキュリティ」

- 第51章「Oracle Service Busプロキシ・サービスとビジネス・サービスでのWS-Policyの使用」

- 第52章「Webサービスのメッセージレベルでのセキュリティの構成」

- 第53章「Oracle Service BusでのSAMLの使用」

- 第54章「カスタム認証の構成」

- 第55章「.Net 2.0でのメッセージレベルのセキュリティ」

44 はじめに

この章では、Oracle Service Busのセキュリティ・ドキュメントの対象読者について説明し、Oracle WebLogic Serverの関連セキュリティ・ドキュメントへのリンクを提供します。

Oracle Service Busのセキュリティ・ドキュメントでは、SSLやWebサービス・セキュリティなどの標準テクノロジをOracle独自のテクノロジと共に使用して、認可されたユーザーのみがOracle Service Busドメインのリソースおよびメッセージにアクセスできるようにする方法について説明します。

44.1 対象読者

このドキュメントは、次の読者を対象としています。

- アプリケーション設計者 - 組織のセキュリティ目標の設定や全体的なセキュリティ・アーキテクチャの設計に加えて、Oracle Service Busセキュリティ機能を評価し、最適な実装方法を決定する設計者です。アプリケーション設計者は、セキュリティ・システムおよび最先端のセキュリティ・テクノロジやツールの知識だけではなく、Javaプログラミング、Javaセキュリティ、およびネットワーク・セキュリティについて深い知識を持ちます。

- セキュリティ開発者 - Oracle Service Busに統合されるセキュリティ製品のシステム・アーキテクチャとインフラストラクチャの定義、およびOracle Service Busで使用するカスタム・セキュリティ・プロバイダの開発を中心に行う開発者です。アプリケーション設計者と連携して、セキュリティ・アーキテクチャを確実に設計に従って、セキュリティ・ホールが発生しないように実装します。また、セキュリティが確実に正しく構成されるよう、サーバー管理者とも連携します。セキュリティ開発者は、認証、認可、監査(AAA)などのセキュリティ概念についての確実な知識、JavaとJava Management eXtensions (JMX)についての深い知識、およびOracle WebLogic Server、Oracle Service Bus、セキュリティ・プロバイダ機能を操作するための知識を持ちます。

- アプリケーション開発者 - クライアント・アプリケーションの開発、WebアプリケーションやEnterprise JavaBeans (EJB)へのセキュリティの追加、およびセキュリティ機能を実装するために他のエンジニアリング・チーム、品質保証(QA)チーム、およびデータベース・チームとの共同作業を中心に行うJavaプログラマです。アプリケーション開発者は、Java(サーブレット、JSPなどのJ2EEコンポーネントやJSEEなど)およびJavaセキュリティの深い知識を持ちます。

- サーバー管理者 - アプリケーション設計者と密接に連携しながら、サーバーおよびサーバー上で動作するアプリケーションのセキュリティ方式の設計、潜在的なセキュリティ・リスクの特定、およびセキュリティ上の問題を防止する構成の提案を行います。関連する責務として、重要な本番システムの保守、セキュリティ・レルムの構成と管理、サーバー・リソースとアプリケーション・リソースへの認証および認可方式の実装、セキュリティ機能のアップグレード、およびセキュリティ・プロバイダのデータベースの保守などが含まれる場合もあります。サーバー管理者は、Webサービス、WebアプリケーションとEJBのセキュリティ、公開鍵セキュリティ、SSL、SAML (Security Assertion Markup Language)を含むJavaセキュリティ・アーキテクチャに関する深い知識を備えています。

- アプリケーション管理者 - サーバー管理者と共同でセキュリティ構成や、認証および認可方式を実装および管理したり、定義されたセキュリティ・レルムでデプロイされたアプリケーション・リソースへのアクセスを設定および管理したりします。アプリケーション管理者は、セキュリティの概念やJavaセキュリティ・アーキテクチャの一般的な知識を備えています。また、Java、XML、デプロイメント記述子を理解し、サーバー・ログおよび監査ログでセキュリティ・イベントを特定できます。

44.2 関連項目

Oracle Service Busでは、より高度なセキュリティ・サービスの基盤として、Oracle WebLogicセキュリティ・フレームワークを使用します。これには、認証、IDアサーション、認可、ロール・マッピング、監査、および資格証明マッピングなどが含まれます。Oracle WebLogicセキュリティについては、このドキュメントに加えて次のドキュメントを参照してください。

- Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解

- 『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』

- Oracle Fusion Middleware Oracle WebLogic Serverプロダクション環境の保護

- Oracle Fusion Middleware Oracle WebLogic Serverの保護

- Oracle Fusion Middleware Oracle WebLogic Serverロールおよびポリシーによるリソースの保護

45 Oracle Service Busセキュリティの理解

この章では、Oracle Service Busのセキュリティ・モデルの概要とその機能(インバウンド・セキュリティおよびアウトバウンド・セキュリティを含む)について説明します。

Oracle Service Busでは、通信の整合性とプライバシを保証し、認可されたユーザーだけがOracle Service Busドメインのリソースにアクセスできるようにするために、オープンな業界標準をサポートしています。また、セキュリティ・サービスの構成要素として、基になっているWebLogicセキュリティ・フレームワークを使用します。

Oracle WebLogicセキュリティ・フレームワークでは、ドメインを保護するための作業が認証、認可、資格証明マッピング、監査などの複数のコンポーネント(プロバイダ)に分かれています。特定のOracle Service Busドメインに対して、必要なプロバイダのみを構成します。

この章の内容は次のとおりです。

- 45.1項「インバウンド・セキュリティ」

- 45.2項「アウトバウンド・セキュリティ」

- 45.3項「IDの伝播のオプション」

- 45.4項「管理セキュリティ」

- 45.7項「Oracle WebLogicセキュリティ・フレームワークの構成: 主な手順」

- 45.8項「コンテキスト・プロパティがセキュリティ・プロバイダに渡される」

- 45.9項「セキュリティ・プロバイダの使用」

45.1 インバウンド・セキュリティ

インバウンド・セキュリティによって、Oracle Service Busプロキシ・サービスは認可されたクライアントから出されたリクエストのみを処理できます(デフォルトでは、すべての匿名ユーザーまたは認証ユーザーがプロキシ・サービスに接続できます)。また、クライアントからデータが送信されたときに、認可されていないユーザーがそのデータを参照または変更していないことが保証されます。

プロキシ・サービスは、サービス・コンシューマと他のプロキシ・サービスという2つのタイプのクライアントを持つことができます。図45-1に、プロキシ・サービスとそのクライアント間の通信がインバウンド・セキュリティによって保護され、一方プロキシ・サービスとビジネス・サービス間の通信がアウトバウンド・セキュリティによって保護されることを示します。

図45-1 インバウンド・セキュリティとアウトバウンド・セキュリティ

インバウンド・セキュリティはプロキシ・サービスの作成時に設定し、ニーズの変化に応じて変更できます。外向きのプロキシ・サービス(サービス・コンシューマからリクエストを受信します)の場合は、双方向SSL over HTTPSなどの厳密なセキュリティ要件の設定を検討します。他のOracle Service Busプロキシ・サービスからのみリクエストを受信することが保証されているプロキシ・サービスの場合は、これよりセキュリティの低いプロトコルを使用できます。

プロキシ・サービスで、デジタル署名、暗号化、またはSSL認証に対して公開鍵インフラストラクチャ(PKI)テクノロジを使用する場合は、証明書とペアの秘密鍵を提供するサービス・キー・プロバイダを作成します。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダに関する項を参照してください。

各プロキシ・サービスに対し、次のインバウンド・セキュリティ・チェックを構成できます。

- トランスポートレベルのセキュリティは、クライアントとプロキシ・サービス間の接続確立の一部としてセキュリティ・チェックを適用します。トランスポートレベルのセキュリティによって適用できるセキュリティ要件は、プロキシ・サービスで使用するように構成するプロトコルによって異なります。
たとえば、HTTPプロトコル経由で通信するプロキシ・サービスの場合、Oracle Service Bus管理コンソールの「セキュリティ構成」モジュールで作成したユーザーのデータベースに対してすべてのクライアントが認証するように要求できます。次に、認証されたユーザーに対してプロキシ・サービスへのアクセスを認可する条件を指定するためのアクセス制御ポリシーを作成します。

Oracle Service Busは、トランスポート・レベルのインバウンド・リクエストでクライアント指定のカスタム認証トークンをサポートします。

サポートされる各プロトコルに対するトランスポートレベルのセキュリティの構成は、第49章「トランスポートレベルのセキュリティの構成」を参照してください。

- メッセージレベルのセキュリティでのカスタム認証。Oracle Service Busは、トランスポートレベルおよびメッセージレベルのインバウンド・リクエストでクライアント指定のカスタム認証資格証明をサポートします。カスタム認証の資格証明は、カスタム・トークン、またはユーザー名とパスワードの形式になります。
カスタム認証によるトランスポートレベルおよびメッセージレベルのセキュリティの構成は、第54章「カスタム認証の構成」を参照してください。

- メッセージレベルのセキュリティ(Webサービスであるプロキシ・サービス用)は、WS-Security仕様の一部です。メッセージレベルのセキュリティでは、SOAPメッセージまたはSOAPメッセージの特定の部分を処理する前にセキュリティ・チェックを適用します。
メッセージ・レベルでのセキュリティの構成部分は、Webサービスと関連付けられたWSDLドキュメントおよびWS-Policyドキュメントに埋め込むことができます。これらのドキュメントでは、SOAPメッセージをデジタル署名したり暗号化したりする必要があるかどうか、および認可されたユーザーのみが呼び出すことができるWebサービスの操作を指定します。

WS-Policyをサービスにバインドする別の方法もあります。「WS-Policy」ページを使用して、ポリシーをサービス全体、サービスの個々の操作、または個々の操作のリクエスト・メッセージあるいはレスポンス・メッセージにバインドできます。

プロキシ・サービスまたはビジネス・サービスがWS-Policy文を使用して1つ以上の操作へのアクセスを保護する場合、および(パススルー・サービスとは対照的に)アクティブな仲介としてサービスを構成する場合は、Oracle Service Bus管理コンソールを使用してメッセージ・レベルのアクセス制御ポリシーを作成します。ポリシーでは、保護された操作を呼び出すためにユーザー、グループ、またはセキュリティ・ロールを認可する条件を指定します。

メッセージレベルでのセキュリティの構成の詳細は、第52章「Webサービスのメッセージレベルでのセキュリティの構成」を参照してください。

45.2 アウトバウンド・セキュリティ

アウトバウンド・セキュリティは、プロキシ・サービスとビジネス・サービス間の通信を保護します。アウトバウンド・セキュリティのために行うタスクのほとんどは、ビジネス・サービスで指定されるトランスポート・レベルまたはメッセージ・レベルのセキュリティ要件に準拠するためのプロキシ・サービスの構成のためのものです。

たとえば、ビジネス・サービスでユーザー名とパスワード・トークンが必要な場合は、サービス・アカウントを作成します。このサービス・アカウントは、ユーザー名とパスワードを直接含み、アウトバウンド・リクエストに含まれていたユーザー名とパスワードを渡すか、またはアウトバウンド・リクエストに含まれていたユーザー名に応じてユーザー名とパスワードを提供します。詳細は、2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

ビジネス・サービスでデジタル署名またはSSL認証のためにPKIテクノロジを使用する必要がある場合は、証明書とペアの秘密鍵を提供するサービス・キー・プロバイダを作成します。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダに関する項を参照してください。

45.3 IDの伝播のオプション

Oracle Service Busのセキュリティの設計時に決定する必要がある主な項目の1つは、クライアントが提供するIDの処理(伝播)方法です。Oracle Service Busの構成によって、次のことを実行できます。

- クライアントが提供する資格証明を認証します。

- 認可チェックを実行します。

- クライアント資格証明を変更せずにビジネス・サービスに渡します。

- ビジネス・サービスが認証および認可できる別の資格証明にクライアント資格証明をマップします。

- セキュリティ・テクノロジ間を橋渡しします。

表45-1は、Oracle Service BusがクライアントIDをビジネス・サービスに伝播する方法に影響するオプションについての説明です。

表45-1 IDの伝播のオプション

オプション

説明

クライアントが提供する必要があるのはどのタイプの資格証明か。

トランスポート・レベルのセキュリティの場合、Oracle Service Busは既存のセキュリティ要件に合わせます。Oracle Service Busのクライアントは、ユーザー名とパスワード・トークン、SSL証明書、または構成したIDアサーション・プロバイダによってサポートされる他のタイプのカスタム認証トークンを提供できます。

メッセージレベルのセキュリティの場合、Oracle Service Busではユーザー名トークン、X.509トークン、構成した認証プロバイダまたはIDアサーション・プロバイダによってサポートされるその他のカスタム認証トークン、およびSAMLトークン・プロファイルをサポートします(45.9項「セキュリティ・プロバイダの使用」を参照)。

Webサービス・セキュリティを使用する新しいビジネス・サービス用のセキュリティ要件を確立する場合は、SAMLトークンを提供するようクライアントに要求することを推奨します。SAMLは、Webサービス内でユーザーIDを伝播するための新しい標準です。第53章「Oracle Service BusでのSAMLの使用」を参照してください。

Oracle Service Busでクライアントを認証するように要求するか、またはクライアントが提供する資格証明をそのまま認証のためにビジネス・サービスに渡すか。

Oracle Service Busでクライアントに認証を要求するときは、新たなセキュリティのレイヤーを追加します。通常、追加するセキュリティ・レイヤーが多いほど、ドメインの安全性が高くなります。

Oracle Service Busでユーザーを認証するには、Oracle Service Bus管理コンソールでユーザー・アカウントを作成する必要があります。ユーザーの集合が非常に大きい場合は、Oracle Service Bus管理コンソールでユーザー・アカウントの大規模なデータベースを保守するだけの価値があるかどうかを検討する必要があります。

X.509トークンまたはSAMLトークンを提供するクライアントをOracle Service Busで認証する場合は、どのOracle Service Busユーザーがトークンにマップされるか。

Oracle Service Busで認証するようにクライアントに要求し、特定の認証されたユーザーのみがプロキシ・サービスにアクセスできるように、デフォルトのアクセス制御ポリシーを変更することを推奨します。

X.509証明書、SAMLトークン、またはユーザー名とパスワード以外の別のタイプの資格証明を提供するクライアントの認証と認可を行うには、クライアントの資格証明をOracle Service BusユーザーにマップするIDアサーション・プロバイダを構成する必要があります。Oracle Service Busはこのユーザー名を使用して、クライアントのセキュリティ・コンテキストを確立します。

カスタム認証トークンを提供するクライアントをOracle Service Busで認証する場合は、どのOracle Service Busユーザーがトークンにマップされるか。

Oracle Service Busで認証するようにクライアントに要求し、特定の認証されたユーザーのみがプロキシ・サービスにアクセスできるように、デフォルトのアクセス制御ポリシーを変更することを推奨します。

ユーザー名とパスワード以外のカスタム認証トークンを提供するクライアントの認証と認可を行うには、クライアントの資格証明をOracle Service BusユーザーにマップするIDアサーション・プロバイダを構成する必要があります。Oracle Service Busはこのユーザー名を使用して、クライアントのセキュリティ・コンテキストを確立します。

ユーザー名とパスワード・トークンを提供するクライアントをOracle Service Busで認証する場合は、次の処理を行うかどうか。

- クライアントのユーザー名とパスワードをビジネス・サービスに渡します。

- クライアントのユーザー名を新しいユーザー名とパスワードにマップし、新しい資格証明をビジネス・サービスに渡します。

54.1項「カスタム認証トークンとは」の説明のように、カスタム・ユーザー名/パスワード・トークンが使用されると場合、カスタム・トークンのユーザー名とパスワードをアウトバウンドHTTP BASICまたはアウトバウンドWS-Security Username Token認証で使用できます(パススルー・サービス・アカウントが使用される場合)。

クライアントが提供するユーザー名とパスワードをビジネス・サービスに渡す場合、クライアントはビジネス・サービスが要求する資格証明を保守する責任があります。ビジネス・サービスがセキュリティ要件を変更する場合は、対応する変更を行うように各クライアントに通知する必要があります。

ビジネス・サービスが要件を頻繁に変更する可能性がある場合は、クライアントの提供する資格証明からビジネス・サービスの要求する資格証明へのマッピングについて検討します。ビジネス・サービスのクライアントが増えると、この資格証明マッピングを保守するために必要な作業が多くなります。

表45-2は、インバウンドおよびアウトバウンドのトランスポートレベルのセキュリティに対して適用できる要件のすべての組合せについての説明です。

表45-2 トランスポートレベルのセキュリティ要件の組合せ

インバウンド要件

組合せ可能なアウトバウンド要件

構成方法

クライアントがHTTPヘッダー内にユーザー名とパスワードを提供し、Oracle Service Busがクライアントを認証します。

クライアントの資格証明をHTTPヘッダーで渡します。

1. インバウンドHTTPセキュリティを構成します。49.2.1項「インバウンドHTTPセキュリティの構成: 主な手順」を参照してください。
クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに必ず追加してください。

2. アウトバウンドHTTPセキュリティを構成します。49.2.2項「アウトバウンドHTTPセキュリティの構成: 主な手順」を参照してください。

必ず パススルー ・サービス・アカウントを作成し、そのアカウントをビジネス・サーバーに添付するようにします。

前述の要件と同じです。

クライアントの資格証明を別のOracle Service Busユーザーにマップし、新しい資格証明をHTTPヘッダーで渡します。

1. インバウンドHTTPセキュリティを構成します。49.2.1項「インバウンドHTTPセキュリティの構成: 主な手順」を参照してください。
クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに必ず追加してください。

2. アウトバウンドHTTPセキュリティを構成します。49.2.2項「アウトバウンドHTTPセキュリティの構成: 主な手順」を参照してください。

必ず ユーザーマッピング ・サービス・アカウントを作成し、そのアカウントをビジネス・サーバーに添付するようにします。

クライアントがHTTPヘッダー内にユーザー名とパスワードを提供し、Oracle Service Busはクライアントを認証しません。

クライアントの資格証明をHTTPヘッダーで渡します。

1. インバウンドHTTPセキュリティを構成します。49.2.1項「インバウンドHTTPセキュリティの構成: 主な手順」を参照してください。
HTTP(認証なし)またはHTTPS(一方向SSL、認証なし)でプロキシ・サービスを構成するようにします。

2. アウトバウンドHTTPセキュリティを構成します。49.2.2項「アウトバウンドHTTPセキュリティの構成: 主な手順」を参照してください。

HTTP (BASIC認証)またはHTTPS(一方向SSL、BASIC認証)でビジネス・サービスを構成するようにします。

また、 パススルー ・サービス・アカウントを作成し、そのアカウントをビジネス・サーバーに添付します。

クライアントがHTTPヘッダー内にカスタム認証トークンを提供します。Oracle Service Busはクライアントを認証します。

クライアントの資格証明を別のOracle Service Busユーザーにマップし、新しい資格証明をHTTPヘッダーで渡します。

1. インバウンドHTTPセキュリティを構成します。49.2.1項「インバウンドHTTPセキュリティの構成: 主な手順」を参照してください。
クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに必ず追加してください。

2. アウトバウンドHTTPセキュリティを構成します。49.2.2項「アウトバウンドHTTPセキュリティの構成: 主な手順」を参照してください。

必ず ユーザーマッピング ・サービス・アカウントを作成し、そのアカウントをビジネス・サーバーに添付するようにします。

あらゆる形のローカル認証(HTTPまたはHTTPS基本、あるいは資格証明マッピングによるHTTPSクライアント証明書)。

クライアントの資格証明をEJB over RMIに渡します。EJBコンテナでユーザーを認証します。

パススルー・サービス・アカウントを作成し、そのアカウントをビジネス・サービスに添付します。2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

表45-3は、インバウンドおよびアウトバウンドのメッセージレベルのセキュリティに対して適用できる要件のすべての組合せについての説明です。場合によっては、トランスポートレベルのセキュリティのインバウンド要件が、アウトバウンドのメッセージレベル・セキュリティに適用できる要件に影響します。

表45-3 メッセージレベルのセキュリティ要件の組合せ

インバウンド要件

組合せ可能なアウトバウンド要件

構成方法

クライアントがHTTPヘッダー内にユーザー名とパスワード、またはカスタム認証トークンを提供し、Oracle Service Busがクライアントを認証します。

クライアントの資格証明をSOAPヘッダーで渡します。

1. インバウンドHTTPセキュリティを構成します。49.2.1項「インバウンドHTTPセキュリティの構成: 主な手順」を参照してください。
クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに必ず追加してください。

2. パススルー・サービス・アカウントを作成し、そのアカウントをビジネス・サービスに添付します。2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

前述の要件と同じです。

クライアントの資格証明を別のOracle Service Busユーザーにマップし、新しい資格証明をSOAPヘッダーで渡します。

1. インバウンドHTTPセキュリティを構成します。49.2.1項「インバウンドHTTPセキュリティの構成: 主な手順」を参照してください。
クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに必ず追加してください。

2. ユーザーマッピング・サービス・アカウントを作成し、そのアカウントをビジネス・サービスに添付します。2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

前述の要件と同じです。

クライアント資格証明をSAMLトークンにマップします。Oracle Service BusがユーザーIDアサーションを行います。

1. インバウンドHTTPセキュリティを構成します。49.2.1項「インバウンドHTTPセキュリティの構成: 主な手順」を参照してください。
クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに必ず追加してください。

2. SAML資格証明マッピング・プロバイダを構成します。詳細は、53.1項「IDのSAMLトークンへのマッピング」を参照してください。

クライアントがメッセージ・ヘッダーまたはメッセージ本体内にユーザー名とパスワード、またはカスタム認証トークンを提供し、Oracle Service Busがクライアントを認証します。

クライアントの資格証明をSOAPヘッダーで渡します。

1. カスタム・トークンまたはユーザー名/パスワードを処理するように、認証プロバイダまたはIDアサーション・プロバイダを構成します。
クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに必ず追加してください。

2. パススルー・サービス・アカウントを作成し、そのアカウントをビジネス・サービスに添付します。2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

前述の要件と同じです。

クライアントの資格証明を別のOracle Service Busユーザーにマップし、新しい資格証明をSOAPヘッダーで渡します。

1. カスタム・トークンまたはユーザー名/パスワードを処理するように、認証プロバイダまたはIDアサーション・プロバイダを構成します。
クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに必ず追加してください。

2. ユーザーマッピング・サービス・アカウントを作成し、そのアカウントをビジネス・サービスに添付します。2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

前述の要件と同じです。

クライアント資格証明をSAMLトークンにマップします。Oracle Service BusがユーザーIDアサーションを行います。

1. カスタム・トークンまたはユーザー名/パスワードを処理するように、認証プロバイダまたはIDアサーション・プロバイダを構成します。
クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに必ず追加してください。

2. SAML資格証明マッピング・プロバイダを構成します。詳細は、53.1項「IDのSAMLトークンへのマッピング」を参照してください。

クライアントがHTTPヘッダー内にユーザー名とパスワードを提供し、Oracle Service Busはクライアントを認証しません。

クライアントの資格証明をSOAPヘッダーで渡します。

1. インバウンドHTTPセキュリティを構成します。49.2.1項「インバウンドHTTPセキュリティの構成: 主な手順」を参照してください。
HTTP(認証なし)またはHTTPS(一方向SSL、認証なし)でプロキシ・サービスを構成するようにします。

2. アウトバウンドHTTPセキュリティを構成します。49.2.2項「アウトバウンドHTTPセキュリティの構成: 主な手順」を参照してください。

HTTP (BASIC認証)またはHTTPS(一方向SSL、BASIC認証)でビジネス・サービスを構成するようにします。

また、 パススルー ・サービス・アカウントを作成し、そのアカウントをビジネス・サーバーに添付します。

クライアントがHTTPSクライアント証明書認証(双方向SSL)の一部として証明書を提供し、Oracle Service Busがクライアントを認証します。

クライアント資格証明をSAMLトークンにマップします。Oracle Service BusがユーザーIDアサーションを行います。

1. インバウンドHTTPセキュリティを構成します。49.2.1項「インバウンドHTTPセキュリティの構成: 主な手順」を参照してください。

2. SAML資格証明マッピング・プロバイダを構成します。詳細は、53.1項「IDのSAMLトークンへのマッピング」を参照してください。

アクティブな仲介プロキシ・サービスが、ユーザー名トークン・プロファイルによるWebサービス・セキュリティを強制します。

SOAPメッセージのユーザー名とパスワード・トークンとして資格証明をコード化します。

パスワード(パスワード・ダイジェストではない)を要求するWS-Policy文でアクティブな仲介プロキシ・サービスを作成します。52.3.1項「アクティブな仲介プロキシ・サービスの作成: 主な手順」を参照してください。

前述の要件と同じです。

SOAPメッセージのSAMLトークンとして資格証明をコード化します。

1. パスワードを要求するWS-Policy文でアクティブな仲介プロキシ・サービスを作成します。52.3.1項「アクティブな仲介プロキシ・サービスの作成: 主な手順」を参照してください。

2. SAML資格証明マッピング・プロバイダを構成します。詳細は、53.1項「IDのSAMLトークンへのマッピング」を参照してください。

アクティブな仲介プロキシ・サービスが、X.509トークン・プロファイルによるWebサービス・セキュリティを強制します。

SOAPメッセージのSAMLトークンとして資格証明をコード化します。

1. デジタル署名および必要に応じてX.509トークンによる認証を要求するWS-Policy文で、アクティブな仲介プロキシ・サービスを作成します。52.3.1項「アクティブな仲介プロキシ・サービスの作成: 主な手順」を参照してください。

2. SAML資格証明マッピング・プロバイダを構成します。詳細は、53.1項「IDのSAMLトークンへのマッピング」を参照してください。

アクティブな仲介プロキシ・サービスが、SAMLトークン・プロファイルによるWebサービス・セキュリティを強制します。

アウトバウンドSOAPメッセージに新しいSAMLトークンを生成します。

1. SAMLトークンを要求するWS-Policy文でアクティブな仲介プロキシ・サービスを作成します。53.3項「プロキシ・サービス・リクエストでのSAMLトークンの認証」を参照してください。

2. SAML資格証明マッピング・プロバイダを構成します。詳細は、53.1項「IDのSAMLトークンへのマッピング」を参照してください。

ユーザー名とパスワード、X.509トークン、またはSAMLトークンを渡すことができるパススルー・プロキシ・サービス。

ユーザー名トークン・プロファイル、X.509トークン・プロファイル、またはSAMLトークン・プロファイルを使用するビジネス・サービス。

1. パススルー・プロキシ・サービスを作成します。52.3.1項「アクティブな仲介プロキシ・サービスの作成: 主な手順」を参照してください。

2. いずれかのトークン・プロファイルを強制するビジネス・サービスを作成します。52.4項「ビジネス・サービスのメッセージレベルのセキュリティの構成: 主な手順」または53.2項「SAMLパススルーIDの伝播の構成」を参照してください。

インバウンドTuxedoリクエストの場合は、次のセキュリティ要件を構成できます。

- Tuxedoサービスのアウトバウンド呼出しでクライアントの資格証明をコード化します。

- ユーザー名トークンまたはSAMLトークンとしてアウトバウンドSOAPメッセージでクライアントの資格証明をコード化します。

- クライアントの資格証明を別のOracle Service Busユーザーにマップし、新しい資格証明をアウトバウンドHTTPヘッダーで渡します。

- クライアントの資格証明を別のOracle Service Busユーザーにマップし、新しい資格証明をEJB over RMIに渡します。EJBコンテナでユーザーを認証します。

Oracle Service BusでのTuxedoの使用方法の詳細は、第35章「Tuxedoトランスポート」を参照してください。

45.3.1 例: ユーザー名トークンによる認証

図45-2に、Oracle Service Busを次のように構成したときの、Oracle Service Bus全体のユーザーIDの流れを示します。

- リクエストでユーザー名とパスワードを提供するようにクライアントに要求する
トランスポート・レベル、メッセージ・レベル、または両方のレベルで資格証明を提供するようにWebサービス・クライアントに要求できます。両方のレベルで資格証明を提供するようにクライアントに要求する場合、Oracle Service BusはIDの伝播および資格証明マッピングに対してメッセージ・レベルの資格証明を使用します。

- クライアントを認証します。

図45-2 サービス・アカウントの使用方法

この図は、インバウンド・リクエストで開始され、アウトバウンド・リクエストで終了します。

1. あるクライアントがプロキシ・サービスにリクエストを送信します。リクエストには、ユーザー名とパスワード資格証明が含まれます。
クライアントは、認証のためにX.509証明書、カスタム認証トークンなどの他のタイプのトークンを送信することもできます。クライアントがX.509証明書トークンまたはカスタム・トークンを送信する場合は、トークンのIDをOracle Service Busセキュリティ・コンテキストにマップするようにIDアサーション・プロバイダを構成する必要があります。

2. プロキシ・サービスは、ドメインの認証プロバイダ・ストアにそのユーザーが存在するかどうかをドメインの認証プロバイダに問い合せます。
ユーザーが存在する場合、プロキシ・サービス用に構成したアクセス制御ポリシーを評価するように、プロキシ・サービスがドメインの認可プロバイダに依頼します。

3. プロキシ・サービスのアクセス制御ポリシーによってユーザーのアクセスが許可されている場合、プロキシ・サービスはメッセージを処理します。ビジネス・サービスへのアウトバウンド・リクエスト生成の一部として、プロキシ・サービスは、ビジネス・サービスが要求するユーザー名とパスワードを提供するようにビジネス・サービスに依頼します。
ビジネス・サービスは、その資格証明のサービス・アカウントを問い合せます。サービス・アカウントの構成方法に応じて、次のいずれかの処理を行います。

- 特定の(静的な)ユーザー名とパスワードをコード化するようにプロキシ・サービスに要求します。

- クライアントが提供するユーザー名とパスワードを渡すようにプロキシ・サービスに要求します。

- 認証プロバイダから返されたユーザー名を別の(リモート)ユーザー名にマップし、このリモート・ユーザー名をコード化するようにプロキシ・サービスに要求します。

4. プロキシ・サービスは、サービス・アカウントから返されたユーザー名とパスワードと共にアウトバウンド・リクエストを送信します。

45.4 管理セキュリティ

プロキシ・サービスやビジネス・サービスの作成など、管理機能へのアクセスを保護するため、Oracle Service Busには、事前定義されたアクセス権限を持つ4つのセキュリティ・ロールが用意されています。

- IntegrationAdmin

- IntegrationDeployer

- IntegrationMonitor

- IntegrationOperator

セキュリティ・ロールとは、実行時にユーザーやグループに動的に与えることができるIDです。これらの管理セキュリティ・ロールのアクセス権限は変更できませんが、それらのロールのいずれかにユーザーまたはグループを入れるための条件は変更できます。

Oracle Service Busのロールには、Oracle Service Busのリソースのみを変更する権限があります。Oracle WebLogic ServerまたはOracle WebLogic Server上の他のリソースを変更する権限はありません。管理ユーザーをロールに割り当てるときは、最低1人のユーザーをOracle WebLogic Server Adminロールに割り当てます。Oracle WebLogic Serverセキュリティ・ロールの詳細は、表47-2を参照してください。

詳細は、第47章「管理セキュリティの構成」を参照してください。

45.5 アクセス制御ポリシー

アクセス制御によって、Oracle Service Busのリソースにアクセスするユーザーを決定します。アクセス制御ポリシーは、ユーザー、グループ、またはロールがプロキシ・サービスにアクセスできるようにするための条件を指定します。たとえば、あるプロキシ・サービスへのアクセスを、GoldCustomerロールのユーザーには常に許可し、SilverCustomerロールのユーザーには平日の午後12時以降にのみ許可するというポリシーを作成することができます。

アクセス制御ポリシーは、WebLogicリソースと、1つまたは複数のユーザー、グループ、またはセキュリティ・ロールとの間の関連付けです。セキュリティ・ポリシーは、権限のないアクセスからWebLogicリソースを保護します。アクセス制御ポリシーは特定のリソースに割り当てられてたブール式です。リソースへのアクセスが試行されると、式が評価されます。式は、ロール(オペレータ)とアクセス時間(午前8時から午後5時)など、ブール演算子で結合された1つまたは複数の条件で構成されます。アクセス制御ポリシーの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』のセキュリティの基本に関する項を参照してください。

Oracle Service Busは、Oracle WebLogic Serverのセキュリティ・レルムを使用してリソースを保護します。各セキュリティ・レルムは、構成されたセキュリティ・プロバイダ、ユーザー、グループ、セキュリティ・ロール、および(アクセス制御)セキュリティ・ポリシーの集合から成ります。レルムに属するリソースにアクセスするには、47.1項「管理セキュリティ・ロールと権限」に記述されているように、ユーザーはそのレルムで定義されているセキュリティ・ロールを割り当てられている必要があります。ユーザーがOracle Service Busリソースへのアクセスを試みると、Oracle WebLogic Serverが関連するセキュリティ・レルムとセキュリティ・ポリシーをチェックして、ユーザーに割り当てられているセキュリティ・ロールを確認し、ユーザーを認証および認可します。

注意:

Oracle Service Bus管理コンソールでセキュリティ・ポリシーの定義またはセキュリティ・ロールの編集を行うことができるのは、Oracle WebLogic Server管理者のみです。

すべてのプロキシ・サービスに対して、トランスポート・レベルのポリシーを作成することができます。トランスポート・レベルのポリシーでは、クライアントがプロキシ・サービスとの接続を確立しようとしたときにセキュリティ・チェックが適用されます。トランスポート・レベルのポリシーのリストに入っているユーザーからのリクエストだけが続行を許可されます。

WS-Securityのアクティブな仲介、またはメッセージ・レベルのカスタム認証を実装するプロキシ・サービスの場合は、メッセージ・レベルのポリシーを作成することもできます。このタイプのポリシーでは、保護されているいずれかの操作をクライアントが呼び出そうとしたときにセキュリティ・チェックが適用されます。メッセージ・レベルのポリシーのリストに入っているユーザーだけが、その操作を呼び出せます。

Oracle Service Bus管理コンソールには、ユーザー、グループ、セキュリティ・ロールを表示および構成するための「セキュリティ構成」モジュールが含まれます。また、Oracle Service Bus管理コンソールでは資格証明の表示と構成もできます。

45.5.1 プロキシ・サービスのアクセス制御の構成

すべてのプロキシ・サービスに対してトランスポート・レベルのアクセス制御を構成できます。また、WS-Securityのアクティブな仲介プロキシ・サービス、またはメッセージ・レベルのカスタム認証を実装するすべてのプロキシ・サービスに対して、メッセージ・レベルでアクセス制御を構成することもできます。アクセス制御を構成するには、トランスポート・レベルまたはメッセージ・レベル(あるいはその両方)でプロキシ・サービスにアクセス制御ポリシーを割り当てる必要があります。

すべてのプロキシ・サービスに対するデフォルトのトランスポート・レベルおよびメッセージ・レベルのアクセス制御ポリシーによって、すべてのリクエストにアクセスを許可します。アクセス制御ポリシーをプロキシ・サービスに割り当てて、それを保護する必要があります。

トランスポートレベルのアクセス・ポリシーの編集に関する項とメッセージレベルのアクセス・ポリシーの編集に関する項の手順に従って、Oracle Service Bus管理コンソールでトランスポートレベルとメッセージレベルのアクセス制御ポリシーを構成します。

45.5.2 アクセス制御ポリシーの管理

アクセス制御ポリシーは認可プロバイダに保持されます。また、Oracle Service Busリポジトリにもこれらへの参照があります。

3.0以前のリリースの場合と同様に、アクセス制御ポリシーは、セッション外ではなく、Oracle Service Bus設計セッション内で管理されます。変更がセッション内で行われるため、他のリソースと同じように変更をコミットまたは破棄できます。

Oracle Service Bus管理コンソールでACLを管理できますが、Oracle Service Busの外でもポリシーを変更できます。ただし、Oracle Service Busの外でポリシーを変更するとOracle Service Busの参照が期限切れになり、無効になる場合があります。

そのため、一貫した管理には、Oracle Service Busセッション外(認可プロバイダMBeansまたはサード・パーティの認可プロバイダ・ツールを使用)でACLを完全に管理するか、またはOracle Service Busセッション内でACLを完全に管理します。2つの方法を組み合せると、ポリシー表示の一貫性が失われる場合があります。

Oracle Service Busは、プロキシ・サービスのアクセス制御ポリシーのみを管理します。他のサーバー・リソース(JMSキュー、JNDIエントリ、EJB、アプリケーション、Oracle WebLogic Serverインスタンス、データ・ソースなど)のアクセス制御ポリシーは、Oracle WebLogic Server管理コンソールから管理する必要があります。

注意:

セッションでサービスのクローンを作成すると、ACLのクローンも作成されます。ユーザーがセッションをコミットすると、サービスのACLが認可プロバイダにコミットされます。そのため、サービスのクローンを作成するときは、クローンが元のACLと同じACLを持つようにするかどうかを決定する必要があります。同じACLを持たないようにする場合は、必ずクローンのACLを編集してください。

45.5.2.1 プロキシ・サービスの削除

プロキシ・サービスを削除すると、Oracle Service Busがコントロールするリポジトリから、および適切な認可プロバイダから参照された全てのACLのプロキシが削除されます。

45.5.2.2 プロキシ・サービスに割り当てられているアクセス制御ポリシーの削除

サービスを削除せずに、サービスに割り当てられているアクセス制御ポリシーを削除することもできます。これを行うには:

1. セッションを作成します。

2. 「プロキシ・サービスの表示」→「セキュリティ」タブを選択し、「トランスポート・アクセス制御」オプションを編集してポリシーを削除します。

3. セッションをコミットします。

45.5.2.3 プロキシ・サービスの移動または名前の変更

プロキシ・サービスの名前を適切に変更すると、すべてのポリシーが移動されます。サービスの名前の変更または移動は、Oracle Service Busセッション内でのみ行う必要があります。

45.5.2.4 プロキシ・サービスの操作の名前の変更

操作の名前を変更すると、既存の操作が透過的に削除され、新しい操作が作成されます。

ただし、WSDLを変更することで操作の名前が変更された場合、Oracle Service Busは、古い操作のポリシーを無効と見なし、Oracle Service Busリポジトリから参照を削除し、該当する認可プロバイダからポリシーを削除します。

この場合、Oracle Service Busは、古い操作が新しい操作に名前が変更されたことを認識せず、新しい操作には新しく追加を 行いません 。つまり、Oracle Service Busは、この新しい操作にはポリシーがないものとみなします。

新しい操作に、適切なポリシーを手動で追加する必要があります。これは、操作の名前の変更が完了した後に、名前変更と同じセッションで行えます。

45.6 インポート時のセキュリティ構成の保持

Oracle Service Busの今回のリリースでは、関連付けられているセキュリティ構成データを失うことなく、Oracle Service Busリソースをエクスポートまたはインポートできます。

Oracle Service Busには、インポート・チェック・ボックスがあり、これを使用して、既存のセキュリティ構成を保持するか、または上書きするかを決定できます。

たとえば、資格証明をステージング領域で構成し、この資格証明を含むプロジェクトをエクスポートして、プロダクション環境でそのプロジェクトをインポートするとします。プロジェクトをエクスポートする場合、セキュリティ構成は、Oracle Service Busの 構成jarに含まれています。次に、プロジェクトをターゲット・システムにインポートする場合、リソースの処理方法は、そのリソースがターゲット・システムに既に存在しているかどうかによって異なります。

- 新しいリソースがjarファイルのみに存在する場合は、常にjarファイルのセキュリティ構成を使用します。

- jarファイルのみでなくインポートのターゲット・サーバーにもリソースが存在する場合は、新しいインポート・チェック・ボックスを使用して、既存のセキュリティ構成を保持するか、またはjarファイルの構成で上書きするかを決定できます。

次の3つのインポート・チェック・ボックスを使用して、インポート時に、セキュリティ構成のどの要素(ある場合)を保持するかを決定できます。

- セキュリティおよびポリシーの構成を保持

- 「資格証明の保持」

- アクセス制御ポリシーを保持

注意:

これらのチェック・ボックスは、プロジェクト・レベルのエクスポート用および個々のリソースのエクスポート用に作成されたOracle Service Bus構成ファイルのいずれでも同様に機能します。

これらのチェック・ボックスについては、以降の項で詳しく説明します。

45.6.1 「セキュリティおよびポリシーの構成を保持」チェック・ボックス

「セキュリティおよびポリシーの構成を保持」チェック・ボックスが設定されている場合(デフォルト)、次の構成パラメータが保持されます。

- プロキシ・サービスのセキュリティおよびポリシーの構成:

- サービス・キー・プロバイダへの参照。

- 「ポリシー」タブを使用してサービスに直接バインドされているWS-Policyのセット。

注意:

サービスでWSDLベースのポリシーを使用している場合、そのポリシーはこのチェック・ボックスでは保持されません。これは、WSDL自体が更新される可能性があり、サービスはWSDLを反映する必要があるためです。

このコントロールは、WS-Policyのバインディングのタイプである、カスタム(「ポリシー」タブを使用)またはWSDLベースも保持します。

- 「WS-Securityヘッダーの処理」オプションの状態。

- メッセージ・レベルのカスタム認証の構成。

- プロキシ・サービスのトランスポート固有のセキュリティ構成:

- HTTPの場合は、HTTPSフラグおよび認証モード(匿名、基本、クライアント証明書、またはカスタム・トークン)。

- JMSの場合は、JMSおよびJNDIサービス・アカウント。

- 電子メールおよびFTPの場合は、サービス・アカウント参照。

- SFTP認証の構成。

- ビジネス・サービスのセキュリティおよびポリシーの構成:

- 「サービスのWS-Policyのバインド」

- 「呼出し元のサブジェクトを渡す」の設定

- アウトバウンドWS-Securityのサービス・アカウントへの参照。

- ビジネス・サービスのトランスポート固有のセキュリティ構成:

- HTTPの場合は、認証モード(匿名、基本、またはクライアント証明書)およびサービス・アカウント参照。

- JMSの場合は、JMSおよびJNDIサービス・アカウントへの参照。

- FTP、EJB、Tuxedo、およびDSPの場合は、サービス・アカウント参照。

- SFTP認証の構成。

45.6.2 「資格証明の保持」チェック・ボックス

「資格証明を保持」チェック・ボックスが設定されている場合(デフォルト)、インポート・プロセス時に次の資格証明が保持されます。

- サービス・キー・プロバイダのPKI資格証明。
PKI資格証明マッピング・プロバイダは、デジタル署名や暗号化(Webサービス・セキュリティ用)、およびアウトバウンドSSL認証に使用できる鍵ペアにOracle Service Busサービス・キー・プロバイダをマップします。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のPKI資格証明マッピング・プロバイダの構成に関する項を参照してください。

- サービス・アカウントのユーザー名およびパスワード。

- SMTPサーバー、JNDIプロバイダ、およびUDDIレジストリのユーザー名とパスワード。

45.6.3 アクセス制御の保持チェック・ボックス

「アクセス制御ポリシーを保持」チェックボックスが設定されている場合(デフォルト)、インポート・プロセス時に、インポートされるプロキシ・サービスのすべてのアクセス制御ポリシーが保持されます。

45.7 Oracle WebLogicセキュリティ・フレームワークの構成: 主な手順

Oracle Service Busセキュリティの初期構成タスクの多くでは、WebLogicセキュリティ・フレームワークの構成のためにOracle WebLogic Server管理コンソールで作業する必要があります。これらの初期タスクの後は、ほとんどのセキュリティ・タスクをOracle Service Bus管理コンソールから実行できます。

Oracle Service Busに対してWebLogicセキュリティ・フレームワークを構成するには:

1. トランスポート・レベルのセキュリティの一部としてSSLの使用を計画している場合は、次の処理を行います。

1. Oracle WebLogic Server管理コンソールではIDと信頼を構成します。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のIDと信頼に関する項とドメイン間セキュリティ・サポートの重要事項に関する項を参照してください。

2. Oracle WebLogic Server管理コンソールでSSLを構成します。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のSSLの構成に関する項を参照してください。

SSL構成に対して次のことを実行するようお薦めします。

- 双方向SSLを構成する場合は、「クライアント証明書をリクエスト(強制しない)」モードか、「クライアント証明書をリクエスト(強制する)」モードのいずれかを選択する必要があります。可能なかぎり、「クライアント証明書をリクエスト(強制する)」モードを選択することをお薦めします。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』のSecure Sockets Layer (SSL)に関する項を参照してください。

- 本番環境では、「ホスト名の検証」が有効になっていることを確認します。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の「SSLの構成」のホスト名検証の使用に関する項を参照してください。

2. Oracle WebLogic Server管理コンソールで、プロキシ・サービスがインバウンド・セキュリティに対して使用する認証プロバイダを構成します。
表45-4は、Oracle Service Busで通常構成する認証プロバイダについての説明です。構成できるすべての認証プロバイダの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のセキュリティ・プロバイダに関する項を参照してください。

表45-4 認証プロバイダ

クライアントに提供を要求するもの

構成

単純なユーザー名とパスワード

WebLogic認証プロバイダ。Oracle Service Bus管理コンソールを使用して、アクセスを許可するクライアントのユーザー名とパスワードを入力します。

注意: 45.9.1項「認証プロバイダの構成」で説明されているように、すべてのOracle WebLogic ServerおよびOracle Service Busの管理アカウントにデフォルトのWebLogic認証プロバイダを使用することが推奨されます。

『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のユーザーの追加に関する項を参照してください。

インバウンドHTTPSと双方向SSL認証用のX.509トークン

次のすべてが含まれます。

- WebLogic IDアサーション・プロバイダ。このプロバイダは、X.509トークンを検証できますが、デフォルトでは検証は行われません。このプロバイダがX.509トークンをサポートできるようにします。さらに、このプロバイダがユーザー名マッパーを使用できるようにします。『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』のIDアサーションとトークンに関する項を参照してください。

- WebLogic証明書パス・プロバイダ。チェックに基づいて信頼された認証局を使用して、証明書チェーンを作成して検証します。

インバウンドHTTPおよびメッセージ・レベル認証用のカスタム認証とユーザー名/パスワード・トークン

トークン・タイプを検証できるIDアサーション・プロバイダ(ユーザー作成またはサードパーティ)。このプロバイダがトークンをサポートすることを確認してください。

インバウンドWebサービス・セキュリティX.509トークン認証用のX.509トークン

プロキシ・サービスまたはビジネス・サービスのいずれかが抽象WS-Policy文を使用するWebサービスである場合は、次も構成する必要があります。

__SERVICE_BUS_INBOUND_WEB_SERVICE_SECURITY_MBEAN__という名前のWebサービス・セキュリティ構成に、UseX509ForIdentityプロパティを追加してtrueに設定します。Oracle Fusion MiddlewareのOracle WebLogic Server管理コンソール・オンライン・ヘルプのIDを確立するためのX.509証明書の使用に関する項を参照してください。

SAMLトークン

次のすべてが含まれます。

- WebLogic SAML IDアサーション・プロバイダV2。このプロバイダは、Security Assertion Markup Language 1.1 (SAML)に基づいてユーザーを認証します。

- WebLogic SAML資格証明マッピング・プロバイダV2。このプロバイダは、Oracle Service Busユーザーをリモート・ユーザーにマップします。

3. 必要に応じて、Oracle WebLogic Server管理コンソールで1つ以上のIDアサーション・プロバイダを構成して、サポートする必要があるトークン・タイプ(X.509トークン・タイプやカスタム・トークン・タイプなど)を処理します。構成できるすべてのIDアサーション・プロバイダの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のセキュリティ・プロバイダに関する項を参照してください。

4. インバウンド・リクエストでWS-Securityデジタル署名を要求するプロキシ・サービスまたはビジネス・サービスの作成を計画している場合は、証明書レジストリ・プロバイダを有効にします。このプロバイダは、登録した証明書のリストに対してインバウンド証明書を検証する証明書パス・プロバイダです。
Oracle Fusion MiddlewareのOracle WebLogic Server管理コンソール・オンライン・ヘルプの証明書パス・プロバイダの構成に関する項を参照してください。

5. ユーザー名とパスワード・トークンをリクエストするようにメッセージ・レベルのセキュリティ(インバウンド・リクエストまたはアウトバウンド・リクエスト)を構成する場合、およびメッセージでクリア・テキスト・パスワードではなくパスワード・ダイジェストを提供する場合は、次の操作を行います。

1. Oracle WebLogic Server管理コンソールで、Oracle Service Busによって提供される2つのWebサービス・セキュリティ構成を探し、UsePasswordDigestプロパティの値をtrueに設定します。
Oracle Service Bus Webサービス・セキュリティ構成の名前は次のとおりです。

__SERVICE_BUS_INBOUND_WEB_SERVICE_SECURITY_MBEAN__

__SERVICE_BUS_OUTBOUND_WEB_SERVICE_SECURITY_MBEAN__

Webサービス・セキュリティ構成での値設定の詳細は、Oracle Fusion MiddlewareのOracle WebLogic Server管理コンソール・オンライン・ヘルプのSOAPメッセージでのパスワード・ダイジェストの使用に関する項を参照してください。

2. 構成した各認証プロバイダに対し、Oracle WebLogic Server管理コンソールでパスワード・ダイジェストの有効化チェック・ボックスを選択します。

3. 構成した各IDアサーション・プロバイダに対し、Oracle WebLogic Server管理コンソールでアクティブ・トークン・タイプの1つとしてwsse:PasswordDigestを設定します。

6. サービス・キー・プロバイダ(アウトバウンド・リクエストで鍵と証明書のペアを渡します)の作成を計画している場合は、Oracle WebLogic Server管理コンソールを使用して、PKI資格証明マッピング・プロバイダを構成します。Oracle Service Busをホストする任意のOracle WebLogic Serverドメインで、最大1つのPKI資格証明マッピング・プロバイダを構成できます。
PKI資格証明マッピング・プロバイダは、デジタル署名や暗号化(Webサービス・セキュリティ用)、およびアウトバウンドSSL認証に使用できる鍵ペアにOracle Service Busサービス・キー・プロバイダをマップします。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のPKI資格証明マッピング・プロバイダの構成に関する項を参照してください。

PKI資格証明マッピング・プロバイダがキーストアで使用する鍵ペアを格納します。PKI資格証明マッピングは、Oracle WebLogic Serverが使用するIDキーストアまたは別のキーストアに格納できます。各Oracle WebLogic Serverインスタンスがそれぞれ独自の各キーストア・コピーにアクセスするように構成します。PKI資格証明マッパーで参照されるすべてのエントリがすべてのキーストアに存在する必要があります(同じ別名を使用した同じエントリ)。Oracle WebLogic Serverでのキーストアの構成は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』のIDと信頼に関する項を参照してください。

注意:

Oracle Service Busドメインを作成すると、デフォルトでドメインにユーザー名/パスワード資格証明マッピング・プロバイダが含まれ、ユーザー名とパスワード用の資格証明マッピングが必要な場合に使用できます。このユーザー名/パスワード資格証明マッピング・プロバイダの他に、1つのPKI資格証明マッピング・プロバイダを追加できます。Oracle Service Busドメインは、最大1つのユーザー名/パスワード資格証明マッピング・プロバイダ、1つのPKI資格証明マッピング・プロバイダ、および複数のSAML資格証明マッピング・プロバイダを持つことができます。

7. セキュリティ監査を有効にする場合は、次を行います:

1. Oracle WebLogic Server管理コンソールで監査プロバイダを構成します。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のWebLogic監査プロバイダの構成に関する項を参照してください。

2. WS-Securityに関連したイベントの監査を有効にするには、各Oracle Service Busサーバーの起動時に、サーバーの起動コマンドで次のJavaオプションを指定します。

-Dcom.bea.wli.sb.security.AuditWebServiceSecurityErrors=true

Oracle Service Busはセキュリティ・イベントの監査をサポートしますが、構成監査をサポートしません。構成監査では、ユーザーがドメイン内のリソースの構成を変更したり、ドメイン内のリソースに対して管理操作を呼び出したりすると、ログ・メッセージが出されて監査イベントが生成されます。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の構成監査の有効化に関する項を参照してください。

8. まだ実行していない場合は、Oracle WebLogic Server管理コンソールで変更をアクティブ化します。Oracle WebLogic Serverの再起動が必要になる変更を行った場合は、管理コンソールに再起動が必要であることが表示されます。このようなメッセージが表示された場合は、Oracle Service BusをホストするすべてのOracle WebLogic Serverインスタンスを再起動して、セキュリティ・プロバイダに対する変更が残りの構成手順に対して有効になるようにします。

45.8 コンテキスト・プロパティがセキュリティ・プロバイダに渡される

コンテキスト・プロパティは、WebLogicセキュリティ・フレームワークに追加情報を提供する手段(ContextHandlerインタフェース)として使用でき、特定のプロバイダ・メソッドに対して引数で渡される以上のコンテキスト依存の情報をセキュリティ・プロバイダが取得できるようになります。ContextHandlerは、コンテキストとコンテナ固有の追加情報を取得する高パフォーマンスのWebLogicクラスです。

Oracle Service Busは、ContextHandlerインタフェースを利用して、トランスポート・レベルとメッセージ・レベルの認証、トランスポート・レベルとメッセージ・レベルのアクセス制御、および資格証明マッピング用にセキュリティ・フレームワークにいくつかのコンテキスト・プロパティを渡します。

この項では、Oracle Service Bus固有のコンテキスト・プロパティが使用される状況について説明します。

45.8.1 HTTPトランスポートレベル認証用のコンテキスト・プロパティ

HTTPプロキシ・サービスで認証が構成されている場合、HTTPトランスポート・プロバイダはOracle WebLogic Server ContextHandlerのOracle Service Bus実装を渡します。この機能ではユーザーの構成は必要ありません。

次の条件で、実行時に表45-5のContextHandlerプロパティが渡されます。

- プロキシでHTTP基本認証が構成されている場合、認証プロバイダに渡されます。

- プロキシでCLIENT-CERT IDアサーションが構成されている場合、IDアサーション・プロバイダに渡されます。

- プロキシでHTTPカスタム・トークンIDアサーションが構成されている場合、IDアサーション・プロバイダに渡されます。

表45-5 HTTPトランスポート認証用のContextHandlerプロパティ

プロパティ名

種類

プロパティ値

com.bea.contextelement.alsb.service-info

com.bea.wli.sb.services.ServiceInfo

プロキシ・サービスに関する情報が含まれるServiceInfoのインスタンス。

com.bea.contextelement.alsb.transport.endpoint

com.bea.wli.sb.transports.TransportEndPoint

HTTPまたはHTTPSエンドポイント。

com.bea.contextelement.alsb.transport.http.http-request

javax.servlet.http.HttpServletRequest

HttpServletRequestオブジェクト。

com.bea.contextelement.alsb.transport.http.http-response

javax.servlet.http.HttpServletResponse

HttpServletResponseオブジェクト。

45.8.2 アクセス制御およびメッセージレベルのカスタム認証用のContextHandlerプロパティ

次の条件で、実行時に表45-6に示されているContextHandlerプロパティが渡されます。

- メッセージ・レベルのカスタム・ユーザー名/パスワード認証を実行する場合、認証プロバイダに渡されます。

- メッセージ・レベルのカスタム・トークンIDアサーションを実行する場合、IDアサーション・プロバイダに渡されます。

- トランスポート・レベルまたはメッセージ・レベルのアクセス制御を実行する場合、認可プロバイダに渡されます。

表45-6 メッセージレベルのカスタム認証およびアクセス制御用のContextHandlerプロパティ

プロパティ名

種類

プロパティ値

com.bea.contextelement.alsb.router.ProxyService

java.lang.String

サービス名(完全な名前。/myproject/myfolder/svc-aなど)。

com.bea.contextelement.alsb.router.ServiceUri

java.net.URI

メッセージの受信元のベースURI。

com.bea.contextelement.alsb.router.inbound.TransportProvider

java.lang.String

このメッセージを受信したトランスポート・プロバイダのID。

com.bea.contextelement.alsb.router.inbound.request.MessageId

java.lang.String

トランスポート・プロバイダ固有のメッセージIDです。理想としては、Oracle Service Busランタイムを通過するその他のメッセージからメッセージをユニークに識別できることが必要です。ただし、Oracle Service Busは、メッセージIDがユニークであることには依存しません。メッセージIDはメッセージ・コンテキストに追加されるため、パイプラインに示されます。

com.bea.contextelement.alsb.router.inbound.request.CharacterEncoding

java.lang.String

メッセージ・ペイロードで使用される文字エンコーディング、またはnull。

com.bea.contextelement.wli.Message

java.io.InputStream

入力ストリームとしてのリクエスト・メッセージ。

45.8.3 トランスポート固有のその他のコンテキスト・プロパティ

表45-7に示されているプロパティに加えて、トランスポート固有のその他のプロパティが存在する場合があります。トランスポート・リクエスト・ヘッダー(トランスポートSDKを参照)ごとに、次の名前を持つプロパティが存在します。

com.bea.contextelement.alsb.router.inbound.request.headers.<provider-id>.<header-name>

ここで、provider-idはトランスポート・プロバイダのID、header-nameはプロバイダのスキーマ・ファイルで宣言されているリクエスト・ヘッダーの1つです。

これらのプロパティの型およびセマンティクスはトランスポート固有です。HTTPプロキシ・サービスの場合、表45-3に示すプロパティも使用できます。

表45-7 HTTPプロキシ・サービスのその他のメッセージレベルのセキュリティのContextHandlerプロパティ

プロパティ名

種類

プロパティ値

com.bea.contextelement.alsb.router.inbound.request.metadata.http.relative-URI

java.lang.String

リクエストの相対URI。

com.bea.contextelement.alsb.router.inbound.request.metadata.http.query-string

java.lang.String

リクエストURLでパスの後に含まれる問合せ文字列。

com.bea.contextelement.alsb.router.inbound.request.metadata.http.client-host

java.lang.String

リクエストを送信するクライアントの完全修飾名。

com.bea.contextelement.alsb.router.inbound.request.metadata.http.client-address

java.lang.String

リクエストを送信するクライアントのIP (Internet Protocol)アドレス。

45.8.4 管理者が提供するメッセージレベル認証用のコンテキスト・プロパティ

カスタム・ユーザー名/パスワード認証とカスタム・トークン認証の両方を使用すると、ユーザー(IntegrationAdminロールまたはIntegrationDeployerロールを持つユーザー)は「セキュリティ」タブの「コンテキスト・プロパティ」フィールドで追加のコンテキスト情報をセキュリティ・プロバイダに渡すことができます。

追加のコンテキスト・プロパティを構成するには、「プロパティ名」をリテラル文字列で入力し、「値セレクタ」に有効なXPath式を入力します(XPath式にリテラル文字列を使用することも可能です)。

XPath式は、カスタム・トークンまたはカスタム・ユーザー名/パスワードで使用されているのと同じメッセージ部に対して実行時に評価されます。つまり、「値セレクタ」のXPath式は、SOAPベースのプロキシ・サービスの場合はヘッダーに対して評価され、非SOAPベースのプロキシ・サービスの場合は本体に対して評価されます。

45.8.5 セキュリティ・プロバイダはプロパティ名を認識している必要がある

ContextHandlerは名前と値のリストであるため、セキュリティ・プロバイダが検索対象の名前を認識している必要があります。したがって、トランスポート・レベルおよびメッセージ・レベルのカスタム認証でXPath式が評価されるのは、認証プロバイダまたはIDアサーション・プロバイダがいずれかのプロパティの値を要求する場合のみです。

つまり、構成された認証プロバイダまたはIDアサーション・プロバイダは、ContextHandler.getValue(propertyName)メソッドでリクエストするプロパティ名を明確に知っている必要があります。この要件に対応する唯一の方法は、ユーザーまたはサード・パーティがカスタム認証プロバイダまたはIDアサーション・プロバイダを記述することです。

たとえば、例45-1は記述するプロバイダからHttpServletRequestプロパティを取得する方法です。

例45-1 HttpServletRequestプロパティの取得

:
Object requestValue = handler.getValue("com.bea.contextelement.alsb.transport.http.http-request");
if ((requestValue == null) || (!(requestValue instanceof HttpServletRequest)))
return;
HttpServletRequest request = (HttpServletRequest) requestValue;
log.println(" " + HTTP_REQUEST_ELEMENT + " method: " + request.getMethod());
log.println(" " + HTTP_REQUEST_ELEMENT + " URL: " + request.getRequestURL());
log.println(" " + HTTP_REQUEST_ELEMENT + " URI: " + request.getRequestURI());
return;

セキュリティ・プロバイダがユーザー定義プロパティの値を必要としない場合、XPath式は評価されません。

45.8.6 Oracle WebLogic Server管理チャネルがサポートされている

Oracle Service Busのこのリリースでは、Oracle WebLogic Server管理チャネルを使用できます。

『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のネットワーク・チャネルの概要に関する項で説明されているように、Oracle WebLogic Serverネットワーク・チャネルは、Oracle WebLogic Serverへのネットワーク接続の属性を定義する構成可能なリソースです。

管理チャネルと呼ばれる特定の種類のネットワーク・チャネルを構成して、WebLogicドメインで管理トラフィックとアプリケーション(ビジネス)トラフィックを分離することができます。管理チャネルは、SSL接続のみを受け入れる、セキュリティで保護されたチャネルです。

Oracle Service Busでは、ビジネス・トラフィックは、Oracle Service Busのプロキシ・サービスおよびビジネス・サービスで送受信されるすべてのメッセージで構成されています。SSLビジネス・トラフィックは、デフォルトのOracle WebLogic Serverセキュア・ネットワーク・チャネルを使用する必要があります。

管理トラフィックは、Oracle WebLogic Server管理コンソール、Oracle Service Bus管理コンソールとのすべての通信、クラスタ内の内部トラフィック、および管理スクリプトと管理サーバーまたは管理対象サーバーとの間のトラフィックで構成されています。

ドメインで管理チャネルが有効になっている場合、そのドメイン内のすべての管理トラフィックがそのチャネルを通過します。それ以外の場合、管理トラフィックは、デフォルトのOracle WebLogic Serverセキュア・ネットワーク・チャネルも使用します。

管理チャネルの使用: 主な手順

1. ドメインのOracle Service Bus管理コンソールに対するブラウザの接続を切断します。
Oracle WebLogic Serverで管理チャネルをアクティブ化するとすぐに、ドメインのOracle Service Bus管理コンソールは現在のURLでアクセスできなくなります。ヘルプ・システムも使用できなくなります。

2. Oracle WebLogic Server管理コンソールでドメイン全体の管理ポートを有効にする(これにより、管理チャネルが構成される)か、管理チャネルを明示的に作成します。これら両方の操作は、『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のネットワーク・リソースの構成に関する項を参照してください。
ドメイン全体の管理ポートのコントロールは、「ドメイン」>「構成」の「全般」ページにあります。デフォルトの管理ポートは9002です。

必ず、変更をアクティブ化してください。

3. ドメインのOracle Service Bus管理コンソールの新しいURLへのブラウザ接続を開きます。
ドメイン全体の管理ポートを有効にして、デフォルトのポート番号を受け入れた場合、URLはhttps://hostname:9002/sbconsoleです。

4. 古いURLを参照する起動スクリプトを修正します。Windowsグラフィカル・インタフェースを使用してドメインのOracle Service Bus管理コンソールを起動する場合は、新しいURLを反映するようにショートカットのプロパティを修正してください。

45.9 セキュリティ・プロバイダの使用

ここでは、Oracle Service Busでのセキュリティ・プロバイダの使用方法について説明します。

この項の内容は次のとおりです。

- 45.9.1項「認証プロバイダの構成」

- 45.9.2項「カスタム認可プロバイダによるOracle Service Busリソースの保護」

- 45.9.3項「セキュリティ・プロバイダ・ポリシー使用時のエラーについて」

45.9.1認証プロバイダの構成

提供されるOracle WebLogic Server認証プロバイダを調べて、ニーズを満たすものがあるかどうかを確認します。Oracle WebLogic Serverには次のような多様な認証プロバイダが含まれます。

- WebLogic認証プロバイダは、Oracle WebLogic Serverの埋め込まれたLDAPサーバーにあるユーザーとグループ情報にアクセスします。これは用意されているデフォルトの認証プロバイダです。このプロバイダは、非常に多くのユーザーでの使用には最適化されていません。

- LDAP認証プロバイダでは、外部のLDAPストアにアクセスします。LDAP認証プロバイダを使用すると、任意のLDAPサーバーにアクセスできます。Oracle WebLogic Serverには、Open LDAP、Oracle Directory Server Enterprise Edition、Microsoft Active DirectoryおよびNovell NDS LDAPサーバー用のLDAP認証プロバイダが構成されています。

- RDBMS認証プロバイダでは、外部リレーショナル・データベースにアクセスします。Oracle WebLogic Serverには、SQLオーセンティケータ、読取り専用SQLオーセンティケータ、カスタムRDBMSオーセンティケータという3種類のRDBMSオーセンティケータが用意されています。

- SAML認証プロバイダ。このプロバイダでは、Security Assertion Markup Language 1.1 (SAML)アサーションに基づいてユーザーを認証します。

これらの認証プロバイダのパフォーマンスを向上させる方法は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のWebLogicおよびLDAP認証プロバイダのパフォーマンスの向上に関する項を参照してください。

『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のデフォルト・セキュリティ構成をカスタマイズする理由に関する項で説明されているように、WebLogic Serverの組込みのLDAPサーバー以外のデータベースにアクセスする認証プロバイダを使用することもできます。たとえば、大多数のユーザー・アカウントに別の認証プロバイダを使用し、Oracle Service BusおよびWebLogic Serverの管理ユーザー・アカウントにはデフォルトの認証プロバイダ(組込みのLDAP)を引続き使用することができます。

すべてのOracle WebLogic ServerおよびOracle Service Busの管理ユーザー・アカウントにWebLogic認証プロバイダを使用することで、ネットワークまたはデータベースに問題が発生した場合に、信頼性の高いアクセスが提供されます。そのため、すべてのOracle WebLogic ServerおよびOracle Service Busの管理ユーザー・アカウントにデフォルトのWebLogic認証プロバイダを使用することをお薦めします。

組込みの認証プロバイダのいずれかがニーズに合う場合は、その認証プロバイダをOracle WebLogic Server管理コンソールで構成する手順を『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の認証プロバイダの構成に関する項で参照してください。

Oracle WebLogic Serverに組み込まれている認証プロバイダがニーズに合わない場合は、まずユーザー自身(またはサードパーティ)がカスタム認証プロバイダを作成し、次に示すように、Oracle WebLogic Server管理コンソールを使用してそのプロバイダをセキュリティ・レルムに追加する必要があります。

注意:

ここでは、必要なタスクの概要についてのみ説明します。実際にタスクを実行するにはOracle WebLogic Serverドキュメントを調べる必要があります。

セキュリティ・レルムへのプロバイダの追加

1. 適切なSSPIを使用してランタイム・クラスを作成します(『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』)。

2. WebLogic MBeanMakerを使用してMBeanタイプを生成します。

3. 管理コンソールを使用してカスタム認証プロバイダを構成します。

45.9.2 カスタム認可プロバイダによるOracle Service Busリソースの保護

カスタム認可プロバイダでOracle Service Busリソースを使用できますが、これらのプロバイダがOracle Service Busリソースのタイプや形式を認識する必要があります。

Oracle Service Busには、認可プロバイダが検出して処理できる必要があるリソース・オブジェクトが3つあります。

- 45.9.2.2項「Oracle Service BusProxyServiceResourceオブジェクト」

- 45.9.2.3項「ProjectResourceV2オブジェクト」

- 45.9.2.4項「ConsoleResourceオブジェクト」

これらのリソース・オブジェクトについては、この後の項で説明します。

45.9.2.1 WebLogic認可プロバイダの使用法について

ここでは、Oracle WebLogic Server認可プロバイダSSPIについて簡単に説明します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』の認可プロバイダに関する項を参照してください。

リソースを保護するには、Oracle Service Bus管理コンソール、サードパーティ・ツールまたはスクリプトによって、アクセス制御ポリシーをリソースにバインドします。Oracle WebLogic Server SSPI (Security Service Provider Interface)では、リソースSPIを実装するためにOracle Service Busなどのコンテナが必要です。これらの実装は具象リソースを表します。

認可プロバイダ・データベースには、リソースからポリシーへのマップがあります。リソースへのアクセスが試みられると、コンテナは実行時SSPIを呼び出してアクセス制御の判断を行います。コンテナは、アクセスされるリソースを示すリソース・インスタンスを渡します。

認可プロバイダにはgetAccessDecision()という1つのメソッドがあります。getAccessDecision()メソッドは、AccessDecision SSPIの実装を取得します。AccessDecision SSPIそのものにはisAccessAllowed()という1つのメソッドがあります。isAccessAllowedには5つのパラメータがあり、その1つはリクエストされるアクセスに対するResourceオブジェクトです。

isAccessAllowedは、指定のリソースへのアクセスがリクエスト側に許可されるかどうか判断します。これを実行するには、認可プロバイダが評価のために正しいアクセス制御ポリシーを見つける必要があります。プロバイダは、渡されたリソースにバインドされたポリシーをまず検索する必要があります。『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』のセキュリティ・プロバイダのランタイム・クラスでのWebLogicリソースのルックアップに関する項で説明されるように、検索では検索のキーとしてgetId()メソッドまたはtoString()メソッドを使用できます。ポリシーが見つからない場合、認可プロバイダは親リソースを取得し、再検索する必要があります。このプロセスは、ポリシーが見つかるか、親がnullになるまで繰り返されます。この場合、ポリシーは見つかりません。ポリシーが見つからない場合、isAccessAllowedはfalseを返す必要があります。

このアルゴリズムによって、指定のプロジェクトまたはフォルダ内のすべてのプロキシ・サービス、プロジェクト内のすべてのリソース、またはOracle Service Busドメイン内のすべてのOracle Service Busプロキシ・サービスを保護する、大まかなポリシーを作成できます。より具体的で詳細なポリシーは、大まかなポリシーより優先されます。

注意:

Oracle Service Bus管理コンソールのユーザー・インタフェースには、フォルダ、プロジェクトまたはドメイン・レベルでプロキシ・サービスを保護するページは用意されていません。

45.9.2.2 Oracle Service BusProxyServiceResourceオブジェクト

ALSBProxyServiceResourceオブジェクトは、Oracle Service Busプロキシ・サービスへのトランスポートレベルとメッセージレベルのアクセス制御で使用します。ALSBProxyServiceResourceリソースは、weblogic.security.spi.Resourceを実装しているweblogic.security.service.ResourceBaseを拡張します。

ALSBProxyServiceResourceは、weblogic.security.spi.Resourceに記述されるように、次のメソッドを実装しています。

getType() - タイプを返します。ここでは、タイプは<alsb-proxy-service>です。

getKeys() - 最大4つのキーと値のプロパティであるpath、proxy、actionおよびoperationを返します。プロパティは次のように定義されます。

- pathはプロキシ・サービスの完全名。たとえば、path=project/folder1/folder2です。

- proxyはプロキシ・サービスの名前。たとえば、proxy=myProxyです。

- actionは、invokeまたはwss-invokeという2つの値のいずれかです。たとえば、action=invokeです。
action属性は、トランスポートレベルとメッセージレベルのアクセス制御を区別するために使用されます。invokeは、トランスポートレベルのアクセス制御で使用されます。wss-invokeはメッセージレベルのアクセス制御(つまり、カスタムのメッセージレベル認証を含む、WS-Securityのアクティブな仲介またはプロキシに対するアクセス制御)で使用されます。operation属性は、actionがwss-invokeの場合のみ使用できます。

- operationは呼び出す操作の名前で、actionがwss-invokeの場合のみ使用されます。たとえば、operation=processPOです。operation属性は、actionがwss-invokeの場合のみ有効です。
ALSBProxyServiceResourceには1から4個のキーがあります。次の表は、プロキシ・サービスを保護する様々な組合せについての説明です。最も具体的なポリシーが優先されます。

リソースに含まれるキー

リソースにバインドされたポリシーの保護対象

path

ポリシーは指定のパスにあるすべてのプロキシ・サービスを保護します

pathおよびproxy

ポリシーは指定のプロキシ・サービスへのすべてのアクセスを保護します(トランスポート・レベルおよびメッセージ・レベル)

path、proxy、およびaction

action="invoke"の場合

ポリシーは指定のプロキシのトランスポート・レベルのポリシー

action="wss-invoke"の場合

ポリシーは指定のプロキシのメッセージ・レベルのポリシー(すべての操作)

path、proxy、action="wss-invoke"、およびoperation

ポリシーは指定のプロキシと操作に対するメッセージ・レベルのポリシー

getPath() - プロキシ・サービスへのパス(プロジェクトとフォルダ)を取得します。これは、Oracle Service Busの構成フレームワーク内でプロキシ・サービスが存在するパスです。

getProxyServiceName() - プロキシ・サービス名を取得します。たとえば、proxy=myProxyです。

getAction() - invokeまたはwss-invokeという2つの値のどちらかを取得します。たとえば、action=invokeです。

getOperation() - 呼び出す操作の名前を取得します。actionがwss-invokeの場合のみ使用します。たとえば、operation=processPOです。

makeParent() - 現在のALSBProxyServiceResourceリソースの親を表す新しいALSBProxyServiceResourceオブジェクトを作成します。makeParent()はプロキシ・サービスのパスを使用して親を作成します。

45.9.2.2.1 ALSBProxyServiceResourceの例

次の例は、ALSBProxyServiceResourceオブジェクトの様々な使用方法です。

- プロキシproject/folder/myProxyでのトランスポート・レベルのアクセス制御に対するALSBProxyServiceResourceの使用

type=<alsb-proxy-service>, path=project/folder, proxy=myProxy, action=invoke

- プロキシproject/folder/myProxyでの操作processPOのメッセージレベルのアクセス制御に対するALSBProxyServiceResourceの使用

type=<alsb-proxy-service>, path=project/folder, proxy=myProxy, action=wss-invoke, operation=processPO

- ALSBProxyServiceResourceに対する様々な詳細度の親子階層の使用

type=<alsb-proxy-service>, path=myProject/f1/f2, proxy=myProxy, action=wss-invoke, operation=foo
type=<alsb-proxy-service>, path=myProject/f1/f2, proxy=myProxy, action=wss-invoke
type=<alsb-proxy-service>, path=myProject/f1/f2, proxy=myProxy
type=<alsb-proxy-service>, path=myProject/f1/f2
type=<alsb-proxy-service>, path=myProject/f1
type=<alsb-proxy-service>, path=myProject
type=<alsb-project>, project-name=myProject
type=<alsb-proxy-service>

45.9.2.3 ProjectResourceV2オブジェクト

ProjectResourceV2は、指定のプロジェクトに含まれるすべてのALSBProxyServiceResourceオブジェクトのルート・リソースです。ProjectResourceV2はResourceBaseを拡張します。

ProjectResourceV2に対するアクセス制御ポリシーの設定によって、指定のプロジェクトでさらに具体的なポリシーを持たないすべてのプロキシ・サービスに対して、大まかなアクセス制御ポリシーが提供されます。

ProjectResourceV2には次のメソッドがあります。

getType() - タイプを返します。ここでは、タイプは"<alsb-project>"です。

getKeys() - キーを返します。ここで、キーは"project-name"です。

getName() - ProjectResourceV2オブジェクトの名前を取得します。

makeParent() - ProjectResourceV2オブジェクトには、親はありません。したがって、このメソッドは、ProjectResourceV2オブジェクトの作成に使用されたオブジェクト名を返すか、またはProjectResourceV2が存在しない場合はnullを返します。

45.9.2.4 ConsoleResourceオブジェクト

com.bea.wli.security.resource.ConsoleResourceオブジェクトは、Oracle Service Bus管理コンソールに対するアクセス制御のために使用します。ただし、ConsoleResourceオブジェクト用のアクセス制御ポリシーを、カスタム認可プロバイダによって設定しないことをお薦めします。これは、これらのポリシーが今後のOracle Service Busリリースで変更される可能性があるためです。

かわりに、カスタム認可プロバイダを使用する必要がある場合でも、Oracle WebLogic Server XACML認可プロバイダの使用を継続して、ConsoleResourceオブジェクト用のポリシーを管理することをお薦めします。このように2つの認可プロバイダを使用する場合は、裁決プロバイダも構成する必要があります。

45.9.3 セキュリティ・プロバイダ・ポリシー使用時のエラーについて

Oracle WebLogic Serverでプラグイン・セキュリティ・プロバイダを使用して、Oracle Service Busで使用するポリシーを格納している場合、必要なポリシーを使用できるかどうかをOracle Service Busで確認できないというエラーが発生することがあります(たとえば、Oracle Fusion Middleware Oracle Service Busメッセージに説明されているエラーBEA-387896など)。

このようなエラー・メッセージが表示されても、ポリシーが存在しないことや、セキュリティ・プロバイダの接続上または構成上の問題が発生したことを意味するとはかぎりません。Oracle Service Busでは、Oracle WebLogic Server SSPIを使用して、セキュリティ・プロバイダが実装できるポリシーを読み取ります。ただし、SSPIの読取り機能はオプションです。セキュリティ・プロバイダでこのSSPIを実装せずに読取りアクセスを許可しないことも可能です。この場合、Oracle Service Busでは、必要なポリシーがセキュリティ・プロバイダに実際に存在していても、必要なポリシーがセキュリティ・プロバイダに含まれているかどうかを確実に判断することができません。

このような警告が本当の問題を示しているかどうかを判断するには、Oracle Service Bus管理コンソールでリソースの作成または変更を試みます。また、アクセス制御ポリシーでプロキシ・サービスを保護し、テストします。プロキシ・サービスのアクセス制御ポリシーを構成する方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のメッセージ・レベルのアクセス・ポリシーの編集に関する項を参照してください。セキュリティ・プロバイダを使用しながら、リソースの作成または操作、およびセキュアなプロキシ・サービスのテストに成功した場合、そのセキュリティ・プロバイダは正しく構成されており、エラー・メッセージは無視しても問題ありません。

46 Oracle Service Busのセキュリティに関するFAQ

この章では、Oracle Service Busセキュリティに関してよく聞かれる質問に対する回答を提供します。

この章の内容は次のとおりです。

- 46.1項「Oracle Service BusとOracle WebLogic Serverのセキュリティにはどのような関係がありますか」

- 46.2項「トランスポート・レベルのセキュリティとは何ですか」

- 46.3項「Webサービス・セキュリティとは何ですか」

- 46.4項「Webサービス・ポリシーとは何ですか」

- 46.5項「Webサービス・ポリシーのアサーションとは何ですか」

- 46.6項「アクセス制御ポリシーとWebサービス・ポリシーは同じものですか」

- 46.7項「Webサービス・セキュリティのパススルーとは何ですか」

- 46.8項「Webサービス・セキュリティのアクティブな仲介とは何ですか」

- 46.9項「アウトバウンドWebサービス・セキュリティとは何ですか」

- 46.10項「SAMLとは何ですか」

- 46.12項「証明書検索および検証フレームワークとは何ですか」

- 46.13項「Oracle Service Busでは、プロキシ・サービスでのIDの伝播はサポートされますか」

- 46.14項「プロキシ・サービスへのインバウンド・メッセージにトランスポート・レベルの認証とメッセージ・レベルの認証の両方が存在する場合、どちらのIDが伝播されますか」

- 46.11項「SAMLアサーションのサブジェクトIDの形式はカスタマイズ可能ですか」

- 46.15項「シングル・サインオンはOracle Service Busでサポートされますか」

- 46.16項「セキュリティ・エラーはモニターされますか」

- 46.17項「MBeanのセキュリティを構成できますか」

46.1項 Oracle Service BusとOracle WebLogic Serverのセキュリティにはどのような関係がありますか。

Oracle Service BusではWebLogicセキュリティ・フレームワークを利用しています。このフレームワークの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』の「WebLogicセキュリティ・サービスのアーキテクチャ」にある「WebLogicセキュリティ・フレームワーク」を参照してください。Oracle Service Busでセキュリティを構成する前に、45.7項「Oracle WebLogicセキュリティ・フレームワークの構成: 主な手順」の説明に従って、Oracle WebLogicセキュリティ・レルムやその他のサーバーの構成(SSLなど)を行う必要があります。

46.2 トランスポート・レベルのセキュリティとは何ですか。

トランスポート・レベルのセキュリティは、メッセージのトランスポートに使用する接続を保護する転送プロトコルを指します。トランスポート・レベルのセキュリティの例として、HTTPS (HTTP over SSL)があります。SSLのセキュリティはポイント・ツー・ポイントですが、メッセージの経路に仲介者がいるとメッセージが保護されません。詳細は、第49章「トランスポート・レベルのセキュリティの構成」を参照してください。

46.3 Webサービス・セキュリティとは何ですか。

Webサービス・セキュリティ(WS-Security)はOASIS標準の1つです。SOAPメッセージにメッセージ・レベルのセキュリティを組み込むための相互運用可能なメカニズムを定義しています。WS-Securityは、メッセージの整合性と機密性をサポートします。また、SOAPエンベロープにセキュリティ・トークンを含める拡張モデルや、SOAPエンベロープ内からセキュリティ・トークンを参照するモデルも定義しています。WS-Securityトークン・プロファイルは、コアのWS-Security仕様内での特定のトークン・タイプの使用方法を指定します。メッセージの整合性はXMLデジタル署名を使用することで確保され、メッセージの機密性はXML暗号化を使用することで確保されます。WS-Securityでは、SOAPメッセージのどの部分をデジタル署名または暗号化するかを指定できます。Oracle Service Busは、HTTP (HTTPSを含む)およびJMSによってWS-Securityをサポートします。

46.4 Webサービス・ポリシーとは何ですか。

Webサービス・ポリシー・フレームワーク(WS-Policy)は、Webサービスのポリシーを記述して通信するための汎用モデルとその構文を提供します。WS-Policyは、様々なサービスの要件、プリファレンス、および機能を記述するための一連の基本構成要素を定義しています。詳細は、第51章「Oracle Service Busプロキシ・サービスとビジネス・サービスでのWS-Policyの使用」を参照してください。

46.5 Webサービス・ポリシーのアサーションとは何ですか。

Web Services Policy Assertions Language (WS-PolicyAssertions)は、セキュリティ・ポリシー内で指定できる一連の共通メッセージ・ポリシー・アサーションを指定しています。この仕様は、WS-Policyで使用する一般的なメッセージング関連のアサーションを定義しています。個別の仕様で、セキュリティ・アサーションと信頼性の高いメッセージング・アサーションについて、ドメイン固有のアサーションの構文とセマンティクスを記述します。

46.6 アクセス制御ポリシーとWebサービス・ポリシーは同じものですか。

いいえ。アクセス制御ポリシーは、特定のリソース(プロキシ・サービス、Webアプリケーション、EJBなど)へのアクセスのリクエストの承認および拒否を決定するブール式です。通常、アクセス制御ポリシーはリクエスト側のロールに基づいています。WS-Policyは、Webサービス定義(WSDL)を補完する、Webサービスについてのメタデータです。WS-Policyは、「すべてのリクエストはクライアントのデジタル署名が必要である」などの、すべてのサービス・クライアントが満たすべき要件を表すために使用できます。

46.7 Webサービス・セキュリティのパススルーとは何ですか。

WS-Securityパススルーのシナリオで、クライアントは、WS-Securityをリクエスト・メッセージやレスポンス・メッセージに適用します。プロキシ・サービスは、セキュリティ・ヘッダーを処理しません。そのかわりに、セキュアなリクエスト・メッセージをそのままビジネス・サービスに渡します。Oracle Service Busは、メッセージにWS-Securityを適用しませんが、ヘッダーの値に基づいてメッセージをルーティングできます。ビジネス・サービスは、メッセージを受け取った後にセキュリティ・ヘッダーを処理し、リクエストに応答します。ビジネス・サービスには、WS-Policyセキュリティ文が構成されている必要があります。保護されたレスポンス・メッセージがそのままクライアントに渡されます。たとえば、クライアントはメッセージを暗号化して署名し、そのメッセージをプロキシ・サービスに送信します。プロキシ・サービスはメッセージの復号化、またはデジタル署名の確認を行いません。単にメッセージをビジネス・サービスにルーティングします。ビジネス・サービスはメッセージを復号化してデジタル署名を確認してから、リクエストを処理します。レスポンス・パスは同様です。これは、受動型中間プロキシと呼ばれることがあります。

46.8 Webサービス・セキュリティのアクティブな仲介とは何ですか。

アクティブな仲介シナリオでは、クライアントがリクエスト・メッセージとレスポンス・メッセージにWS-Securityを適用します。プロキシ・サービスが、セキュリティ・ヘッダーを処理してWS-Securityポリシーを適用します。たとえば、クライアントがメッセージを暗号化および署名してプロキシ・サービスに送信し、プロキシ・サービスがメッセージを復号化してデジタル署名を検証してから、メッセージをルーティングします。プロキシ・サービスは、レスポンスをクライアントに返す前に、メッセージに署名して暗号化します。クライアントはメッセージを復号化し、プロキシのデジタル署名を確認します。

46.9 アウトバウンドWebサービス・セキュリティとは何ですか。

アウトバウンドWS-Securityは、Oracle Service Busプロキシ・サービスとビジネス・サービスの間のセキュリティを表します。ビジネス・アプリケーションとプロキシ・サービスの間のリクエストとレスポンスの両方が含まれます。詳細は、52.1項「メッセージ・レベルのセキュリティについて」を参照してください。

46.10 SAMLとは何ですか。

SAML (Security Assertion Markup Language)は、OASIS標準ベースの拡張可能なXMLフレームワークです。認証および認可情報を交換することによって、最新のネットワーク環境でのシングル・サインオンを可能にします。

46.11 SAMLアサーションのサブジェクトIDの形式はカスタマイズ可能ですか。

デフォルトでは、アウトバウンドSAMLトークン内のサブジェクトIDは、インバウンド・ユーザー名と同じです。サブジェクトIDの形式は、カスタムのSAML名前マッパー・プロバイダを記述することでカスタマイズできます。詳細は、『WebLogic Serverのセキュリティ』のSAML資格証明マッピング・プロバイダの構成に関する項を参照してください。

46.12 証明書検索および検証フレームワークとは何ですか。

証明書検索および検証(CLV)プロバイダは、証明書のパスを完成させてX509証明書チェーンを検証します。CLVプロバイダには次の2つのタイプがあります。

証明書パス・ビルダー - Webサービスまたはアプリケーション・コードから、証明書、証明書チェーン、または証明書への参照(チェーン内の目的の証明書、または証明書のサブジェクトDN)を受け取ります。このプロバイダが、チェーン内の証明書を検索および検証します。

証明書パス検証プロバイダ - SSLプロトコル、Webサービス、またはアプリケーション・コードから証明書チェーンを受け取り、失効チェックなど追加の検証を実行します。

証明書パス・ビルダーと証明書パス検証プロバイダは、セキュリティ・レルムに少なくとも1つずつ構成する必要があります。1つのセキュリティ・レルムに、複数の証明書パス検証プロバイダを構成することもできます。複数のプロバイダを構成した場合は、すべての証明書パス検証プロバイダの検証が正常に終了しないと、証明書または証明書チェーンは有効になりません。Oracle WebLogic Serverは、WebLogic証明書パス・プロバイダおよび証明書レジストリでCLVプロバイダの機能を提供します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』にある「WebLogicセキュリティ・サービスのアーキテクチャ」の「証明書検索および検証」を参照してください。

46.13 Oracle Service Busでは、プロキシ・サービスでのIDの伝播はサポートされますか。

はい。Oracle Service Busは、IDの伝播で2つのタイプの方法をサポートしています。

- Webサービス・セキュリティに準拠してSAMLアサーションを生成することにより、これを行います。
これは、プロキシがルーティングするビジネス・サービスでSAML holder-of-keyまたはsender-vouchesのWS-Policyを設定することで実行されます。

- ビジネス・サービスでユーザー名とパスワード・トークンを要求する場合は、元のクライアント・リクエストからユーザー資格証明をパススルーするようにビジネス・サービスのサービス・アカウントを構成します。第2章「サービス・アカウント・リソースの作成」を参照してください。

46.14 プロキシ・サービスへのインバウンド・メッセージにトランスポート・レベルの認証とメッセージ・レベルの認証の両方が存在する場合、どちらのIDが伝播されますか。

トランスポート・レベルの認証とメッセージ・レベルの認証の両方が存在する場合、メッセージ・レベルのサブジェクトIDが伝播されます。

46.15 シングル・サインオンはOracle Service Busでサポートされますか。

厳密に言えば、Oracle Service Busメッセージング・シナリオでは、シングル・サインオン(SSO)は様々な理由で使用できません。まず、Oracle Service Busはステートレスであるため、セッションの概念や複数のパーティ間での会話がありません。次に、Oracle Service Busのクライアントは、通常は他のエンタープライズ・ソフトウェア・アプリケーションであり、Webブラウザを使用するユーザーではありません。そのため、このようなクライアントがリクエストごとにユーザー名とパスワードなどの資格証明情報を送信する必要があっても、通信がSSLやWS-Securityなどの方法で保護されるかぎり、許容されます。ただし、Oracle Service Bus管理コンソールとOracle WebLogic Server管理コンソールの間のSSOはサポートされています。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』の「セキュリティの基礎概念」にある「シングル・サインオン」を参照してください。

46.16 セキュリティ・エラーはモニターされますか。

WS-Securityエラーのみが、Oracle Service Busモニター・フレームワークによってモニターされます。SSLハンドシェイク・エラー、トランスポート・レベルの認証、トランスポート・レベルのアクセス制御などのトランスポート・レベルのセキュリティ・エラーはモニターされません。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「実行時のOracle Service Busのモニター」を参照してください。ただし、監査プロバイダを構成して、トランスポート・レベルの認証と認可を監査することができます。

46.17 MBeanのセキュリティを構成できますか。

Oracle Service Busには、抽象WS-Policy文で利用できる資格証明のタイプなど、実行時の動作を構成する2つの管理対象Bean (MBean)があります。デフォルトでは、AdminおよびDeployerセキュリティ・ロールのユーザーのみがこれらのMBeanを変更できます。ただし、これらのデフォルトは変更できます。Oracle Fusion Middleware Oracle WebLogic Server管理コンソール・ヘルプの「JMXポリシーの作成」を参照してください。

47 管理セキュリティの構成

この章では、Oracle Service Busの管理セキュリティおよびセキュリティ・ロールについて説明します。

プロキシ・サービスの作成などの管理機能にユーザーがアクセスできるようにするには、事前定義されたアクセス権限を持つ4つのセキュリティ・ロールのいずれかにユーザーを割り当てます。セキュリティ・ロールは、実行時に評価される条件に基づきユーザーまたはグループに動的に与えることのできるIDです。Oracle Service Busの管理セキュリティ・ロールのアクセス権限は変更できませんが、それらのロールのいずれかにユーザーまたはグループを入れるための条件は変更できます。

次の項では、Oracle Service Busの管理セキュリティについて説明します。

- 47.1項「管理セキュリティ・ロールと権限」

- 47.2項「管理セキュリティ・グループ」

- 47.3項「管理セキュリティの構成:主な手順」

セキュリティ・ロールの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverロールおよびポリシーによるリソースの保護』のユーザー、グループ、セキュリティ・ロールに関する項を参照してください。

47.1 管理セキュリティ・ロールと権限

表47-1でOracle Service Busの管理セキュリティ・ロールについて説明し、それぞれのアクセス権限についてまとめます。

表47-1 Oracle Service Busの管理セキュリティ・ロール

ロール

事前定義されたアクセス権限

IntegrationAdminおよびIntegrationDeployer

すべてのOracle Service Busリソースに対するあらゆるアクセス権があります。これには、サービス・アカウントおよびサービス・キー・プロバイダに含まれるユーザー名、パスワード、資格証明エイリアス・バインディングの作成、編集、または削除の機能などがあります。このロールで作成できるユーザー名とパスワードは、発信認証のためにサービス・アカウントによってのみ使用されます。Oracle Service Busリソースへのアクセスを認可するためには使用されません。

Oracle Service Bus管理コンソールの「セキュリティ構成」モジュールでユーザー、グループ、ロール、アクセス制御ポリシーの作成、編集または削除を行うことはできません。

IntegrationOperator

このグループの権限は次のとおりです。

- すべてのOracle Service Busリソースに対する読込みアクセス権があります。

- リソースをエクスポートできません。

- アラート・ルールを作成、表示、編集、および削除できるアクセス権があります。

- セッションを管理するためのアクセス権があります(セッションの作成、コミット、破棄、および取消しを含む)。すべてのセッションを表示できません。

- サービスの操作設定を作成、編集、表示、および削除できるアクセス権があります。

IntegrationMonitor

- すべてのOracle Service Busリソースに対する読込みアクセス権があります。

- リソースをエクスポートできません。

注意:

今回のリリースでは、IntegrationAdministratorとIntegrationDeployerの権限は同じです。これは、今後のリリースで変更される可能性があります。

Oracle Service Busのロールには、Oracle Service Busのリソースのみを変更する権限があります。Oracle WebLogic ServerまたはOracle WebLogic Server上の他のリソースを変更する権限はありません。Oracle WebLogic Serverおよび他のリソースを変更する許可を与えるには、表47-2に示したOracle WebLogic Serverのセキュリティ・ロールのいずれかにユーザーを追加します。Oracle Service Busの各ドメインでは、少なくとも1人のユーザーをAdminロールに追加します。

表47-2 Oracle WebLogic Serverのセキュリティ・ロール

Oracle WebLogic Serverのロール

デフォルトのアクセス権限

Admin

Oracle WebLogic ServerとOracle Service Busのすべてのオブジェクトと機能に対するあらゆるアクセス権があります。これには、ユーザー、グループ、ロール、またはアクセス制御ポリシーの作成、編集、または削除の機能などがあります。

Deployer

すべてのオブジェクトに対する読込みアクセス権があります。リソース、サービス、サービス・キー・プロバイダ、またはプロジェクトを作成、削除、編集、インポート、エクスポートできます。

Operator

すべてのオブジェクトを読み込み、エクスポートできるアクセス権があります。アラートの構成、メトリック・コレクションの有効/無効の切り替え、およびサービスの一時停止と再開ができます。

Monitor

すべてのオブジェクトに対する読込みアクセス権があります。任意のリソース、サービス、サービス・キー・プロバイダ、またはプロジェクトをエクスポートできます。

47.1.1 Oracle Service Bus管理コンソールでのロール・ベース・アクセス

表47-3から表47-8に、Oracle Service Busの各セキュリティ・ロールがOracle Service Bus管理コンソールで実行できるアクションを示します。

表中の「Y」はアクションを実行するための許可を示します。Oracle WebLogic ServerのAdminロールのみが、セキュリティ構成の権限を持っています。

表47-3 Oracle Service Bus管理コンソールにおけるロール・ベースのオペレーション・アクセス

アクション

Integration Admin

Integration Deployer

Integration Operator

Integration Monitor

統計の表示

Y

Y

Y

Y

統計のリセット

Y

Y

Y

N

警告の表示

Y

Y

Y

Y

アラートの削除

Y

Y

Y

N

アラート履歴の表示

Y

Y

Y

Y

サーバー・サマリーの表示

Y

Y

Y

Y

ダッシュボード設定の表示

Y

Y

Y

Y

ダッシュボード設定の設定

Y

Y

Y

Y

スマート検索設定の設定

Y

Y

Y

N

スマート検索設定の表示

Y

Y

Y

Y

グローバル設定の設定

Y

Y

Y

N

グローバル設定の表示

Y

Y

Y

Y

トレース設定の設定

Y

Y

Y

N

トレース設定の表示

Y

Y

Y

N

メッセージ・レポートの表示

Y

Y

Y

Y

メッセージのパージ

Y

Y

Y

N

表47-4 Oracle Service Bus管理コンソールにおけるロール・ベースのリソース・ブラウザのアクセス

アクション

Integration Admin

Integration Deployer

Integration Operator

Integration Monitor

プロキシ・サービスの作成

Y

Y

N

N

プロキシ・サービスの表示

Y

Y

Y

Y

プロキシ・サービスの編集

Y

Y

N

N

プロキシ・サービスの削除

Y

Y

N

N

ビジネス・サービスの作成

Y

Y

N

N

ビジネス・サービスの表示

Y

Y

Y

Y

ビジネス・サービスの編集

Y

Y

N

N

ビジネス・サービスの削除

Y

Y

N

N

テスト・コンソールの実行

Y

Y

N

N

WSDLの作成

Y

Y

N

N

WSDLの表示

Y

Y

Y

Y

WSDLの編集

Y

Y

N

N

WSDLの削除

Y

Y

N

N

XMLスキーマの作成

Y

Y

N

N

XMLスキーマの表示

Y

Y

Y

Y

XMLスキーマの編集

Y

Y

N

N

XMLスキーマの削除

Y

Y

N

N

WS-Policyの作成

Y

Y

N

N

WS-Policyの表示

Y

Y

Y

Y

WS-Policyの編集

Y

Y

N

N

WS-Policyの削除

Y

Y

N

N

XQueryの作成

Y

Y

N

N

XQueryの表示

Y

Y

Y

Y

XQueryの編集

Y

Y

N

N

XQueryの削除

Y

Y

N

N

XSLTの作成

Y

Y

N

N

XSLTの表示

Y

Y

Y

Y

XSLTの編集

Y

Y

N

N

XSLTの削除

Y

Y

N

N

MFLの作成

Y

Y

N

N

MFLの表示

Y

Y

Y

Y

MFLの編集

Y

Y

N

N

MFLの削除

Y

Y

N

N

JARの作成

Y

Y

N

N

JARの表示

Y

Y

Y

Y

JARの編集

Y

Y

N

N

JARの削除

Y

Y

N

N

サービス・アカウントの作成

Y

Y

N

N

サービス・アカウントの表示

Y

Y

Y

Y

サービス・アカウントの編集

Y

Y

N

N

サービス・アカウントの削除

Y

Y

N

N

サービス・キー・プロバイダの作成

Y

Y

N

N

サービス・キー・プロバイダの表示

Y

Y

Y

Y

サービス・キー・プロバイダの編集

Y

Y

N

N

サービス・キー・プロバイダの削除

Y

Y

N

N

Alert Ruleの作成

Y

Y

Y

N

Alert Ruleの表示

Y

Y

Y

Y

Alert Ruleの編集

Y

Y

Y

N

Alert Ruleの削除

Y

Y

Y

N

表47-5 Oracle Service Bus管理コンソールにおけるロール・ベースのプロジェクト・エクスプローラのアクセス

アクション

Integration Admin

Integration Deployer

Integration Operator

Integration Monitor

プロジェクトの作成

Y

Y

N

N

プロジェクトの表示

Y

Y

Y

Y

プロジェクトの編集

Y

Y

N

N

プロジェクトの削除

Y

Y

N

N

フォルダの作成

Y

Y

N

N

フォルダの表示

Y

Y

Y

Y

フォルダの編集

Y

Y

N

N

フォルダの削除

Y

Y

N

N

表47-6 Oracle Service Bus管理コンソールにおけるロール・ベースのセキュリティ構成アクセス

アクション

Integration Admin

Integration Deployer

Integration Operator

Integration Monitor

ユーザーの作成

N

N

N

N

ユーザーの表示

Y

Y

Y

Y

ユーザーの編集

N

N

N

N

ユーザーの削除

N

N

N

N

グループの作成

N

N

N

N

グループの表示

Y

Y

Y

Y

グループの編集

N

N

N

N

グループの削除

N

N

N

N

ロールの作成

N

N

N

N

ロールの表示

Y

N

N

N

ロールの編集

N

N

N

N

ロールの削除

N

N

N

N

ポリシーの作成

N

N

N

N

ポリシーの表示

N

N

N

N

ポリシーの編集

N

N

N

N

ポリシーの削除

N

N

N

N

表47-7 Oracle Service Bus管理コンソールにおけるロール・ベースのシステム管理アクセス

アクション

Integration Admin

Integration Deployer

Integration Operator

Integration Monitor

リソースのインポート

Y

Y

N

N

リソースのエクスポート

Y

Y

N

N

UDDIレジストリの作成

Y

Y

N

N

UDDIレジストリの表示

Y

Y

Y

Y

UDDIレジストリの編集

Y

Y

N

N

UDDIレジストリの削除

Y

Y

N

N

UDDIからインポート

Y

Y

N

N

自動インポート・ステータスの同期化

Y

Y

Y

Y

UDDIのデタッチ

Y

Y

N

N

UDDIにパブリッシュ

Y

Y

N

N

自動パブリッシュ・ステータス

Y

Y

Y

Y

自動パブリッシュ・ステータスのパブリッシュ

Y

Y

N

N

JNDIプロバイダの作成

Y

Y

N

N

JNDIプロバイダの表示

Y

Y

Y

Y

JNDIプロバイダの編集

Y

Y

N

N

JNDIプロバイダの削除

Y

Y

N

N

SMTPサーバーの作成

Y

Y

N

N

SMTPサーバーの表示

Y

Y

Y

Y

SMTPサーバーの編集

Y

Y

N

N

SMTPサーバーの削除

Y

Y

N

N

値の検索(カスタマイズ)

Y

Y

N

N

置換(カスタマイズ)

Y

Y

N

N

ファイルの作成(カスタマイズ)

Y

Y

N

N

ファイルの選択(カスタマイズ)

Y

Y

N

N

項目の選択(カスタマイズ)

Y

Y

N

N

ファイルの実行(カスタマイズ)

Y

Y

N

N

表47-8 Oracle Service Bus管理コンソールにおけるロール・ベースのチェンジ・センター・アクセス

アクション

Integration Admin

Integration Deployer

Integration Operator

Integration Monitor

セッションの編集

Y

Y

Y

N

すべてのセッションを表示

Y

Y

N

N

変更の表示

Y

Y

Y

N

変更のアクティブ化

Y

Y

Y

N

変更の破棄

Y

Y

Y

N

セッションの終了

Y

Y

Y

N

47.2 管理セキュリティのグループ

事前定義された管理ロールへのユーザーの割当てを容易にするため、Oracle Service Busには対応する4つのセキュリティ・グループも用意されています。ロール内のメンバーシップは動的ですが、グループ内のメンバーシップは静的です。管理者があるユーザーをグループに入れると、管理者が割当てを変更するまでそのユーザーはそのグループのメンバーです。

管理セキュリティの構成の最も簡単なシナリオでは、ユーザーを作成し、そのユーザーを4つの管理グループのいずれかに追加すると、このユーザーは、常に、事前定義されたアクセス権限すべてと対応するロールのメンバーに自動的になります。

より複雑なシナリオでは、MyAdministratorsEastとMyAdministratorsWestという独自のグループ2つを作成し、必要に応じてユーザーを割り当てます。MyAdministratorsWestグループが8amから8pm ESTのロール、MyAdministratorsEastグループが8pmから8am ESTのロールになるように、事前定義されたIntegrationAdminセキュリティ・ロールを構成します。

表47-9は、Oracle Service Busに用意されている管理グループの説明です。これらに加えて独自のグループを作成できます。

表47-9 Oracle Service Busのグループ

グループ

デフォルトで割り当てられるロール

IntegrationAdministrators

IntegrationAdmin。表47-1を参照してください。

IntegrationDeployers

IntegrationDeployer。表47-1を参照してください。

IntegrationOperators

IntegrationOperator。表47-1を参照してください。

IntegrationMonitors

IntegrationMonitor。表47-1を参照してください。

47.3 管理セキュリティの構成: 主な手順

Oracle Service Busのセッションの内部または外部から、ユーザー、グループ、およびロールを作成または変更できます。データに対する追加や変更は、即座に有効になり、すべてのセッションで使用できるようになります。データを追加または変更したときのセッションを破棄した場合でも、セキュリティ・データは破棄 されません 。

管理セキュリティを構成するには:

1. Oracle WebLogic ServerのAdminロールに含まれるユーザー・アカウントでOracle Service Bus管理コンソールにログインします。

2. (オプション)独自のセキュリティ・グループを作成します。
『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のグループの追加に関する項を参照してください。

3. ユーザーを作成し、そのユーザーをOracle Service Busのグループまたは独自のグループのいずれかに割り当てます。
『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のユーザーの追加に関する項を参照してください。

4. (オプション)ユーザーやグループが事前定義されたOracle Service Busのセキュリティ・ロールに入る条件を変更します。
デフォルトでは4つのデフォルト・グループは常にOracle Service Busのセキュリティ・ロールに入りますが、このデフォルトを変更できます。ユーザーのリストの管理が容易になるように、Oracleではユーザーをロールに直接追加しないことをお薦めします。かわりに、ユーザーをグループに追加し、そのグループをロールに追加します。

『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のロールの追加に関する項を参照してください。

48 プロダクション環境でのOracle Service Busのセキュリティ

この章では、本番環境でOracle Service Busを保護するために推奨される戦略について説明します。

Oracle Service Busインストールをプロダクション用に準備する場合、セキュリティ要件に特に注意する必要があります。ここでは、必要な作業のいくつかを簡単に説明します。

- Oracle WebLogic Serverのドキュメントの『Oracle Fusion Middleware Oracle WebLogic Server本番環境の保護』にあるガイドラインを読み、それに従ってください。

- Oracle Service Bus管理者用のユーザー・アカウントを作成し、1つまたは複数のグループ(IntegrationAdministrators、IntegrationOperators、IntegrationMonitors、およびIntegrationDeployers)に適切に割り当てます。詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のセキュリティ構成に関する項を参照してください。

- ファイル・システムで、Oracle Service Busの構成データを格納するディレクトリのアクセス制御を構成します。これはドメインのルートの下のsbconfigディレクトリです。例:

C:\oracle\user_projects\domains\base_domain\osb\config

- ファイル・システムで、FTP、SFTP、ファイル、および電子メールのトランスポートに使用するディレクトリのアクセス制御を構成します。

- 必要に応じて、Oracle Service Busインストールで使用するJMSリソースのアクセス制御を構成します。

48.1 Service Bus (SB)リソースのアンデプロイ

Oracle Service Busには、Oracle Service Busに登録されたリソースを公開する際に使用するリソース・サーブレット(MW_HOME/OSB_HOME/lib/sbresourceWar/sbresource.war)が用意されています。Oracle Service Busに登録されているリソースは次のとおりです。

- WSDL (Oracle Service Busにリソースとして登録されたWSDL)

- スキーマ

- MFL

- WS-Policy

- WSDL (プロキシ・サービスの解決済のポリシーとポート情報を持つ有効なWSDL。プロキシ・サービスがWSDLを使用して作成されている場合に使用可能)。

ただし、このサーブレットは、メタデータへの匿名HTTPアクセスを提供しており、これが、一部の高セキュリティ環境では、セキュリティ・リスクと見なされる場合があります。

HTTPを介して匿名でOracle Service Busリソースにアクセスできないようにする場合は、sbresources.warでセキュリティ・ロールを設定して、リソースへのアクセスを制御するか、または、リソースを完全にアンデプロイすることができます。

注意:

SBリソースをアンデプロイすると、UDDIサブシステムを使用できなくなります。

48.2 bodyコンテンツをストリーミングする場合の一時ファイルの保護

『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「メッセージ・コンテキスト・モデル」で説明されているように、メッセージ・コンテンツを処理する場合、Oracle Service Busパイプラインが、コンテンツをメモリーにロードするのではなく、ストリーミングするように指定できます。プロキシ・サービスでコンテンツ・ストリーミングを有効にする場合は、メッセージ処理中の中間段階として、ストリーミングされたコンテンツをメモリーやディスク・ファイルにバッファするかどうかを指定します。

一時ディスク・ファイルを使用する場合は、それらを保護する必要があります。

Oracle Service Busドメインをロック・ダウンするには、Javaシステム・プロパティcom.bea.wli.sb.context.tmpdirを設定して、一時ファイルが書き込まれる場所を指定します。

このディレクトリが存在し、適切なアクセス権のセットがあることを確認してください。

詳細は、『Oracle Fusion Middleware Oracle WebLogic Server本番環境の保護』のファイルのアクセス権限およびファイル・システムの推奨事項を参照してください。

48.3 Oracle Service Bus管理コンソールに対するサービス拒否攻撃からの保護

本番環境では、管理者以外のユーザーはOracle Service Bus管理コンソールにアクセス不可能である必要があります。

サービス拒否攻撃では、1つのソースから大量のリクエストが発信されたり、リソース制約がある点に達するとサーバーへの新しい接続が確立されたりします。

Oracle Service Bus管理コンソールに対するサービス拒否攻撃からの保護に関する推奨事項を次に示します。

- 本番環境では、管理サーバー(Oracle Service Bus管理コンソールが稼働するサーバー)は決して公開しないようにします。管理対象サーバーだけを、呼出し元からアクセスできるようにする必要があります。

- Oracle Service Bus管理コンソールのデフォルトのワーク・マネージャを使用するのではなく、別のワーク・マネージャを構成し、Oracle Service Bus管理コンソールWebアプリケーションにアクセスできるユーザー数のデフォルトの制限値(max-threads-constraint)を設定して使用します。
ワーク・マネージャの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項を参照してください。

49 トランスポート・レベルのセキュリティの構成

この章では、Oracle Service Busの様々なトランスポートに対して、トランスポート・レベルのセキュリティを構成する方法について説明します。

トランスポート・レベルのセキュリティは、サービス・コンシューマとプロキシ・サービス、ビジネス・サービス間の接続を確立する一環として、セキュリティ・チェックを適用します。Oracle Service Busが適用するセキュリティ・チェックのタイプは、プロキシ・サービスやビジネス・サービスが通信で使用するプロトコルによって異なります。プロトコルによっては、クライアントとエンドポイント間の通信を暗号化して、第三者による傍受を防止することもできます。

インバウンド・トランスポート・レベルのセキュリティは、クライアントとOracle Service Busプロキシ・サービス間の通信を保護します。アウトバウンドトランスポート・セキュリティは、Oracle Service Busプロキシ・サービスからアウトバウンド・リクエストを送信する3つすべてのテクニック(ルート・アクション、パブリッシュ・アクション、コールアウト・アクション)を保護します。

この章の内容は次のとおりです。

- 49.1項「HTTPSのトランスポート・レベルでのセキュリティの構成」

- 49.2項「HTTPのトランスポート・レベルでのセキュリティの構成」

- 49.3項「JMSのトランスポート・レベルでのセキュリティの構成」

- 49.4項「SFTPトランスポートのトランスポート・レベルでのセキュリティの構成」

- 49.5項「電子メール、FTP、およびファイルのトランスポート・レベルのセキュリティ」

- 49.6項「SBトランスポートのトランスポート・レベルでのセキュリティの構成」

- 49.7項「WSトランスポートのトランスポート・レベルでのセキュリティの構成」

- 49.8項「WebSphereメッセージ・キュー・トランスポートのトランスポート・レベルでのセキュリティの構成」

- 49.9項「メッセージ・コンテキストでのトランスポート・レベルのセキュリティ要素」

注意:

トランスポート・レベルのセキュリティは、接続自体のみを保護します。HTTPSやJMSプロトコルを使用して通信を暗号化する場合でも、Webサービス・クライアントとOracle Service Busプロキシ・サービスの間にルーターやメッセージ・キュー、別のプロキシ・サービスなどの仲介がある場合、仲介はプレーン・テキストでSOAPメッセージを取得します。仲介が2番目の受信者にメッセージを送信するとき、2番目の受信者は元の送信者が誰か知りません。意図しない仲介がSOAPまたはJMSメッセージを参照したり変更しないようにするには、トランスポート・レベルのセキュリティに加えてメッセージ・レベルのセキュリティを構成します。第52章「Webサービスのメッセージ・レベルでのセキュリティの構成」を参照してください。

49.1 HTTPSのトランスポート・レベルでのセキュリティの構成

HTTPSプロトコルは、通信を保護するためにSSLを使用します。SSLを使用して通信を暗号化し、メッセージの整合性を保証するとともに、強力なサーバーおよびクライアントの認証を要求することができます。HTTPSを使用する前に、Oracle WebLogic ServerでSSLを構成する必要があります。45.7項「Oracle WebLogicセキュリティ・フレームワークの構成:主な手順」を参照してください。

次の項で、HTTPSプロトコルのトランスポート・レベルのセキュリティの構成について説明します。

- 49.1.1項「HTTPSの認証レベル」

- 49.1.2項「インバウンドHTTPSセキュリティの構成:主な手順」

- 49.1.3項「アウトバウンドHTTPSセキュリティの構成:主な手順」

49.1.1 HTTPSの認証レベル

HTTPSプロトコルを介して通信する各プロキシ・サービスやビジネス・サービスについて、次のレベルの認証のいずれかを要求するようにサービスを構成できます。

- 一方向SSL、認証なし
このレベルでは、暗号化された通信が可能ですが、クライアントに資格証明を要求しません。一方向のSSL接続を確立するには、クライアントが接続を開始して、Oracle Service Busがその証明書をクライアントに送信します。つまり、クライアントがOracle Service Busを認証します。

- 一方向SSL、BASIC認証
このレベルでは暗号化された通信が可能で、一方向SSL通信が確立された後にクライアントはユーザー名とパスワードを提供する必要があります。クライアントは、ユーザー名とパスワードをHTTPリクエスト・ヘッダー(SSLで暗号化されます)にエンコードして提供します。プロキシ・サービスは暗号化されたリクエストを受信すると、資格証明をドメインの認証プロバイダに引き渡し、認証プロバイダがクライアントの資格証明が作成されたユーザー・アカウントに一致するかどうかを判断します。

- 二方向SSL、CLIENT CERT認証
このレベルでは暗号化された通信が可能で、強力なクライアント認証(二方向SSL)が行われます。

二方向のSSL接続を確立するには、クライアントが接続を開始してOracle Service BusがそのX.509証明書をクライアントに送信します。続いて、クライアントは自身の証明書をOracle Service Busに送信し、Oracle Service Busがクライアントを認証します。

クライアントの証明書からユーザー名を取得するには、IDアサーション・プロバイダを構成し、そのプロバイダが証明書のフィールドを抽出してクライアントのID (X.509トークン)として使用します。通常は証明書のSubjectDistinguishedNameのCN(共通名)またはE(電子メール)です。X.509トークンを抽出したら、トークンはOracle Service Bus管理コンソールの「セキュリティ構成」モジュールのユーザー・アカウントと比較されます。

SSLおよびIDアサーション・プロバイダの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』のセキュリティの基礎概念に関する項を参照してください。

- トランスポート・レベルのカスタム資格証明
カスタム認証トークンを使用して、トランスポート・レベルでクライアントのリクエストを認証できます。トランスポート・レベルのカスタム資格証明は、インバウンド・リクエストでのみサポートされています。カスタム・トークンは、HTTPヘッダーで指定します。サービス定義ウィザードのHTTPに固有な構成ページを使用すると、クライアントの認証を構成できます。カスタム認証の概念については、第54章「カスタム認証の構成」で説明しています。

49.1.2 インバウンドHTTPSセキュリティの構成:主な手順

プロキシ・サービスのインバウンド・トランスポート・レベルのセキュリティを構成するには:

1. 使用するHTTPS認証レベルに応じて、SSLおよび認証プロバイダ、IDアサーション・プロバイダをサポートするWebLogicのセキュリティ・フレームワークを構成したことを確認してください。

- クライアント認証をなしにする場合(匿名リクエスト)、「クライアント認証」を「なし」に設定します。

- 基本的な認証については、「クライアント認証」を「基本」に設定します。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のユーザーの追加に関する項を参照してください。

- SSLクライアント認証の場合、「クライアント認証」を「クライアント証明書」に設定し、WebLogic IDアサーション・プロバイダとWebLogic証明書パス・プロバイダを構成します。

- カスタムの認証トークンの場合、「クライアント認証」を「カスタム認証」に設定します。カスタムの認証トークンは、HTTPSヘッダーで送信される、IDアサーション・プロバイダに以前に構成された任意のアクティブなトークンを使用できます。カスタム認証の概念については、第54章「カスタム認証の構成」で説明しています。

注意:

最初に、54.5項「カスタム・トークン用IDアサーション・プロバイダの構成」の説明に従って、Oracle WebLogic ServerのIDアサーション・プロバイダを構成、または作成して構成し、Oracle Service Bus管理コンソールの「セキュリティ構成」モジュールにアクセスを許可するクライアントのユーザー名とパスワードを追加してください。

45.7項「Oracle WebLogicセキュリティ・フレームワークの構成:主な手順」を参照してください。

2. プロキシ・サービスを作成するときは、「トランスポート構成」ページで、「HTTP」を選択します。

3. HTTPトランスポート構成ページで、「HTTPSが必要」オプションを選択します。

4. 49.1.1項「HTTPSの認証レベル」の説明に従って、認証レベルを選択します。

5. 4.3項「プロキシ・サービスの構成」の説明に従って、ディスパッチ・ポリシー、リクエストのエンコーディング、レスポンスのエンコーディングの選択を行います。

6. 作成するサービスがWSDLベースで操作がある場合、「操作選択構成」ページで選択を行います。WS-I準拠を実行して(SOAP 1.1サービスのみ)、使用する選択アルゴリズムを選び、このプロキシ・サービスが呼び出す操作を決定します。このオプションは、WSDLに基づいて定義されたSOAPサービスまたはXMLサービスでのみ使用できます。

49.1.3 アウトバウンドHTTPSセキュリティの構成:主な手順

アウトバウンド・トランスポート・レベル・セキュリティでは、ビジネス・サービスとの接続を開くクライアントはプロキシ・サービスです。

アウトバウンド・トランスポート・レベル・セキュリティを構成するには:

1. (開発やテスト環境とは対照的に)本番環境でトランスポート・レベルのセキュリティを構成する場合、「ホスト名検証」が有効になっているか確認します。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の「SSLの構成」のホスト名検証の使用に関する項を参照してください。

2. ビジネス・サービスを作成するときは、トランスポート構成ページで、「HTTP」を選択します。
認証レベルを選択します。

Oracle Service Busがクライアントを認証しないようにプロキシ・サービスを構成した場合、エンタープライズ・システムを構成し、一方向SSLの認証レベル(BASIC認証オプション)を選択することによりクライアントを認証してください。

3. URIにより、HTTPとHTTPSのどちらを使用するかが決まります。HTTPビジネス・サービスは、HTTPとHTTPSのURLを合わせることができます。ただし、認証方法がクライアント証明書の場合を除きます。この場合は、すべてのURLをHTTPSにする必要があります。

4. ビジネス・サービスがHTTPSとBASIC認証を使用する場合は、サービス・アカウントを作成して、ビジネス・サービスで要求するユーザー名とパスワードを指定します。
ユーザー名とパスワードを直接サービス・アカウントに追加するか、クライアントのリクエストから受け取った資格証明をサービス・アカウントがパススルーするように構成するか、または、クライアント・ユーザー名をOracle Service Busユーザーにマップすることができます。Oracle Service Busがクライアントを認証しないようにプロキシ・サービスを構成した場合、資格証明をパススルーするサービス・アカウントを作成してください。

5. ビジネス・サービスでクライアント証明書認証を使用する場合、次を実行します。

1. サービス・キー・プロバイダを作成して、プロキシ・サービスがビジネス・サービスのSSLクライアント認証に使用するキー・ペアを指定します。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「サービス・キー・プロバイダ」を参照してください。

2. プロキシ・サービスを作成するか、既存のプロキシ・サービスを編集して、サービス・キー・プロバイダを指定します。2.3項「プロキシ・サービスの操作」を参照してください。

49.2 HTTPのトランスポート・レベルでのセキュリティの構成

HTTPプロトコルは、クライアントとプロキシ・サービスまたはビジネス・サービス間の通信を暗号化 しません が、BASIC認証はサポートしています。BASIC認証では、ユーザー名とパスワードがリクエスト内で送信されます。また、HTTPはカスタム・トークン認証をサポートしています。

注意:

パスワードがクリア・テキストで送信されるため、強力なネットワーク・セキュリティを構成していないかぎり、本番環境ではHTTPとBASIC認証を一緒に使用しないようお薦めします。かわりに、BASIC認証とHTTPSを併用してください。

次の項で、HTTPプロトコルのトランスポート・レベルのセキュリティの構成について説明します。

- 49.2.1項「インバウンドHTTPセキュリティの構成:主な手順」

- 49.2.2項「アウトバウンドHTTPセキュリティの構成:主な手順」

49.2.1 インバウンドHTTPセキュリティの構成:主な手順

プロキシ・サービスのインバウンド・トランスポート・レベルのセキュリティを構成するには:

1. プロキシ・サービスを作成するときは、「トランスポート構成」ページで、「HTTP」を選択します。「クライアント認証」オプションでは、「なし」、「基本」または「カスタム認証」を選択します。カスタム認証を選択すると、トークンを送信するHTTPヘッダーとトークンのタイプも指定する必要があります。
トランスポート・レベルのカスタム資格証明を構成する手順の説明は、2.3項「プロキシ・サービスの操作」にあります。カスタム認証の概念については、第54章「カスタム認証の構成」で説明しています。

カスタム認証のトークンには、任意のアクティブなトークン・タイプで、以前にIDアサーション・プロバイダ用に構成され、HTTPヘッダーで送信されたものを使用できます。

注意:

カスタム認証を使用するには、54.5項「カスタム・トークン用IDアサーション・プロバイダの構成」の説明に従って、最初にOracle WebLogic Server IDアサーション・プロバイダを構成、あるいは作成してから構成する必要があります。

Oracle Service Busでクライアントを認証(基本またはカスタム認証)する場合、クライアントのユーザー・アカウントを作成する必要があります。47.3項「管理セキュリティの構成:主な手順」を参照してください。

2. プロキシ・サービスのデフォルトのトランスポート・レベルでのアクセス制御ポリシーを変更します。このポリシーにより、ユーザーやグループ、ロールがプロキシ・サービスにアクセスできる条件を指定します。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のトランスポート・レベルのアクセス・ポリシーの編集に関する項を参照してください。

49.2.2 アウトバウンドHTTPセキュリティの構成:主な手順

アウトバウンド・トランスポート・レベル・セキュリティでは、ビジネス・サービスとの接続を開くクライアントはプロキシ・サービスです。

アウトバウンド・トランスポート・レベル・セキュリティを構成するには:

1. ビジネス・サービスを作成するときは、「トランスポート構成」ページで、「HTTP」を選択します。HTTPトランスポート・ページで、「基本」を選択します。
2.2項「ビジネス・サービスの操作」を参照してください。

2. サービス・アカウントを作成して、ビジネス・サービスで要求するユーザー名とパスワードを指定します。2.1.15項「サービス・アカウント・リソースの作成」を参照してください。
ユーザー名とパスワードを直接サービス・アカウントに追加するか、クライアントのリクエストから受け取った資格証明をサービス・アカウントがパススルーするように構成するか、または、クライアント・ユーザー名をOracle Service Busユーザーにマップすることができます。Oracle Service Busがクライアントを認証しないようにプロキシ・サービスを構成した場合、資格証明をパススルーするサービス・アカウントを作成してください。

3. プロキシ・サービスを作成するか、既存のプロキシ・サービスを編集して、サービス・アカウントを指定します。

49.3 JMSのトランスポート・レベルでのセキュリティの構成

JMSのトランスポート・レベルのセキュリティは、JMSメッセージングに対してエンド・ツー・エンドのセキュリティを提供しませんが、次のものは提供されます。

- Oracle Service BusとJMSサーバー間でJMSメッセージを送受信するための、保護されたSSLチャネルを使用するオプション。

注意:

JMSトランスポートでは、双方向SSLはサポートされません。

Oracle Service Busは、ローカルのJMSサーバーや外部のJMSサーバーと通信できます。JMSサーバーへの接続は、T3Sプロトコル(SSLを介したT3)によって保護されます。T3とT3Sは、Oracle独自のプロトコルです。

- JMSサーバーとの接続を確立し、JNDIツリー内のJMS宛先をルックアップする際に、Oracle Service Busプロキシ・サービスが認証に使用するユーザー名とパスワードを指定する機能。

注意:

JMS管理者は、Oracle WebLogic Server管理コンソールを使用して、WebLogic JMSサーバーおよびJNDIツリー内の宛先へのアクセスを制限するアクセス制御ポリシーを作成します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverロールおよびポリシーによるリソースの保護』と、『Oracle Fusion Middleware Oracle WebLogic Server JMSの構成と管理』のJMSシステム・リソースの構成方法に関する項を参照してください。

JMS管理者がJMS宛先のアクセス制御ポリシーを構成または変更する場合、Oracle WebLogic Serverが変更を認識するまで最高60秒かかります。

デフォルトでは、Oracle WebLogic Server JMSは60秒ごとに各JMS宛先のポリシーを確認します。この動作を変更するには、Oracle WebLogic Serverの起動コマンドを変更して、次のシステム・プロパティをOracle WebLogic Server JMSによるアクセス制御ポリシーの確認頻度(秒単位)に設定してください。weblogic.jms.securityCheckInterval

このプロパティの値を0(ゼロ)にすると、認可の確認がJMSリソースに対するsend、receive、getEnumerationアクションのたびに行われます。

次の項で、JMSトランスポート・レベルのセキュリティの構成について説明します。

- 49.3.1項「インバウンドJMSトランスポート・レベル・セキュリティの構成:主な手順」

- 49.3.2項「アウトバウンドJMSトランスポート・レベル・セキュリティの構成:主な手順」

49.3.1 インバウンドJMSトランスポート・レベル・セキュリティの構成:主な手順

インバウンドJMSトランスポート・レベル・セキュリティを構成するには:

1. JMSプロキシ・サービスを作成または編集するときは、トランスポート構成ページの「詳細設定」の下で、「SSLを使用」チェック・ボックスを選択します。
Oracle Service Busは、T3Sプロトコルを使用するためにJMSプロキシ・サービスを構成します。

2. JMS管理者がJMS接続プールへのアクセスを制限するアクセス制御ポリシーを作成した場合、JMSサーバーへの接続時に認証するようプロキシ・サービスを構成してください。

1. サービス・アカウントを作成して、JMSサーバーで要求するユーザー名とパスワードを指定します。2.1.15項「サービス・アカウント・リソースの作成」を参照してください。
プロキシ・サービスのJMSサービス・アカウントは、JMSオブジェクトのアクセスだけでなく、JNDIのルックアップにも使用されます。

サービス・アカウントにユーザー名とパスワードを直接追加する必要があります。JMSは、クライアントのリクエストから受信した資格証明をパススルーしたり、クライアントのユーザー名をOracle Service Busユーザーにマッピングするサービス・アカウントを使用できません。

2. プロキシ・サービスを作成または編集する場合、JMSトランスポート・ページで、「JMSサービス・アカウント」の横にある「参照」ボタンをクリックします。前述の手順で作成したサービス・アカウントを選択します。

49.3.2 アウトバウンドJMSトランスポート・レベル・セキュリティの構成:主な手順

アウトバウンドJMSトランスポート・レベル・セキュリティを構成するには:

1. JMSビジネス・サービスを作成または編集する場合、「トランスポート構成」ページの「詳細設定」の下で、「SSLを使用」チェック・ボックスを選択します。
Oracle Service Busは、T3Sプロトコルを使用するためにJMSビジネス・サービスを構成します。

2. JMS管理者がJMS接続プールへのアクセスを制限するアクセス制御ポリシーを作成した場合、JMSサーバーへの接続時に認証するようビジネス・サービスを構成してください。

1. サービス・アカウントを作成して、JMSサーバーで要求するユーザー名とパスワードを指定します。2.1.15項「サービス・アカウント・リソースの作成」を参照してください。
プロキシ・サービスのJMSサービス・アカウントは、JMSオブジェクトのアクセスだけでなく、JNDIのルックアップにも使用されます。

サービス・アカウントにユーザー名とパスワードを直接追加する必要があります。JMSは、クライアントのリクエストから受信した資格証明をパススルーしたり、クライアントのユーザー名をOracle Service Busユーザーにマッピングするサービス・アカウントを使用できません。

2. ビジネス・サービスを作成または編集する場合、JMSトランスポート・ページで、「JMSサービス・アカウント」の横にある「参照」ボタンをクリックします。前述の手順で作成したビジネス・アカウントを選択します。

3. メッセージを送信するときにOracle Service Busで認証されたサブジェクトを渡すには、「呼出し元のサブジェクトを渡す」チェック・ボックスを選択します。

49.4 SFTPトランスポートのトランスポート・レベルでのセキュリティの構成

26.5項「SFTPトランスポート」の説明にあるように、Oracle Service Busはインバウンドおよびアウトバウンドのトランスポート・レベル・セキュリティのSFTPトランスポートをサポートしています。SFTPトランスポートでは、Secure Shell (SSH)バージョン2を使用して、ファイルを転送します。

49.4.1 双方向認証の実行方法

SFTP認証は双方向で、SFTPサーバーとSFTPクライアント(Oracle Service Busサービス)は、異なるメカニズムを用いて互いを認証します。

- SFTPサーバーは、トランスポート構成ページで指定した認証方法(「ユーザー名パスワード」、「ホスト・ベース」、「公開鍵」)を使用してSFTPクライアント(Oracle Service Busサービス)を認証します。

- SFTPクライアント(Oracle Service Busサービス)は、known_hostsファイルを使用してSFTPサーバーを認証します。Oracle Service Busプロキシ・サービス(インバウンド・リクエスト)またはビジネス・サービス(アウトバウンド・リクエスト)システム上のknown_hostsファイルには、ホスト名とIPアドレス、プロキシ・サービスまたはビジネス・サービスが接続可能なリモートSFTPサーバーの公開鍵が必要です。SSHバージョン2は、この公開鍵を使用して接続を認証します。

SFTPクライアント(Oracle Service Busサービス)は、トランスポート構成ページで3つの認証方法のうちどれが選択されたかに関係なく、常にknown_hostsファイルを使用して、SFTPサーバーに接続するかどうかを決定します。つまり、どの場合でもSFTPサーバーは、このファイルにある情報を使用してOracle Service Busサービスにより認証されます。こうすることで、Oracle Service Busサービスが既知のサーバーに接続することを確認します。

たとえば、「ユーザー名パスワード」による認証の場合、SFTPクライアント(Oracle Service Busサービス)は、known_hostsファイルにあるSFTPサーバーの公開鍵に対してSFTPサーバーを認証します。SFTPサーバーは、サービス・アカウントのユーザー名とパスワードを用いて、クライアント(Oracle Service Busサービス)を認証します。

49.4.2 known_hostsファイルの使用

トランスポート構成ページでどの認証方法を選択しても、Oracle Service Busプロキシ・サービス(インバウンド・リクエスト)またはビジネス・サービス(アウトバウンド・リクエスト)システム上のknown_hostsファイルには、ホスト名とIPアドレス、プロキシ・サービスまたはビジネス・サービスが接続可能なリモートSFTPサーバーの公開が必要です。

Oracle Service Busサービスは、known_hostsファイルにある公開鍵/ホスト/IPの組合せを用いてSFTPサーバーを認証します。

注意:

このSSH認証メカニズムは、一般的なOracle Service Busサービス・キー・プロバイダ/PKI資格証明マッパー・プロセスには属しません。

認証時にknown_hostsファイルの要件が満たされる必要があります。known_hostsファイルにリストされていないSFTPサーバーは、認証されません。

known_hostsファイルの作成

1. known_hostsテキスト・ファイルを作成するには、任意のエディタを使用します。
known_hostsの形式は次のとおりです。

Hostname,IP   algorithm  public-key

Hostname、IP、public_keyは、SFTPサーバーを識別します。

RSA (ssh-rsaとしてのみ入力)およびDSA (ssh-dsaまたはssh-dssとしてのみ入力)でサポートされるアルゴリズム。

このファイルの公開鍵の形式は、「OpenSSH公開鍵形式」です。

例:

getafix,172.22.52.130   ssh-rsa   AAAAB3NzaC1yc2EAAAABIwAAAIEAtR+M3Z9HFxnKZTx66fZdnQqAHQcF1vQe1+EjJ/HWYtgAnqsn0hMJzqWMatb/u9yFwUpZBirjm3g2I9Qd8VocmeHwoGPhDGfQ5LQ/PPo3esE+CGwdnCOyRCktNHeuKxo4kiCCJ/bph5dRpghCQIvsQvRE3sks+XwQ7Wuswz8pv58=

行ごとに1つのエントリで、複数のエントリがサポートされています。

2. known_hostsファイルを次のディレクトリに移動します。
MW_HOME/user_projects/domains/osb_domain/osb/transports/sftp

/transports/sftpディレクトリは、自動的に作成されるわけではありません。ユーザーが作成する必要があります。

49.4.3 SFTPトランスポート認証プロセス

次の原則は、プロキシ・サービスとビジネス・サービスの両方のSFTP認証プロセスに適用されます。

- 接続: Oracle Service Busサービス(プロキシおよびビジネス)は、常にSFTPクライアントとして機能し、SFTPサーバーに接続します。

- SFTPサーバーによる認証: 公開鍵とホスト・ベースの認証の場合、SFTPサーバーはOracle Service Busサービスの公開鍵を使用して接続を認証します。ユーザー名/パスワードの場合、SFTPサーバーはユーザー名とパスワードを使用して接続を認証します。

- SFTPクライアントによる認証: Oracle Service Busサービスは、常にknown_hostsファイルにある公開鍵/ホスト/IPの組合せを用いてSFTPサーバーを認証します。

- 接続の確立: サーバー認証とクライアント認証の両方に成功した場合のみ、接続が確立されて転送の準備が完了します。

- 転送: プロキシ・サービスの場合は、ファイル(メッセージ)がダウンロードされ、ビジネス・サービスの場合はアップロードされます。

SFTPの認証プロセスは次のとおりです。

- プロキシ・サービスへの一方向のインバウンド・ダウンロード

1. SFTPクライアントであるプロキシ・サービスは、SFTPサーバーに接続しようとします。

2. プロキシ・サービスは、トランスポート構成ページで選択された認証メカニズムによって、SFTPサーバーから認証されます。
ホスト・ベースと公開鍵による認証の場合、リモートSFTPサーバーはプロキシ・サービスのホスト名と公開鍵を使用してOracle Service Busシステムを認証します。ユーザー名/パスワードによる認証の場合、SFTPサーバーは、プロキシ・サービスから(サービス・アカウントを通じて)提供されたユーザー名とパスワードを使用して、Oracle Service Busシステムを認証します。

3. (Oracle Service Busプロキシ・サービス・システム上の)known_hostsファイルは、Oracle Service Busプロキシ・サービスが接続可能なリモートSFTPサーバーの情報を保持します。
具体的には、このファイルにはホスト名とIPアドレス、認められたリモート・サーバーの公開鍵が含まれます。

SSHバージョン2は、この公開鍵を使用して接続を認証します。known_hostsファイルにリストされていないSFTPサーバーは、認証されません。

4. 認証が問題なく行われた場合、プロキシ・サービスはリモートSFTPサーバーに接続されたSFTPクライアントになります。

5. SFTPサーバーから許可された場合、プロキシ・サービス(SFTPクライアント)は、SFTPサーバー上のリモート・ディレクトリをポーリングし、リモート・ディレクトリにあるすべてのファイル(メッセージ)をダウンロードします。
プロキシ・サービスの構成によって、ポーリングするリモート・ディレクトリやポーリングの頻度、ダウンロードされるファイル(メッセージ)の処理が決まります。

- ビジネス・サービスからの一方向のアウトバウンド・アップロード

1. ビジネス・サービス(SFTPクライアント)は、SFTPサーバーに接続しようとします。

2. ビジネス・サービスは、トランスポート構成ページで選択された認証メカニズムによって、SFTPサーバーから認証されます。
ホスト・ベースと公開鍵による認証の場合、SFTPサーバーはビジネス・サービスのホスト名と公開鍵を使用してOracle Service Busシステムを認証します。ユーザー名/パスワードによる認証の場合、SFTPサーバーは(サービス・アカウントからの)ユーザー名とパスワードを使用して、Oracle Service Busシステムを認証します。

3. (Oracle Service Busビジネス・サービス・システム上の)known_hostsファイルは、Oracle Service Busビジネス・サービスが接続可能なSFTPサーバーの情報を保持します。
具体的には、このファイルにはホスト名とIPアドレス、認められたサーバーの公開鍵が含まれます。

SSHバージョン2は、この公開鍵を使用して接続を認証します。known_hostsファイルにリストされていないSFTPサーバーは、認証されません。

4. 認証が問題なく行われた場合、ビジネス・サービスはリモートSFTPサーバーに接続されたSFTPクライアントになります。

5. SFTPサーバーで許可された場合、ビジネス・サービス(SFTPクライアント)は、SFTPサーバー上のリモート・ディレクトリにファイルをアップロードします。
ビジネス・サービスの構成によって、ファイルをアップロードするリモート・ディレクトリやアップロードの再試行の頻度、アップロードされるファイル名に追加するファイルの接頭辞や接尾辞が決まります。

49.4.4 インバウンドSFTPトランスポート・レベル・セキュリティの構成:主な手順

プロキシ・サービスのインバウンド・トランスポート・レベルのセキュリティを構成するには:

1. 49.4.2項「known_hostsファイルの使用」の説明に従って、Oracle Service Busプロキシ・サービス・システム上にknown_hostsファイルを作成します。
known_hostsは、Oracle Service Busプロキシ・サービスが接続可能なリモートSFTPサーバーの情報を保持します。具体的には、このファイルにはホスト名とIPアドレス、認められたリモート・サーバーの公開鍵が含まれます。

SSHバージョン2は、この公開鍵を使用して接続を認証します。known_hostsファイルにリストされていないSFTPサーバーは、認証されません。

2. プロキシ・サービスを作成するときは、「トランスポート構成」ページで、「SFTP」を選択します。

3. エンド・ポイントのURIをsftp://hostname:port/directory形式で指定します。

- hostname は、SFTPサーバーのホスト名またはIPアドレスです。

- portは、SFTPサーバーがリスニングしているポートです。SFTPのデフォルト・ポートは22です。

- directoryは、ファイルのために定期的にポーリングされる場所です。このディレクトリはユーザーのホーム・ディレクトリに相対します。

4. SFTPトランスポート構成ページで、「ユーザー名パスワード」、「ホスト・ベース」または「公開鍵」のいずれかの認証を選択します。
ここでは、認証の選択肢の概要について説明しています。詳細は、26.5項「SFTPトランスポート」を参照してください。

- ユーザー名/パスワードによる認証では、静的なサービス・アカウントが(SFTPサーバー上のユーザー資格証明を使用して)、この認証方法に関連付けられるよう指定します。サービス・アカウントは、プロキシ・サービスでSFTPサーバーへの認証に使用されるユーザー名とパスワードを提供します。SFTPクライアントは、提供された資格証明を使用して認証されます。サポートされているのは、静的なサービス・アカウントのみです。

- ホスト・ベースの認証では、識別された既知のホストからの接続のみが許可されるよう指定します。この認証方法では、ユーザー名とサービス・キー・プロバイダを要求します。
SFTPサーバーは、プロキシ・サービスの公開鍵を使用してプロキシ・サービスを認証します。

注意:

Oracle Service Busプロキシ・サービスは、SFTPサーバーからの資格証明を認証するために、自身でサービス・キー・プロバイダを使用することはありません。known_hostsファイルのみを使用して、SFTPサーバーを認証します。

プロキシ・サービスの公開鍵は、サービス・キー・プロバイダによって参照されるキー・ペア内に存在します。サービス・キー・プロバイダを設定する際に、このキーを抽出する必要があります。次に、この公開鍵を使用するため、SFTPサーバーを構成します。

たとえば、Linux上のSFTPサーバーの場合は、次を行う必要があります。

- /etc/ssh/shosts.equivファイルを編集し、Oracle Service Busドメインを実行しているコンピュータのホスト名またはIPアドレスを追加します。

- /etc/ssh/ssh_known_hostsファイルを編集し、Oracle Service Busドメインを実行しているコンピュータのホスト名またはIPアドレスを追加して、その後に空白と公開鍵を続けます。

ユーザー名は、SFTPサーバー上のどのディレクトリをポーリングするかを決定するために使用されます。

- 公開鍵では、この認証方法を使用するためにユーザー名とサービス・キー・プロバイダが要求されることを指定します。各ユーザーは固有の秘密鍵を持っています。
SFTPサーバーは、公開鍵を用いてプロキシ・サービスを認証します。

注意:

Oracle Service Busプロキシ・サービスは、SFTPサーバーからの資格証明を認証するために、自身でサービス・キー・プロバイダを使用することはありません。known_hostsファイルのみを使用して、SFTPサーバーを認証します。

プロキシ・サービスの公開鍵は、サービス・キー・プロバイダによって参照されるキー・ペア内に存在します。サービス・キー・プロバイダを設定する際に、このキーを抽出する必要があります。次に、この公開鍵を使用するため、SFTPサーバーを構成します。

たとえば、Linux上のSFTPサーバーについて、任意のIDに関してあるシステムにアクセス権限を許可するには、そのシステム上の$HOME/.ssh/authorized_keysファイルに公開鍵を入れます。そのファイルにリストされたすべての鍵にアクセスが許可されます。

ユーザー名は、SFTPサーバー上のどのディレクトリをポーリングするかを決定するために使用されます。また、ユーザー名はSFTPサーバー上の公開鍵の場所を識別するときにも使用されます。

5. リモートSFTPサーバーから許可された場合、プロキシ・サービス(SFTPクライアント)は、SFTPサーバー上のリモート・ディレクトリをポーリングし、リモート・ディレクトリにあるすべてのファイルをダウンロードします。
プロキシ・サービスの構成によって、ポーリングするリモート・ディレクトリやポーリングの頻度、ダウンロードされるファイル(メッセージ)の処理が決まります。

ポーリングするディレクトリは絶対パスです。

49.4.5 アウトバウンドSFTPトランスポート・レベル・セキュリティの構成:主な手順

ビジネス・サービスのアウトバウンド・トランスポート・レベルのセキュリティを構成するには:

1. 49.4.2項「known_hostsファイルの使用」の説明に従って、Oracle Service Busビジネス・サービス・システム上にknown_hostsファイルを作成します。
known_hostsは、Oracle Service Busビジネス・サービスが接続可能なリモートSFTPサーバーの情報を保持します。具体的には、このファイルにはホスト名とIPアドレス、認められたリモート・サーバーの公開鍵が含まれます。

SSHバージョン2は、この公開鍵を使用して接続を認証します。known_hostsファイルにリストされていないSFTPサーバーは、認証されません。

2. ビジネス・サービスを作成するときは、「トランスポート構成」ページで、「SFTP」を選択します。

3. エンド・ポイントのURIをsftp://hostname:port/directory形式で指定します。

- hostname は、SFTPサーバーのホスト名またはIPアドレスです。

- portは、SFTPサーバーがリスニングしているポートです。SFTPのデフォルト・ポートは22です。

- directoryは、ファイルがアップロードされる場所です。このディレクトリはユーザーのホーム・ディレクトリに相対します。

4. SFTPトランスポート構成ページで、「ユーザー名パスワード」、「ホスト・ベース」または「公開鍵」のいずれかの認証を選択します。
ここでは、認証の選択肢の概要について説明しています。詳細は、26.5項「SFTPトランスポート」を参照してください。

- ユーザー名/パスワードによる認証では、静的なサービス・アカウントが(SFTPサーバー上のユーザー資格証明を使用して)、この認証方法に関連付けられるよう指定します。サービス・アカウントは、ビジネス・サービスでSFTPサーバーへの認証に使用されるユーザー名とパスワードを提供します。SFTPクライアントは、提供された資格証明を使用して認証されます。サポートされているのは、静的なサービス・アカウントのみです。

- ホスト・ベースの認証では、識別された既知のホストからの接続のみが許可されるよう指定します。この認証方法では、ユーザー名とサービス・キー・プロバイダを要求します。
SFTPサーバーは、ビジネス・サービスの公開鍵を使用してビジネス・サービスを認証します。

注意:

Oracle Service Busビジネス・サービスは、SFTPサーバーからの資格証明を認証するために、自身でサービス・キー・プロバイダを使用することはありません。known_hostsファイルのみを使用して、SFTPサーバーを認証します。

ビジネス・サービスの公開鍵は、サービス・キー・プロバイダによって参照されるキー・ペア内に存在します。サービス・キー・プロバイダを設定する際に、このキーを抽出する必要があります。次に、この公開鍵を使用するため、SFTPサーバーを構成します。

たとえば、Linux上のSFTPサーバーの場合は、次を行う必要があります。

- /etc/ssh/shosts.equivファイルを編集し、Oracle Service Busドメインを実行しているコンピュータのホスト名またはIPアドレスを追加します。

- /etc/ssh/ssh_known_hostsファイルを編集し、Oracle Service Busドメインを実行しているコンピュータのホスト名またはIPアドレスを追加して、その後に空白と公開鍵を続けます。

ユーザー名を使用して、SFTPサーバー上のアップロード用ディレクトリを決定します。

- 公開鍵では、この認証方法を使用するためにユーザー名とサービス・キー・プロバイダが要求されることを指定します。各ユーザーは固有の秘密鍵を持っています。
SFTPサーバーは、公開鍵を用いてビジネス・サービスを認証します。

注意:

Oracle Service Busビジネス・サービスは、SFTPサーバーからの資格証明を認証するために、自身でサービス・キー・プロバイダを使用することはありません。known_hostsファイルのみを使用して、SFTPサーバーを認証します。

ビジネス・サービスの公開鍵は、サービス・キー・プロバイダによって参照されるキー・ペア内に存在します。サービス・キー・プロバイダを設定する際に、このキーを抽出する必要があります。次に、この公開鍵を使用するため、SFTPサーバーを構成します。

たとえば、Linux上のSFTPサーバーについて、任意のIDに関してあるシステムにアクセス権限を許可するには、そのシステム上の$HOME/.ssh/authorized_keysファイルに公開鍵を入れます。そのファイルにリストされたすべての鍵にアクセスが許可されます。

ユーザー名は、SFTPサーバー上のアップロード・ディレクトリの決定と、SFTPサーバー上の公開鍵の場所を識別するときに使用されます。

5. リモートSFTPサーバーで許可された場合、ビジネス・サービス(SFTPクライアント)は、SFTPサーバー上のリモート・ディレクトリにファイルをアップロードします。
ビジネス・サービスの構成によって、ファイルをアップロードするリモート・ディレクトリやアップロードの再試行の頻度、アップロードされるファイル名に追加するファイルの接頭辞や接尾辞が決まります。

アップロード・ディレクトリは絶対パスで、自動的に作成されます。

49.4.6 インポート時に保持されるSFTPのセキュリティ属性

次のセキュリティ属性は、インポート時に45.6.1項「セキュリティおよびポリシーの構成を保持」チェック・ボックスが有効な場合に保持されます。

- クライアント認証方式

- サービス・アカウントへの参照(ユーザー名/パスワード認証の場合)

- サービス・キー・プロバイダへの参照(ホスト・ベースおよび公開鍵による認証の場合)

- ユーザー名(ホスト・ベースおよび公開鍵による認証の場合)

49.4.7 SFTP資格証明のライフサイクル

ユーザー名/パスワードや公開鍵の資格証明が変更になった場合、SFTPトランスポートは以前の資格証明により確立されたすべてのアイドル接続を解除し、再度接続しようとします。アクティブな接続の場合、SFTPトランスポートは現在の操作が完了した後に接続を解除します。

49.5 電子メール、FTP、およびファイル・トランスポート・レベルのセキュリティ

次の項では、電子メール、FTP、ファイル・プロトコルを介した通信で使用可能なセキュリティ対策について説明します。

- 49.5.1項「電子メールとFTPトランスポート・レベルのセキュリティ」

- 49.5.2項「ファイル・トランスポート・セキュリティ」

49.5.1 電子メールとFTPトランスポート・レベルのセキュリティ

電子メールとFTPは、セキュアなプロトコルではありません。これらは通常、セキュアでないチャネルを通して、脆弱な認証をサポートします。電子メールやFTPトランスポートでサポートされているセキュリティ方法は、電子メールやFTPサーバーへの接続に必要とされるユーザー名およびパスワードです。

電子メールを保護するには、ユーザー名およびパスワードの別名としてサービス・アカウントを指定する必要があります。サービスでは、SMTPサーバーに対する認証にユーザー名とパスワードを使用します。

FTPトランスポートを保護するには、external_userを選択し、ユーザー名とパスワードの別名としてサービス・アカウントを指定します。サービスは、FTPサーバーに対する認証にユーザー名とパスワードを使用します。

電子メールとFTPトランスポートへのセキュリティの追加の詳細は、2.2項「ビジネス・サービスの操作」を参照してください。

49.5.2 ファイル・トランスポート・セキュリティ

ファイル・トランスポートでサポートされているセキュリティ方法は、ファイルがあるコンピュータに対するユーザー・ログインです。

49.4項「SFTPトランスポートのトランスポート・レベルでのセキュリティの構成」に説明されているSFTPトランスポートは、FTPを保護する推奨メカニズムです。

49.6 SBトランスポートのトランスポート・レベルでのセキュリティの構成

Service Bus (SB)トランスポートでは、クライアントのOracle Service BusサーバーがRMI経由でOracle Service Busプロキシ・サービスを同期的に呼び出せます。RMIは、クライアントのOracle Service BusサーバーがSBトランスポートにアクセスできる唯一のメカニズムです。Oracle Service Busのこのリリースでは、関連のAPIは社内ユーザー専用であり、文書化はされていません。

SBプロキシ・サービスには、次の2つの方法のどちらかによりアクセスします。

- プロキシ・サービスのOracle Service Busサーバーに接続するためにSBビジネス・サービスを使用するクライアントOracle Service Busサーバーから、JNDIコンテキストとプロキシ・サービスのURIを使用して。

- SBプロキシ・サービスにアクセスするために独自のアーティファクトを使用するOracle WebLogic IntegrationとOracle Data Service Integratorなどの製品を使用して。これらのアーティファクトは製品に対して一意であり、ここでは説明しません。

SBビジネス・サービスは、SBプロキシ・サービスにだけメッセージを送信できます。JNDIプロバイダ(ビジネス・サービスのエンドポイントURIで指定)を使用して、リモートOracle Service Busサーバー上でJNDIルックアップを行います。具体的にはJNDIプロバイダは、SBプロキシ・サービスに対応するRMIスタブを取得するためにサービスがデプロイされているOracle Service Busサーバーを参照します。

たとえば、ビジネス・サービスで指定するエンドポイントのURIは、sb://some_secured_jndi_provider/some_remote_sb_proxyとなります。

セキュアなJNDIプロバイダは、セキュア・プロトコルを使用したプロバイダURLを持っている必要があります。SBビジネス・サービスの場合は、HTTPSやt3sプロトコルを使用できます。

(ビジネス・サービスの)サービス・アカウントは、リモートSBプロキシ・サービスの呼出しに使用されるユーザー資格証明を指定します。サービス・アカウントが指定されない場合は、このビジネス・サービスのインバウンド・プロキシ・サービス(インバウンド・クライアント)のユーザー資格証明が、セキュリティ・コンテキストの伝播に使用されます。

SBトランスポートは、SSLを使用して協力なサーバーとクライアントの認証を要求できます。SBトランスポートとともにSSLを使用する前に、Oracle WebLogic ServerでSSLを構成する必要があります。45.7項「Oracle WebLogicセキュリティ・フレームワークの構成:主な手順」を参照してください。

注意:

「SSLを使用」フラグが設定されていると、リクエストをSSL接続経由で送信する必要があります。ただし、SBトランスポートではセキュアでない接続は禁止されていません。プロキシ・サービスはセキュアなURI (sbsとあるもの)を使用して(有効なWSDLまたはUDDI経由で)公開されますが、セキュアなアクセスは強制されません。

Oracle Service Busサーバー管理者は、サーバー上のセキュアでないすべてのプロトコル(t3、httpなど)を閉じ、セキュアなクライアント接続を厳密に強制する必要があります。

49.6.1 サービス・バス(SB)トランスポートを使用したSAML認証の構成

SBトランスポートでSAMLベースの認証を使用する場合は、次の構成要件に従ってください。

- SBクライアント側で、SAML資格証明マッパー・プロバイダを構成し、このクライアントから呼び出す予定がある各SBプロキシ・サービスにSAMLの依存側を作成します。対象のURLフィールドに、http://openuri.org/<OSBProxyServiceURI>と入力します。OSBProxyServiceURIは、SBプロキシ・サービスのサービスURIです。

- (SBプロキシ・サービスが存在する)Oracle Service Bus側では、SAML IDアサーション・プロバイダを構成して、SAMLのアサーション側を作成します。対象のURLフィールドには、SBプロキシ・サービスのサービスURIを入力します。SBプロトコルやホスト/ポートの情報は含めないでください。たとえば、/<OSBProxyServiceURI>のようになります。

49.7 WSトランスポートのトランスポート・レベルでのセキュリティの構成

Webサービスの信頼性のあるメッセージング(WS-RM)の機能が、WSとしてOracle Service Busで使用できます。Oracle Service Busは、2005年2月に提出された仕様をサポートしています。この仕様の詳細は、「Web Services Reliable Messagingプロトコル(WS-ReliableMessaging)」(http://schemas.xmlsoap.org/ws/2005/02/rm/)を参照してください。

WSトランスポートには、プロキシ・サービス(インバウンド)とビジネス・サービス(アウトバウンド)の両方のコンポーネントがあり、それらはSOAP1.1-およびSOAP1.2をベースとしたWSDLとWS-RMポリシーに基づいています。一方向とリクエスト/レスポンスのパターンをどちらもサポートしていますが、レスポンスは信頼性に欠けます。

49.7.1 Webサービスの信頼性のあるメッセージングの定義

『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の「Webサービスの信頼性のあるメッセージングの概要」で説明されているとおり、WS-RMはあるアプリケーション・サーバーで実行中のアプリケーションが、別のアプリケーション・サーバーで実行中のWebサービスを安定して呼び出すことができるフレームワークです。この場合、どちらのサーバーもWS-ReliableMessaging仕様を実装していることが前提です。「安定した」とは、2つのWebサービス間でメッセージの配信を保証する能力として定義できます。特に、仕様では相互運用可能なプロトコルと記述され、あるソースのエンドポイント(またはクライアントのWebサービス)から宛先のエンドポイント(または安定して操作を呼び出せるWebサービス)に送信されたメッセージが、1つ以上の配信保証に従って配信されたことが保証されるか、あるいはエラーが発生するというものです。

49.7.2 WLS Consoleに表示されるWSトランスポート・リソース

WSプロキシ・サービスは、Oracle WebLogic Server管理コンソールで表示されますが、WLSからポリシーを割り当てようとしても無視されます。

具体的には、管理者はOracle WebLogic Server管理コンソールで「ホーム」→「セキュリティ・レルムのサマリー」→「myrealm」→「レルム・ロール」ページに移動して、WSプロキシ・サービスのセキュリティ・ポリシーを外見上は編集できます。

ただし、このポリシーには何の効果もなく、実行時に評価されません。

EARアプリケーションはセッションをアクティブ化すると自動的に生成され、Oracle Service Busによってデプロイされます。これは、それぞれのWSプロキシ・サービスに対して1つのEARファイルです。

49.7.3 Webサービスの信頼性のあるメッセージングを構成するためのWS-Policyファイルの使用

WSトランスポート・セキュリティは、WS-Policyファイルを通してWSDLから、あるいはサービスにバインドされる形で構成します。

Oracle Service Busは、WS-Policyファイルを使用して、宛先のエンドポイントがそのWS-RM機能および要件を記述、公開できるようにします。WS-Policy仕様は、Webサービスのポリシーを記述および伝達するための一般目的のモデルと構文を提供します。

これらのWS-Policyファイルは、サポートされるWS-ReliableMessaging仕様のバージョン、ソース・エンドポイントの再送信の間隔、宛先エンドポイントの受信確認の間隔などの機能を記述するXMLファイルです。

RMアサーションとWSSPトランスポート・レベルのセキュリティ・アサーションを持つWS-Policyは、WSトランスポートのみでサポートされています。

49.7.3.1 構成済のWS-RMポリシー・ファイル

Oracle Service Busには、独自のWS-Policyファイルを作成しない場合に指定できる、2つの単純なWS-RM WS-Policyファイルが用意されています。

- DefaultReliability.xml - 信頼性のあるメッセージングのポリシーのアサーションに一般的な値(非アクティブ・タイムアウト10分、確認応答の間隔200ミリ秒、基本的な再送信間隔3秒など)を指定します。

- LongRunningReliability.xml - デフォルトの信頼性のあるメッセージングWS-Policyファイルと似ていますが、アクティビティのタイムアウト間隔に、より大きな値(24時間)を指定します。

これらのあらかじめパッケージされたファイルは変更できません。値がニーズに合わない場合は、独自のWS-Policyファイルを作成する必要があります。

たとえば、例49-1は完全なLongRunningReliability.xmlファイル(weblogic.jarから抽出されたもの)を示します。

例49-1 LongRunningReliability.xmlファイル

<?xml version="1.0"?>
<wsp:Policy
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:beapolicy="http://www.bea.com/wsrm/policy"
>
<wsrm:RMAssertion >
<wsrm:InactivityTimeout
Milliseconds="86400000" />
<wsrm:BaseRetransmissionInterval
Milliseconds="3000" />
<wsrm:ExponentialBackoff />
<wsrm:AcknowledgementInterval
Milliseconds="200" />
<beapolicy:Expires Expires="P1M" optional="true"/>
</wsrm:RMAssertion>
</wsp:Policy>

49.7.4 アクティブ化の前に必要なRM WS-Policy

WSトランスポートを使用するプロキシまたはビジネス・サービスは、サービスに直接バインドされているか、WSDLからのRMアサーションを含むWS-Policyを持っている必要があります。他のトランスポートを使用するサービスが、RMアサーションを含むWS-Policyを持つことはできません。

RMアサーションはサービス・レベルでのみバインドでき、操作やリクエスト/レスポンスのレベルではバインドできません。

49.7.5 非同期レスポンス

WS-RMは一方向とリクエスト/レスポンスという2つのメッセージング・パターンをサポートしています。WSトランスポートは両方のパターンをサポートしていますが、信頼性の高いレスポンスはサポートしていません。つまり、レスポンスは安全に送信されませんが、リクエストは常に信頼できます。

RMクライアントへのWSトランスポートを使用したプロキシ・サービスからの非同期レスポンスは、RMクライアントによって指定されるAcksToまたはReplyToエンドポイント参照に接続します。RMクライアントは、HTTP URLまたはHTTPS URLを使用できます。RMクライアントがHTTPSを使用する場合、RMクライアントはSSLハンドシェイク中にクライアント証明書をリクエストできます。WSトランスポートでは、リクエスト時にサービス・キー・プロバイダのSSLのキー・ペアを使用します。

49.7.6 プロキシ・サービスの認証

WSトランスポートは、WS-Policyファイルにより次のHTTPSセキュリティ・モードをサポートしています。

- HTTPS - クライアント認証なし

- HTTPS (BASIC認証あり)

- HTTPS(クライアント証明書認証あり - 二方向SSL)

表49-0は、これらのモードを実装するあらかじめ構成されたセキュリティ・ポリシーと、それらを使用する状況を示します。

表49-1 WSトランスポートの認証一覧

HTTPSが必要

要求される認証

あらかじめ構成されたトランスポート・セキュリティ・ポリシー

はい

なし

Wssp1.2-Https.xml

はい

BASIC

Wssp1.2-HttpsBasic.xml

はい

クライアント証明書

Wssp1.2-HttpsClientCert.xml

WSプロキシ・サービスは、WS-PolicyのWSSP 1.2トランスポート・レベルのセキュリティ・アサーションで決められているとおり、基本とクライアント証明書(二方向SSL)による認証をどちらもサポートしています。

例49-2にある、パッケージされたWssp1.2-Https.xmlポリシーから抽出された、HTTPSトークンとBasic256アルゴリズムの例について考えてみてください。

WS-policyで基本認証が指定されている場合、すべてのHTTPSリクエスト・メッセージ(WSプロキシ・サービスへのRMプロトコル・メッセージを含む)は、有効なユーザー名とパスワードを持っている必要があります。

例49-2 Wssp1.2-Https.xmlファイル(抜粋)

:
<sp:TransportBinding>
<wsp:Policy >
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
</wsp:Policy>
</sp:TransportBinding>
</wsp:Policy>

プロキシ・サービス認証のサポートは次のように行われます。

- プロキシ・サービス用に構成されたサービス・キー・プロバイダに割り当てられたSSLキー・ペアを使用したクライアント証明書のアウトバウンド認証。
サービス・キー・プロバイダ(アウトバウンド・リクエストで鍵と証明書のペアを渡します)の作成を計画している場合は、Oracle WebLogic Server管理コンソールを使用して、PKI資格証明マッピング・プロバイダを構成します。Oracle Service Busをホストする任意のOracle WebLogic Serverドメインで、最大1つのPKI資格証明マッピング・プロバイダを構成できます。

- WSプロキシ・サービス(基本認証を使用する)による他の任意のアウトバウンド・トランスポート、またはアウトバウンドWSSユーザー名トークンに対するユーザー名/パスワードのIDの伝播。
ビジネス・サービスでユーザー名とパスワード・トークンを要求する場合は、元のクライアント・リクエストからユーザー資格証明をパススルーするようにビジネス・サービスのサービス・アカウントを構成します。2.1.15項「サービス・アカウント・リソースの作成」を参照してください。

- WSプロキシ・サービス(基本認証または双方向SSL認証)と他の任意のトランスポートとの間の資格証明のマッピング。

- WSプロキシ・サービスからRMクライアントへのHTTPまたはHTTPSによる非同期レスポンスの送信(信頼性なし)。プロキシ・サービスとビジネス・サービスで使用されるデフォルトのプロトコルはHTTPです。
WSプロキシ・サービスから、RMクライアントによって指定される AcksTo または ReplyTo エンドポイント参照に接続するRMクライアントへの非同期レスポンス。RMクライアントはHTTP URLまたはHTTPS URLのどちらかを使用できます。RMクライアントがHTTPSを使用する場合、RMクライアントはSSLハンドシェイク中にクライアント証明書をリクエストできます。WSトランスポートでは、リクエスト時にサービス・キー・プロバイダのSSLのキー・ペアを使用します。

49.7.7 インポート時のセキュリティ構成の保持

Preserve Security and Policy Configurationフラグが設定されている場合、WSトランスポート・プロバイダは次のセキュリティ構成を保持します。サービス・アカウントへの参照(WSビジネス・サービスのみ)

49.7.8 インバウンド/アウトバウンドWSトランスポート・レベルのセキュリティの構成

WSトランスポート・セキュリティは、WS-Policyを通してWSDLから、あるいはサービスにバインドされる形で構成します。

49.8 WebSphereメッセージ・キュー・トランスポートのトランスポート・レベルでのセキュリティの構成

Oracle Service Busには、ネイティブのメッセージ・キュー(MQ)トランスポートのサポートが備わっています。これは、WebSphere MQとの間でメッセージを送受信できる機能です。この文脈において、MQトランスポートは、MQライブラリを使用してMQサーバーに接続するクライアントです。

MQ接続リソースを作成する際に、トランスポートのセキュリティ関連のプロパティを構成します。続いて、これらのプロパティは、MQプロキシ又はビジネス・サービスによって使用されます。

注意:

33.8.1項「環境へのMQクライアント・ライブラリの追加」の説明に従って、環境にMQクライアント・ライブラリを追加してください。

MQ接続リソースには、次の2つのモードが備わっています。

バインド・モード - バインド・モードを使用して、Oracle Service Busと同じコンピュータにあるMQキュー・マネージャに接続します。このモードでは、サービスはネットワークを介して通信するのでなく、既存のキュー・マネージャAPIに直接コールします。このモードは、ローカルのキュー・マネージャに接続する早い方法です。

tcpモード - tcpモードは、MQキュー・マネージャがOracle Service Busと同じコンピュータ上にない場合に使用します。

49.8.1 インバウンドMQトランスポート・レベル・セキュリティの構成:主な手順

プロキシ・サービスのインバウンド・トランスポート・レベルのセキュリティを構成するには:

1. MQトランスポートを使用するプロキシ・サービスを作成する前に、使用するトランスポートにMQ接続リソースを作成してください。次のセキュリティ構成設定から選択します。

- SSLが必要。メッセージの送信にHTTPSを使用する場合は、このチェック・ボックスを選択します。「双方向SSLが必要」オプションが選択されていない場合に、サーバー側のSSL(サーバーがクライアントに対して認証)がサポートされます。

- 暗号スイート。このオプションは、「SSLが必要」チェック・ボックスが選択されている場合にのみ使用できます。SSLで使用される暗号スイート・アルゴリズムを選択します。
暗号スイートは、キー交換アルゴリズムや対称暗号化アルゴリズム、セキュア・ハッシュ・アルゴリズムを含むSSL暗号化方式です。暗号化スイートは、通信の整合性を保護するために使用されます。

暗号化スイート・アルゴリズムは、WebSphere MQサーバーとMQトランスポート間のメッセージの通信を暗号化および復号化するときに使用されます。

- 双方向SSLが必要。このオプションは、「SSLが必要」チェック・ボックスが選択されている場合にのみ使用できます。クライアント側とサーバー側のSSL認証の使用を強制するには、このチェック・ボックスを選択します。

- サービス・キー・プロバイダへの参照。「双方向SSLが必要」を選択した場合、適切なクライアント側SSLのキー・マネージャを取得するために、サービス・キー・プロバイダへの参照を指定する必要があります。
サービス・キー・プロバイダのパス(プロジェクト/フォルダ)と名前を入力するか、「参照」をクリックして、「サービス・キー・プロバイダの選択」ページから選択します。

- 静的なサービス・アカウントへの参照。ユーザー名とパスワードによる認証に必要です。静的なサービス・アカウントのパス(プロジェクト/フォルダ)および名前を入力するか、「参照」をクリックしてサービス・アカウントを選択します。

2. プロキシ・サービスを作成するときは、「トランスポート構成」ページで、「mq」を選択します。

49.8.2 アウトバウンドMQトランスポート・レベル・セキュリティの構成:主な手順

ビジネス・サービスのアウトバウンド・トランスポート・レベルのセキュリティを構成するには:

1. MQトランスポートを使用するプロキシ・サービスを作成する前に、使用するトランスポートにMQ接続リソースを作成してください。次のセキュリティ構成設定から選択します。

- SSLが必要。メッセージの送信にHTTPSを使用する場合は、このチェック・ボックスを選択します。「双方向SSLが必要」オプションが選択されていない場合に、サーバー側のSSL(サーバーがクライアントに対して認証)がサポートされます。

- 暗号スイート。このオプションは、「SSLが必要」チェック・ボックスが選択されている場合にのみ使用できます。SSLで使用される暗号スイート・アルゴリズムを選択します。
暗号スイートは、キー交換アルゴリズムや対称暗号化アルゴリズム、セキュア・ハッシュ・アルゴリズムを含むSSL暗号化方式です。暗号化スイートは、通信の整合性を保護するために使用されます。

暗号化スイート・アルゴリズムは、WebSphere MQサーバーとMQトランスポート間のメッセージの通信を暗号化および復号化するときに使用されます。

- 双方向SSLが必要。このオプションは、「SSLが必要」チェック・ボックスが選択されている場合にのみ使用できます。クライアント側とサーバー側のSSL認証の使用を強制するには、このチェック・ボックスを選択します。

- サービス・キー・プロバイダへの参照。「双方向SSLが必要」を選択した場合、適切なクライアント側SSLのキー・マネージャを取得するために、サービス・キー・プロバイダへの参照を指定する必要があります。
サービス・キー・プロバイダのパス(プロジェクト/フォルダ)と名前を入力するか、「参照」をクリックして、「サービス・キー・プロバイダの選択」ページから選択します。

- 静的なサービス・アカウントへの参照。ユーザー名とパスワードによる認証に必要です。静的なサービス・アカウントのパス(プロジェクト/フォルダ)および名前を入力するか、「参照」をクリックしてサービス・アカウントを選択します。

2. ビジネス・サービスを作成するときは、「トランスポート構成」ページで、「mq」を選択します。

49.9 メッセージ・コンテキストでのトランスポート・レベルのセキュリティ要素

クライアントを認証するためにプロキシ・サービスを構成する場合、クライアントのIDおよびクライアントが属するセキュリティ・グループに、プロキシ・サービスのパイプラインからアクセスできます。IDとグループ情報は、次の場所にあるメッセージ・コンテキストにあります。

$inbound/ctx:security/ctx:transportClient/ctx:username

および

$inbound/ctx:security/ctx:transportClient/ctx:principals/ctx:group

(メッセージ・コンテキストには、ユーザーが属する各グループごとに1つのctx:group要素が含まれます)

プロキシ・サービスがクライアントを認証しない場合、$inbound/ctx:security/ctx:transportClient/ctx:usernameの値は<anonymous>で、ctx:group要素はありません。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のインバウンド変数とアウトバウンド変数に関する項、および2.4項「プロキシ・サービス・メッセージ・フローの操作」を参照してください。

50 Oracle Web Services Managerを使用したOracle Service Busのセキュリティ

この章では、Oracle Service BusとOracle Web Services Manager (WSM)を組み合せて使用し、既存のセキュリティ・プロバイダを活用しながら、WS-Securityポリシーとのサービス統合環境を保護するためのスケーラブルで標準ベースの集中管理型アプローチを提供する方法について説明します。

Oracle WSMは、セキュリティ・ポリシーの作成や管理、制御のための実行時のフレームワークです。ポリシーを作成して、Oracle Service Bus内のサービスに付加し、Oracle WSMエージェントを使用してこれらをメッセージングのライフ・サイクルの様々なポイントで施行します。

注意:

Oracle Service Busの将来のリリースでは、Oracle WSMポリシーがWLS 9のセキュリティ・ポリシーを強化して、これに置き換わります。このバージョンのOracle Service Busでは、引き続きWLS 9ポリシーがサポートされますが、サービスを新たに作成する際、Oracle WSMポリシーを使用して、WLS 9ポリシーが推奨されなくなる場合に備えることも検討してください。

この章の内容は次のとおりです。

- 50.1項「Oracle Service BusとOracle Web Services Managerとの統合

- 50.2項「Oracle Web Services ManagerとOracle Service Busの設定および使用」

- 50.3項「使用例: Oracle Service BusおよびWLS 9ポリシーとOracle Web Services Manager

Oracle Web Services Managerの詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』を参照してください。

50.1 Oracle Web Services ManagerとOracle Service Busの統合について

Oracle WSMは、Oracle Enterprise Manager Fusion Middleware Controlのコンポーネントで、Oracle SOA Suite環境とアプリケーションの集中管理と制御を提供するランタイムのフレームワークです。Oracle WSMポリシーは、Oracle Enterprise Managerで作成および構成し、ポリシー・ストア(データベースを推奨)で保持されます。Oracle WSMを使用すると、LDAPディレクトリに対してポリシーを定義し、標準のセキュリティ・トークン(SAMLトークンなど)を生成して、単一のトランザクションで使用される複数のWebサービスにIDを伝播することができます。

Oracle Service Busでは、セキュリティ・ポリシーを付加することのできるビジネス・サービスやプロキシ・サービスを定義する際に、使用可能なOracle WSMポリシーを付加できます。

Oracle WSMはランタイムのコンポーネントであるため、Oracle Service Busサービスへのポリシーの付加には、Oracle WSMが有効になっているOracle Service Busドメインへの接続が必要です。たとえば、EclipseでOracle WSMポリシーを使用するサービスを作成、管理する際は、ポリシーを付加するために、Oracle WSMが有効になっているドメインにOracle Service Busの構成をデプロイする必要があります。開発環境からOracle WSMへのランタイム接続がなければ、以前にサービスに付加されたポリシーの表示や削除しかできません。

Oracle Service BusにおけるOracle WSMのサポートは、自動的には利用できません。Oracle WSMのサポートをOracle Service Busで有効にするには、Oracle Service Busドメインを作成または拡張する際に、「Oracle Service Bus Oracle WSM拡張」テンプレートを選択します。Oracle Service BusドメインでOracle WSMのサポートが有効になると、無効化することはできません。50.2.1項「Oracle Service BusドメインへのOracle Web Services ManagerおよびOracle Enterprise Managerの追加」を参照してください。

50.1.1 セキュリティ・プロバイダ

ここでは、Oracle Service BusとOracle WSMが認証および認可で使用するセキュリティ・サービスについて説明します。

Oracle Web Service ManagerはJava Platform Security (JPS)を使用するため、Oracle Service BusはOracle WSMポリシーのJPSプロバイダを使用します。また、Oracle Service Busはメッセージ・セキュリティの他の面でOracle Common Security Services (CSS)を利用します。

Oracleセキュリティ・サービスの詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』の「Oracle Platform Security Servicesの概要」を参照してください。

次に、様々なセキュリティ分野でOracle Service BusとOracle WSMがどのセキュリティ・プロバイダを使用するかを示します。

50.1.1.1 JPSプロバイダ

Oracle Web Services Managerポリシーを使用する場合

- Oracle WSMポリシーは、Oracle WebLogic Serverではなく、JPSのSAMLプロバイダを使用します。Oracle WSMでのSAMLの構成の詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のSAMLの構成に関する項を参照してください。

- 認証の場合、Oracle WSMはJPSログイン・モジュールを使用し、このモジュールが、Oracle WebLogic Server上で構成された認証プロバイダを呼び出します。

- Oracle WSMとOracle Service Busは、Oracle Platform Security Servicesで提供されるJava Keystore (JKS)とFarm Level Keystore (FKS)をサポートしています。Oracle WSMポリシーの場合、Oracle WebLogic ServerとJPSキーストアの両方が同じ種類のキーストアを参照するようにJPS上でキーストアを構成するのが最適です。たとえば、JKSファイル・キーストアを使用する場合、JPSとOracle WebLogic Serverは同じファイルを示す必要があります。FKSキーストアを使用する場合、JPSとOracle WebLogic Serverは同じFKS構成を示す必要があります。詳細は、50.2.1項「Oracle Service BusドメインへのOracle Web Services ManagerおよびOracle Enterprise Managerの追加」を参照してください。

- JPSキーストアは、Oracle WSMポリシーのキーストア兼トラストストアとして機能します。

50.1.1.2 CSSプロバイダ

Oracle Service Busで使用するものを次に示します。

- WLS 9ポリシーを施行するためのCSSプロバイダ

- トランスポート・セキュリティを施行するためのCSSプロバイダ

- 認証ポリシーのOracle WebLogic Server認可プロバイダ

- カスタムのOracle WebLogic Server認証プロバイダおよびカスタムの認証ポリシー用IDアサーション・プロバイダ

- Oracle WebLogic Serverの資格証明プロバイダおよびマッパー

- WLS 9ポリシーのOracle WebLogic Serverキーストアおよびトラストストア

- Oracle Web Services Managerエージェントによる認証およびIDアサーション

50.2 Oracle Web Services ManagerとOracle Service Busの設定および使用

この項の内容は次のとおりです。

- 50.2.1項「Oracle Service BusドメインへのOracle Web Services ManagerおよびOracle Enterprise Managerの追加」

- 50.2.2項「Oracle Service BusサービスへのOracle Web Services Managerポリシーの付加」

- 50.2.3項「SAMLの構成」

- 50.2.4項「WS標準をサポートするためのWSDLの公開」

- 50.2.5項「デプロイメントに関する考慮事項」

- 50.2.6項「監査」

- 50.2.7項「モニター統計」

- 50.2.8項「サポートされるシード・ポリシーとサポートされないアサーション」

50.2.1 Oracle Service BusドメインへのOracle Web Services ManagerおよびOracle Enterprise Managerの追加

Oracle WSMポリシーをOracle Service Busで使用するには、Oracle WSMポリシー・ストア用に適切なデータベース・スキーマを作成して、Oracle Web Services Managerを含むようにOracle Service Busドメインを拡張する必要があります。

注意:

Oracle WSMをOracle Service Busドメインに追加した後は、ドメインでOracle WSMを無効化することはできません。

1. サポート対象のデータベースでOracle WSMデータベース・スキーマを作成するには、Oracle Repository Creation Utility (RCU)を使用します。作成する次のスキーマを選択してください。

- SOAおよびBPMインフラストラクチャ

- メタデータ・サービスとAS Commonスキーマは、SOAインフラストラクチャを選択すると自動的に選択されます。

スキーマの作成に使用した設定を、(特にメタデータ・サービス用のスキーマ所有者の場合は)メモしておいてください。

RCUの実行の詳細は、『Oracle Fusion Middleware Repository Creation Utilityユーザーズ・ガイド』を参照してください。

2. Oracle WSMとOracle Enterprise Managerを使用して、Oracle Service Busドメインを拡張します。Oracle Fusion Middleware構成ウィザードを実行する際に、次のドメイン・テンプレートを選択してください。

- Oracle Service Bus OWSM拡張

- Oracle WSM Policy Manager (OWSM拡張を選択すると自動的に選択されます)

- Oracle Enterprise Manager(オプションで、Oracle WSMポリシーの作成と管理に必要)

ドメイン拡張の一環として、Oracle構成ウィザードはJDBC構成ウィンドウでOWSM MDSスキーマを作成します。特にメタデータ・サービス(MDS)用のスキーマ所有者の場合は、このスキーマを選択し、前述の手順でOracle WSMスキーマの作成に使用したRCU設定に基づいてデータベース情報を設定してください。

詳細は、『Oracle Fusion Middleware Oracle SOA Suiteエンタープライズ・デプロイメント・ガイド』の「ドメインの作成」を参照してください。

3. ベスト・プラクティスとしては、Oracle WebLogic ServerとJPSキーストアの両方が同じ種類のキーストアを参照するようにJPS上でキーストアを構成します。たとえば、JKSファイル・キーストアを使用する場合、JPSとOracle WebLogic Serverは同じファイルを示す必要があります。FKSキーストアを使用する場合、JPSとOracle WebLogic Serverは同じFKS構成を示す必要があります。
キーストアの作成の詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のメッセージ保護に関するキーストアの設定に関する項を参照してください。

Oracle WSM用のドメインの拡張およびキーストア作成が問題なく完了したら、Oracle Enterprise Manager Fusion Middleware Controlを使用してOracle WSMポリシーを作成し、ポリシーをOracle Service Bus内のサービスに付加できます。Oracle WSMによって、一般的に使用されるポリシーが自動的に提供されます。

ドメインの実行中に、次のURLでOracle Enterprise Managerにアクセスできます。

http://host:port/em

Oracle WSMポリシーの管理の詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』の「Webサービス・ポリシーの管理」を参照してください。

50.2.2 Oracle Service BusサービスへのOracle Web Services Managerポリシーの付加

ここでは、Oracle Service BusサービスへのOracle WSMポリシーの付加に関するガイドラインを説明します。Oracle WSMを含むようにOracle Service Busドメインを拡張し、Oracle Enterprise Managerを使用してポリシーを作成し終わったら、「ポリシー」ページでOracle Service Bus内の次のタイプのプロキシ・サービスとビジネス・サービスに、このポリシーを付加できます。

- WSDL (SOAP)

- WSDL (XML)

- 任意のSOAP

- 任意のXML

- メッセージング

注意:

SOAP WSDL以外、任意のXMLおよびメッセージング・タイプでは、Service Busは、SOAPサービスでサポートされているOracle WSMポリシーのサブセットをサポートします。非SOAPサービスのポリシーは、HTTPトランスポートを使用する場合にのみサポートされます。

Oracle WSMポリシーは、サービス・レベルでのみ付加することができ、サービスWSDLに埋め込むことはできません。任意のサービスに対して、Oracle WSMポリシーかWLS 9ポリシーのどちらかを使用する必要がありますが、両方は使用できません。ただし、プロキシ・サービスであるタイプのポリシーを使用して、対応するビジネス・サービスに別のタイプを使用できます。

Eclipseでは、Oracle WSMポリシーをサービスに追加する際に、Oracle WSMが有効化された実行中のドメインに接続している必要があります。開発環境で実行中のサーバーに接続していない場合、以前に追加されたOracle WSMポリシーしか表示および削除することができず、Oracle WSMポリシーがパブリッシュ時にのみ検証されるという警告がOracle Service Busで表示されます。

注意:

Eclipseで複数のサーバーを操作するとき、EclipseはOracle WSMポリシーを取得するために、サーバー・リストの最初の有効なOracle Service Busサーバーを選択します。

Oracle Service Busはビジネス・サービス構成での「互換性の追加」機能を備えており、この機能では、Oracle Service BusでネイティブにサポートされていないWSDLの組込みWS-Securityポリシーを、互換性のあるOracle WSMポリシーに置き換えることができます。

開発環境でポリシーを付加する際は、開発環境のサービスがOracle Service Bus管理コンソール内のサービスと同期化されていない可能性があることを念頭に置いて、Eclipseからコンソールにサービスを更新するときに注意してください。

サービスをコピーして同じタイプのサービスを作成する場合(たとえば、ビジネス・サービスをコピーして新しいビジネス・サービスを作成する場合)、新しいサービスのOracle WSMポリシーを確認し、必要な調整を行ってください。

50.2.2.1 ポリシーのオーバーライド

Oracle WSMポリシーをサービスに追加した後、「「セキュリティ」ページでポリシーのオーバーライドを実行できます。

使用されたポリシーについては、オーバーライド・キー(プロパティ)とそのデフォルト値がユーザー・インタフェースに表示されます。キー名はポリシーのバインディングから取得されます。オーバーライドが可能な場合には、キーのデフォルト値の横にテキスト・ボックスが表示され、そこでオーバーライド値を入力できます。

Oracle Service Busでは、CSFストアでユーザー資格証明を指定する、署名キー別名やCSFキーのようなよく知られているオーバーライド用のキーが提供されません。(Oracle Service Busでは、サービス・アカウントでユーザー資格証明が提供されます。)

入力するオーバーライド・キーは、呼出しのときにOracle Web Service Managerエージェントに引き渡されます。

50.2.3 SAMLの構成

第53章「Oracle Service BusでのSAMLの使用」を参照してください。Oracle WSMでのSAMLの構成の詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のSAMLの構成に関する項を参照してください。

50.2.4 WS標準をサポートするためのWSDLの公開

WSDLに組込みOracle Web Service Managerポリシーが含まれるとき、Oracle Service Bus and Oracle SOA Suiteでサポートされている、次のポリシー標準と適合するようにポリシーを公開できます。

- WS-Policy 1.2(デフォルト)および1.5

- WS-Security Policy 1.1(デフォルト)、1.2および1.3

Oracle WSMポリシーが組み込まれたWSDLにアクセスする特殊な問合せパラメータをURLで使用することで、Oracle Service Busは必要な標準に適合するWSDLを生成します。URLによるWSDLへのアクセスの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のWebブラウザでのリソースの表示に関する項を参照してください。

注意:

この機能は、Oracle Service Busの「WSDLのエクスポート」または「WSDLの生成」機能では使用できません。

特殊な問合せパラメータは&wsp (WS-Policy)および&wssp (WS-Security Policy)で、WSDL、PROXY、およびWSDLを取得するためのBIZ URLパターンと組み合せて使用できます。例:

- http://localhost:7001/proxy/myProxy?WSDL&wsp=1.5&wssp=1.2
myProxyのWSDL、つまりWSDLベースのプロキシ・サービスを返すことで、Oracle WSMポリシー・リファレンスがWS-Policy 1.5およびWS-Security Policy 1.2に適合します。

注意:

前述のURLで、/proxy/myProxyはプロキシ・サービスのエンドポイントURIを指します。

- http://localhost:7001/sbresource?PROXY/myProject/myProxy&wsp=1.5&wssp=1.2
myProxyのWSDL、つまりWSDLベースのプロキシ・サービスを返すことで、Oracle WSMポリシー・リファレンスがWS-Policy 1.5およびWS-Security Policy 1.2に適合します。

- http://localhost:7001/sbresource?BIZ/myProject/myBiz&wsp=1.5&wssp=1.3
myBizのWSDL、つまりWSDLベースのビジネス・サービスを返すことで、Oracle WSMポリシー・リファレンスがWS-Policy 1.5およびWS-Security Policy 1.3に適合します。

- http://localhost:7001/sbresource?WSDL/proxy/myProxy
myProxyのWSDL、つまりWSDLベースのプロキシ・サービスを返すことで、Oracle WSMポリシー・リファレンスがWS-Policy 1.2およびWS-Security Policy 1.1に適合します。問合せパラメータが使用されていないため、Oracle Service Busではデフォルトが使用されます。

- http://localhost:7001/proxy/myProxy?WSDL&wssp=1.3
WS-Security Policy 1.3がWS-Policy 1.5のみと互換性があるため、myProxyのWSDLが返され、Oracle WSMポリシー・リファレンスがWS-Security Policy 1.3およびWS-Policy 1.5に適合します。

- 無効な値/組合せ
WS-Security Policy 1.2および1.3はWS-Policy 1.5のみと互換性があります。無効な値の例については、表50-1を参照してください。

ヒント:

Webブラウザで別のバージョンの問合せパラメータを試行して、返されるWSDLがどのように変わるかを参照してください。

問合せパラメータの組合せに関するクイック・リファレンスは、次の項の50.2.4.1項「WSポリシーのためのWSDL問合せパラメータ・リファレンス」を参照してください。

50.2.4.1 WSポリシーのためのWSDL問合せパラメータ・リファレンス

ここでは、前の項の50.2.4項「WS標準をサポートするためのWSDLの公開」で説明した&wspおよび&wssp問合せパラメータの、有効および無効な組合せを示すクイック・リファレンスを提供します。

例ではWSDLの取得に?WSDLを使用しています。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のWebブラウザでのリソースの表示に関する項の説明のように、WSDL取得の?PROXYおよび?BIZの各メソッドも使用できます。

表50-1に示すように、パラメータが1つ以上省略される際、Oracle Service Busでは有効なデフォルトが提供されます。無効な値の例外の場合、WS-Security Policy 1.2および1.3はWS-Policy 1.5のみと互換性があり、その逆もまた同様です。

表50-1 &wspおよび&wsspの問合せパラメータの有効および無効な組合せ

問合せパラメータの組合せ

WS-Policyバージョン

WS-Security Policyバージョン

...?WSDL

1.2

1.1

...?WSDL&wsp=1.2

1.2

1.1

...?WSDL&wsp=1.5

1.5

1.3

...?WSDL&wssp=1.1

1.2

1.1

...?WSDL&wssp=1.2

1.5

1.2

...?WSDL&wssp=1.3

1.5

1.3

...?WSDL&wsp=1.2&wssp=1.1

1.2

1.1

...?WSDL&wsp=1.5&wssp=1.2

1.5

1.2

...?WSDL&wsp=1.5&wssp=1.3

1.5

1.3

...?WSDL&wsp=1.2&wssp=1.2

無効な値の例外

無効な値の例外

...?WSDL&wsp=1.2&wssp=1.3

無効な値の例外

無効な値の例外

...?WSDL&wsp=1.5&wssp=1.1

無効な値の例外

無効な値の例外

...?WSDL&wsp=3.0&wssp=1.2

無効な値の例外

無効な値の例外

...?WSDL&wsp=1.2&wssp=2.0

無効な値の例外

無効な値の例外

50.2.5 デプロイメントに関する考慮事項

Oracle WSMポリシーの参照を持ったサービスを含むOracle Service Busの構成をエクスポートする際は、参照が維持されます。参照されているポリシーが、対象の環境にも存在することを確認する必要があります。対象の環境がIDEの場合、ポリシーがパブリッシュ時に検証されるという警告が表示されます。

50.2.6 監査

Oracle Enterprise Managerのポリシー・イベントを監査するには、監査データのリポジトリおよびイベント・コレクションを設定する必要があります。詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』の次の項を参照してください。

- 「監査データ・コレクションおよびストレージ」

- 「監査レポートの表示」 - Oracle Business Intelligence Publisher内の事前定義されたOracle WSMの監査レポートには、Oracle Service Busの統計が含まれます。

次のポリシー・レベルのイベントを監査できます。

- ポリシーの作成、削除、変更

- アサーション・テンプレートの作成、削除、変更

50.2.7 モニター統計

Oracle Enterprise Managerポリシーのモニター統計およびOracle Service Busの使用/影響分析は利用できません。このため、付加先のサービスに対するポリシー変更の影響を確認することはできません。ただし、Oracle Service Busは、WLS 9ポリシーの場合と同様に、Oracle WSMポリシーの施行エラーについてWS-Securityエラーの統計を収集し、この統計は、Oracle Service Busサービスのモニターのダッシュボードで利用できます。

50.2.8 サポートされるシード・ポリシーとサポートされないアサーション

この項では、Oracle Service Busによるサポート対象およびサポート対象外のOracle Web Services Mangerのシード・ポリシーおよびアサーションをリストします。

ユーザー定義のアサーションはサポートされます。

注意:

Oracle Enterprise Manager Fusion Middleware Controlのユーザー・インタフェースにおけるアサーションまたはポリシーの「有効化/無効化」オプションでは、アサーションまたはポリシーがOracle Service Busでサポートされているかどうかは判断されません。この項では、サポートされるポリシーとアサーションをリストします。

50.2.8.1 サポートされるシード・ポリシー

表50-2は、SOAPサービス・タイプまたはWSDL (SOAP)サービス・タイプで構成されたビジネス・サービスおよびプロキシ・サービスについて、サポートされるOracle WSMシード・ポリシーを示しています。表50-3は、HTTPトランスポートを使用するWSDL (非SOAP)サービス・タイプ、XMLサービス・タイプまたはメッセージング・サービス・タイプで構成されたビジネス・サービスおよびプロキシ・サービスについて、サポートされるOracle WSMシード・ポリシーを示しています。ユーザー定義のポリシーもサポートされます。

注意:

開発環境でサポートされていないシード・ポリシーを使用すると次のようになります。

- 開発環境で生成された有効なWSDLは、サポートされていないポリシーをスキップします。

- 検証はサービス・パブリッシュ時に実行されます。

次のポリシーの詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』の定義済のポリシーに関する項を参照してください。

表50-2 SOAPおよびWSDL (SOAP)サービス・タイプでサポートされるOracle WSMシード・ポリシー

種類

クライアント・ポリシー

サービス・ポリシー

認証専用

oracle/wss_username_token_client_policy

oracle/wss_username_token_service_policy

認証専用

oracle/wss10_saml_token_client_policy

oracle/wss10_saml_token_service_policy

認証専用

oracle/wss10_saml20_token_client_policy

oracle/wss10_saml20_token_service_policy

認証専用

oracle/wss11_kerberos_token_client_policy

oracle/wss11_kerberos_token_service_policy

メッセージ保護専用

oracle/wss10_message_protection_client_policy

oracle/wss10_message_protection_service_policy

メッセージ保護専用

oracle/wss11_message_protection_client_policy

oracle/wss11_message_protection_service_policy

認証およびメッセージ保護

N/A

oracle/wss_saml_or_username_token_over_ssl_service_policy

認証およびメッセージ保護

oracle/wss10_saml_hok_with_message_protection_client_policy

oracle/wss10_saml_hok_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss10_saml_token_with_message_integrity_client_policy

oracle/wss10_saml_token_with_message_integrity_service_policy

認証およびメッセージ保護

oracle/wss10_saml_token_with_message_protection_client_policy

oracle/wss10_saml_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss10_saml20_token_with_message_protection_client_policy

oracle/wss10_saml20_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss10_saml_token_with_message_protection_ski_basic256_client_policy

oracle/wss10_saml_token_with_message_protection_ski_basic256_service_policy

認証およびメッセージ保護

oracle/wss10_username_id_propagation_with_msg_protection_client_policy

oracle/wss10_username_id_propagation_with_msg_protection_service_policy

認証およびメッセージ保護

oracle/wss10_username_token_with_message_protection_client_policy

oracle/wss10_username_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss10_username_token_with_message_protection_ski_basic256_client_policy

oracle/wss10_username_token_with_message_protection_ski_basic256_service_policy

認証およびメッセージ保護

oracle/wss10_x509_token_with_message_protection_client_policy

oracle/wss10_x509_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss11_kerberos_token_with_message_protection_client_policy

oracle/wss11_kerberos_token_with_message_protection_service_policy

認証およびメッセージ保護

N/A

oracle/wss11_saml_or_username_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss11_saml_token_with_message_protection_client_policy

oracle/wss11_saml_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss11_saml20_token_with_message_protection_client_policy

oracle/wss11_saml20_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss11_saml_token_with_identity_switch_message_protection_client_policy

oracle/wss11_saml_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss11_username_token_with_message_protection_client_policy

oracle/wss11_username_token_with_message_protection_service_policy

認証およびメッセージ保護

oracle/wss11_x509_token_with_message_protection_client_policy

oracle/wss11_x509_token_with_message_protection_service_policy

認証専用

oracle/wss_http_token_client_policy

Basic認証専用。

サポートされるService Busトランスポート: HTTP

このポリシーの詳細は、50.2.9.1項「wss_http_token_*_policyのガイドライン」および50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

oracle/wss_http_token_service_policy

Basic認証専用。

サポートされるService Busトランスポート: HTTP

このポリシーの詳細は、50.2.9.1項「wss_http_token_*_policyのガイドライン」および50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

認証およびメッセージ保護

oracle/wss_http_token_over_ssl_client_policy

サポートされるService Busトランスポート: HTTP(S)

このポリシーの詳細は、50.2.9.1項「wss_http_token_*_policyのガイドライン」および50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

oracle/wss_http_token_over_ssl_service_policy

サポートされるService Busトランスポート: HTTP(S)

このポリシーの詳細は、50.2.9.1項「wss_http_token_*_policyのガイドライン」および50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

認証およびメッセージ保護

oracle/wss_saml_token_bearer_over_ssl_client_policy

サポートされるService Busトランスポート: HTTP(S)

このポリシーの詳細は、50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

oracle/wss_saml_token_bearer_over_ssl_service_policy

サポートされるService Busトランスポート: HTTP(S)

このポリシーの詳細は、50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

認証およびメッセージ保護

oracle/wss_saml_token_over_ssl_client_policy

サポートされるService Busトランスポート: HTTP(S)

このポリシーの詳細は、50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

oracle/wss_saml_token_over_ssl_service_policy

サポートされるService Busトランスポート: HTTP(S)

このポリシーの詳細は、50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

認証およびメッセージ保護

oracle/wss_username_token_over_ssl_client_policy

サポートされるService Busトランスポート: HTTP(S)

このポリシーの詳細は、50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

oracle/wss_username_token_over_ssl_service_policy

サポートされるService Busトランスポート: HTTP(S)

このポリシーの詳細は、50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

認証およびメッセージ保護

N/A

oracle/wss_saml_or_username_token_over_ssl_service_policy

サポートされるService Busトランスポート: HTTP(S)

このポリシーの詳細は、50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

認可専用

N/A

oracle/whitelist_authorization_policy

認可専用

N/A

oracle/binding_authorization_denyall_policy

認可専用

N/A

oracle/binding_authorization_permitall_policy

表50-3 HTTPトランスポートを使用するWSDL (非SOAP)、XMLおよびメッセージング・サービス・タイプでサポートされるOracle WSMシード・ポリシー

種類

クライアント・ポリシー

サービス・ポリシー

認証専用

oracle/wss_http_token_client_policy

Basic認証専用。

このポリシーの詳細は、50.2.9.1項「wss_http_token_*_policyのガイドライン」および50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

oracle/wss_http_token_service_policy

Basic認証専用。

このポリシーの詳細は、50.2.9.1項「wss_http_token_*_policyのガイドライン」および50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

認証およびメッセージ保護

oracle/wss_http_token_over_ssl_client_policy

このポリシーの詳細は、50.2.9.1項「wss_http_token_*_policyのガイドライン」および50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

oracle/wss_http_token_over_ssl_service_policy

このポリシーの詳細は、50.2.9.1項「wss_http_token_*_policyのガイドライン」および50.2.9.2項「Oracle WSM認証ポリシーのガイドライン」を参照してください。

認可専用

N/A

oracle/whitelist_authorization_policy

認可専用

N/A

oracle/binding_authorization_denyall_policy

認可専用

N/A

oracle/binding_authorization_permitall_policy

50.2.8.2 サポートされないアサーション

表50-4は、SOAPサービスと非SOAPサービスの両方でサポートされないOracle WSMアサーションを示しています。この表は、アサーションを含むポリシーも示し、影響を受ける機能とその機能を実現するための代替方法について説明しています。記述されていないアサーションは、ユーザー定義アサーションも含めてサポートされます。

表50-4 SOAPおよび非SOAPサービスのサポートされないアサーション

サポートされないアサーション

アサーションを含むOracle WSMポリシー

影響を受ける機能と代替方法

binding-permission-authorization

oracle/binding_permission_authorization_policy

サービスに対する許可ベースのアクセス制御。

代替方法: XACML認可ポリシーを使用します。

OptimizedMimeSerialization (MTOM)

oracle/wsmtom_policy

MTOM

代替方法: プロキシ・サービスまたはビジネス・サービスで直接MTOM構成を使用します。

RMAssertion

oracle/wsrm10_policy

oracle/wsrm11_policy

WS-RM 1.0/1.1

代替方法: WS-RM 1.0用のOracle Service Busで直接WSトランスポートを使用します。

sca-component-authorization

oracle/component_authorization_denyall_policy

oracle/component_authorization_permitall_policy

コンポーネントにアクセスするすべてを拒否または許可するロール・ベースのアクセス制御。

代替方法: 使用できません。

sca-component-permission-authorization

oracle/component_permission_authorization_policy

コンポーネントに対する許可ベースのアクセス制御

代替方法: 使用できません。

UsingAddressing

oracle/wsaddr_policy

WS-Addressingが要件

代替方法: SOA-DIRECTトランスポートを使用するビジネス・サービスでWS-Addressingを構成するか、Oracle Service BusパイプラインのメッセージにWS-Addressingを追加します。

wss-sts-issued-token-over-ssl

oracle/wss_sts_issued_saml_bearer_token_over_ssl_client_policy

oracle/wss_sts_issued_saml_bearer_token_over_ssl_service_policy

WS-Security 1.0 + SAML Bearer 1.1 (WS-TrustなどのSTS発行) + SSL

代替方法: 使用できません。

wss11-sts-issued-token-with-certificates

oracle/wss11_sts_issued_saml_hok_with_message_protection_client_policy

oracle/wss11_sts_issued_saml_hok_with_message_protection_service_policy

oracle/wss11_sts_issued_saml_with_message_protection_client_policy

WS-Security 1.1 + SAML Holder of Key (HoK) (WS-TrustなどのSTS発行) + メッセージ保護

代替方法: 使用できません。

sts-trust-config

oracle/sts_trust_config_policy

WS-Trust

代替方法: 使用できません。

50.2.9 Oracle Service BusでOracle WSMを使用する場合のガイドライン

この項では、特定のOracle WSMポリシーの使用に関するガイドラインを説明し、SOAP with Attachments、MTOMおよびXOPとともにOracle WSMポリシーを使用した場合の動作の変更についても説明します。

50.2.9.1 wss_http_token_*_policyのガイドライン

この項では、Oracle Service Busでwss_http_tokenポリシーを使用する場合のガイドラインを提供します。

注意:

Oracle WSMポリシーとともにHTTPトランスポートを使用する場合は、トランスポートの「認証」プロパティを「なし」に設定します。これ以外の値に設定すると、Oracle WSMポリシーと競合します。

Oracle WSMのポリシーで特定のオプションを有効にする場合、一定のガイドラインが適用されます。次のオプションがあります。

- 認証モード – Oracle WSMおよびOracle Service Busでは、ポリシーの「基本」認証モードのみがサポートされます。他のモードではすべて例外が発生します。

- トランスポート・セキュリティ - このオプションは、SSLチャネルで呼出しを実行する必要があることを示します。実行時は、次に従います。

- プロキシ・サービス: ポリシーでこのオプションを有効にする場合、ポリシーを含むプロキシ・サービスで「HTTPSが必要」オプションを有効にする必要があります。

- ビジネス・サービス: ポリシーでこのオプションを有効にするとビジネス・サービス構成で検証は発生しないため、ビジネス・サービス・エンドポイントのアドレスで必ずHTTPSを使用してください。エンドポイントでHTTPSを使用しないと、ランタイム・エラーがスローされます。

- 相互認証が必要 - このオプションは双方向SSLを示します。

- プロキシ・サービス: このオプションは、プロキシ・サービスでは使用できません。Oracle WSMにより提供されるwss_*_over_ssl_* _policyポリシーを使用する場合、このオプションを選択解除します。

- ビジネス・サービス: このオプションは、アウトバウンド・メッセージではOracle WSMに無視されるため、ビジネス・サービスとともに使用しても効果はありません。

- タイムスタンプを含める - このオプションは、SOAPヘッダーにタイムスタンプを強制的に含めます。

- プロキシ・サービス: このオプションをプロキシ・サービスで有効化すると、Oracle WSMによって、SOAPヘッダーのタイムスタンプが利用可能で有効であることが保証されます。

- ビジネス・サービス: ビジネス・サービスでこのオプションを有効にすると、Oracle WSMによって、タイムスタンプがまだ存在しない場合にSOAPヘッダーにタイムスタンプが追加されます。

注意:

HTTPトランスポートで非SOAPのサービス・タイプを使用するプロキシ・サービスおよびビジネス・サービスにwss_http_tokenポリシーを適用する場合は、Oracle WSMポリシーの「タイムスタンプを含める」オプションを無効にする必要があります。

50.2.9.2 Oracle WSM認証ポリシーのガイドライン

Oracle Service Busサービスでwss_http_token_over_ssl_client_policyやwss_username_token_over_ssl_client_policyなどのトークン・トランスポート・ポリシーを使用する場合、サービスのトランスポート構成ページで「認証」プロパティを「なし」に設定します。Oracle WSMトークン・ポリシーを使用するか、またはトランスポートを通じて認証を処理する必要があります(両方行うことはできません)。

50.2.9.3 Oracle WSMポリシーおよびSOAP with Attachments (SwA)

サポートされる任意のOracle WSMポリシー(表50-2を参照)を、SOAP with Attachments (SwA)がサポートされるプロキシ・サービスおよびビジネス・サービスに付加できます。メッセージ本文の保護に加えて、メッセージ保護ポリシーにメッセージの署名または暗号化、あるいはその両方を行うためのSwA添付ファイルを含むように構成できます。SwA添付ファイルを含める場合は、MIMEヘッダーも含めることができます。ポリシーは、Oracle Enterprise Managerで構成されます。詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のポリシーの構成に関する項およびメッセージの保護に関する項を参照してください。

50.2.9.4 Oracle WSMポリシーおよびMTOM形式のメッセージ

Oracle WSMポリシーを、MTOM形式のSOAPメッセージがサポートされ、HTTP、ローカルまたはSBトランスポートを使用するプロキシ・サービスおよびビジネス・サービスに付加できます。サポートされるすべてのポリシー(表50-2を参照)のメッセージ処理は、メッセージ保護ポリシーを除いて、MTOM形式のSOAPメッセージと他のすべてのSOAPメッセージで同じです。

50.2.9.4.1 使用方法のガイドライン

MTOM形式のメッセージをサポートするサービスにOracle WSMポリシーを適用する場合は、次のガイドラインに従います。

- プロキシ・サービスの場合は、同等のクライアント・ポリシーを使用して、着信メッセージが最初に暗号化される必要があります。

- サービスを構成する際は、トランスポートの「認証」プロパティを「なし」に設定します。これ以外の値に設定すると、Oracle WSMポリシーと競合します。

50.2.9.4.2 プロキシ・サービス

XOP/MTOMが有効になっているプロキシ・サービスで、サポートされる任意のOracle WSMインバウンド・リクエストの施行ポリシーを使用する場合は、実際のメッセージに対応するxop:Include要素またはctx:binary-content参照がインラインで埋め込まれます。パイプラインでペイロードのいずれのctx:binary-content参照も検出されないと、Base64エンコード・データでxop:Include要素に相当するバイナリ・コンテンツが検索されます。メッセージ・コンテンツは変更されません。

次の場合は、xop:Include要素がインラインで埋め込まれません。

- SSLが無効になっているHTTPセキュリティ(トランスポート・ポリシー)で、認証が「基本」に設定されている場合。

- SSLが有効になっているHTTPセキュリティ(トランスポート・ポリシー)で、タイムスタンプの検証が不要で、認証が「基本」に設定されている場合。

前述のポリシー・タイプに加えて、「ロール・ベース・アクセス・コントロール」ポリシーを使用することができ、その動作に変更はありません。付加されたポリシーの有効な他のいずれのアサーション(ロギング・アサーションを含む)を使用した場合も、バイナリ・コンテンツがインラインで埋め込まれます。

インバウンド・レスポンスの形式は、XOP/MTOMサポートが有効かどうかによって異なります。有効な場合、インバウンド・レスポンスは常にMTOMエンコードです。XOP/MTOMサポートが有効でない場合、レスポンス・ペイロードはSOAPメッセージです。

50.2.9.4.3 ビジネス・サービス

XOP/MTOMが有効になっているビジネス・サービスでOracle WSMの暗号化ポリシーを使用しない場合、アウトバウンド・リクエストのすべてのctx:binary-content参照がxop:Include要素で置き換えられます。メッセージ保護ポリシーを除く任意のOracle WSMポリシーが適用される場合、動作およびメッセージの構造に変更はありません。

ただし、暗号化ポリシーが適用された際に、xop:Include要素は暗号化される前にインラインで埋め込まれます。アウトバウンド・リクエスト・メッセージには、(元のバイナリ・コンテンツではなく)暗号化データに関連するバイナリ・コンテンツのxop:Include要素および対応するMIME添付ファイルが含まれます。サービス側で、パイプラインは、クライアント・パイプラインのバイナリ・コンテンツのBase64エンコード・データを参照します。プロキシ・サービスの場合と同様に、メッセージ・コンテンツは変更されません。

ビジネス・サービスのアウトバウンド・レスポンスの動作は、前述のプロキシ・サービスの動作と同じです。また、xop:Include要素は、SSLが有効で、タイムスタンプが検証され、認証が「基本」に設定されているHTTPセキュリティ(トランスポート・ポリシー)では、インラインで埋め込まれません。

50.3 使用例: Oracle Service BusおよびWLS 9ポリシーとOracle Web Services Manager

ここでは、サービス・パイプライン全体のセキュリティを確保する場合の使用例を挙げ、WLS 9ポリシーを使用したOracle Service BusサービスとOracle WSM機能の間の対話に重点を置いて説明します。

Oracle Service BusサービスでWLS 9ポリシーを持つOracle WSMを使用する場合、構成は必要なく、Oracle WSMでOracle Service Busドメインを拡張する必要もありません。希望するクライアントおよびサービスの場所でOracle WSMの機能を実装すると、自動的に対話と施行が行われます。

注意:

Oracle Service Busの将来のリリースでは、Oracle WSMポリシーがWLS 9のセキュリティ・ポリシーを強化して、これに置き換わります。このバージョンのOracle Service Busでは、引き続きWLS 9ポリシーがサポートされますが、サービスを新たに作成する際、Oracle WSMポリシーを使用して、WLS 9ポリシーが推奨されなくなる場合に備えることも検討してください。

Oracle WSMの詳細は、次を参照してください。

- 『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』
Oracle WSM 10.1.3のドキュメント(http://download.oracle.com/docs/cd/E10291_01/index.htm)

- 『Oracle Fusion Middleware Oracle Web Services Manager相互運用ガイド』のOracle Service Bus 10gセキュリティ環境との相互運用性に関する項

このドキュメントでは、Oracle WSMで使用する次のセキュリティの使用例について説明します。

- 50.3.1項「メッセージの保護」

- 50.3.2項「認証」

- 50.3.3項「境界セキュリティ」

- 50.3.4項「IDの伝播」

注意:

Oracle Web Services Manager 11.1.1にはGatewayに相当するものがありません。

50.3.1 メッセージの保護

この説では、次の使用例について説明します。

- 50.3.1.1項「クライアント・エージェントを使用したメッセージの保護」

- 50.3.1.4項「ゲートウェイを使用したメッセージの保護」

- 50.3.1.2項「サーバー・エージェントを使用したメッセージの保護」

- 50.3.1.3項「クライアントとサーバー・エージェントを使用したメッセージの保護」

50.3.1.1 クライアント・エージェントを使用したメッセージの保護

この使用例を次のOracle WSMのバージョンに実装することができます。

- 11.1.1.x

- 10.1.3.x

図50-1は、メッセージの保護のためにOracle Web Services Managerクライアント・エージェントを使用する方法について説明します。

図50-1 Oracle Web Services Managerクライアント・エージェントを使用したメッセージの保護

プロキシ・サービスに、インバウンド・メッセージ保護ポリシーがあります。Oracle Web Services Managerクライアント・エージェントが、署名され、暗号化されたリクエストをプロキシ・サービスに送信します。プロキシ・サービスは、セキュリティで保護されたリクエストを受け取り、能動的仲介者として復号化および署名の検証を行い、リクエストをビジネス・サービスにルーティングします。ビジネス・サービスは、Webサービスを呼び出し、レスポンスを受け取り、そのレスポンスをプロキシ・サービスに送信します。プロキシ・サービスは、レスポンスに署名し、レスポンスを暗号化して、Oracle Web Services Managerクライアント・エージェントに送信します。クライアント・エージェントはセキュリティで保護されたレスポンスを受け取り、復号化および署名の検証を行い、そのレスポンスをクライアントに渡します。

50.3.1.2 サーバー・エージェントを使用したメッセージの保護

この使用例を次のOracle WSMのバージョンに実装することができます。

- 11.1.1.x

- 10.1.3.x

図50-2は、メッセージの保護のためにOracle Web Services Managerサーバー・エージェントを使用する方法について説明します。

図50-2 Oracle Web Services Managerサーバー・エージェントを使用したメッセージの保護

クライアントはOracle Service Busにあるプロキシおよびビジネス・サービスを介して通常のリクエストを送信します。ビジネス・サービスは、リクエストに署名し、リクエストを暗号化して、Oracle Web Services Managerサーバー・エージェントにメッセージを送信します。サーバー・エージェントはリクエストを復号化して、検証を行います。クライアントに通常のメッセージ・レスポンスを返します。

50.3.1.3 クライアントとサーバー・エージェントを使用したメッセージの保護

この使用例を次のOracle WSMのバージョンに実装することができます。

- 11.1.1.x

- 10.1.3.x

図50-3では、メッセージの保護のためにOracle Web Services Managerクライアントおよびサーバー・エージェントを使用する方法について説明します。

図50-3 Oracle Web Services Managerクライアントおよびサーバー・エージェントを使用したメッセージの保護

Oracle Web Services Managerクライアント・エージェントは、クライアント・リクエストに署名し、クライアント・リクエストを暗号化して、プロキシ・サービスに送信します。プロキシ・サービスは、署名を復号化し、署名の検証を行って、ビジネス・サービスに送信します。ビジネス・サービスは、リクエストに署名し、リクエストを暗号化します。Webサービスには、サーバー・エージェントが挿入されています。サーバー・エージェントは、インバウンド・メッセージの保護ポリシーがあります。インバウンド・メッセージの保護ポリシーは署名を復号化し署名の検証を行って、レスポンスを暗号化します。ビジネス・サービスに応答を送信します。ビジネス・サービスはメッセージを検証して、レスポンス・プロキシ・サービスに送信します。プロキシ・サービスは、署名や暗号化されたレスポンスを生成して、クライアント・エージェントに送信します。クライアント・エージェントはレスポンスを復号化しレスポンスを検証して、クライアントに通常のレスポンスを返します。

50.3.1.4 ゲートウェイを使用したメッセージの保護

この使用例を次のOracle WSMのバージョンに実装することができます。

- 10.1.3.x

図50-4では、メッセージの保護のためにOracle Web Services Managerゲートウェイを使用する方法について説明します。

図50-4 Oracle Web Services Managerゲートウェイを使用したメッセージの保護

クライアントはOracle Service Busにあるプロキシおよびビジネス・サービスを介して通常のリクエストを送信します。ビジネス・サービスは、リクエストに署名し、リクエストを暗号化して、Oracle Web Services Managerゲートウェイに送信します。ゲートウェイはリクエストを復号化して、検証を行います。クライアントに通常のメッセージ・レスポンスを返します。

50.3.2 認証

この使用例を次のOracle WSMのバージョンに実装することができます。

- 11.1.1.x

- 10.1.3.x

図50-5では、認証のためにOracle Web Services Managerクライアント・エージェントを使用する方法について説明します。

図50-5 Oracle Web Services Managerクライアント・エージェントを使用した認証

プロキシ・サービスに、ユーザー名トークン・ポリシーがあります。クライアントが、Oracle Web Services Managerクライアント・エージェントを介して、ユーザー名トークンに含めたメッセージ・レベルのユーザー資格証明と共にリクエストをプロキシ・サービスに送信します。プロキシ・サービスは、資格証明マッピングを使用してユーザー名トークンのユーザー資格証明をマップし、認証のためにビジネス・サービスを介してWebサービスに送信します。Webサービスは、Oracle Web Services Managerサービス・エージェントによりインバウンド・ユーザー名トークン・ポリシーを使用して保護されています。Oracle Web Services Managerサービス・クライアント・エージェントが、ユーザー資格証明を抽出して認証します。その後、レスポンスがビジネス・サービスとプロキシ・サービスを介してクライアントに送り返されます。

50.3.3 境界セキュリティ

この使用例を次のOracle WSMのバージョンに実装することができます。

- 10.1.3.x

図50-6では、Oracle Web Services Managerゲートウェイを使用して境界セキュリティを適用する方法について説明します。

図50-6 Oracle Web Services Managerゲートウェイを使用した境界セキュリティ

Oracle Web Services Managerゲートウェイが、Oracle Service Busプロキシ・サービスによって公開されるサービスを仮想化します。Oracle Web Services Manager Gatewayへのインバウンド・リクエストに、メッセージ保護ポリシーが含まれています。クライアントが、セキュリティで保護されたリクエストをOracle Web Services Manager Gatewayで仮想化されたサービスに送信します。要求は署名され、暗号化されています。

Oracle Web Services Managerゲートウェイは、セキュリティを確立するポイントとして機能し、復号化と署名の検証を行います。その後、Oracle Web Services ManagerゲートウェイはSSLを介して通常のリクエストをプロキシ・サービスにルーティングします。プロキシ・サービスはリクエストをビジネス・サービスに転送し、ビジネス・サービスはWebサービスを呼び出して通常のレスポンスを受け取ります。レスポンスはプロキシ・サービスとOracle Web Services Managerゲートウェイを介してクライアントに戻ってきます。

50.3.4 IDの伝播

この使用例を次のOracle WSMのバージョンに実装することができます。

- 10.1.3.x

図50-7では、SAML (Security Assertion Markup Language)トークン・バージョン1.1によるID伝播のためにOracle Web Services Managerゲートウェイを使用する方法について説明します。

図50-7 Oracle Web Services Managerゲートウェイを使用したID伝播

クライアントが、基本的なHTTP認証リクエストをOracle Web Services Managerゲートウェイに送信します。Oracle Web Services ManagerゲートウェイはHTTPヘッダーにあるユーザー名とパスワードを使用してユーザーを認証します。Oracle Web Services Managerゲートウェイは、認証されたユーザーIDを使用してSAML送信者保証アサーションを生成し(トークン仲介)、アサーションにSAMLトークンを挿入して、アサーションをプロキシ・サービスに送信します。プロキシ・サービスは、ユーザーIDを含むSAMLアサーションを受け取り、能動的仲介者としてユーザーIDを検証します。次に、プロキシ・サービスはリクエストをビジネス・サービスに渡します。レスポンスがビジネス・サービス、プロキシ・サービス、およびOracle Web Services Managerゲートウェイを介してクライアントに戻ってきます。

51 Oracle Service Busプロキシ・サービスとビジネス・サービスでのWS-Policyの使用

この章では、Oracle Service BusでOracle WebLogic Serverのセキュリティ・ポリシー(WLS 9ポリシー)を使用する方法について説明します。

注意:

この章はWLS 9ポリシーのみに該当し、Oracle Web Services Manager (WSM)ポリシーは対象ではありません。WLSポリシーはこのリリースで非推奨となっており、Oracle Service Busの今後のリリースでは、WLS 9ポリシーはOracle WSMポリシーに置き換えられます。いずれの新しいサービスでもOracle WSMポリシーを使用し、現在使用しているすべてのWLS 9ポリシーをOracle WSMポリシーに置き換えることをお薦めします。

Webサービスであるプロキシ・サービスまたはビジネス・サービスのメッセージ・レベルのセキュリティ要件を指定するには、Webサービス・ポリシー(WS-Policy)フレームワークを使用します。

次の項では、プロキシ・サービスとビジネス・サービスのWS-Policyの構成について説明します。

- 51.1項「Webサービス・ポリシーについて」

- 51.2項「Oracle Service Bus WS-Policyファイル」

- 51.3項「カスタムWS-Policy文の作成と使用」

- 51.4項「WSDLドキュメントへのWS-Policy文の付加」

- 51.5項「Oracle独自のセキュリティ・ポリシーのベスト・プラクティス」

- 51.6項「ポリシー・サブジェクトと有効ポリシー」

51.1 Webサービス・ポリシーについて

Webサービス・ポリシー(WS-Policy)は、Webサービスの制約と要件を定義するための標準ベースのフレームワークです。それは、それぞれ1つまたは複数のアサーションを含む、ポリシーと呼ばれるXML文の集合で制約と要件を表します。

Oracle Service Busでは、WS-Policyアサーションを使用して、デジタル署名や暗号化に対するWebサービスの要件、および必要なセキュリティ・アルゴリズムや認証メカニズムを指定します。

WS-Policyフレームワークを使用すると、他の仕様で「ポリシー・アサーション」を宣言できます。ポリシー・アサーションは、<policy>要素内に示されるドメイン固有のXML要素です。ポリシー・アサーションの仕様は、このドメイン固有のアサーションの構文とセマンティクスを記述します。

WS-SecurityPolicyは、ドメイン固有のアサーション言語の一例です。WS-SecurityPolicy仕様は、WS-Policyフレームワークで使用する一連のセキュリティ・ポリシー・アサーションを定義しています。

WS-ReliableMessagingは、ドメイン固有のアサーション言語のもう1つの例であり、信頼性のあるメッセージング・ポリシーを宣言するためのアサーションを定義しています。

51.1.1 WS-SecurityとWS-Policyの関係

Webサービス・セキュリティ(WS-Security)は、Webサービス・ポリシー・フレームワーク(WS-Policy)と連動して機能します。次の用語の意味とこれらがどのように関係するのかを理解することが重要です。

- Webサービス・セキュリティ(WS-Security)はOASIS標準の1つです。SOAPメッセージにメッセージ・レベルのセキュリティを組み込むための相互運用可能なメカニズムを定義しています。WS-Securityによって、メッセージ・レベルのセキュリティが「どのように」 SOAPメッセージに組み込まれるかが決まります。
WS-Securityは、メッセージの整合性と機密性をサポートします。また、SOAPエンベロープにセキュリティ・トークンを含める拡張モデルや、SOAPエンベロープ内からセキュリティ・トークンを参照するモデルも定義しています。WS-Securityでは、SOAPメッセージのどの部分をデジタル署名または暗号化するかを指定できます。

- Webサービス・ポリシー・フレームワーク(WS-Policy)は、Webサービスのポリシーを記述して通信するための汎用モデルとその構文を提供します。WS-Policyは、抽象XMLフレームワークです。WS-Policyの特徴は、ポリシー「アサーション」と呼ばれる子要素です。

- WS-SecurityPolicyは、WS-Policyのセキュリティ面を指定するためのアサーションを定義します。WS-SecurityPolicyは、SOAPメッセージで「どの」メッセージ・レベルのセキュリティが必要かを決定します。
ポリシーでは、セキュリティで保護する操作と、Webサービス・クライアントが適用する必要があるセキュリティ対策を決定できます。

プロキシ・サービスまたはビジネス・サービスのWS-Policyを構成するときに、WS-Policyに1つまたは複数のセキュリティ・ポリシー・アサーションが含まれている場合、プロキシ・サービスまたはビジネス・サービスは、WS-Securityが有効になっていると見なされます。

51.1.2 WS-Policyはサービスに直接バインド可能

Oracle Service Busの以前のリリースと同様に、WS-PolicyポリシーはWSDLドキュメントに直接含めることも、または参照によって含めることも可能です。WSDLドキュメントは、WS-Policyポリシーを含むか参照する他のWSDLドキュメントをインポートできます。これらのポリシーを含むXMLファイルは、複数のプロキシ・サービスまたはビジネス・サービスから使用できます。

また、WS-Policyをサービスにバインドする別の方法があります。「ポリシー」ページを使用すると、ポリシーをサービスに直接バインドすることができます。ポリシーは、異なるスコープにバインド可能です。

- サービス全体

- サービスの操作

- サービスの操作のリクエスト・メッセージ

- サービスの操作のレスポンス・メッセージ

ポリシーをサービス全体にバインドすると、ポリシーはサービスのすべての操作と、すべての操作のリクエストおよびレスポンス・メッセージすべてに適用されます。ポリシーを操作にバインドすると、ポリシーはその操作のリクエストおよびレスポンス・メッセージに適用されます。

いずれのスコープにも、任意の数のポリシーをバインドできます。

例として、操作A、B、CおよびDを含むサービスSがあるとします。A、BおよびCは、リクエスト/レスポンス操作であり、Dはリクエストのみの操作です。管理者は、次のようにWS-Policyのバインディングを構成できます。

- ポリシーXをサービスS全体にバインド

- ポリシーYおよびZを操作Aに

- ポリシーYおよびZを操作Bに

- ポリシーPを操作Cのリクエスト・メッセージに

- ポリシーQを操作Cのレスポンス・メッセージに

- ポリシーRを操作Dのリクエスト・メッセージに

次に例を示します。

- 操作AおよびBのリクエスト/レスポンス・メッセージの有効ポリシーは、ポリシーX、YおよびZを結合したものです。

- 操作Cのリクエスト・メッセージの有効ポリシーは、XおよびYを結合したものです。操作Cのレスポンス・メッセージの有効ポリシーは、XおよびQを結合したものです。

- 操作Dのリクエスト・メッセージの有効ポリシーは、XおよびRを結合したものです。

51.1.3 抽象および具象WS-Policy文

WS-Policy仕様に基づいて(Oracle独自のセキュリティ・ポリシー・スキーマを使用して)記述されたセキュリティ・ポリシー・アサーションの場合、WebLogic Webサービス実行時環境では、2つのタイプのWS-Policy文を認識します。

- 具象WS-Policy文では、認証、暗号化、およびデジタル署名のために使用されるセキュリティ・トークンを指定します。具象暗号化ポリシーでは、必ず、サーバーの暗号化証明書が、base 64でエンコードされた証明書の形式でX.509バイナリ・セキュリティ・トークンに組み込まれます。
必要な認証のタイプ(X.509またはSAMLトークンの使用など)が設計時にわかっている場合は、具象WS-Policy文を作成できます。

- 抽象WS-Policy文では、セキュリティ・トークンを指定しません。具体的には、WS-Policyファイルの<Identity>要素や<Integrity>要素(またはアサーション)に<SupportedTokens><SecurityToken>子要素が含まれないこと、およびWS-Policyファイルの<Confidentiality>要素に<KeyInfo><SecurityToken>子要素が含まれないことです。
抽象ポリシーが受け取るセキュリティ・トークンのタイプは、Oracle Service Busの実行時環境で決定します。

51.2 Oracle Service Bus WS-Policyファイル

Oracle Service Busには、すぐに使用可能なWS-Policyファイルのセットが含まれます(Oracle Service Busポリシー・ファイルは、Oracle WebLogic Serverにより提供されるポリシー・ファイルのサブセットです)。

ポリシー文には、次の3タイプがあります。

- WS-Security Policyアサーション

- Oracleセキュリティ・ポリシー・アサーション

- 信頼性のあるメッセージング・アサーション

定義済のポリシー・ファイルについては、以降の項で説明します。

51.2.1 事前定義されたOracle独自のポリシー・ファイル

次のOracle独自の定義済のポリシー・ファイルが使用可能です。

- Auth.xml - Webサービス・クライアントに認証を要求するポリシーが含まれます。可能なかぎり、Auth.xmlポリシー・ファイルを使用せずに、Sign.xmlおよびEncrypt.xmlのポリシーを使用することをお薦めします。

- Encrypt.xml - クライアントにSOAP本体を3DES-CBCで暗号化するように要求するポリシーが含まれます。キー・ラップ・アルゴリズムはRSA 1.5です。Triple DES (Data Encryption Standard)の対称キーはクライアントが生成し、受信者用にRSA 1.5で暗号化します。
このポリシーはビジネス・サービスでは使用できません。かわりに、独自の具象暗号化ポリシーを作成します。51.3項「カスタムWS-Policy文の作成と使用」を参照してください。

- Sign.xml - クライアントにSOAP本体を署名するように要求するポリシーが含まれます。署名したタイム・スタンプをクライアント側のWS-Securityエンジンがwsse:Securityヘッダーに追加するよう要求します。この署名により、特定のリプレイ攻撃を防止できます。システム・ヘッダーもすべて署名されます。デジタル署名アルゴリズムはRSA-SHA1です。Exclusive XML Canonicalizationが使用されます。
システム・ヘッダーを次に示します。

- wsrm:SequenceAcknowledgement

- wsrm:AckRequested

- wsrm:Sequence

- wsa:Action

- wsa:From

- wsa:To

- wsa:FaultTo

- wsa:MessageID

- wsa:RelatesTo

- wsa:ReplyTo

- wsu:Timestamp

- wsax:SetCookie

ネームスペース接頭辞は、次の表のネームスペースに対応します。

接頭辞

ネームスペース

wsrm

http://schemas.xmlsoap.org/ws/2005/02/rm

wsa

http://schemas.xmlsoap.org/ws/2004/08/addressing

wsu

http://schemas.xmlsoap.org/ws/2002/07/utility

wsax

http://schemas.xmlsoap.org/ws/2004/01/addressingx

51.2.2 事前定義された信頼性のあるメッセージング・ポリシー・ファイル

WebLogic Web Servicesでは、WS-Policyファイルを使用して宛先エンドポイントを有効にし、Webサービスの信頼性のあるメッセージングの機能と要件を記述および公開できるようにする、WS-Policyファイルを使用します。これらのWS-Policyファイルは、サポートされるWS-ReliableMessaging仕様のバージョン、ソース・エンドポイントの再送信の間隔、宛先エンドポイントの受信確認の間隔などの機能を記述するXMLファイルです。

Oracle Service Busには、独自のWS-Policyファイルを作成しない場合に(WS-RMトランスポートでのみ)使用できる、2つの単純で信頼性のあるメッセージングWS-Policyファイルが用意されています。

- DefaultReliability.xml - 信頼性のあるメッセージングのポリシーのアサーションに一般的な値(非アクティブ・タイムアウト10分、確認応答の間隔200ミリ秒、基本的な再送信間隔3秒など)を指定します。実際のWS-Policyファイルについては、「DefaultReliability.xml WS-Policyファイル」を参照してください。

- LongRunningReliability.xml — 前述のデフォルトの信頼性のあるメッセージングWS-Policyファイルと似ていますが、アクティビティのタイムアウト間隔に、より大きな値(24時間)を指定します。

51.2.3 定義済のポリシー・ファイルを使用する条件

あらかじめパッケージされたポリシーをできるかぎり使用することをお薦めします。ただし、次の条件下ではこのポリシーを使用できません。

- トランスポート・レベルのポリシーは、メッセージ・レベルのセキュリティが必要ない場合にのみ使用します。

- SOAPメッセージの本文全体ではなく、特定の部分を暗号化またはデジタル署名するように指定する必要がある場合は、Oracle Service Bus WS-Policy文は使用できません。
かわりに、カスタムのWS-Policy文を作成します。52.5.1項「例: SOAP本体およびヘッダー部分の暗号化」を参照してください。

- クライアントにSAMLトークンを提供するよう要求する場合は、Oracle Service Bus WS-Policy文を使用できません。SAMLトークンを要求するWS-Policy文ではconfirmationMethodを指定する必要があるため、必ず具象ポリシーになります。

- ビジネス・サービスで暗号化を要求する必要がある場合は、Oracle Service Bus Encrypt.xmlのポリシーを使用できません。ビジネス・サービスでは具象的な暗号化ポリシーが必要です(証明書をポリシーに埋め込む必要があります)。

プロキシ・サービスまたはビジネス・サービスでのこれらのポリシーの使用については、51.4項「WSDLドキュメントへのWS-Policy文の付加」を参照してください。

51.3 カスタムWS-Policy文の作成と使用

Oracle Service Bus WS-Policyのパッケージ化されたポリシー・ファイルがセキュリティ要件を満たさない場合は、独自のWS-Policy文を作成できます。Oracle Service Bus WS-Policy文を変更することはできません。

WebサービスのWSDLドキュメントに直接カスタムWS-Policy文を記述できます。または、複数のWebサービスで文を再利用する場合は、別のXMLファイルにその文を記述し、次のいずれかを実行します。

- 文をOracle Service Busにインポートして、WSDLドキュメントから参照します。

- 文をサービスに直接バインドします。

Oracle Service BusのWS-Policy文では次の制限に注意してください。

- WS-Policy仕様に基づき、Oracle独自のセキュリティ・ポリシー・スキーマを使用して記述されたセキュリティ・ポリシー・ファイルは、次のネームスペースのId属性を持つ必要があります。http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
この属性の値は、Oracle Service Busドメイン内にあるすべてのWS-Policy文についてユニークである必要があります。この属性はWS-Policyスキーマでは省略可能ですが、Oracle Service Bus Webサービスでは必須です。

- プロキシ・サービスで機密性アサーションを作成する場合、それは抽象的である必要があります(証明書をポリシーに埋め込むことはできません)。具象的な機密アサーションが含まれるプロキシ・サービスを作成すると、エラー・メッセージが表示されます。

- ビジネス・サービスで機密性アサーションを作成する場合は、具象的であることが必要(証明書がポリシーに埋め込まれていることが必要)であり、WSDLドキュメントに直接配置する必要があります。このようなポリシーを参照で付加することはできません。52.5.1項「例: SOAP本体およびヘッダー部分の暗号化」を参照してください。

- WS-Policyリソースの名前を付ける際は、2.1.1項「リソースの命名制限」の説明に従ってください。

51.4 WSDLドキュメントへのWS-Policy文の付加

Oracle Service Busでは、WS-Policyアタッチメント仕様(http://www.w3.org/Submission/WS-PolicyAttachment/)を実装しています。これは、WS-Policy文をWebサービスを関連付けるメカニズムを定義するものです。

WebサービスのためにWS-Policy文をWSDLドキュメントに付加するには:

1. 別のXMLファイルでカスタムのWS-Policyを作成した場合、そのカスタムWS-PolicyファイルをOracle Service Busでリソースとして追加します。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のカスタムのWS-Policyの追加に関する項を参照してください。

2. WSDLドキュメントの<definitions>要素で、次の子要素を追加します。

<wsp:UsingPolicy
wsdl:Required="true"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>

wsdl:required="true"属性によって、プロキシ・サービスとビジネス・サービスがポリシーの付加を処理できることが保証されます。

この要素を追加しないと、Oracle Service BusではWSDLのすべてのWS-Policy文が無視されます。

3. 保護するWSDLドキュメントの各要素内で、次を実行します。

1. 使用するWS-Policy文のURIを決定します。51.4.1項「WS-Policy文のURIの確認」を参照してください。

2. WSDLドキュメント中のURIを指定します。51.4.2項「WSDLドキュメントでのWS-Policy文のURIの指定」を参照してください。

51.4.1 WS-Policy文のURIの確認

Oracle Service Bus WS-Policy文では、URIは常に次のようになります:

- policy:Auth.xml

- policy:Encrypt.xml

- policy:Sign.xml

WS-Policy文がWSDLドキュメントに直接記載される場合、URIは次のようになります。#policy-ID。ここで、policy-IDはポリシーのwsu:ID 属性値です。例51-2を参照してください。

別のXMLファイルに作成してOracle Service Busにリソースとして追加したWS-Policy文の場合、URIは次のようになります。policy:policy-ID。ここで、policy-IDはポリシーのwsu:ID属性(ポリシーのXMLファイルで指定)の値です。

また、UDDIを使用してWS-Policy文をWSDLドキュメントに付加することもできます。この場合、URIは別の形になります。詳細は、WS-Policy Attachment仕様(http://www.w3.org/Submission/WS-PolicyAttachment/)を参照してください。

51.4.2 WSDLドキュメントでのWS-Policy文のURIの指定

WSDLドキュメントでURIを指定するには、次のいずれかの方法を使用します。

- PolicyURIs属性
WSDLスキーマ(http://www.w3.org/TR/wsdlを参照)によって、保護する要素に対して属性の拡張が可能な場合は、その要素にPolicyURIsグローバル属性を追加します。

この要素の値では、それぞれ1つのポリシーを参照するURIのリストを指定します。

例:

<input message="tns:foo" wsp:PolicyURIs="policy:Sign.xml"/>

- ネストされた<Policy>要素
WSDLスキーマによって、保護する要素に対する要素の拡張が可能な場合は、グローバル子要素として<Policy>を追加します。使用する各WS-Policyに対し、<Policy>要素の子として1つの<PolicyReference>要素を追加します。

各<PolicyReference>要素に対し、1つのポリシーを参照するURI属性を含めます。また、ダイジェストとダイジェスト・アルゴリズムを要素に含めることもできます。

例:

<wsp:Policy>
<wsp:PolicyReference URI="policy:Sign.xml"/>
</wsp:Policy>

表51-1は、WS-Policy文のURIを指定するために使用するWSDL要素のXPath名および方法のリストです。また、Oracle Service BusでWS-Policy文の付加をサポートしないWSDL要素も示します。

表51-1 Oracle Service Busで保護可能なWSDL要素

このWSDL要素にポリシーを付加するには...

この技法を使用します...

/definitions/message

ネストされた<Policy>要素

/definitions/message/part

PolicyURIs属性

/definitions/portType

PolicyURIs属性

/definitions/portType/operation

ネストされた<Policy>要素

/definitions/portType/operation/input

PolicyURIs属性

/definitions/portType/operation/output

PolicyURIs属性

/definitions/portType/operation/fault

Oracle Service Busはこの要素へのWS-Policy文の付加をサポートしていません

/definitions/binding

ネストされた<Policy>要素

/definitions/binding/operation

ネストされた<Policy>要素

/definitions/binding/operation/input

ネストされた<Policy>要素

/definitions/binding/operation/output

ネストされた<Policy>要素

/definitions/binding/operation/fault

Oracle Service Busはこの要素へのWS-Policy文の付加をサポートしていません

/definitions/binding/service

Oracle Service Busはこの要素へのWS-Policy文の付加をサポートしていません

/definitions/service/port

ネストされた<Policy>要素

51.4.3 ベスト・プラクティス: WS-Policy文の付加

次の要素またはその子孫にWS-Policy文を付加することをお薦めします。

- portType

- binding

次の要素にWS-Policy文を付加しないことをお薦めします。

- service

- port

- messageまたはmessage/part

51.4.4 例: IDと機密性アサーションでのX.509資格証明の要求

WS-Policy文が認証を行うためにX.509トークンを必要とする場合は、デジタル署名も必要です。クライアントが対応する秘密鍵付きのコンテンツに署名していないと、X.509トークンはIDアサーションを満たすことができません。

認証およびデジタル署名に対してX.509証明書を使用するようクライアントに要求するプロキシ・サービスを作成するには、次を行います:

1. プロキシ・サービスを作成するために使用するWSDLドキュメントで、Sign.xmlファイルとAuth.xmlファイルにあるOracle Service Busポリシーを付加します。例51-1を参照してください。

2. デジタル署名用にX.509証明書を含むサービス・キー・プロバイダを使用するプロキシ・サービスを構成します。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「サービス・キー・プロバイダ」を参照してください。

Oracle Service BusのSign.xmlとAuth.xmlポリシーは抽象的であるため、プロキシ・サービスと関連付けられたサービス・キー・プロバイダで指定される資格証明をクライアントが提供することが必要です。

例51-1は、Oracle Service BusのSign.xmlおよびAuth.xmlポリシーへの参照を含むWSDLを示します。

例51-1 Oracle Service Bus WS-Policyへのポリシー参照を含むWSDL

<definitions
...
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401
-wss-wssecurity-utility-1.0.xsd">
<wsp:UsingPolicy
wsdl:Required="true"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
...
<portType name="Sample">
<operation name="doFoo" parameterOrder="data">
<input message="tns:foo" wsp:PolicyURIs="policy:Sign.xml"/>
<output message="tns:fooResponse"/>
</operation>
</portType>
<binding name="SampleBinding" type="tns:Sample">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="doFoo">
<wsp:Policy>
<wsp:PolicyReference URI="policy:Sign.xml"/>
<wsp:PolicyReference URI="policy:Auth.xml"/>
</wsp:Policy>
...
</operation>
</binding>
...
</definitions>

51.4.5 例: WSDLドキュメントへのカスタム・インラインWS-Policy文の付加

例51-2は、wsu:Id="policy1"とwsu:Id="policy2"という2つのカスタムWS-Policyポリシーを持つWSDLを示します。ポリシーはWSDLに記述されるため、このポリシーを参照するURIはXMLフラグメントを使用します。

例51-2 カスタムのインライン・ポリシーへのポリシー参照を含むWSDL

<definitions
...
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-wssecurity-utility-1.0.xsd">
<wsp:UsingPolicy
wsdl:Required="true"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
<wsp:Policy wsu:Id="policy1">...</wsp:Policy>
<wsp:Policy wsu:Id="policy2">...</wsp:Policy>
...
<portType name="Sample">
<operation name="doFoo" parameterOrder="data">
<input message="tns:foo" wsp:PolicyURIs="#policy1"/>
<output message="tns:fooResponse"/>
</operation>
</portType>
<binding name="SampleBinding" type="tns:Sample">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="doFoo">
<wsp:Policy>
<wsp:PolicyReference URI="#policy2"/>
</wsp:Policy>
<soap:operation
soapAction="http://com.bea.samples/sample/doFoo"
style="document"/>
<input>
<soap:body namespace="http://com.bea.samples/sample"
use="literal"/>
</input>
<output>
<soap:body namespace="http://com.bea.samples/sample"
use="literal"/>
</output>
</operation>
</binding>
...
</definitions>

51.5 Oracle独自のセキュリティ・ポリシーのベスト・プラクティス

この項では、WS-Policy仕様に基づき、Oracle独自のセキュリティ・ポリシー・スキーマを使用して記述されたセキュリティ・ポリシー・アサーションを使用する際に考慮すべきベスト・プラクティスについて説明します。

注意:

WS-SecurityPolicyを設計する前に、セキュリティ要件を入念に分析してください。このベスト・プラクティスは、特定のビジネス・セキュリティのニーズには当てはまらない可能性もあります。

- 操作のレスポンス・ポリシーでは、IDアサーションを使用しないでください。結果として、レスポンス・ポリシーでは、定義済のAuth.xmlポリシーを使用しないでください。
アクティブな仲介プロキシ・サービスへのインバウンドでWS-Securityユーザー名トークンを使用するときに、ユーザー名/パスワードをバックエンド・サービスに渡す(ユーザー名/パスワード・パススルー)場合は、ユーザー名トークンにパスワードをクリア・テキストで含める必要があります。

- WS-Securityユーザー名トークンをクリア・テキストのパスワードと共に使用する場合は、(WS-Securityで)トークン全体を暗号化するか、またはメッセージをSSLを使用して送信して、ユーザー名トークンの機密性を保護することを強くお薦めします。

- IDアサーションを使用する場合は、Integrityアサーションを使用して、機密メッセージ・コンテンツ(SOAP本体およびSOAPヘッダー部分)と共に、認証トークン(ユーザー名、X.509またはSAMLトークン)にデジタル署名することもできます。デジタル署名は、署名されたコンテンツの整合性を保護し、認証トークンとメッセージ・コンテンツをバインドします。これは、第三者による認証トークンの任意のSOAPエンベロープへのコピーと、それによるメッセージの偽造を防止するために重要です(Integrityアサーションを使用する代わりに、SSLを使用してメッセージを送信することもできます)。

- Integrityアサーションを使用する場合は、MessageAgeアサーションも使用してください。また、署名トークン(つまり検証証明書)をwsse:Securityヘッダーに含めること、およびデジタル署名で、署名するSOAP本体またはSOAPヘッダー部分に加えて、署名トークンおよびタイムスタンプを対象とすることもお薦めします。MessageAgeアサーションは、タイムスタンプがセキュリティ・ヘッダーに含まれることを保証します。タイムスタンプは、反射攻撃の防止に使用されます。定義済のSign.xmlポリシーは、このベスト・プラクティスに従っています。

- JMSでタイム・スタンプを使用する場合は(MessageAgeアサーション)、MessageAgeアサーションの有効期限を適切に設定するようにしてください。値が小さ過ぎると、キューに置かれている間にメッセージが有効期限切れになる可能性があります。

- IDアサーションで、X.509トークンをサポートされるトークン・リストに含める場合は、ポリシーにもIntegrityアサーションを含める必要があります。X.509トークンがデジタル署名で使用されていない場合、サーバーはX.509トークンを認証の証拠として受け入れません。
IDアサーションがその他のトークン・タイプを受け入れる場合、IntegrityアサーションのX509AuthConditional属性を使用して、実際の認証トークンがX.509トークンの場合のみ、デジタル署名を必要とすることを指定できます。抽象IDアサーションは、デプロイ時にあらかじめ処理されており、実行時環境によってサポートされているすべてのトークン・タイプのリストを挿入することで、具象アサーションに変換されます。

- ポリシーでは抽象IDアサーションを使用しないことをお薦めします。かわりに、認証でサポートされるトークン・タイプを直接正確に指定するようにしてください。また、IDアサーションでサポートするトークン・タイプは1つのみにすることをお薦めします。

注意:

これにより、サポートされるトークン・タイプがあいまいでなくなるため、IntegrityアサーションのX509AuthConditional属性は不要になります。

結果として、可能なかぎりAuth.xmlポリシー・ファイルを使用せずに、Sign.xmlおよびEncrypt.xmlのポリシーを使用することをお薦めします。

- Oracle Service Busプロキシが、(インバウンド・リクエスト・メッセージまたはバックエンドのレスポンス・メッセージで)デジタル証明書を処理する場合は、必ず、セキュリティ・レルムに証明書レジストリを構成して、トレーディング・パートナ証明書をそのレジストリにインポートすることを強くお薦めします。

51.6 ポリシー・サブジェクトと有効ポリシー

ポリシー・サブジェクトは、サービス、エンドポイント、操作、メッセージなどのエンティティであり、これにポリシーを関連付けることができます。1つのWS-Policy文を複数のポリシー・サブジェクトと関連付けることができ、反対に、複数のWS-Policy文を1つのポリシー・サブジェクトを関連付けることができます。ポリシー・スコープは、ポリシーが適用されるポリシー・サブジェクトの集合です。たとえば、wsd:binding/wsdl:operation/wsdl:inputに付加されたポリシーが適用されるポリシー・スコープは、入力メッセージ、操作、エンドポイント、およびサービスです。

特定のポリシー・サブジェクトの 有効ポリシー は、スコープにそのポリシー・サブジェクトを含むすべてのポリシーを結合したものになります。たとえば、バインディング操作の入力メッセージの有効ポリシーは、次に付加されるすべてのポリシーを結合したものになります。

- バインディング操作の入力メッセージ

- バインディング操作

- バインディング

- ポートのタイプの操作の入力メッセージ

- ポートのタイプの操作

- ポートのタイプ

- サービス

WS-Policy文を使用してプロキシ・サービスまたはビジネス・サービスを構成した場合、Oracle Service Bus管理コンソールに有効ポリシーが表示されます(読取り専用)。

52 Webサービスのメッセージ・レベルでのセキュリティの構成

この章では、Oracle Service Busのメッセージ・レベルのセキュリティを構成する方法について説明します。

メッセージ・レベルのセキュリティでは、Webサービス・クライアントがOracle Service Busプロキシ・サービスまたはビジネス・サービスとの接続を確立した後、プロキシ・サービスまたはビジネス・サービスがこのメッセージを処理する前にSOAPメッセージに対してセキュリティ・チェックが適用されます。

メッセージ・レベルのセキュリティは、次のように分類されます。

- インバウンドメッセージ・レベルのセキュリティは、クライアントとOracle Service Busプロキシ・サービス間のメッセージに適用されます。このセキュリティは、クライアントからのリクエストおよびクライアントに返されるレスポンス・メッセージの両方に適用されます。
これを、プロキシ・サービスのセキュリティと考えることができます。

- アウトバウンドメッセージ・レベルのセキュリティは、Oracle Service Busプロキシ・サービスとSOAP-HTTPビジネス・サービス間のメッセージ、またはOracle Service Busプロキシ・サービスとSOAP-JMSビジネス・サービス間のメッセージに適用されます。また、このセキュリティはリクエストとレスポンスの両方に適用されます。
これを、ビジネス・サービスのセキュリティと考えることができます。

この章の内容は次のとおりです。

- 52.1項「メッセージ・レベルのセキュリティについて」

- 52.2項「プロキシ・サービスのメッセージ・レベルのアクセス制御ポリシー」

- 52.3項「プロキシ・サービスのメッセージ・レベルのセキュリティの構成」

- 52.4項「ビジネス・サービスのメッセージ・レベルのセキュリティの構成:主な手順」

- 52.5項「カスタムWS-Policy文の例」

- 52.6項「アウトバウンドWS-Securityの無効化」

注意:

メッセージ・レベルのセキュリティの実装には、メッセージ・レベルのカスタム認証(カスタム・トークンまたはユーザー名/パスワードのどちらか)で構成されたプロキシ・サービスが含まれます。

この項で説明されるメッセージ・レベルのセキュリティ・メカニズムは、単独またはメッセージ・レベルのカスタム認証メカニズムとともに機能します。これについては、第54章「カスタム認証の構成」で説明します。両方のタイプのセキュリティの使用については、54.9項「WS-Securityおよびカスタム・ユーザー名/パスワードとトークンの組合せ」を参照してください。

52.1 メッセージ・レベルのセキュリティについて

Oracle Service Busでは、HTTP (HTTPS含む)またはJMSプロトコル経由で送信されるSOAPメッセージに対し、メッセージ・レベルのセキュリティをサポートします。通常、これらのプロトコルで提供されるトランスポート・レベルのセキュリティに加えて、メッセージ・レベルのセキュリティを使用します。トランスポート・レベル、メッセージ・レベル、または両方のレベルで資格証明を提供するようにWebサービス・クライアントに要求できます。両方のレベルで資格証明を提供するようにクライアントに要求する場合、Oracle Service Busはプロキシ・サービスの認証および認可に対してメッセージ・レベルの資格証明を使用します。

Webサービスであるプロキシ・サービスまたはビジネス・サービスのメッセージ・レベルのセキュリティ要件を指定するには、Webサービス・ポリシー(WS-Policy)フレームワークを使用します。Webサービス・ポリシー(WS-Policy)フレームワークについては、第52章「Webサービスのメッセージ・レベルでのセキュリティの構成」で説明しています。

メッセージ・レベルのセキュリティでは、プロキシ・サービスまたはビジネス・サービスが、保護される操作、およびWebサービス・クライアントがSOAPメッセージ(操作を呼び出すリクエストを含む)に適用する必要がある次のセキュリティ対策を指定します。

- 認証
ドメインの認証プロバイダにあるユーザー・アカウントと比較できるIDの提示をクライアントに要求します。

- デジタル署名によるメッセージの整合性
ある操作の呼出しをリクエストするクライアントのIDを立証し、そのリクエストを改ざんした仲介者がいないことを保証します。また、その操作の戻り値が、仲介者によって改ざんされることなくクライアントに返されたことを保証します。

- XML暗号化によるメッセージの機密性
リクエストおよびレスポンスの戻り値を暗号化し、リクエストまたはレスポンスを参照した仲介者がいないことを保証します。

これらのセキュリティ対策のすべてで、SOAPメッセージのセキュリティ・トークンをコード化することがクライアントに要求されます。プロキシ・サービスまたはビジネス・サービスは、SOAPメッセージでのコード化を要求するセキュリティ・トークンのタイプを指定します。

52.1.1 メッセージ・レベルのセキュリティの一連のアクションのサンプル

メッセージ・レベルのセキュリティを要求するプロキシ・サービスにSOAPメッセージを送信するために、次のアクションが発生します。

1. Webサービス・クライアントがSOAPヘッダーを生成し、そのヘッダーをSOAPメッセージ・エンベロープに追加します。そのヘッダーには、デジタル署名、セキュリティ・トークン、および他の構成要素が含まれます。

2. プロキシ・サービスは、保護されたエンベロープを処理するときに、メッセージを復号化して、セキュリティ・ヘッダーを削除します。

3. 次に、メッセージがセキュリティ要件に準拠していることを確認します。たとえば、必要なメッセージ部分が署名または暗号化(またはその両方)されているかどうか、また必要なトークンが必要なクレームと共に存在するかどうかをプロキシ・サービスが確認します。

4. プロキシ・サービスからクライアントへのレスポンスでは、プロセス全体が逆方向に繰り返されます。

52.2 プロキシ・サービスのメッセージ・レベルのアクセス制御ポリシー

メッセージの整合性とメッセージの機密性によってメッセージが仲介で参照または改ざんされていないことが保証され、メッセージ認証によってクライアントは既知のユーザーであるという立証を要求されますが、これは どの 既知のユーザーがプロキシ・サービス操作を呼び出すことを許可(認可)されているかを指定するものではありません。

認可されたユーザーにアクセスを制限するには、Oracle Service Bus管理コンソールを使用してメッセージ・レベルのアクセス制御ポリシーを作成します。これらのポリシーにより、認可されたクライアントからのSOAPメッセージのみをプロキシ・サービスで処理できます。

52.3 プロキシ・サービスのメッセージ・レベルのセキュリティの構成

インバウンド・メッセージ・レベルのセキュリティ用に次のいずれかの方法をサポートするように、プロキシ・サービスを構成できます。

- アクティブな仲介
プロキシ・サービスは、クライアントのSOAPメッセージのヘッダーを処理し、そのメッセージに対してメッセージ・レベルのアクセス制御ポリシーを強制します。

たとえば、クライアントはSOAPメッセージを暗号化して署名し、そのメッセージをプロキシ・サービスに送信します。プロキシ・サービスはメッセージを復号化してデジタル署名を確認してから、メッセージをルーティングします。プロキシ・サービスは、レスポンスをクライアントに返す前に、メッセージに署名して暗号化します。クライアントはメッセージを復号化し、プロキシ・サービスのデジタル署名を確認します。

- パススルー
プロキシ・サービスは、クライアントのSOAPメッセージのヘッダーを処理するかわりに、メッセージをそのままビジネス・サービスに渡します。プロキシ・サービスはSOAPメッセージの保護されたセクションを処理しませんが、ヘッダーの値に基づいてメッセージをルーティングできます。ビジネス・サービスは、メッセージを受け取ると、セキュリティ・ヘッダーを処理し、リクエストに応答します。ビジネス・サービスはWebサービス・ポリシー(WS-Policy)フレームワークを使用して、メッセージ・レベルのセキュリティで保護されている操作を記述する必要があります。ビジネス・サービスはレスポンスをプロキシ・サービスに送信し、プロキシ・サービスはレスポンスをそのままクライアントに渡します。

たとえば、クライアントはメッセージを暗号化して署名し、そのメッセージをプロキシ・サービスに送信します。プロキシ・サービスはメッセージの復号化、またはデジタル署名の確認を行いません。単にメッセージをビジネス・サービスにルーティングします。ビジネス・サービスはメッセージを復号化してデジタル署名を確認してから、リクエストを処理します。レスポンス・パスは同様です。

52.3.1 アクティブな仲介プロキシ・サービスの作成:主な手順

アクティブな仲介として動作するようにプロキシ・サービスを作成するには:

1. テキスト・エディタまたはIDEで、プロキシ・サービスを定義するWSDLドキュメントを作成します。

- ポリシーをOracle Service Bus管理コンソールから直接バインドする場合は、WSDLにポリシー文を含める必要はありません。

- ポリシーをWSDLベースにする場合は、WSDLドキュメントに、定義済のポリシーなどの、1つまたは複数のWebサービス・ポリシー(WS-Policy)文を追加します。

2. Oracle Service Bus管理コンソールで、WSDLドキュメントをOracle Service Bus WSDLリポジトリにインポートし、WSDL依存関係を解決します。
『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のWSDLの追加に関する項を参照してください。

3. Oracle Service BusをサポートするようにWebLogicセキュリティ・フレームワークをまだ構成していない場合は、クライアントからプロキシ・サービスへの リクエスト を保護するセキュリティ・ポリシー・アサーションが、プロキシ・サービスのいずれかの操作のWS-Policyに含まれるかどうかに応じて、次の処理(1つまたは複数)を行います。

- 操作のリクエスト・ポリシーでWS-Security X.509証明書トークンによる認証を要求する場合は、__SERVICE_BUS_INBOUND_WEB_SERVICE_SECURITY_MBEAN__というWebサービス・セキュリティ構成を行います。45.7項「Oracle WebLogicセキュリティ・フレームワークの構成:主な手順」を参照してください。

- 操作のリクエスト・ポリシーでパスワード・ダイジェストを使用したWS-Securityユーザー名/パスワード・トークンによる認証を要求する場合は、必ずパスワード・ダイジェストを有効にします。45.7項「Oracle WebLogicセキュリティ・フレームワークの構成:主な手順」を参照してください。

- 操作のリクエスト・ポリシーでSAMLトークンの使用を要求する場合は、このプロキシ・サービスのSAMLアサーション側を構成する必要があります。53.3項「プロキシ・サービス・リクエストでのSAMLトークンの認証」を参照してください。

- 操作のリクエスト・ポリシーでデジタル署名を要求する場合は、受け入れられたクライアント署名検証証明書をOracle WebLogic Server証明書レジストリに登録します。45.7項「Oracle WebLogicセキュリティ・フレームワークの構成:主な手順」を参照してください。

- 操作のリクエスト・ポリシーでデジタル暗号化を要求する場合は、暗号化の資格証明を持つサービス・キー・プロバイダを構成します。プロキシ・サービスはこの資格証明を使用して、暗号化されたSOAPメッセージを復号化します。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「サービス・キー・プロバイダ」のサービス・キー・プロバイダの追加に関する項を参照してください。

4. Oracle Service Bus管理コンソールで、プロキシ・サービスからクライアントへのレスポンスを保護するセキュリティ・ポリシー・アサーションが、プロキシ・サービスのいずれかの操作のWS-Policyに含まれるかどうかに応じて、次の処理(1つまたは複数)を行います。

- 操作のレスポンス・ポリシーでデジタル署名を要求する場合は、デジタル署名資格証明を持つサービス・キー・プロバイダを構成します。1つで暗号化とデジタル署名の両方の資格証明を持つサービス・キー・プロバイダを作成できます。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダの追加に関する項を参照してください。

- 操作のレスポンス・ポリシーで暗号化を指定する場合、クライアントはリクエスト時に証明書をプロキシ・サービスに送信する必要があります。プロキシ・サービスはクライアントの公開鍵を使用してレスポンスを暗号化します。クライアントの証明書は、プロキシ・サービスの暗号化証明書と異なる必要があります。

5. Oracle Service Bus管理コンソールで、インポートしたWSDLからプロキシ・サービスを作成します。変更をアクティブ化してください。

6. WSDLドキュメントにWS-Policy添付ファイルが含まれておらず、それらを追加する場合、または、WSDLに含まれるものとは別のWS-Policyを指定する場合は、作成したプロキシ・サービスを編集して、 「ポリシー」 タブで次を行います。

1. 「事前定義ポリシーまたはWS-Policyリソースから」を選択します。

2. サービス全体に適用するポリシーを指定するには、サービス名エントリを展開します。「追加」をクリックしてポリシーを検索し、選択します。

3. 操作またはその操作のリクエスト/レスポンスに適用するポリシーを指定するには、操作名エントリを展開します。「追加」をクリックしてポリシーを検索し、選択します。

ポリシー・バインディングを更新します。

7. 作成したプロキシ・サービスを編集して、 「セキュリティ」 タブから次を行います。

1. 作成したサービス・キー・プロバイダを指定します。

2. 「WS-Securityヘッダーの処理」オプションで「はい」を選択します。

3. (オプション)ユーザー、グループ、またはロールが保護された操作を呼び出すことができる条件を指定する、プロキシ・サービスのデフォルトのメッセージ・レベルでのアクセス制御ポリシーを変更します。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のメッセージ・レベルのアクセス・ポリシーの編集に関する項を参照してください。

4. (オプション)プロキシ・サービスのメッセージ・レベルの認証設定を変更します。

52.3.2 パススルー・プロキシ・サービスの作成:主な手順

パススルー・プロキシ・サービスを作成するには:

1. プロキシ・サービスが、処理されていないSOAPメッセージを渡すビジネス・サービスを作成します。構成の方法には、次の2通りがあります。

- ビジネス・サービスを、WS-Policy文を含むWebサービスとします。

- ビジネス・サービスで、WS-Policyを直接バインドします。サービスのベースとなるWSDLには、WS-Policy文を含めないでください。

52.4項「ビジネス・サービスのメッセージ・レベルのセキュリティの構成:主な手順」を参照してください。

2. WSDLドキュメントにWS-Policy添付ファイルが含まれておらず、それらを追加する場合、または、WSDLに含まれるものとは別のWS-Policyを指定する場合は、作成したビジネス・サービスを編集して、 「ポリシー」 タブで次を行います。

1. 「事前定義ポリシーまたはWS-Policyリソースから」を選択します。

2. サービス全体に適用するポリシーを指定するには、サービス名エントリを展開します。「追加」をクリックしてポリシーを検索し、選択します。

3. 操作またはその操作のリクエスト/レスポンスに適用するポリシーを指定するには、操作名エントリを展開します。「追加」をクリックしてポリシーを検索し、選択します。

ポリシー・バインディングを更新します。

3. Oracle Service Bus管理コンソールで、WSDLドキュメントからプロキシ・サービスを作成します。作成したビジネス・サービスで使用したWSDLドキュメントと同じドキュメントを使用できます。変更をアクティブ化してください。

4. 作成したプロキシ・サービスを後で編集する場合は、「セキュリティ」タブの「WS-Securityヘッダーの処理」オプションで「いいえ」を選択してください。

5. 作成したビジネス・サービスにルーティングするプロキシ・サービスを構成します。
クライアントのSOAPメッセージが呼出しをリクエストする操作に基づいてビジネス・サービスにルーティングする場合は、SOAP本体のアルゴリズム以外の操作選択アルゴリズムを指定するようにルーティングを構成する必要があります。プロキシ・サービス・パイプラインのアクションによって、署名または暗号化されたWS-SecurityヘッダーまたはSOAPエンベロープの部分が変更されないことを確認します。デジタル署名されたクリア・テキストのメッセージ部分を変更すると、ほとんどの場合、デジタル署名は壊れます。これは、後で署名を検証できないためです。

2.3項「プロキシ・サービスの操作」を参照してください。

52.4 ビジネス・サービスのメッセージ・レベルのセキュリティの構成:主な手順

アウトバウンド メッセージ・レベルのセキュリティは、Oracle Service Busプロキシ・サービスとSOAP-HTTPビジネス・サービス間のメッセージ、またはOracle Service Busプロキシ・サービスとSOAP-JMSビジネス・サービス間のメッセージに適用されます。また、このセキュリティはリクエストとレスポンスの両方に適用されます。

SOAP-HTTPまたはSOAP-JMS Webサービスを表すビジネス・サービスに対してアウトバウンド・メッセージ・レベルのセキュリティを構成するには:

1. テキスト・エディタまたはIDEで、ポリシーを定義するWSDLドキュメントを作成します。

2. Oracle Service Bus管理コンソールで、WebサービスのWSDLドキュメントをOracle Service Bus WSDLリポジトリにインポートし、WSDL依存関係を解決します。
『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のWSDLの追加に関する項を参照してください。

3. Oracle Service Bus管理コンソールで、プロキシ・サービスからビジネス・サービスへのリクエストを保護するWS-Policy文がWSDLドキュメントに含まれるかどうかに応じて次の処理(1つまたは複数)を行います。

- いずれかの操作のリクエスト・ポリシーに、サポートされるトークンのタイプの1つとしてWS-Securityユーザー名トークンによるIDアサーションが含まれる場合は、ビジネス・サービスに対するサービス・アカウントを構成します。このサービス・アカウントで、プロキシ・サービスがビジネス・サービスに送信するユーザー名とパスワードを提供します。このビジネス・サービスにルーティングするプロキシ・サービスは、このサービス・アカウントからユーザー名とパスワードを取得します。2.1.15項「サービス・アカウント・リソースの作成」および2.2項「ビジネス・サービスの操作」を参照してください。

- 操作のリクエスト・ポリシーでパスワード・ダイジェストを使用したWS-Securityユーザー名/パスワード・トークンによる認証を要求する場合は、必ずパスワード・ダイジェストを有効にします。45.7項「Oracle WebLogicセキュリティ・フレームワークの構成:主な手順」を参照してください。

- 操作のリクエスト・ポリシーでデジタル署名を要求する場合は、デジタル署名資格証明を持つサービス・キー・プロバイダを構成します。1つで暗号化とデジタル署名の両方の資格証明を持つサービス・キー・プロバイダを作成できます。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダの追加に関する項を参照してください。

4. ビジネス・サービスの操作の レスポンス ポリシーで暗号化を要求する場合(つまり、ビジネス・サービスが、プロキシ・サービスの暗号化公開鍵でレスポンスを暗号化します)、サービス・キー・プロバイダを構成して暗号化の資格証明をサービス・キー・プロバイダに割り当ててください。

注意:

暗号化されるバックエンドのレスポンス・メッセージ: ビジネス・サービスのレスポンス・ポリシーで暗号化を指定する場合、プロキシ・サービスはリクエスト時に暗号化証明書をビジネス・サービスに送信します。ビジネス・サービスは、プロキシ・サービスの公開鍵を使用してレスポンスを暗号化します。プロキシ・サービスの暗号化資格証明は、ビジネス・サービスの暗号化資格証明と異なることが必要です。

5. ビジネス・サービスのポリシーがSAMLアサーションの使用を指定している場合は、WebLogic SAML資格証明マッピング・プロバイダV2のアサーション側を構成します。詳細は、53.1項「IDのSAMLトークンへのマッピング」を参照してください。

6. インポートしたWSDLからビジネス・サービスを作成します。変更をアクティブ化してください。
2.2項「ビジネス・サービスの操作」を参照してください。

7. ポリシーをサービスに直接付加する場合は、作成したビジネス・サービスを編集して、「ポリシー」タブで次を行います。

1. 「事前定義ポリシーまたはWS-Policyリソースから」を選択します。

2. サービス全体に適用するポリシーを指定するには、サービス名エントリを展開します。「追加」をクリックしてポリシーを検索し、選択します。

3. 操作またはその操作のリクエスト/レスポンスに適用するポリシーを指定するには、操作名エントリを展開します。「追加」をクリックしてポリシーを検索し、選択します。

「更新」をクリックして、ビジネス・サービスを更新します。

8. SOAPメッセージをビジネス・サービスにルーティングするプロキシ・サービスを作成します。アクティブな仲介プロキシ・サービスまたはパススルー・プロキシ・サービスを使用できます。
52.3.1項「アクティブな仲介プロキシ・サービスの作成: 主な手順」を参照してください。

52.5 カスタムWS-Policy文の例

次の項では、WS-Policy仕様に基づき、Oracle独自のセキュリティ・ポリシー・スキーマを使用して記述されたカスタムWS-Policy文の例を示します。

- 52.5.1項「例: SOAP本体およびヘッダー部分の暗号化」

- 52.5.2項「例: ビジネス・サービスの暗号化ポリシー」

- 52.5.3項「例:カスタムSOAPヘッダーの暗号化」

- 52.5.4項「例:メッセージ本体とヘッダーの署名」

- 52.5.5項「例: SAML Holder-of-KeyによるSOAP本体の署名」

- 52.5.6項「例: SAML Sender-VouchesによるSOAP本体とヘッダーの認証、署名、および暗号化」

52.5.1 例: SOAP本体およびヘッダー部分の暗号化

SOAPメッセージの本文全体ではなく、特定の部分を暗号化またはデジタル署名するように指定する必要がある場合は、カスタムWS-Policyファイルを作成する必要があります。

例52-1は、次を実行する抽象WS-Policy文です。

- クライアントのメッセージに認証用のユーザー名とパスワード・トークンを要求します

- クライアントに(セキュリティ・ヘッダーにある)ユーザー名およびパスワード・トークンの暗号化を要求します。

- クライアントに/definitions/message/CreditCardNumber要素の暗号化を要求します。

このポリシーは抽象的であるため、ビジネス・サービスでは使用できません: そのKeyInfo要素には、暗号化用の証明書が含まれません。そのかわりに、このWS-Policy文を使用するプロキシ・サービスをアクティブ化すると、Oracle Service Busは、プロキシ・サービスと関連付けられたサービス・キー・プロバイダからの暗号化証明書をWS-Policy文にバインドします。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「サービス・キー・プロバイダ」を参照してください。

図52-1 抽象ポリシーへの証明書のバインディング

例52-1では次のことも行われます。

- KeyWrappingAlgorithm要素で、対称キーをラップするRSA 1.5アルゴリズムをクライアントが使用する必要があることを指定します。

- EncryptionAlgorithmで、クライアントがTriple DES (Data Encryption Standard)アルゴリズムを使用してセキュリティ・ヘッダーとメッセージ本体の暗号化を実行する必要があることを指定します。

例52-1 SOAP本体およびヘッダー部分の暗号化

<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-secext-1.0.xsd"
xmlns:m="http://example.org"
wsu:Id="encrypt-custom-body-element-and-username-token">
<!-- Require messages to provide a user name and password token
for authentication -->
<wssp:Identity>
<wssp:SupportedTokens>
<wssp:SecurityToken IncludeInMessage="true"
TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
wss-username-token-profile-1.0#UsernameToken">
<wssp:UsePassword Type="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-username-token-profile-1.0#PasswordText"/>
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Identity>
<wssp:Confidentiality>
<wssp:KeyWrappingAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<!-- Require the user name and password in the security header
to be encrypted -->
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(wsse:UsernameToken)
</wssp:MessageParts>
</wssp:Target>
<!-- Require the /definitions/message/CreditCardNumber element to
be encrypted -->
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts>
wsp:GetBody(.)/m:CreditCardNumber
</wssp:MessageParts>
</wssp:Target>
<!-- This is an abstract policy because the KeyInfo element is
empty. The KeyInfo data is bound to the policy at runtime -->
<wssp:KeyInfo/>
</wssp:Confidentiality>
</wsp:Policy>

52.5.2 例:ビジネス・サービスの暗号化ポリシー

ビジネス・サービスへのメッセージを暗号化する場合は、カスタムWS-Policyを作成する必要があります。ポリシーは具象的(サービス・キー・プロバイダの証明書を使用するのではなく、暗号化証明書を含む必要があります)であること、および参照によって含めるのではなく、WSDLドキュメントに直接記述することが必要です。

通常、ビジネス・サービスへのメッセージを送信するプロキシ・サービスがパススルー・プロキシ・サービスである場合は、ビジネス・サービスへのメッセージを暗号化する必要があります。つまり、クライアントからメッセージを受信するプロキシ・サービスは、SOAPメッセージを処理しません。かわりに、プロキシ・サービスはメッセージをビジネス・サービスにルーティングし、ビジネス・サービスがWebサービス・セキュリティを確保します。第52章「Webサービスのメッセージ・レベルでのセキュリティの構成」を参照してください。

例52-2は、具象ポリシーを含むWSDLドキュメントです。この例では、次に注意してください。

- ポリシーによって、メッセージ本体の暗号化をクライアントに要求します。

- クライアントが提供するトークンのタイプを指定するKeyInfo要素は、暗号化証明書を記述して埋め込むために使用する親要素です。BinarySecurityToken要素には、base-64エンコード形式の暗号化証明書が含まれます(例では、値は切り捨てられています)。証明書がPEM形式の場合、PEMファイル(PEM接頭辞と接尾辞なし)の内容はbase-64エンコード形式で表される証明書です。暗号化証明書がJDKキーストアに格納されている場合は、簡単にPEMファイルにエクスポートできます。

- ポリシーによってユニークなIDが提供され、WSDLはURIフラグメントを使用してそのIDを参照します。51.4項「WSDLドキュメントへのWS-Policy文の付加」を参照してください。

例52-2 具象ポリシーによる本体の暗号化、WSDLドキュメントへのポリシーの埋め込み

<definitions name="WssServiceDefinitions"
targetNamespace="http://com.bea.alsb/tests/wss"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
...>
<wsp:UsingPolicy xmlns:n1="http://schemas.xmlsoap.org/wsdl/"
n1:Required="true"/>
<!-- The policy provides a unique ID -->
<wsp:Policy wsu:Id="myEncrypt.xml">
<wssp:Confidentiality
xmlns:wssp="http://www.bea.com/wls90/security/policy">
<wssp:KeyWrappingAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<!-- Require the user name and password in the security header
to be encrypted -->
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<!-- Embed the token type and encryption certificate -->
<wssp:KeyInfo>
<wssp:SecurityToken
TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
wss-x509-token-profile-1.0#X509v3"/>
<wssp:SecurityTokenReference>
<wssp:Embedded>
<wsse:BinarySecurityToken
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-soap-message-security-1.0#Base64Binary"
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-x509-token-profile-1.0#X509v3"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-wssecurity-secext-1.0.xsd">
MIICfjCCAeegAwIBAgIQV/PDyj3...
</wsse:BinarySecurityToken>
</wssp:Embedded>
</wssp:SecurityTokenReference>
</wssp:KeyInfo>
</wssp:Confidentiality>
</wsp:Policy>
<binding name="WssServiceSoapBinding" type="tns:WssService">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getPurchaseOrder">
<soap:operation soapAction="" style="document"/>
<input>
<soap:body parts="parameters" use="literal"/>
<!-- Use a URI fragment to refer to the unique policy ID -->
<wsp:Policy>
<wsp:PolicyReference URI="#myEncrypt.xml"/>
</wsp:Policy>
</input>
<output>
<soap:body parts="parameters" use="literal"/>
</output>
</operation>
</binding>
...
</definitions>

52.5.3 例:カスタムSOAPヘッダーの暗号化

例52-3は、CreditCardNumberというカスタム・ヘッダーを暗号化する抽象WS-Policy文です。

SOAPメッセージの本文全体ではなく、特定の部分を暗号化またはデジタル署名するように指定する必要がある場合は、カスタムWS-Policyファイルを作成する必要があります。

このポリシーは抽象的であるため、ビジネス・サービスでは使用できません: そのKeyInfo要素には、暗号化用の証明書が含まれません。そのかわりに、このWS-Policy文を使用するプロキシ・サービスをアクティブ化すると、Oracle Service Busは、プロキシ・サービスと関連付けられたサービス・キー・プロバイダからの暗号化証明書をWS-Policy文にバインドします。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「サービス・キー・プロバイダ」を参照してください。

例52-3では次のことも行われます。

- KeyWrappingAlgorithm要素で、対称キーをラップするRSA 1.5アルゴリズムをクライアントが使用する必要があることを指定します。

- EncryptionAlgorithmで、クライアントがTriple DES (Data Encryption Standard)アルゴリズムを使用してセキュリティ・ヘッダーの暗号化を実行する必要があることを指定します。

例52-3 カスタムSOAPヘッダーの暗号化

<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"
wsu:Id="dig-sig-for-get-header">
<wssp:Confidentiality>
<wssp:KeyWrappingAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<!-- Require the custom CreditCardNumber header to be encrypted -->
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts
Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116">
wsp:GetHeader(.)/n:CreditCardNumber
</wssp:MessageParts>
</wssp:Target>
<wssp:KeyInfo/>
</wssp:Confidentiality>
</wsp:Policy>

52.5.4 例:メッセージ本体とヘッダーの署名

例52-4は、SOAPメッセージの次の内容へのアクセスにデジタル署名を要求するWS-Policy文です。

- header1というカスタム・ヘッダー

- すべてのシステム・ヘッダー

- タイム・スタンプ・セキュリティ・ヘッダー

- メッセージ本体

例52-4 SOAPヘッダーと本体の署名の要求

<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"
wsu:Id="sign-custom-header-policy">
<wssp:Integrity>
<wssp:SignatureAlgorithm
URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<wssp:CanonicalizationAlgorithm
URI="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<!-- Require the custom header header1 to be signed -->
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-secext-1.0.xsd"
xmlns:n="http://example.org">
wsp:GetHeader(.)/n:header1
</wssp:MessageParts>
</wssp:Target>
<!-- Require the system headers to be signed -->
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SystemHeaders()
</wssp:MessageParts>
</wssp:Target>
<!-- Require the Timestamp header to be signed -->
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(wsu:Timestamp)
</wssp:MessageParts>
</wssp:Target>
<!-- Require the message body to be signed -->
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
</wssp:Integrity>
<wssp:MessageAge/>
</wsp:Policy>

52.5.5 例: SAML Holder-of-KeyによるSOAP本体の署名

例52-5は、holder-of-keyメソッドを使用してメッセージ本体に署名するようSAMLアサーション・プロバイダに要求するWS-Policy文です。「holder-of-key」サブジェクト確認が指定されたSAMLトークンは、リクエスト・メッセージの整合性を確保するために、受信側で信頼されていない可能性のあるX.509証明書をサブジェクトで使用できるようにすることを目的としたものです。

2つのSAML確認メソッド(sender-vouchesまたはholder-of-key)の詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』のWebLogic WebサービスでのSAMLトークン・プロファイルのサポートに関する項を参照してください。

『Oracle Fusion Middleware Oracle WebLogic Server Webサービス・リファレンス』のOracle WebLogic Serverセキュリティ・ポリシー・アサーションのリファレンスで、ポリシーの要素について詳しく説明しています。

この例では、次に注意してください。

- Integrityは、SOAPメッセージの署名に使用するアルゴリズムやキーに加え、SOAPメッセージの一部または全体にデジタル署名することを指定します。

- SignatureAlgorithmは、デジタル署名の計算に使用する暗号アルゴリズムを指定します。

- CanonicalizationAlgorithmは、デジタル署名するSOAPメッセージの要素を標準化する(単純なまたは標準の形式で使用する)ために使用するアルゴリズムを指定します。指定できるのは、http://www.w3.org/2001/10/xml-exc-cl4n#のみです。

- DigestAlgorithmは、SOAPメッセージの指定部分にデジタル署名する際に使用するダイジェスト・アルゴリズムを指定します。指定できるのは、http://www.w3.org/2000/09/xmldsig#sha1のみです。

- MessagePartsは、署名されるべきSOAPメッセージの部分を指定します。この場合は本体です。

- Dialectは、署名されるべきSOAPメッセージの部分の識別に使用される固有言語を指定します。

- SupportedTokensは、デジタル署名で使用できる、サポートされているセキュリティ・トークンのリストを指定します。

- SecurityTokenは、デジタル署名でサポートされているセキュリティ・トークンを指定します。
IncludeInMessageは、SOAPメッセージにトークンを含めるかどうかを指定します。有効な値はtrueまたはfalseです。<Integrity>アサーションで使用される場合、この属性のデフォルト値はtrueです。

TokenTypeは、セキュリティ・トークンのタイプを指定します。この場合、SAMLトークンを指定します。

- Claimsは、特定のタイプのセキュリティ・トークンに関連付けられる追加メタデータ情報を指定します。SAMLトークンの場合、<ConfirmationMethod>子要素を定義して、SAML確認のタイプ(sender-vouchesまたはholder-of-key)を指定する必要があります。

- ConfirmationMethodは、IDにSAMLトークンを使用する場合に使う確認メソッドのタイプ(sender-vouchesまたはholder-of-key)を指定します。
<ConfirmationMethod>アサーション内の<ConfirmationMethod>アサーションを指定します。この確認メソッドのための<Integrity>アサーションにSAMLトークンを含めるのは、Webサービス・ランタイムで、sender-vouchesでは必要でないメッセージの整合性の証明が必要なためです。

例52-5 SAML Holder-of-KeyメソッドによるSOAP本体の署名

<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"
xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part"
wsu:Id="saml-holder-of-key-signed">
<wssp:Integrity>
<wssp:SignatureAlgorithm
URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<wssp:CanonicalizationAlgorithm
URI="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<wssp:SupportedTokens>
<wssp:SecurityToken IncludeInMessage="true"
TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-saml-
token-profile-1.0#SAMLAssertionID">
<wssp:Claims>
<wssp:ConfirmationMethod>holder-of-key</wssp:ConfirmationMethod>
</wssp:Claims>
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Integrity>
</wsp:Policy>

52.5.6 例: SAML Sender-VouchesによるSOAP本体とヘッダーの認証、署名、および暗号化

例52-6は、sender-vouchesメソッドを使用してメッセージ本体とヘッダーに署名するようSAMLアサーション・プロバイダに要求するWS-Policy文です。

sender-vouchesでは、(サブジェクトとは異なる)アサーション側がサブジェクトの検証を保証します。受信側がアサーション側との信頼関係を確立している必要があります。

2つのSAML確認メソッド(sender-vouchesまたはholder-of-key)の詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』のWebLogic WebサービスでのSAMLトークン・プロファイルのサポートに関する項を参照してください。

『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービス・リファレンス』のOracle Web Servicesセキュリティ・ポリシー・アサーションのリファレンスで、ポリシーの要素について詳しく説明しています。

この例では、次に注意してください。

- Identityは、セキュリティ・トークンのタイプを指定します。

- SupportedTokensは、デジタル署名で使用できる、サポートされているセキュリティ・トークンのリストを指定します。

- SecurityTokenは、デジタル署名でサポートされているセキュリティ・トークンを指定します。
IncludeInMessageは、この属性の値が常にtrueであるため、<Identity>アサーションに使用された場合、明示的にfalseに設定されても、指定されません。

TokenTypeは、SAMLトークンを指定するためにセキュリティ・トークンのタイプを指定します。

- Claimsは、特定のタイプのセキュリティ・トークンに関連付けられる追加メタデータ情報を指定します。SAMLトークンの場合、<ConfirmationMethod>子要素を定義して、SAML確認のタイプ(sender-vouchesまたはholder-of-key)を指定する必要があります。

- ConfirmationMethodは、IDにSAMLトークンを使用する場合に使う確認メソッドのタイプ(sender-vouchesまたはholder-of-key)を指定します。

- Integrityは、SOAPメッセージの署名に使用するアルゴリズムやキーに加え、SOAPメッセージの一部または全体にデジタル署名することを指定します(この例の場合は、本体とセキュリティ・ヘッダーの両方)。

- SignatureAlgorithmは、デジタル署名の計算に使用する暗号アルゴリズムを指定します。

- CanonicalizationAlgorithmは、デジタル署名するSOAPメッセージの要素を標準化する(単純なまたは標準の形式で使用する)ために使用するアルゴリズムを指定します。指定できるのは、http://www.w3.org/2001/10/xml-exc-cl4n#のみです。

- Targetは、親要素によって異なる、暗号化または署名するSOAPメッセージの対象に関する情報をカプセル化します。子要素も、親要素によって異なります。

- <Integrity>で使用される場合、<DigestAlgorithm>、<Transform>、<MessageParts>の子要素を指定できます。

- <Confidentiality>で使用される場合、<EncryptionAlgorithm>、<Transform>、<MessageParts>の子要素を指定できます。

- DigestAlgorithmは、SOAPメッセージの指定部分にデジタル署名する際に使用するダイジェスト・アルゴリズムを指定します。指定できるのは、http://www.w3.org/2000/09/xmldsig#sha1のみです。

- MessagePartsは、署名されるべきSOAPメッセージの部分を指定します。この場合は本体およびセキュリティ・ヘッダーです。

- Dialectは、署名されるべきSOAPメッセージの部分の識別に使用される固有言語を指定します。

- Confidentialityは、SOAPメッセージの暗号化に使用するアルゴリズムやキーに加え、SOAPメッセージの一部または全部を暗号化することを指定します。この例では、triple-DESを使用して、本体およびセキュリティ・ヘッダーを暗号化する必要があります。

例52-6 SAML Sender-VouchesメソッドによるSOAP本体とヘッダーの署名

<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/wls90/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"
xmlns:wls="http://www.bea.com/wls90/security/policy/wsee#part"
wsu:Id="samlPolicy-sender-vouches-signed-encrypted">
<wssp:Identity>
<wssp:SupportedTokens>
<wssp:SecurityToken
TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-2004-01-
saml-token-profile-1.0#SAMLAssertionID">
<wssp:Claims>
<wssp:ConfirmationMethod>
sender-vouches
</wssp:ConfirmationMethod>
</wssp:Claims>
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Identity>
<wssp:Integrity>
<wssp:SignatureAlgorithm
URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<wssp:CanonicalizationAlgorithm
URI="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<wssp:Target>
<wssp:DigestAlgorithm
URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:DigestAlgorithm
URI="http://www.w3.org/2000/09/xmldsig#sha1"/>
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(Assertion)
</wssp:MessageParts>
</wssp:Target>
</wssp:Integrity>
<wssp:Confidentiality>
<wssp:KeyWrappingAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts
Dialect="http://www.bea.com/wls90/security/policy/wsee#part">
wls:SecurityHeader(Assertion)
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:EncryptionAlgorithm
URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<wssp:MessageParts
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<wssp:KeyInfo/>
</wssp:Confidentiality>
</wsp:Policy>

52.6 アウトバウンドWS-Securityの無効化

注意:

Oracle Web Services Managerのサービス・ポリシーを含む他のプロキシ(ローカル・プロキシなど)に転送されるプロキシ・サービスでは、アウトバウンドWS-Security処理が無効化されます。Oracle Service Busでは、この動作が自動的に行われ、doOutboundWssプロパティは使用されません。詳細は、31.5項「ローカル・プロキシでのOracle WSMセキュリティの使用」を参照してください。

この項の残り部分では、他の設計パターンでアウトバウンドWS-Security処理を無効にする方法について説明します。

使用頻度の少ない設計パターンには、プロキシ・サービスによるアウトバウンドWS-Security SOAPエンベロープの自動生成が回避され、XQuery式を使用してエンベロープを作成できるものがあります。この設計パターンを使用する場合、プロキシ・サービスによるアウトバウンドWS-Security SOAPエンベロープの自動生成を回避するには、$outboundメッセージ・コンテキスト変数の./ctx:security/ctx:doOutboundWss要素の値をxs:boolean("false")に設定するアクションをプロキシ・サービスのメッセージ・フローに作成する必要があります。このアクションは、次のいずれかの場所で作成できます。

- パイプライン・ペアのリクエスト段階。2.4.16項「メッセージ・フローへのパイプライン・ペア・ノードの追加と構成」を参照してください。

- ルート・ノードのリクエスト・アクション内。2.4.25項「メッセージ・フローへのルート・ノードの追加と構成」を参照してください。

$outboundメッセージ・コンテキスト変数の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「メッセージ・コンテキスト」を参照してください。

状況によっては、アウトバウンド・メッセージ・レベルのセキュリティを無効にしてプロキシ・サービスを作成または変更したセッションをアクティブ化しようとすると、Oracle Service Bus管理コンソールに検証エラーが表示されます(エラーのあるセッションはコミットできません)。アウトバウンド・メッセージ・レベルのセキュリティを無効にしているためにセッションの検証エラーが表示される場合は、Oracle Service Busの起動コマンドを変更して、次のシステム・プロパティをtrueに設定します: com.bea.wli.sb.security.wss.LaxOutboundWssValidation

次に、Oracle Service Busを再起動します。このプロパティをtrueに設定すると、Oracle Service Bus管理コンソールにはエラーではなく警告が表示されます(警告メッセージが表示されるセッションはコミットできます)。

Oracle Service Busの今後のリリースで、アウトバウンド・メッセージ・レベルのセキュリティの無効化を容易にする方法が提供される予定です。

53 Oracle Service BusでのSAMLの使用

この章では、Oracle Service Busのクライアントおよびサービス間で認証および認可情報を交換するためのSecurity Assertion Markup Language (SAML)ポリシーを使用する方法について説明します。

SAMLは、WLS 9ポリシー・フレームワークまたはOracle Web Services Managerのいずれかで使用できます。第50章「Oracle Web Services Managerを使用したOracle Service Busのセキュリティ」の説明に従って、Oracle Web Services Managerをサービス・セキュリティに使用することをお薦めします。

SAMLを使用する環境の設定の詳細な手順については、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のSAMLの構成に関する項と、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のSAMLの構成の項を参照してください。これらのガイドにあるSAMLの構成手順は、Oracle Service BusでSAMLを使用するための前提条件です。

この章では、次の内容について説明します。

- 53.1項「IDのSAMLトークンへのマッピング」

- 53.2項「SAMLパススルーIDの伝播の構成」

- 53.3項「プロキシ・サービス・リクエストでのSAMLトークンの認証」

- 53.4項「サービス・バス(SB)トランスポートを使用したSAML認証の構成」

- 53.5項「SAMLのアイデンティティ切替えの使用」

- 53.6項「Oracle Service BusにおけるSAMLのトラブルシューティング」

53.1 IDのSAMLトークンへのマッピング

ビジネス・サービスでSAMLトークンが要求されるが、クライアントから提供されない場合は、クライアントのIDをSAMLトークンにマップするようにプロキシ・サービスを構成できます。

この方法では、ビジネス・サービスが、SAMLトークンを使用した認証を要求するWS-Policy文を持つWebサービスであることが必要です。

SAML資格証明マッピングを構成するには:

1. 次のいずれかの方法を使用してクライアントを認証するようにプロキシ・サービスを構成します。

- HTTPまたはHTTPS基本認証(クライアントがリクエスト内でユーザー名とパスワードを提供)

- HTTPSクライアント証明書

- メッセージ・レベルの認証(サポートされるトークン・プロファイルのいずれかを使用)
クライアント・リクエストにWS-Securityセキュリティ・ヘッダーが含まれる場合は、メッセージのプロキシ・サービス側でこのヘッダーを処理するようにプロキシ・サービスを構成する必要があります。Oracle Service Busでは、すでにWS-Securityヘッダーが含まれるSOAPエンベロープにSAMLヘッダー(または他のWS-Securityヘッダー)を追加したり、既存のセキュリティ・ヘッダーにSAML (または他の)セキュリティ・トークンを追加したりすることはできません。

- サード・パーティ認証

プロキシ・サービスがユーザーを認証する場合、プロキシでは、ビジネス・サービスにメッセージを転送する前にサブジェクトが自動的に生成されます。

2. SAMLクライアント・ポリシーを含むようにビジネス・サービスを構成します。ポリシーによって、認証済ユーザーのためのSAMLトークンがサブジェクトに生成されます。

Oracle Service BusでサポートされるOracle Web Services Manager SAMLポリシーのリストは、50.2.8項「サポートされるシード・ポリシーとサポートされないアサーション」を参照してください。

注意:

この項の手順では、プロキシからビジネス・サービスを呼び出すことを前提としています。ビジネス・サービスを呼び出す前にプロキシからプロキシを呼び出す環境を使用する場合、Oracle Service Busによるセキュリティ・ヘッダーの処理方法を理解すると役立ちます。詳細は、31.5項「ローカル・プロキシでのOracle WSMセキュリティの使用」を参照してください。

53.2 SAMLパススルーIDの伝播の構成

クライアントがパススルー・プロキシ・サービスへのSAMLトークンを提供する場合は、クライアントのSAMLトークンをビジネス・サービスに伝播できます。

この方法では、ビジネス・サービスが、SAMLトークンを使用した認証を要求するポリシー文を持つWebサービスであることが必要です。

SAMLパススルーIDの伝播を構成するには:

- プロキシ・サービス - 52.3.2項「パススルー・プロキシ・サービスの作成: 主な手順」の説明のとおり、パススルー・プロキシ・サービスを構成します。

- ビジネス・サービス - 52.4項「ビジネス・サービスのメッセージ・レベルのセキュリティの構成:主な手順」の説明のとおり、SAMLトークンを使用する認証を要求するポリシー文でSOAP-HTTPまたはSOAP-JMSのビジネス・サービスを構成します。

53.3 プロキシ・サービス・リクエストでのSAMLトークンの認証

アクティブな仲介プロキシ・サービスへのSAMLトークンがクライアントから提供される場合は、クライアントのIDアサーションを行うようにプロキシ・サービスを構成できます。

SAMLトークンを使用してクライアントを認証するようにプロキシ・サービスを構成するには:

1. IDアサーション・プロバイダの構成時は、次の要件に注意してください。

- ポリシーの確認方法がSAMLアサーション側のSAMLプロファイルと一致する必要があります。

- アサーション側のターゲットURLをプロキシ・サービスの相対URLとして指定します(プロトコルとホスト情報は省略します)。

- 署名されたアサーションの場合は、IDアサーション・プロバイダ・レジストリに証明書を追加します。

2. HTTP、HTTPS、またはJMSプロトコル経由で通信するアクティブな仲介プロキシ・サービスを作成します。プロキシ・サービスは、認証を要求し、SAMLトークンを受け取るポリシー文を持つWebサービスであることが必要です。
「ローカルな」トランスポート・タイプで通信するプロキシ・サービスは、SAMLトークン・プロファイルを使用して認証を行うことはできません。

53.4 サービス・バス(SB)トランスポートを使用したSAML認証の構成

SBトランスポートでSAMLベースの認証を使用する場合は、次の構成要件に従ってください。

- アサーション側で、URI http://openuri.org/sb_proxy_uriを使用して、SAML資格証明マッパーを構成します。sb_proxy_uriは、SBトランスポート・サービスのURIです。

- Oracle Service Bus側(依存側)でIDアサーション・プロバイダを構成する場合は、アサーション側のターゲットURLをプロキシのエンドポイントURIとして使用します。プロトコルおよびホスト情報は含めないでください。例: /sb_proxy_uri。

53.5 SAMLのアイデンティティ切替えの使用

Oracle Web Services Managerは、アイデンティティ切替えの実行を可能にするwss11_saml_token_identity_switch_with_message_protection_client_policyを提供します。ビジネス・サービスに付加する対象のポリシーは、プロキシ・サービスから認証されたサブジェクトに基づくアイデンティティではなく、異なるアイデンティティを伝播します。ポリシーの詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のアイデンティティ切替えのためのSAML Webサービス・クライアントの構成に関する項を参照してください。

ポリシー・プロパティsubject.precedence = falseに設定し、切替え先のアイデンティティの資格証明ストア形式(CSF)キーを提供した場合、ビジネス・サービスは現在のサブジェクトを無視し、csf-keyの資格証明でSAMLトークンを作成します。

subject.precedence = trueに設定した場合、現在のサブジェクトがSAMLトークンの作成に使用されます。ただし、サブジェクトが匿名の場合、Oracle Web Services Managerはアイデンティティ切替えの実行にcsf-keyを使用しようとします。

CSFの操作の詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』のCSFによるアプリケーション開発の概要に関する項を参照してください。

53.5.1 アイデンティティ切替えリソースの保護

アイデンティティ切替え機能への不正なアクセスを防ぐため、アイデンティティ切替えを実行するリソースに特別な権限を付与する必要があります。たとえば、Oracle Service Busで、アイデンティティ切替えビジネス・サービスが含まれるプロジェクトに権限を付与します。

Oracle Service Busプロジェクトに適切な権限を付与するには、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のWSIdentityPermission権限の設定に関する項の説明のとおり、Oracle Enterprise Manager Fusion Middleware Controlを使用します。この内容をガイダンスとして、権限フィールドに次の情報を入力します。

- 権限クラス - oracle.wsm.security.WSIdentityPermission

- リソース名 - ビジネス・サービスが含まれるOracle Service Busプロジェクトの名前(パスではない)

- 権限アクション - assert

53.6 Oracle Service BusにおけるSAMLのトラブルシューティング

質問: プロキシ・サービスのトランスポートIDを宛先のビジネス・サービスに伝播しようとすると、必ず、「Unable to add security token for identity」というエラーが表示されます。これはどういう意味ですか。

回答: このエラーには様々な原因があります。通常、これは次のいずれかの問題を意味します。

- SAML資格証明マッパーが正しく構成されていません。構成が、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』のSAMLの構成に関する項の指示と一致しているか再確認してください。

- このエラーで一般的なもう1つの原因は、伝播するサブジェクト情報がないことです。SAMLトークンを生成するには、トランスポート・レベルまたはメッセージ・レベルのサブジェクトが必要です。クライアントにサブジェクトがあるか確認してください。これを行うには、$securityメッセージ・コンテキスト変数を検査します。

質問: SAML holder-of-keyを使用して、プロキシ・サービスのトランスポートIDを宛先のビジネス・サービスに伝播しようとすると、必ず「Failure to add signature」というエラーが表示されます。これはどういう意味ですか。

回答: このエラーには様々な原因がありますが、最も可能性が高いのは、ビジネス・サービスのサービス・キー・プロバイダに対して資格証明が構成されていないことです。Oracle Service Busは、アウトバウンドholder-of-keyアサーションを生成するときに、メッセージ・コンテンツに対するデジタル署名も生成します。これにより、受信者はメッセージが特定のユーザーから送信されたものであることだけではなく、そのメッセージが改ざんされていないことを確認できます。署名を生成するには、ビジネス・サービスは関連付けられたデジタル署名資格証明を持つサービス・キー・プロバイダを持つ必要があります。

質問: SAML IDトークンを受信するアクティブな仲介プロキシ・サービスを構成しようとすると、必ず「The SAML token is not valid」のようなエラーが表示されます。どのように修正すればよいですか。

回答: この問題は通常、そのプロキシ・サービスに対してSAML IDアサーション・プロバイダまたはSAML IDアサーション・プロバイダのアサーション側構成がないことが原因です。プロキシ・サービスがアクティブな仲介モードでSAMLアサーションを受信するには、SAML IDアサーション・プロバイダが構成されている必要があります。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のSAML IDアサーション・プロバイダの構成に関する項を参照してください。

54 カスタム認証の構成

この章では、Oracle Service Busのカスタム・トランスポート・レベルおよびメッセージ・レベルの認証を構成する方法について説明します。

Oracle Service Busは、トランスポートとメッセージの両レベルのプロキシ・サービス・リクエストについて、クライアントで指定されたカスタム認証の資格証明をサポートしています。カスタム認証の資格証明はトークンの形であったり、ユーザー名とパスワード・トークンの組合せということもあります。

Oracle Service Busは、HTTPヘッダーやSOAPヘッダー(SOAPベースのプロキシ・サービスの場合)、またはペイロード(非SOAPプロキシ・サービスの場合)でプロキシ・サービスに渡されるカスタム・トークンを受け入れて、認証しようとします。プロキシ・サービス構成ウィザードを使用して、トークンが渡されるメカニズムとトークン・タイプによりプロキシ・サービスを構成します。

また、Oracle Service Busは、SOAPヘッダー(SOAPベースのプロキシ・サービスの場合)またはペイロード(非SOAPプロキシ・サービスの場合)で渡されるユーザー名とパスワード・トークンを受け入れて認証しようとします。プロキシ・サービス構成ウィザードを使用して、ユーザー名とパスワードが渡されるメカニズムによって、プロキシ・サービスを構成します。

注意:

カスタム認証のメカニズムは、単独またはWebサービスのメッセージ・レベルのセキュリティとともに機能します。これについては、第52章「Webサービスのメッセージ・レベルでのセキュリティの構成」で説明しています。両方のタイプのセキュリティの使用については、54.9項「WS-Securityおよびカスタム・ユーザー名/パスワードとトークンの組合せ」を参照してください。

次のカスタム認証メカニズムがサポートされています。

- トランスポート・レベルのセキュリティ

- HTTPヘッダーのカスタム・トークン

- メッセージ・レベルのセキュリティ

- SOAPベースのプロキシ・サービスの場合

- SOAPヘッダーのカスタム・トークン

- SOAPヘッダーのユーザー名/パスワード

- 非SOAPベースのプロキシ・サービスの場合

- 任意のXMLベースのプロキシ・サービスのペイロードに含まれるカスタム・トークン

- 任意のXMLベースのプロキシ・サービスのペイロードに含まれるユーザー名/パスワード

この章の内容は次のとおりです。

- 54.1項「カスタム認証トークンとは」

- 54.1.1項「カスタム認証トークンの使用とデプロイメント」

- 54.2項「トランスポート・レベルのカスタム認証について」

- 54.3項「メッセージ・レベルのカスタム認証について」

- 54.5項「カスタム・トークン用IDアサーション・プロバイダの構成」

- 54.6項「カスタム認証によるトランスポート・レベルのセキュリティの構成」

- 54.7項「カスタム認証によるメッセージ・レベルのセキュリティの構成」

- 54.8項「カスタム認証トークンから取得したIDの伝播」

- 54.9項「WS-Securityおよびカスタム・ユーザー名/パスワードとトークンの組合せ」

54.1 カスタム認証トークンとは

認証トークンは、文字列やXMLで表される何らかのデータで、X509クライアント証明書などのエンティティ(ユーザーまたはプロセス)を識別します。認証トークンは通常、特定のセキュリティ・プロトコル内で使用されることを意図しています。暗号により保護されている認証トークンもあれば、そうでないものもあります。一部の認証トークンは、重要なキー・マテリアルを持っています。

Oracle Service Busの文脈では、カスタム認証トークンはユーザー名/パスワードであったり、リクエスト内のユーザー定義の場所にある不透明なIDアサーション・トークンであることもあります。ユーザー名/パスワード・トークンは、SOAPヘッダー(SOAPベースのサービスの場合)または非SOAPプロキシ・サービスのペイロードで使用されます。IDアサーション・トークンは、HTTPヘッダーやSOAPヘッダー(SOAPベースのサービスの場合)、または非SOAPプロキシ・サービスのペイロード内で使用可能です。Oracle Service Busドメインには、トークン・タイプをサポートするIDアサーション・プロバイダを含める必要があります。

Oracle Service Busは、認証されたユーザーを使用して、クライアントのセキュリティ・コンテキストを確立します。カスタム・トークンやユーザー名/パスワードを認証することで確立されたセキュリティ・コンテキストは、アウトバウンド資格証明のマッピングおよびアクセス制御の基礎として使用できます。

認証のためにトークンを提供するクライアントの認証と認可を行うには、クライアントの資格証明をOracle Service BusユーザーにマップするIDアサーション・プロバイダを構成する必要があります。Oracle Service Busはこのユーザー名を使用して、クライアントのセキュリティ・コンテキストを確立します。

54.1.1 カスタム認証トークンの使用とデプロイメント

Oracle Service Busであらたにカスタム認証トークンがサポートされることにより、2つの顧客ニーズに対応します。1番目のシナリオでは、プロキシ・サービスのリクエストのメッセージ・ペイロードのどこか(SOAPヘッダーなど)にユーザー名/パスワードがある場合です。Oracle Service Busは、このユーザー名/パスワードを取得して、ユーザーを認証する必要があります。

2番目のシナリオでは、メッセージにsecure-token-xyzトークンなど何らかの認証トークン(ユーザー名/パスワード以外)が含まれている場合です。トークンは、HTTPヘッダーまたはメッセージのペイロード内にある場合があります。Oracle Service Busは、このトークンを取得して認証する必要があります。どちらの場合でも、認証に成功するとセキュリティ・コンテキストが確立されます。

セキュリティ関連の構成の多くは通常、デプロイメントのときに行われ、カスタム認証はそのモデルに適合します。デプロイメントのときに本番環境で直接構成できます。または、ステージングの際に認証を構成して、それを本番環境にインポートすることもできます。

カスタム認証(ユーザー名/パスワード・トークンとカスタム・トークンを含む)は、プロキシ・サービスの定義の中核です。プロキシ・サービスがエクスポートされるとき、カスタム・トークンのすべての構成がjarファイルに含まれます。新しいバージョンのプロキシ・サービスがインポートされる場合、前の構成はこのjarファイルに含まれる構成にオーバーライドされます。

IntegrationDeployerロールまたはIntegrationAdministratorロールのユーザーのみが、カスタム・トークンの認証を構成できます。IntegrationOperatorロールまたはIntegrationMonitorロールのユーザーは、この構成に対して読取り専用のアクセス権限を持っています。

54.2 トランスポート・レベルのカスタム認証について

カスタム認証トークンを使用して、トランスポート・レベルでクライアントのリクエストを認証できます。カスタム・トークンは、HTTPヘッダーで指定します。サービス定義ウィザードのHTTP(およびHTTPS)構成ページを使用すると、クライアントの認証を構成できます。HTTPおよびHTTPSプロキシ・サービスのオプションは次のとおりです。

- なし

- 基本

- カスタム認証

- クライアント証明書(HTTPSのみ)

これらのオプションは同時に複数選択することはできません。

カスタム認証を選択した場合、トークンを送信するHTTPヘッダー名とトークン・タイプも指定する必要があります。

トランスポート・レベルのカスタム資格証明を構成する手順については、2.3項「プロキシ・サービスの操作」で説明しています。

カスタム認証のトークンには、任意のアクティブなトークン・タイプで、以前にIDアサーション・プロバイダ用に構成され、HTTPヘッダーで送信されたものを使用できます。

使用する予定のトークン・タイプを処理するIDアサーション・プロバイダを、構成あるいは作成して構成する必要があります。54.5項「カスタム・トークン用IDアサーション・プロバイダの構成」を参照してください。

トランスポート・レベルのカスタム資格証明を構成し終わったら、さらにメッセージ・レベルのセキュリティ構成を構成することができます。この方法については、第52章「Webサービスのメッセージ・レベルでのセキュリティの構成」を参照してください。

54.2.1 インポートとエクスポートおよびトランスポート・レベルのカスタム・トークン認証

トランスポート・レベルのカスタム認証トークンは、UDDIにパブリッシュされます。client-authプロパティは、認証の構成時にHTTPまたはHTTPSトランスポート属性のinstanceParmsにあります。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「トランスポート属性」にあるように、client-authの有効な値はBASIC、CLIENT-CERTおよびCUSTOM-TOKENです。値がCUSTOM-TOKENの場合は、さらにtoken-headerとtoken-typeという2つのプロパティが必ず存在します。

注意:

Oracle Service Busビジネス・サービス定義は、カスタム・トークン認証をサポートしていません。client-authがCUSTOM-TOKENであるUDDIからサービスをインポートする場合、認証の構成が何もないかのようにサービスがインポートされます。

54.3 メッセージ・レベルのカスタム認証について

Oracle Service Busは、プロキシ・サービスのメッセージ・レベルのリクエストについて、クライアントで指定されたカスタム認証の資格証明をサポートしています。カスタム認証の資格証明は、カスタム・トークン、またはユーザー名とパスワードの形式になります。

Oracle Service Busは、SOAPヘッダー(SOAPベースのプロキシ・サービスの場合)、またはペイロード(非SOAPプロキシ・サービスの場合)でプロキシ・サービスに渡されるカスタム・トークンを受け入れて、認証しようとします。プロキシ・サービス構成ウィザードを使用して、トークンが渡されるメカニズムとトークン・タイプによりプロキシ・サービスを構成します。

また、Oracle Service Busは、SOAPヘッダー(SOAPベースのプロキシ・サービスの場合)またはペイロード(非SOAPプロキシ・サービスの場合)で渡されるユーザー名とパスワード・トークンを受け入れて認証しようとします。プロキシ・サービス構成ウィザードを使用して、ユーザー名とパスワードが渡されるメカニズムによって、プロキシ・サービスを構成します。

現在サポートされているプロキシ・サービスのメッセージ・レベルの認証メカニズムは次のとおりです。

- SOAPベースのプロキシ・サービスの場合

- SOAPヘッダーのカスタム・トークン

- SOAPヘッダーのユーザー名/パスワード

- 非SOAPベースのプロキシ・サービスの場合

- 任意のXMLベースのプロキシ・サービスのペイロードに含まれるカスタム・トークン

- 任意のXMLベースのプロキシ・サービスのペイロードに含まれるユーザー名/パスワード

メッセージ・レベルのカスタム・トークン、およびメッセージ・レベルのユーザー名とパスワードが、次のバインディング・タイプのプロキシ・サービスでサポートされます。

- WSDL-SOAP

- WSDL-XML

- 抽象SOAP

- 抽象XML

- 混合 - XML(リクエスト内)

- 混合 - MFL(リクエスト内)

54.4 XPath拡張の形式

カスタム・ユーザー名/パスワードとカスタム・トークンの構成は、ほぼ同じです。どちらの場合も、Oracle Service Busで必要な情報を検索できるようにするためのXPath式を指定します。これらのXPath式のルートは次のとおりです。

- サービスのバインドがanySOAPまたはWSDL-SOAPの場合は、soap-env:Envelope/soap-env:Headerを使用します。

- サービスのバインドがSOAPベースでない場合は、soap-env:Body(具体的には、$body変数の内容)を使用します。

注意:

すべてのXPath式は有効なXPath 2.0形式である必要があります。使用するネームスペースをXPath式で宣言するには、次のようなXPathの"declare namespace"構文を使用します。

declare namespace ns='http://webservices.example.com/MyExampleService';

例:

declare namespace y="http://foo";./y:my-custom-token/text()

54.5 カスタム・トークン用IDアサーション・プロバイダの構成

IDアサーション・プロバイダは特定の形式の認証プロバイダで、ユーザーやシステム・プロセスが自らのトークンを使用してIDをアサートできるようにします。クライアントのIDは、クライアントから提供されるトークンを使用することにより確立されます。IDアサーション・プロバイダは、トークンを検証します。トークンが正常に検証されると、IDアサーション・プロバイダはトークンをOracle Service Busのユーザー名にマップし、ユーザー名を戻します。トークンがユーザー名にマップされることを、IDが「アサート」されたといいます。Oracle Service Busは、このユーザー名を使用してクライアントのセキュリティ・コンテキストを確立します。

プロキシ・サービスでカスタム・トークンを消費するには、提供されたOracle WebLogic ServerのIDアサーション・プロバイダをチェックして、ニーズに合うかを確認してください。Oracle WebLogic Serverには、次のような幅広いIDアサーション・プロバイダが含まれています。

- WebLogic IDアサーション・プロバイダは、X.509およびIIOP-CSIv2トークンを検証します。必要に応じてユーザー名マッパーを使用し、そのトークンをユーザーにマップできます。

- SAML IDアサーション・プロバイダは、SAMLセキュリティ・アサーションのコンシューマとして機能します。

Oracle Service Busプロキシ・サービスで、secure-token-xyzトークンなど、バンドルされたIDアサーション・プロバイダにより処理されないカスタム・トークンを消費する場合、ユーザー(またはサードパーティ)は最初にトークン・タイプをサポートするOracle WebLogic Server IDアサーション・プロバイダを記述し、Oracle WebLogic Server管理コンソールを使用して、そのプロバイダをセキュリティ・レルムに追加する必要があります。

IDアサーション・プロバイダを開発して、ユーザーのIDをアサートするときに使用する特定のタイプのカスタム・トークンをサポートします。複数のトークン・タイプをサポートするために、IDアサーション・プロバイダを開発することができます。1つのセキュリティ・レルムに、同じトークン・タイプを検証する機能を備えた複数のIDアサーション・プロバイダを持つことはできますが、この検証を実際に実行できるのは、1つのIDアサーション・プロバイダだけです。

IDアサーションのプロセスを図54-1に示します。プロセスは次のようになります。

1. プロキシ・サービスがインバウンド・リクエストから認証トークンを取得します。

2. そのタイプのトークンの検証を担当し、「アクティブ」として構成されているIDアサーション・プロバイダにトークンが渡されます。

3. IDアサーション・プロバイダは、トークンを検証します。

4. トークンが正常に検証されると、IDアサーション・プロバイダはトークンをユーザー名にマップし、ユーザー名を戻します。

5. それからOracle Service Busは、このユーザー名を使用して認証プロセスを続け、成功した場合は認証されたサブジェクトを取得します。

6. Oracle Service Busは、セキュリティ・コンテキストを作成します。カスタム・トークンやユーザー名/パスワードを認証することで確立されたセキュリティ・コンテキストは、アウトバウンド資格証明のマッピングおよびアクセス制御の基礎として使用できます。

詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』のIDアサーションおよびトークンに関する項を参照してください。

図54-1 IDアサーションとカスタム・トークン

54.5.1 カスタム・トークンのオブジェクト・タイプ

トランスポート・レベルのIDアサーションの場合、ヘッダーの値はjava.lang.StringとしてIDアサーション・プロバイダに渡されます。メッセージ・レベルのIDアサーションの場合は、XPath式が次のように評価されます。

- XPath式が複数のノードを戻す場合、エラーが発生してIDアサーションは呼び出されません。

- XPath式が空の結果を戻す場合、nullの引数を持つIDアサーションが呼び出されます。

- XPath式がタイプTEXTまたはATTRの単一のトークンを戻す場合(http://xmlbeans.apache.org/docs/2.0.0/reference/org/apache/xmlbeans/XmlCursor.TokenType.htmlにあるXmlCursor.TokenTypeを参照)、テキスト・ノードの文字列の値または属性が渡されます(XmlCursor.getStringValue()によって戻される場合と同じように)。それ以外の場合は、単一のXmlObjectが渡されます。

54.5.2 IDアサーション・プロバイダでのカスタム・トークン・タイプの構成

これらのタスクを完了するために必要な手順は、次のOracle WebLogic Serverのドキュメントで詳しく説明されています。

- 『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』の新しいトークン・タイプの作成方法に関する項では、IDアサーション・プロバイダにカスタムのトークン・タイプを作成する方法について説明しています。

- 『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』では、Oracle WebLogic Server管理コンソールでのIDアサーション・プロバイダの構成方法について説明しています。

参考までに、IDアサーション・プロバイダ用のカスタム・トークン・タイプを作成する手順と、そのプロバイダをOracle WebLogic Server管理コンソールで構成する手順について、ここで簡単にふれています。ただし、実際にこのタスクを完了するには、Oracle WebLogic Serverのドキュメントに目を通す必要があります。

54.5.2.1 IDアサーション・プロバイダでのカスタム・トークン・タイプの構成手順

カスタムのIDアサーション・プロバイダは、次の手順によって開発できます。

1. 新しいトークン・タイプを作成します。『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』の新しいトークン・タイプの作成方法に関する項を参照してください。

2. 『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』の適切なSSPIを使用したランタイム・クラスの作成に関する項。この項では、SampleIdentityAsserterProviderImpl.javaクラスについて説明しています。これは、サンプルのIDアサーション・プロバイダのランタイム・クラスです。

3. 『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』のWebLogic MBeanMakerによるMBeanタイプのタイプの作成に関する項。

4. 『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』の管理コンソールによるカスタムIDアサーション・プロバイダの構成に関する項。

5. アクティブなトークン・タイプを定義します。このタスクについては、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のIDアサーション・プロバイダの構成に関する項と、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』のIDアサーション・プロバイダの構成用に新しいトークン・タイプを使用可能にする方法に関する項を参照してください。

54.5.2.2 MBeanでサポートするアクティブなタイプの設定

カスタムのIDアサーション・プロバイダを構成するときは、「サポートされている種類」フィールドにIDアサーション・プロバイダがサポートしているトークン・タイプのリストが表示されます。「アクティブな種類」フィールドにゼロまたはそれ以上のサポートされているタイプを入力します。

「サポートされている種類」フィールドの内容は、カスタムIDアサーション・プロバイダのMBeanタイプを生成するために使用するMBean定義ファイル(MDF)のSupportedTypes属性から取得されます。サンプルIDアサーション・プロバイダの例を例54-1に示します。MDFおよびMBeanタイプの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』のWebLogic MBeanMakerによるMBeanタイプの生成に関する項を参照してください。

例54-1 SampleIdentityAsserter MDF : SupportedTypes属性

<MBeanType>
...
<MBeanAttribute
Name = "SupportedTypes"
Type = "java.lang.String[]"
Writeable = "false"
Default = "new String[] {&quot;SamplePerimeterAtnToken&quot;}"
/>
...
</MBeanType>

同様に、「アクティブな種類」フィールドの内容は、MBean定義ファイル(MDF)のActiveTypes属性から取得されます。MDFファイルのActiveTypes属性をデフォルトに設定すると、Oracle WebLogic Server管理コンソールで手動設定する必要がなくなります。サンプルIDアサーション・プロバイダの例を例54-2に示します。

例54-2 SampleIdentityAsserter MDF: Defaultを使用したActiveTypes属性

<MBeanAttribute
Name= "ActiveTypes"
Type= "java.lang.String[]"
Default = "new String[] { &quot;SamplePerimeterAtnToken&quot; }"
/>

ActiveTypes属性のデフォルト化は便利ですが、他のIDアサーション・プロバイダがそのトークン・タイプを検証することがない場合にのみ行うようにします。それ以外の場合は、無効なセキュリティ・レルムが構成されることになるおそれがあります(複数のIDアサーション・プロバイダが同じトークン・タイプを検証しようとします)。一番良いのは、IDアサーション・プロバイダのすべてのMDFがデフォルトでそのトークン・タイプをオフにすることです。その場合、そのトークン・タイプを検証するIDアサーション・プロバイダを構成して手作業でアクティブにすることができます。

54.6 カスタム認証によるトランスポート・レベルのセキュリティの構成

結局のところ、カスタム認証はトランスポート・レベルのセキュリティのために構成します。ただし、プロセスのこの段階に行き着く前に、まず使用を予定するトークン・タイプを認識するIDアサーション・プロバイダを構成、あるいは作成して構成する必要があります。

これらのタスクを完了するために必要な手順は、次のOracle WebLogic Serverのドキュメントで詳しく説明されています。

- バンドルされたIDアサーション・プロバイダのいずれかがニーズに合う場合、このIDアサーション・プロバイダをOracle WebLogic Server管理コンソールで構成する手順については、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のIDアサーション・プロバイダの構成に関する項を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』では、IDアサーション・プロバイダ用のカスタム・トークン・タイプの作成方法について説明しています。

- 『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のIDアサーション・プロバイダの構成に関する項では、Oracle WebLogic Server管理コンソールでIDアサーション・プロバイダを構成する方法について説明しています。

54.6.1 カスタム認証によるトランスポート・レベルのセキュリティの構成手順

カスタム認証によるトランスポート・レベルのセキュリティの構成手順は、次のとおりです。

1. 使用するカスタム・トークンの形式を決定します。

2. 既存のプロバイダがニーズに合うかどうかを判断します。このタスクの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の認証プロバイダの選択に関する項を参照してください。

3. トークンの形式をサポートするIDアサーション・プロバイダを、構成あるいは作成してから構成してください。

4. IDアサーション・プロバイダは、トークンをユーザー名にマップします。クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに追加してください。

5. プロトコル依存のトランスポート構成ページで、Oracle Service Busがトークンと認証トークン・タイプを検索する認証ヘッダーを指定します。構成されたIDアサーション・プロバイダに対してアクティブなトークン・タイプのみが表示されます。

54.7 カスタム認証によるメッセージ・レベルのセキュリティの構成

最終的には、カスタム認証によるメッセージ・レベルのセキュリティを構成します。ただし、プロセスのこの段階に行き着く前に、まず使用を予定するトークン・タイプを認識する認証プロバイダまたはIDアサーション・プロバイダを構成、あるいは作成して構成する必要があります。

これらのタスクを完了するために必要な手順は、次のOracle WebLogic Serverのドキュメントで詳しく説明されています。

- バンドルされた認証プロバイダまたはIDアサーション・プロバイダのいずれかがニーズに合う場合、この認証プロバイダをOracle WebLogic Server管理コンソールで構成する手順については、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の認証プロバイダの構成に関する項を参照してください。

- 『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』の新しいトークン・タイプの作成方法に関する項では、IDアサーション・プロバイダにカスタムのトークン・タイプを作成する方法について説明しています。

- 『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のIDアサーション・プロバイダの構成に関する項では、Oracle WebLogic Server管理コンソールでIDアサーション・プロバイダを構成する方法について説明しています。

54.7.1 カスタム認証によるメッセージ・レベルのセキュリティの構成手順

カスタム認証によるメッセージ・レベルのセキュリティの構成手順は、次のとおりです。

1. 使用するカスタムのユーザー名/パスワードまたはトークンの形式を決定します。

2. 既存のプロバイダがニーズに合うかどうかを判断します。このタスクの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の認証プロバイダの選択に関する項を参照してください。
いずれかの コンテキスト・プロパティ を指定した場合、プロバイダは処理するプロパティ名を知っておく必要があるため、おそらく独自のプロバイダを作成する必要があります。

3. ユーザー名/パスワードまたはトークンの形式をそれぞれサポートする認証プロバイダあるいはIDアサーション・プロバイダを、構成または作成してから構成します。また、このプロバイダは、提供するすべての コンテキスト・プロパティ を認識する必要があります。

4. クライアントのユーザー名をOracle Service Busの「セキュリティ構成」モジュールに追加します。

5. 「セキュリティ」ページで、必要に応じて、「ユーザー名XPath」、「ユーザー・パスワードXPath」、「トークン・タイプ」およびトークン・パスに新規または既存のプロキシ・サービスを構成します。

6. 入力するすべてのコンテキスト・プロパティの「プロパティ名」と「値セレクタ」を指定します。

54.8 カスタム認証トークンから取得したIDの伝播

カスタムのトークンまたはカスタムのユーザー名/パスワードにより確立されるセキュリティ・コンテキストは、決して一意ではなく、それを資格証明のマッピングに使用できます。トランスポート・レベルの認証とメッセージ・レベルの認証を両方とも実装する場合、メッセージ・レベルのセキュリティ・コンテキストは、常に資格証明のマッピングとIDの伝播に使用されます。

たとえば、プロキシ・サービスがSOAPヘッダーのsecure-token-xyzトークンによってクライアントを認証する場合、マップされたすべてのサービス・アカウントのルックアップ中に、認証されたサブジェクトが使用されます。サブジェクトはアウトバウンド・メッセージ上でSAMLトークンが生成されるときにも使用されます。また、カスタム・トークンまたはカスタムのユーザー名/パスワードに関連する認証コンテキストの下で、Javaコールアウトが実行可能です。

カスタムのユーザー名/パスワードを使用する場合、パススルー・サービス・アカウントが使用されるときは、カスタム・トークン内のユーザー名/パスワードをアウトバウンドHTTP BASICまたはアウトバウンドWS-Securityユーザー名トークンの認証に使用できます。

54.9 WS-Securityおよびカスタム・ユーザー名/パスワードとトークンの組合せ

Oracle Service Busプロキシ・サービスは、トランスポート・レベルのセキュリティ(HTTPSなど)とメッセージ・レベルのセキュリティ(WS-Securityやカスタム・トークンなど)のどちらか、あるいは両方の組合せを使用して保護できます。つまり、Oracle Service Busプロキシ・サービスは、トランスポート・レベルの認証とメッセージ・レベルの認証の両方を使用して構成できます。

たとえば、クライアントのリクエストをHTTPヘッダーのカスタム・トークンを使用してトランスポート・レベルで認証したり、Webサービスのセキュリティ・ヘッダーを除く、WSSセキュリティ・トークンやカスタム・トークン、ユーザー名/パスワードを使用して、メッセージ・レベルで認証したりできます。

ただし、次の制限に注意してください。WS-Securityとメッセージ・レベルのカスタム・トークンを組み合せることは可能ですが、WS-SecurityポリシーはWS-Securityトークンに基づいてプロキシ・サービス認証を要求することは できません 。メッセージ・レベルのカスタム・トークンとWS-Securityプロキシ・サービス認証は、同時に両方を選択することはできません。

次の相違点について考察します。

- SOAPヘッダー<foo:MyToken>にタイプがMyTokenのカスタム・トークンを想定し、何らかのメッセージ部分(<foo:MyToken>ヘッダーおよびSOAP本体など)の署名や暗号化を要求するWS-Securityポリシーを持つプロキシ・サービスを構成することは可能です。

- ヘッダー<foo:MyToken>にカスタム・トークンを要求し、SAMLトークンや他の形式の認証を要求するWS-Securityポリシーも持っているプロキシ・サービスを構成することはできません。

55 .Net 2.0とメッセージ・レベルのセキュリティ

この章では、.NET 2.0とOracle Service Bus間でメッセージ・レベルのセキュリティを構成する方法について説明します。

この章の内容は次のとおりです。

- 55.1項「.NET 2.0とOracle Service Bus間のメッセージ・レベルのセキュリティ」

- 55.2項「.NETとは何ですか」

- 55.3項「Oracle Service Busとの相互運用性のための.NETのメッセージ・レベル・セキュリティの構成」

- 55.4項「Oracle Service Busの.NETとのメッセージ・レベルのセキュリティの構成」

55.1 .NET 2.0とOracle Service Bus間のメッセージ・レベルのセキュリティ

Microsoft .NET 2.0フレームワークとOracle Service Busとの間でメッセージ・レベルのセキュリティを設定できます。メッセージ・レベルのセキュリティでは、Webサービス・クライアントがOracle Service Busプロキシ・サービスまたはビジネス・サービスとの接続を確立した後、プロキシ・サービスまたはビジネス・サービスがこのメッセージを処理する前にSOAPメッセージに対してセキュリティ・チェックが適用されます。

55.2 .NETとは

.NETフレームワークは、Microsoft Windowsオペレーティング・システムに追加することができるソフトウェア・コンポーネントです。一般的なプログラム要件に対してあらかじめコード化されたソリューションを提供し、このフレームワーク専用に記述されたプログラムの実行を管理します。

55.3 Oracle Service Busとの相互運用性のための.NETのメッセージ・レベル・セキュリティの構成

この項では、.NET 2.0およびOracle Service Busでメッセージ・レベルのセキュリティを構成するために必要な手順を説明します。

注意:

これらの手順を実行する前に、第52章「Webサービスのメッセージ・レベルでのセキュリティの構成」の手順に従って、Oracle Service Busに対してインバウンドとアウトバウンドのメッセージングを構成する必要があります。

.NETとOracle Service Bus間でメッセージ・レベルのセキュリティを構成するには:

1. Oracle Service Busのアウトバウンドおよびインバウンド・メッセージングを構成する手順が完了していることを確認します。手順については、上記の警告を参照してください。

2. http://msdn2.microsoft.com/en-us/webservicesからWeb Service Enhancements (WSE) 3.0をダウンロードしてインストールします。WSE 3.0はSOAPの拡張が管理する.NET 2.0フレームワークと互換性があるAPI (Microsoft.Web.Services3.dll)です。

3. WSE 3.0のインストール後に、使用するWebアプリケーションでWSEを有効にし、またWSE Soap Protocol Factoryのサポートを有効にする必要があります。この2つの機能はVisual Studioのウィザードを使用して有効にできます。詳細は、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wse3.0/html/5a8f03b1-16ac-4c5c-9d9e-132a9c0b628a.aspを参照してください。
WSE 3.0を有効にすると、次の制限が生じます。

- WSE 3.0ではWS-Policyがサポートされていません。そのため、.NET 1.1とWSE 2.0のときのような構成を目的とするWS-SecurityPolicyもサポートされません。WSE 3.0でサポートされるのは、WSE 2.0と同様の機能を提供するwse3policyCache.configファイル(または同等の.NETコード)を使用して構成された独自のポリシーに限られます。この変更の結果、.NET WebサービスのWSDLにWS-Policy文は含まれなくなりました。一方、Oracle Service Busでは、2002年12月18日バージョンのWebサービス・セキュリティ・ポリシー言語(WS-SecurityPolicy)仕様に記述されたアサーションに基づく、Oracle WebLogic Server独自の形式をサポートしています。Oracle Service Busで.NET WSDLを利用するには、WSDLに同等のOracle Service Bus独自バージョンのWS-Policyを組み込む必要があります。
例55-1のWSDLコード・サンプルは、Oracle Service Busにおけるメッセージ・レベルのID伝播、機密性、および整合性をWS-Policyに構成する方法を示します。

- WSE 3.0ではwse3policyCache.configファイルに複数の設定不要のセキュリティ・アサーション用のポリシー構成が用意されており、Visual Studioのウィザードを使用して選択できます。提供されているメッセージ・レベル・セキュリティ(暗号化や署名など)にマップする証明書は、MutualCertificate10です。MutualCertificate10セキュリティ・アサーションの構成については、http://msdn2.microsoft.com/en-us/library/aa480581.aspxを参照してください。

- WSE Soap Protocol FactoryはSOAP 1.2にあるセキュリティをサポートしません。Visual Studioの「Web Reference」オプションを使用して生成されたクライアント・スタブには、SOAP 1.1を選択した場合にのみセキュリティに対応した操作が含まれます。メッセージ・レベルのセキュリティの相互運用性は、SOAP 1.1でのみ機能します。

- .NET 1.1とWSE 2.0の場合と同じように、デフォルトで構成されているWS-Addressingヘッダーとタイムスタンプの自動署名機能を無効にする必要があります。次の例に示すように、wse3policyCache.configファイルにあるプロパティの一部を変更してください。
デフォルトのConfig

<protection>
<request signatureOptions="IncludeAddressing, IncludeTimestamp,
IncludeSoapBody" encryptBody="true" />
<response signatureOptions="IncludeAddressing, IncludeTimestamp,
IncludeSoapBody" encryptBody="true" />
<fault signatureOptions="IncludeAddressing, IncludeTimestamp,
IncludeSoapBody" encryptBody="false" />
</protection>

必要とされるConfig

<protection>
<request signatureOptions="IncludeSoapBody" encryptBody="true" />
<response signatureOptions="IncludeAddressing, IncludeTimestamp, IncludeSoapBody" encryptBody="true"
/>
<fault signatureOptions="IncludeSoapBody" encryptBody="false" />
</protection>

- デフォルトでは、WSE 3.0は鍵のラッピング・アルゴリズムとしてOAEPを想定しています。ただし、Oracle Service BusではRSA15アルゴリズムを使用します。構成がOAEPのままの場合、「Microsoft.Web.Services3.Security.SecurityFault: An unsupported signature or encryption algorithm was used System.Exception: WSE3002: The receiver is expecting the key wrapping algorithm to be http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p, but the incoming message usedhttp://www.w3.org/2001/04/xmlenc#rsa-1_5.」という例外が表示されます。セキュリティ・トークン・マネージャを構成することで、鍵のラッピング・アルゴリズムを変更できます。
このエラーを回避するには、次の構成を<microsoft.web.services3> <security>要素の下にあるweb.configファイル(.NET Webサービス上)、およびapp.configファイル(.NETのクライアント側)に追加します。

<binarySecurityTokenManager>
<add valueType="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-x509-token-profile-1.0#X509v3";>
<keyAlgorithm name="RSA15" />
</add>
</binarySecurityTokenManager>

この構成により、WSEではOAEPではなくRSA15が強制的に使用されるようになります。

- ユーザー名のトークン認証の場合、.NETによって設定不要のアサーションusernameForCertificateSecurityが提供されます。このアサーションは、サービスのX.509証明書を使用して、クライアントとサービス間の通信チャネルをメッセージ・レイヤーで保護します。ただし、この証明書は<EncryptedKey>要素をセキュリティ・トークンとして参照する機能に依存し、署名確認のオプションが、レスポンス・メッセージとそれを引き起こしたリクエストを関連付けられるようにします。
ユーザー名トークン認証のかわりとして、.NETには設定不要のアサーションusernameOverTransportSecurityがあります。このアサーションではクライアントとサービスとの間の通信がトランスポート・レイヤーでセキュリティで保護されていることが前提となっています。このアプローチは、WS-Security互換であり、SSLを介したメッセージ・レベルの認証をサポートします。設定不要のアサーションusernameOverTransportSecurityを暗号化や署名といった他のメッセージ・レベルのセキュリティ・メカニズムと組み合せる場合は、.NETでカスタム・コードを作成する必要があります。

55.4 Oracle Service Busの.NETとのメッセージ・レベルのセキュリティの構成

Oracle Service Busの構成を行う前に、次の条件を満たしている必要があります。

- .NETクライアントは、プレーン・テキストのメッセージでOracle Service Busプロキシを呼び出します(たとえば、メッセージ・レベルのセキュリティは.NETクライアントとOracle Service Busプロキシ間には存在しません)。

- Oracle Service Busはアウトバウンド・メッセージ・レベルのセキュリティをSOAPリクエストに適用します。

注意:

.NETクライアントでメッセージ・レベルのセキュリティが有効になっている場合は、Oracle Service Busをパススルー・プロキシとして使用できます。

Oracle Service Busに.NETとのメッセージ・レベルのセキュリティを構成するには:

1. 次のように、暗号化アルゴリズムをtripledes-cbcからaes256-cbcに変更します。

<wssp:EncryptionAlgorithm URI="http://www.w3.org/2001/                       04/xmlenc#aes256-cbc"/>

2. WSDLのsign.xmlポリシーを変更します。この属性は、整合性アサーション要素にあります。

<wssp:Integrity SignToken='false' .... >
...
</wssp:Integrity>

この値はデフォルトではtrueになっています。

3. .NET Webサービスでは、WS-Addressingの<wsa:To>要素に自身のURLが含まれていることが想定されています。.NETクライアントが初めてOracle Service Busプロキシを呼び出すときに、<wsa:To>要素は最初はOracle Service BusプロキシのURLに設定されます。このURLをOracle Service Busのプロキシ・メッセージ・フローにある.NET WebサービスのURLに変更します。それには、次の例に示すようにReplaceアクションを使用します。
元のURL

<wsa:To wsu:Id="To_1mbmRK4w0bo2Dz1z" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd";>http://localhost:7001/SecurityALSBProxy<;/
wsa:To>

置換アクション後のURL

<wsa:To wsu:Id="To_1mbmRK4w0bo2Dz1z" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd";>http://localhost/SimpleSecurity/
SecurityService.asmx<;/wsa:To>

このURLを変更しないと、次のエラーが表示されます。

Microsoft.Web.Services3.Addressing.AddressingFault: Destination Unreachable System.Exception: WSE846: The header must match the actor URI value of the web service. The actor URI value can be explicitly specified using SoapActorAttribute on the ASMX class. In the absence of the attribute, the actor URI is assumed to be equal to the HTTP Request Url of the incoming message. The header received contained "http://localhost:7001/SecurityALSBProxy"; while the receiver is expecting "http://localhost/SimpleSecurity/SecurityService.asmx";

4. .NETクライアントには、SOAPヘッダーに対する自身のTimestamp要素が含まれています。Oracle Service Busは余分なTimestampヘッダーを追加するため、次のエラーが発生します。

Microsoft.Web.Services3.Security.SecurityFault: An error was discovered
processing the header Microsoft.Web.Services3.Security.Security
FormatException: WSE001: The input was not a valid Security element
because it contains more than one Timestamp child element.

この問題を解決するには、削除アクションを使用して.NETクライアントがメッセージ・フローに追加した元のTimestamp要素を削除します。

5. CertificateRegistry証明書パス・プロバイダを追加します。これを追加するには、WLS管理コンソールからレルム→「プロバイダ」→「証明書のパス」→「新規」の順に選択し、使用可能なオプションからCertificateRegistryを選択します。
変更をアクティブ化し、サーバーを再起動します。

サーバーの再起動後、新規に作成したCertificateRegistryを編集します。「管理」タブで、次の3つの証明書を追加します。

- Oracle Service Busのパブリック証明書

- .NETのパブリック証明書

- ルート・エージェント(これらの証明書の発行者)

注意:

証明書を追加する方法の1つは、「移行」タブからJKSストアをインポートすることです。IDストアの実際のパスを指定します。

6. CertificateRegistryプロバイダの「構成(一般)」タブで、「現在のビルダー」を選択して、これを現在のビルダーに設定します。
変更を保存します。次にサーバーをアクティブ化し、再起動します。

7. WLSキーストアでは次の同じ証明書が必要です。

- Oracle Service Busのパブリック証明書

- .NETのパブリック証明書

- ルート・エージェント(これらの証明書の発行者)

Oracle WebLogic ServerインスタンスのIDおよびトラスト・キーストアは、サーバー構成のキーストアのページで構成します。これを行うには、Oracle WebLogic Serverオンライン・ヘルプの「IDとトラストの構成」を参照してください。

55.4.1 サンプルのWSDLファイル

例55-1のWSDLサンプルは、Oracle Service Busにおけるメッセージ・レベルのID伝播、機密性、および整合性をWS-Policyに構成する方法を示します。

例55-1 メッセージ・レベルのセキュリティのWS-Policyへの構成

<?xml version='1.0' encoding='UTF-8'?>
<definitions name="SecureHello WorldServiceDefinitions"targetNamespace=
"http://www.bea.com"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:s0="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"
xmlns:s1="http://www.bea.com"
xmlns:s2="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:UsingPolicy xmlns:n1="http://schemas.xmlsoap.org/wsdl/"
n1:Required="true"/>
<wsp:Policy s0:Id="Encrypt.xml">
<wssp:Confidentialityxmlns:wssp="http://www.bea.com/wls90/
security/policy">
<wssp:KeyWrappingAlgorithm URI="http://www.w3.org/2001/04/
xmlenc#rsa-1_5"/>
<wssp:Target>
<wssp:EncryptionAlgorithm URI="http://www.w3.org/2001/
04/xmlenc#aes256-cbc"/>
<wssp:MessageParts Dialect="http://schemas.xmlsoap.org
/2002/12/wsse#part">wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<wssp:KeyInfo>
<wssp:SecurityToken TokenType="http://docs.oasis-open.
org/wss/2004/01/oasis-200401-wss-x509-token-
profile-1.0#X509v3"/>
<wssp:SecurityTokenReference>
<wssp:Embedded>
<wsse:BinarySecurityToken EncodingType="http:
//docs.oasis-open.org/wss/2004/
01/oasis-200401-wss-soap-message
-security-1.0#Base64Binary"
ValueType="http://docs.oasis-open.org/
wss/2004/01/oasis-200401-wss-x509
-token-profile-1.0#X509v3"
xmlns:wsse="http://docs.oasis-open.org/
wss/2004/01/oasis-200401-wss-wssecurity-
secext-1.0.xsd">MIIB7DCCAZYCEN+FHomYRZU
YPLiIutc0lIIwDQYJKoZIhvcNAQEEBQAweTELMAk
GA1UEBhMCVVMxEDAOBgNVBAgTB015U3RhdGUxDzA
NBgNVBAcTBk15VG93bjEXMBUGA1UEChMOTXlPcmd
hbml6YXRpb24xGTAXBgNVBAsTEEZPUiBURVNUSU5
HIE9OTFkxEzARBgNVBAMTCkNlcnRHZW5DQUIwHhc
NMDYwNjA3MDQ0MDM2WhcNMjEwNjA4MDQ0MDM2WjB
6MQswCQYDVQQGEwJVUzEQMA4GA1UECBYHTXlTdGF
0ZTEPMA0GA1UEBxYGTXlUb3duMRcwFQYDVQQKFg5
NeU9yZ2FuaXphdGlvbjEZMBcGA1UECxYQRk9SIFR
FU1RJTkcgT05MWTEUMBIGA1UEAxYLYmFuZ3BsdHc
zazIwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAxv2
nWByAF2Xr9wrb06ydrrcqPt2VQa0xcwfdZZ6oGlj
1TXq+G5/Q82v7CdxjyWUQBuAzduQx9wFCrAe/aWV
pgQIDAQABMA0GCSqGSIb3DQEBBAUAA0EARbwfl8w
X915jL5reY+isriNF0EfUs5ck53WRNowiapJx2ea
ZE03quksJgeJ0z0HekkR/aTQnkMV1xIt1HxMKRw=
=</wsse:BinarySecurityToken>
</wssp:Embedded>
</wssp:SecurityTokenReference>
</wssp:KeyInfo>
</wssp:Confidentiality>
</wsp:Policy>
<wsp:Policy s0:Id="Auth.xml">
<wssp:Identity xmlns:wssp="http://www.bea.com/wls90/security/
policy">
<wssp:SupportedTokens>
<wssp:SecurityToken TokenType="http://docs.oasis-open.
org/wss/2004/01/oasis-200401-wss-username-token
-profile-1.0#UsernameToken">
<wssp:UsePassword Type="http://docs.oasis-open.
org/wss/2004/01/oasis-200401-wss-username
-token-profile-1.0#PasswordText"/>
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Identity>
</wsp:Policy>
<wsp:Policy s0:Id="Sign.xml">
<wssp:Integrity SignToken='false' xmlns:wls="http://www.bea.com/wls90/security/
policy/wsee#part"xmlns:wssp="http://www.bea.com/wls90/
security/policy" xmlns:wsu="http://docs.oasis-open.org/wss
/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wssp:SignatureAlgorithm URI="http://www.w3.org/2000/09/
xmldsig#rsa-sha1"/>
<wssp:CanonicalizationAlgorithm URI="http://www.w3.org/
2001/10/ xml-exc-c14n#"/>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09
/xmldsig#sha1"/>
<wssp:MessageParts Dialect="http://www.bea.com/wls90/
security/policy/wsee#part">
wls:SystemHeaders()
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09
/xmldsig#sha1"/>
<wssp:MessageParts Dialect="http://www.bea.com/wls90/
security/policy/wsee#part">
wls:SecurityHeader(wsu:Timestamp)
</wssp:MessageParts>
</wssp:Target>
<wssp:Target>
<wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/
xmldsig#sha1"/>
<wssp:MessageParts Dialect="http://schemas.xmlsoap.
org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>
</wssp:Target>
<wssp:SupportedTokens>
<wssp:SecurityToken IncludeInMessage="true" TokenType=
"http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-x509-token-profile-1.0#X509v3">
<wssp:TokenIssuer>CN=CACERT,OU=FOR TESTING ONLY,
O=MyOrganization,L=MyTown,ST=MyState,C=US,1.2.
840.113549.1.9.1=#160f737570706f7274406265612e636
f6d,CN=Demo Certificate Authority Constraints,OU=
Security,O=BEA WebLogic,L=San Francisco,ST=
California,C=US,1.2.840.113549.1.9.1=#16107365637
572697479406265612e636f6d,CN=Demo Certificate
Authority Constraints,OU=Security,O=BEA WebLogic,
L=San Francisco,ST=California,C=US,CN=CertGenCAB,
OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST=
MyState,C=US,CN=Equifax Secure eBusiness CA-1,O=
Equifax Secure Inc.,C=US,CN=VeriSign Class 1
Public Primary Certification Authority - G3,OU=
(c)1999 VeriSign\, Inc. - For authorized use only,
OU=VeriSign Trust Network,O=VeriSign\, Inc.,C=US,
OU=VeriSign Trust Network,OU=(c) 1998 VeriSign\,
Inc. - For authorized use only,OU=Class 2 Public
Primary Certification Authority - G2,O=VeriSign\,
Inc.,C=US,CN=VeriSign Class 3 Public Primary
Certification Authority - G3,OU=(c) 1999
VeriSign\,Inc. - For authorized use only,OU=
VeriSign Trust Network,O=VeriSign\,Inc.,C=US,CN=
Entrust.net Client Certification Authority,OU=(c)
2000 Entrust.net Limited,OU=www.entrust.net/
GCCA_CPS incorp. by ref. (limits liab.),O=Entrust
.net,OU=Go Daddy Class 2 Certification Authority,
O=The Go Daddy Group\, Inc.,C=US,CN=GTE Cyber
Trust Global Root,OU=GTE CyberTrust Solutions\,
Inc., O=GTE Corporation,C=US,CN=Entrust.net
Secure Server Certification Authority,OU=(c) 2000
Entrust.net Limited,OU=www.entrust.net/SSL_CPS
incorp. by ref. (limits liab.),O=Entrust.net,OU=
Class 1 Public Primary Certification Authority,
O=VeriSign\, Inc.,C=US,1.2.840.113549.1.9.1=#161
9706572736f6e616c2d6261736963407468617774652e636
f6d,CN=Thawte Personal Basic CA,OU=Certification
Services Division,O=Thawte Consulting,L=Cape
Town, ST=Western Cape,C=ZA,OU=VeriSign Trust
Network, OU=(c) 1998 VeriSign\, Inc. - For
authorized use only,OU=Class 1 Public Primary
Certification Authority - G2,O=VeriSign\, Inc.,
C=US,CN=Entrust.net Secure Server Certification
Authority,OU=(c) 1999 Entrust.net Limited,OU=
www.entrust.net/CPS incorp. by ref.(limits iab.),
O=Entrust.net,C=US, 1.2.840.113549.1.9.1=#161c706
572736f6e616c2d667265656d61696c407468617774652e63
6f6d,CN=Thawte Personal Freemail CA,OU=
Certification Services Div,O=Thawte Consulting, L
=Cape Town,ST=Western Cape,C=ZA,OU=Class 3 Public
Primary Certification Authority,O=VeriSign\, Inc.
C=US,CN=GTE CyberTrust Root,O=GTE Corporation,C=
US,CN=VeriSign Class 2 Public Primary Certificate
Authority - G3,OU=(c) 1999 VeriSign\, Inc. - For
authorized use only,OU=VeriSign Trust Network,O=
VeriSign\,Inc.,C=US,1.2.840.113549.1.9.1=#1617736
5727665722d6365727473407468617774652e636f6d,CN=
Thawte Server CA,OU=Certification Services
Division,O=Thawte Consulting cc,L=Cape Town,ST=
Western Cape,C=ZA,OU=Equifax Secure Certificate
Authority,O=Equifax,C=US,1.2.840.113549.1.9.1=#16
1b706572736f6e616c2d7072656d69756d407468617774652
e636f6d,CN=Thawte Personal Premium CA,OU=
Certification Services Division,O=Thawte
Consulting,L=Cape Town,ST=Western Cape,C=ZA,1.2.
840.113549.1.9.1=#16197072656d69756d2d73657276657
2407468617774652e636f6d,CN=Thawte Premium Server
CA,OU=Certification Services Division,O=Thawte
Consulting cc,L=Cape Town,ST=Western Cape,C=ZA,
OU=VeriSign Trust Network,OU=(c) 1998 VeriSign\,
Inc. - For authorized use only,OU=Class 3 Public
Primary Certification Authority - G2,O=VeriSign\,
Inc.,C=US,CN=Entrust.net Certification Authority
(2048),OU=(c) 1999 Entrust.net Limited,OU=www
.entrust.net/CPS_2048 incorp. by ref. (limits
liab.),O=Entrust.net,1.2.840.113549.1.9.1=#1611
696e666f4076616c69636572742e636f6d,CN=http://www.
valicert.com/,OU=ValiCert Class 2 Policy
Validation Authority,O=ValiCert\, Inc.,L=Vali
cert Validation Network,CN=Baltimore CyberTrust
Root, OU=CyberTrust,O=Baltimore,C=IE,OU=Secure
Server Certification Authority,O=RSA Data
Security\, Inc.,C=US,CN=Entrust.net Client
Cert Authority,OU=(c) 1999 Entrust.net Limited,
OU=www.entrust.net/Client_CA_Info/CPS incorp. by
ref. limits liab.,O=Entrust.net,C=US,CN=GeoTrust
Global CA,O=GeoTrust Inc.,C=US,CN=GTE CyberTrust
Root 5,OU=GTE CyberTrust Solutions\, Inc.,O=GTE
Corporation,C=US,OU=Starfield Class 2
Certification Authority,O=Starfield
Technologies\, Inc.,C=US,CN=Equifax Secure
Global eBusiness CA-1,O=Equifax Secure Inc.,C=US,
CN=Baltimore CyberTrust Code Signing Root,OU=
CyberTrust,O=Baltimore,C=IE,OU=Class 2 Public
Primary Certification Authority,O=VeriSign\,
Inc.,C=US,OU=Equifax Secure eBusiness CA-2,O=
Equifax Secure,C=US,</wssp:TokenIssuer>
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Integrity>
<wssp:MessageAge Age="60" xmlns:wssp="http://www.bea.com/wls90/
security/policy"/>
</wsp:Policy>
<types>
<xs:schema attributeFormDefault="unqualified" elementFormDefault=
"qualified" targetNamespace="http://www.bea.com" xmlns:s0="
http://www.bea.com" xmlns:s1="http://schemas.xmlsoap.org
/wsdl/soap/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/
09/policy" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="sayHello">
<xs:complexType>
<xs:sequence>
<xs:element name="s" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sayHelloResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="sayHello">
<part element="s1:sayHello" name="parameters"/>
</message>
<message name="sayHelloResponse">
<part element="s1:sayHelloResponse" name="parameters"/>
</message>
<portType name="SecureHelloWorldPortType" wsp:PolicyURIs="#Sign.xml
#Auth.xml #Encrypt.xml">
<operation name="sayHello" parameterOrder="parameters">
<input message="s1:sayHello"/>
<output message="s1:sayHelloResponse"/>
</operation>
</portType>
<binding name="SecureHelloWorldServiceSoapBinding" type="s1:
SecureHelloWorldPortType">
<s2:binding style="document" transport="http://schemas.
xmlsoap.org/ soap/http"/>
<operation name="sayHello">
<s2:operation soapAction="" style="document"/>
<input>
<s2:body parts="parameters" use="literal"/>
</input>
<output>
<s2:body parts="parameters" use="literal"/>
</output>
</operation>
</binding>
<service name="SecureHelloWorldService">
<port binding="s1:SecureHelloWorldServiceSoapBinding"
name="SecureHelloWorldServicePort">
<s2:address location="http://localhost:9111/
SecureHelloWorldService/SecureHelloWorld
Service"/>
</port>
</service>
</definitions>

第VIII部

付録

この部では、様々な開発情報およびリファレンス資料を提供します。次の章が含まれます。

- 付録A「トランスポートSDK UMLシーケンス・ダイアグラム」

- 付録B「Oracle Service Bus構成のオフラインでのエクスポート」

A トランスポートSDK UMLシーケンス・ダイアグラム

この章では、UMLシーケンス・ダイアグラムを示し、Oracle Service Busランタイムを使用したメソッド呼出しのフローについて説明します。

この章の内容は次のとおりです。

- A.1項「Oracle Service Busランタイムのインバウンド・メッセージ」

- A.2項「Oracle Service Busランタイムのアウトバウンド・メッセージ」

- A.3項「設計時のサービスの登録」

A.1 Oracle Service Busランタイムのインバウンド・メッセージ

図A-1のシーケンス・ダイアグラムに、Oracle Service Busランタイムでのインバウンド・メッセージのフローを示します。

最初に、HTTP Servletなどのインバウンド・アーティファクトが、クライアント・リクエストを受け取ります。トランスポート・プロバイダが、InboundTransportMessageContextと呼ばれるデータ構造を作成します。メッセージ・コンテキストが、リクエストのヘッダーをメタデータ・オブジェクトにパッケージ化し、HTTPストリームのペイロードを特定のOracle Service Busソース・オブジェクトに変換します。トランスポート・プロバイダは、トランスポート・マネージャを呼び出し、メッセージを受信します。トランスポート・マネージャがメッセージを処理し、Oracle Service Busランタイムでの処理に渡します。Oracle Service Busランタイムは、メッセージ・コンテキストのサービス、サービスのバージョン、およびその他の情報を要求します。また、処理に必要なメタデータおよびペイロードについても要求します。ランタイムは、レスポンス・メタデータおよびレスポンス・ペイロードを作成するようMessageContextに要求し、その後でclose()を呼び出します。クライアントにレスポンスが返されます。

図A-1 ランタイムにおけるインバウンド・メッセージ

A.2 Oracle Service Busランタイムのアウトバウンド・メッセージ

図A-2のシーケンス・ダイアグラムに、Oracle Service Busランタイムでのアウトバウンド・メッセージのフローを示します。

Oracle Service Busランタイムは、メッセージを外部サービスにルーティングします。トランスポート・プロバイダはリクエストのメタデータおよびTransportSenderオブジェクトを作成します。このオブジェクトには、ペイロード、サービス品質および再試行に関する情報が含まれます。次に、プロバイダは、(トランスポート・サブシステムの中心となるハブである) TransportManagerを呼び出し、メッセージを非同期で送信します。TransportManagerは、トランスポート・プロバイダを呼出しメッセージを送信します。トランスポート・プロバイダはOutboundTransportMessageContextを作成します。その後、トランスポート・プロバイダは、メタデータ、ペイロードおよびその他の情報を要求し、適切なアクションを実行します。たとえば、JMSメッセージの場合、トランスポート・プロバイダは、JMS APIを使用してヘッダーおよびペイロードにデータを設定し、プロトコル固有の送信操作を呼び出します。

レスポンスを受信すると、トランスポート・プロバイダはTransportSendListenerオブジェクトを呼び出します。最終的に、トランスポート・マネージャがレスポンス・パイプラインを呼び出します。パイプライン・アクションが実行された後、アウトバウンド・エンドポイントが閉じられます。

図A-2 ランタイムにおけるアウトバウンド・メッセージ

A.3 設計時のサービスの登録

サービスの登録時には、ウィザードによって複数のOracle Service Bus管理コンソールのページが表示されます。図A-3に、サービスの登録プロセスを示します。基本的な手順は次のとおりです。

- サービスの名前、サービスのバインディング・タイプ、およびその他の情報を指定します。

- トランスポート・プロバイダ(プロトコル)のリストから選択します。Oracle Service Bus管理コンソールは、トランスポート・マネージャを呼び出して、リストにある各エントリに対応するオブジェクトを取得し、各トランスポート・プロバイダからUIバインディングを取得します。このバインディングは、サポートされるものとされないものなど、管理コンソールがリクエストする質問を解決します。この手順により、管理コンソールのページに適切な情報が入力されます。

- トランスポート固有の情報を入力します。トランスポート・プロバイダ固有のフォームが自動的に生成されます。トランスポート・プロバイダによってページのコンテンツが制御されます。

- サマリー・ページを確認します。

最後に、トランスポート・プロバイダは、エンドポイント構成を検証し、新しいエンドポイントを登録するよう求められます。エンドポイントは、アクティブ化が実行された後にのみ作成されます。

図A-3 サービスの登録

B Oracle Service Bus構成のオフラインでのエクスポート

Oracle Service Busでは、ファイル・システムからService Bus構成を直接エクスポートして構成.jarファイルを作成するエクスポート・ツールが提供されます。この付録では、Service Bus構成のオフライン・エクスポートを実行する方法について説明します。

この付録の内容は次のとおりです。

- B.1項「エクスポート・プロセスについて」

- B.2項「Oracle Service Bus構成のエクスポートの準備」

- B.3項「Oracle Service Bus構成のエクスポート」

- B.4項「エクスポート設定ファイルの形式、サンプルおよびスキーマ」

Eclipseを使用したリソースのエクスポートの詳細は、2.1.11項「リソースのエクスポート」を参照してください。

B.1 エクスポート・プロセスについて

Service Bus構成をオフライン・モードでエクスポートするには、コマンドライン、AntタスクまたはWebLogic Scripting Tool (WLST)を使用します。いずれの方法でも、エクスポートの実行方法と生成される構成.jarファイルに含めるファイル、フォルダ、プロジェクトまたはシステム・リソースを定義するために、エクスポート設定ファイルが使用されます。バージョニング・システムを使用してOracle Service Busアーティファクトを格納する場合は、このプロセスを使用して、バージョニング・システムに格納されているソース・ファイルから、デプロイ可能な構成.jarファイルを作成できます。

エクスポート・ツールは、ロード・フェーズとエクスポート・フェーズの2つのフェーズで実行されます。各フェーズは、エクスポート設定ファイルで構成されます。ロード・フェーズでは、エクスポート・ツールによって、ファイル・システムの走査、読み込むファイルの識別、対応するリソースへのファイル・コンテンツの変換および構成フレームワークへのファイルのインポートが行われます。エクスポート・フェーズでは、エクスポート・ツールによって、ロードされたリソースおよびプロジェクトが1つ以上の構成.jarファイルにパッケージ化され、他のService Bus環境にインポートできるようになります。

B.1.1 ロード・フェーズの構成

ロード・フェーズでは、次を構成できます。

- ディレクトリ構造: Eclipseワークスペース・ディレクトリ構造に依存せずに、プロジェクト・ルート・ディレクトリ、システム・リソースを配置するディレクトリおよび含める特定のフォルダおよびファイルを指定できます。これによって、ディレクトリ構造でプロジェクト・ディレクトリが兄弟にならないMavenなどの外部のバージョニング・システムに対して、かわりのディレクトリ構造がサポートされます。

- ファイル拡張子: Service Busでは、リソース・タイプにそれぞれ固有のファイル拡張子(プロキシ・サービスには.proxy、XSLTリソースには.xslおよび.xslt、など)が使用されます。拡張子はそれぞれ1つのService Busリソース・タイプにのみマップできますが、リソース・タイプは複数のファイル拡張子にマップできます。Eclipseでは、各リソースに、変更できないデフォルトの拡張子が1つ含まれますが、リソースに対してカスタムのファイル拡張子を指定することもできます。エクスポート・ツールでカスタム拡張子を含むファイルが認識されるようにするには、エクスポート設定ファイルにファイル拡張子のマッピングを定義する必要があります。

- 包含ルールおよび除外ルール: プロジェクトまたはシステム・リソース・フォルダを指定すると、エクスポートにすべてのService Busファイルが含まれます。包含文および除外文を使用すると、いずれのファイルを含めるかについて詳細に制御することができます。たとえば、Eclipseおよび特定のバージョニング・システムでは、プロジェクト・フォルダ内に追加のシステム・フォルダおよびファイルが作成されます。これらのファイルはService Busリソースとして認識される可能性があり、エクスポートから特に除外しないかぎり、エクスポートされるJARファイルに含まれます。

B.1.2 エクスポート・フェーズの構成

エクスポート・フェーズは、エクスポート設定ファイルを使用して構成されます。Service Bus構成はプロジェクト・レベルまたはリソース・レベルでエクスポートでき、構成の複数のエクスポートを1つのエクスポート設定ファイルに定義できます。エクスポート・フェーズでは、次を構成できます。

- プロジェクト・レベルのエクスポート: プロジェクト・レベルでは、含めるプロジェクトの名前およびシステム・リソースを含めるかどうかを指定します。プロジェクト名を指定しなかった場合は、生成されるエクスポート・ファイルに、ロード・フェーズで追加したすべてのプロジェクトが含まれます。

注意:

含めるファイルをロード・フェーズで詳しく定義した場合は、プロジェクト・レベルでエクスポートしないでください。これを行うと、含めなかったすべてのリソースが、生成された構成.jarファイルをターゲット・サーバーにインポートする際に削除されます。

- リソース・レベルのエクスポート: リソース・レベルでは、前述のように包含ルールおよび除外ルールを使用して、エクスポートするリソースを指定します。依存性を含めるかどうかを指定することもできます。エクスポート設定ファイルにリソースを指定しなかった場合は、すべてのリソースがエクスポートされます。

- 複数の構成JARファイル: エクスポート設定ファイルに複数の構成.jarファイルを定義して、各ファイルを個別に構成できます。同じ名前を持つ既存のファイルを上書きするかどうかを指定することもできます。

エクスポート設定ファイルの構成の詳細は、B.4項「エクスポート設定ファイルの形式、サンプルおよびスキーマ」を参照してください。

B.1.3 Oracle Service Busリソースのファイル拡張子およびタイプID

Service Busリソース・タイプにカスタムのファイル拡張子をマップすると、エクスポート・ツールでこれらの拡張子が正当なService Busファイルとして認識されます。Service Busのデフォルトのファイル拡張子を次に示します。その他のファイル拡張子を使用する場合は、使用する拡張子をエクスポート設定ファイルにマップする必要があります。リソース・タイプにファイル拡張子をマップする例については、B.4.4項「ファイル拡張子のマッピング」を参照してください。

表B-1 Oracle Service Busリソースのデフォルトのファイル拡張子

リソース・タイプ

リソース・タイプID

ファイル拡張子

アラート宛先

AlertDestination

.alert

ビジネス・サービス

BusinessService

.biz

JARファイル

Archive

.jar

JCAアダプタ

JCA

.jca

JNDIプロバイダ

ForeignJNDIProvider

.jndi

メッセージ・フロー

FLOW

.flow

MFL変換

MFL

.mfl

MQ接続

MQConnection

.mqc

プロキシ・サーバー

ProxyServer

.ps

プロキシ・サービス

ProxyService

.proxy

サービス・アカウント

ServiceAccount

.sa

サービス・キー・プロバイダ

ServiceProvider

.skp

SMTPサーバー

SMTPServer

.smtp

分割-結合

FLOW

.flow

UDDIレジストリ

UDDIRegistry

.uddi

WS-Policy

Policy

.policy

WSDLドキュメント

WSDL

.wsdl

XMLファイル

XML

.xml

XMLスキーマ

XMLSchema

.xsd

XQueryトランスフォーメーション

Xquery

.xquery

XSLTトランスフォーメーション

XSLT

.xslt, .xsl

B.2 Oracle Service Bus構成のエクスポートの準備

Service Bus構成をオフライン・モードでエクスポートする前に、次の手順を実行します。

- B.2.1項「始める前に」

- B.2.2項「エクスポート設定ファイルの作成」

- B.2.3項「環境の構成」

B.2.1 始める前に

リソースのエクスポートを始める前に、次の条件を満たしていることを確認します。

- Oracle Service Bus 11.1.1.7.0以上がインストールされている(Eclipseは不要)。

- 適切なバージョンのJavaがインストールされている。これは、Oracle JDK 1.6.0_35以上またはOracle JDK 1.7.0_07以上である必要があります。

- エクスポート・ツールを実行するディレクトリに対する書込み権限が割り当てられている。このツールは、OSB_HOME/tools/configjarにあります。

構成をエクスポートした際に終了値で0が表示された場合は、エクスポートが完了したことを意味します。

注意:

カスタム・トランスポートを開発した場合は、オフラインでトランスポートのプラグイン・ファイルを作成し、そのファイルをService BusインストールのOSB_HOME/config/pluginsに保存する必要があります。詳細は、40.2.5項「オフライン・モードでのトランスポートのパッケージ化」を参照してください。

B.2.2 エクスポート設定ファイルの作成

オフライン・エクスポートの実行時に、コマンドライン引数を使用するかわりに、エクスポート・ツールによって、作成した設定ファイルが参照されます。このファイルはXMLフォーマットであり、エクスポート・ツールがファイルの検出およびロードを行って構成JARファイルを作成するために必要なすべての情報を含みます。ファイル形式とスキーマ定義の詳細および使用例は、B.4項「エクスポート設定ファイルの形式、サンプルおよびスキーマ」を参照してください。

B.2.3 環境の構成

エクスポートを実行する前に、setenv.*ファイルを実行して、ツールで使用する環境変数を設定する必要があります。このファイルは、実行する前に、JVMのヒープ・サイズの変更、CLASSPATHへのJARファイルの追加、またはシステム・プロパティの追加を行ってカスタマイズできます。エクスポートに含まれ、カスタムJARファイルが必要なJARリソースがある場合は、setenv.*ファイルのCLASSPATHセクションに、それらのカスタムJARファイルのパスおよびファイル名を次のように追加します。

- Windowsの場合:
CLASSPATH=%CLASSPATH%;%CONFIGJAR_HOME%\custom\my_custom.jar

- UNIXまたはLinuxの場合:
CLASSPATH=$CLASSPATH$CLASSPATHSEP$CONFIGJAR_HOME/custom/my_custom.jar

ファイルをカスタマイズしたら、OSB_HOME/tools/configjarに移動して、次のコマンドを実行します。

- Windowsの場合:
setenv.bat

- UNIXまたはLinuxの場合:
source setenv.sh

B.3 Oracle Service Bus構成のエクスポート

次の項では、Oracle Service Bus構成をオフラインでエクスポートするためのスクリプトおよびコマンドライン・オプションについて説明します。詳細は、OSB_HOME/tools/configjarにあるREADMEファイルを参照してください。

- B.3.1項「コマンドラインを使用した構成のエクスポート」

- B.3.2項「Antを使用した構成のエクスポート」

- B.3.3項「WLSTを使用した構成のエクスポート」

B.3.1 コマンドラインを使用した構成のエクスポート

コマンドラインからのエクスポートによって、エクスポート設定ファイルで指定したフォルダおよびファイルからOracle Service Bus構成JARが生成されます。コマンドライン・ファイルconfigjar.batおよびconfigjar.shは、OSB_HOME/tools/configjarにあります。

構文

Windowsの場合は、次の構文を使用します。

configjar.bat -settingsfile <FILE_NAME> [-debug] [-help]

UNIXまたはLinuxの場合は、次の構文を使用します。

./configjar.sh -settingsfile <FILE_NAME> [-debug] [-help]

パラメータ

コマンドラインでは、次のパラメータを使用できます。

- -settingsfile FILE_NAME: エクスポート設定ファイルのパスおよびファイル名を入力します。このパラメータは必須です。

- -debug: エクスポート・プロセスのデバッグ・ロギングを有効にするには、コマンドにこのオプション・パラメータを含めます。このフラグを含めないと、デバッグ・ロギングは実行されません。

- -help: 使用方法を表示するには、コマンドにこのオプション・パラメータを含めます。

B.3.2 Antを使用した構成のエクスポート

Apache Antビルド・ファイルを使用してOracle Service Bus構成をオフライン・モードでエクスポートできます。Service Busには、configjar-ant.xmlというサンプルのAntビルド・ファイルがOSB_HOME/tools/configjarに含まれています。このファイルを使用することも、独自のファイルを作成することもできます。Antを使用したエクスポートによって、エクスポート設定ファイルで指定したフォルダおよびファイルからOracle Service Bus構成JARが生成されます。

構文

サンプルのAntビルド・ファイルでは、次の構文がサポートされます。

ant -f <FILE_NAME> [-debug] [-failonerror] [-errorproperty]

サンプルのビルド・ファイル

次にサンプルのAntビルド・ファイルを示します。

<project name="ConfigExport" default="usage" basedir=".">

<property environment="env" />
<property name="mw.home" location="${env.MW_HOME}" />
<property name="wl.home" location="${env.WL_HOME}" />
<property name="osb.home" location="${env.OSB_HOME}" />

<taskdef name="configjar"
classname="com.bea.alsb.tools.configjar.ant.ConfigJarTask" />

<target name="init">
<property name="task.debug" value="false" />
<property name="task.failonerror" value="true" />
<property name="task.errorproperty" value="" />
</target>

<target name="run" depends="init">
<fail unless="settingsFile"/>
<configjar debug="${task.debug}"
failonerror="${task.failonerror}"
errorProperty="${task.errorproperty}"
settingsFile="${settingsFile}" />
</target>
</project>

パラメータ

Antビルド・ファイルでは、次のパラメータがサポートされます。

- settingsFile: エクスポート設定ファイルのパスおよびファイル名。このパラメータは必須です。

- debug: エクスポート・プロセスのデバッグ・ロギングを有効にするには、このパラメータをtrueに、そうでない場合はfalseに設定します。このパラメータは省略可能で、デフォルトでfalseに設定されます。

- failonerror: エクスポート・ツールが失敗した場合にタスクを失敗させるには、このパラメータをtrueに設定します。これをfalseに設定すると、エクスポート・ツールが失敗した際にタスクは失敗しませんが、結果はerrorPropertyパラメータで指定されたプロパティに設定されます。failonerrorパラメータは省略可能で、デフォルトでtrueに設定されます。

- errorProperty: failonerrorプロパティがfalseに設定されている場合に、失敗したタスクの結果を受信するプロパティの名前。errorPropertyパラメータは省略可能で、デフォルトで指定されません。

B.3.3 WLSTを使用した構成のエクスポート

WebLogic Scripting Tool (WLST)を使用してOracle Service Bus構成をオフライン・モードでエクスポートできます。WLSTが適切に構成されていることを確認するには、Service Busで提供されているWLSTコマンドライン・ファイル(wlst.batまたはwlst.sh)を使用します。これらのファイルは、OSB_HOME/tools/configjarにあります。

WLSTを使用したエクスポートによって、エクスポート設定ファイルで指定したフォルダおよびファイルからOracle Service Bus構成JARが生成されます。

構文

Windowsの場合は、次の構文を使用します。

wlst.bat <SCRIPTNAME>

UNIXまたはLinuxの場合は、次の構文を使用します。

./wlst.sh <SCRIPTNAME>

サンプルのWLSTスクリプト

次にサンプルのWLSTスクリプトを示します。

from com.bea.alsb.tools.configjar import ConfigJar

args = []
args.append('-settingsfile')
args.append('/osb/config/mySettings.xml')

ConfigJar.main(args)

詳細は、『Oracle Fusion Middleware Oracle WebLogic Scripting Tool』を参照してください。

パラメータ

WLSTスクリプトでは、次のパラメータを使用できます。

- -settingsfile FILE_NAME: エクスポート設定ファイルのパスおよびファイル名を入力します。相対パスを使用した場合、パスはエクスポート・ツールが存在するディレクトリ(OSB_HOME/tools/configjar)に解決されます。このパラメータは必須です。

- -debug: エクスポート・プロセスのデバッグ・ロギングを有効にするには、コマンドにこのオプション・パラメータを含めます。このフラグを含めないと、デバッグ・ロギングは実行されません。

- -help: 使用方法を表示するには、コマンドにこのオプション・パラメータを含めます。

B.4 エクスポート設定ファイルの形式、サンプルおよびスキーマ

エクスポート設定を構成することで、エクスポートされる構成JARに含めるファイルおよびフォルダを指定できます。これは、プロジェクト・レベルおよびリソース・レベルで行うことができ、一連の除外ルールおよび包含ルールを使用することでより詳細なレベルで制御できます。含めたファイルおよびフォルダによって、エクスポート用のコンテンツ・セットが構成されます。

次の項では、エクスポート設定ファイルについて説明し、サンプルおよびスキーマ定義を示します。

- B.4.1項「エクスポート設定ファイルの形式」

- B.4.2項「検証」

- B.4.3項「包含ルールおよび除外ルール」

- B.4.4項「エクスポート設定ファイルのサンプル」

- B.4.5項「エクスポート設定ファイルのスキーマ定義」

B.4.1 エクスポート設定ファイルの形式

エクスポート設定ファイルには、sourceおよびconfigjarの2つの主なセクションがあります。source要素は、エクスポート・ツールのロード・フェーズで選択されるファイルを定義します。configjar要素は、ロード・フェーズで選択されたファイルのうちいずれのファイルを、エクスポート・フェーズで、生成される構成JARファイルに含めるかを定義します。

source要素では、エクスポートするプロジェクトのプロジェクト・ルート・ディレクトリ、エクスポートするシステム・リソースの場所および包含または除外する具体的なファイルを指定できます。また、Service Busリソース・タイプにカスタムのファイル拡張子をマップすると、エクスポート・ツールでこれらの拡張子が有効なService Bus構成要素として認識されます。リソース・タイプおよびファイル拡張子の詳細は、B.1.3項「Oracle Service Busリソースのファイル拡張子およびタイプID」を参照してください。

注意:

プロジェクト・ルートまたはリソース・フォルダに相対ディレクトリを指定すると、そのパスはエクスポート設定ファイルがあるディレクトリに対して相対的に解決されます。

configjar要素では、生成されるJARファイルに名前を付け、プロジェクト・レベルおよびリソース・レベルで(プロジェクト・レベルにシステム・リソースを含めるか、リソース・レベルに依存性を含めるかなどの)ルールを指定します。複数のconfigjar要素を定義でき、定義したconfigjar要素ごとにJARファイルが生成されます。

構成JARファイルの命名ガイダンスおよび制限事項は、2.1.1項「リソースの命名制限」を参照してください。

B.4.2 検証

Eclipseに適用される命名の検証ルールと同じルールが、コンテンツ・セットに含まれるファイルにも適用されます。これらのルールに準拠しないファイルおよびフォルダはすべて、コンテンツ・セットから除外されます。

- フォルダおよびファイルは有効な名前にする必要があります。詳細は、2.1.1項「リソースの命名制限」を参照してください。

- ファイルでは、拡張子はService Busリソースにマップする必要があります。

- 各リソース・タイプIDは、それぞれ異なるファイル拡張子にマップする必要があります。タイプIDおよびファイル拡張子の詳細は、表B-1を参照してください。

プロジェクトの検証自体が失敗した場合も、プロジェクトは正常にエクスポートされます。

B.4.3 包含ルールおよび除外ルール

包含ルールおよび除外ルールを使用する場合、ファイルは1つ以上の包含ルールに一致するとともに、コンテンツ・セットに含まれるいずれの除外ルールにも一致しない必要があります。ファイルを除外するには、そのファイルが1つ以上の除外ルールに一致するとともに、いずれの包含ルールにも一致しない必要があります。包含ルールおよび除外ルールが定義されていない場合は、自動的にすべてのファイルが含まれます。

包含ルールおよび除外ルールは、同じパターンに基づいています。

- パターンは、プロジェクト名で始まるファイルのサブパスに適用されます。完全なファイル・パスには適用されません。

- アスタリスク(*)は、任意の文字を表すワイルドカードです。これは、ファイル名またはディレクトリ名の一部として使用できます。

- 2つのアスタリスク(**)のみが使用されている場合、それは0または複数のディレクトリおよびファイルを表します。

B.4.4 エクスポート設定ファイルのサンプル

この項では、Service Bus構成のエクスポート方法を示すエクスポート設定ファイルのサンプルを、ロード・フェーズおよびエクスポート・フェーズのルールを様々に組み合せて示します。サンプルでは、次のシナリオについて説明します。

- 例B-1「Eclipse以外のファイル構造からのエクスポート」

- 例B-2「プロジェクト・レベルでのエクスポート」

- 例B-3「ロード・フェーズでのファイル拡張子の除外」

- 例B-4「エクスポート・フェーズでのファイル拡張子の除外」

- 例B-5「ファイル拡張子のマッピング」

例B-1 Eclipse以外のファイル構造からのエクスポート

次のサンプルは、Mavenなどの構造からプロジェクトおよびその関連システム・リソースをパッケージ化する方法を示しています。プロジェクトの場所はproject要素で、システム・リソースの場所はsystem要素で指定されています。このサンプルでは、2つの構成JARファイルが出力されます。最初のsbconfig-po.jarは、システム・リソースを含まないプロジェクト・レベルの構成です。2つ目のsbconfig-po-system.jarは、JNDIおよびSMTPリソースを含むリソース・レベルの構成です。

<configjarSettings xmlns="http://www.bea.com/alsb/tools/configjar/config">
<source>
<project dir="/scratch/modulePO/src/main/resources/PO"/>
<system  dir="/scratch/modulePO/src/main/system"/>
</source>
<configjar jar="/scratch/modulePO/sbconfig-po.jar">
<projectLevel includeSystem="false"/>
</configjar>
<configjar jar="/scratch/modulePO/sbconfig-po-system.jar">
<resourceLevel>
<resources>
<include name="**/*.jndi"/>
<include name="**/*.smtp"/>
</resources>
</resourceLevel>
</configjar>
</configjarSettings>

例B-2 プロジェクト・レベルでのエクスポート

次のサンプルは、様々な場所のシステム・リソースをパッケージ化してプロジェクトによってエクスポートする方法を示しています。構成をインポートする際に、不要なリソースを削除できます。

<configjarSettings xmlns="http://www.bea.com/alsb/tools/configjar/config">
<source>
<system dir="/scratch/moduleX/src/main/system"/>
<system dir="/scratch/moduleY/src/main/system"/>
<system dir="/scratch/moduleZ/src/main/system"/>
</source>

<configjar jar="/scratch/sbconfig-systems.jar">
<projectLevel includeSystem="true"/>
</configjar>
</configjarSettings>

例B-3 ロード・フェーズでのファイル拡張子の除外

このサンプルは、source要素に除外ルールを定義することで、サービス・リソース以外のすべてのリソースを構成JARファイルにパッケージ化する方法を示しています。これを例B-4「エクスポート・フェーズでのファイル拡張子の除外」と比較します。パフォーマンス上の理由から、ロード・フェーズ中にファイルを除外することが推奨されます。

<configjarSettings xmlns="http://www.bea.com/alsb/tools/configjar/config">
<source>
<project dir="/scratch/workspaces/myworkspace/projectX"/>
<project dir="/scratch/workspaces/myworkspace/projectY"/>
<fileset>
<exclude name="**/*.proxy"/>
<exclude name="**/*.biz"/>
<exclude name="**/*.flow"/>
</fileset>
</source>

<configjar jar="/scratch/workspaces/myworkspace/sbconfig-resources.jar">
<resourceLevel/>
</configjar>
</configjarSettings>

例B-4 エクスポート・フェーズでのファイル拡張子の除外

次のサンプルは、configjar要素に除外ルールを定義することで、サービス・リソース以外のすべてのリソースを構成JARファイルにパッケージ化する方法を示しています。

<configjarSettings xmlns="http://www.bea.com/alsb/tools/configjar/config">
<source>
<project dir="/scratch/workspaces/myworkspace/projectX"/>
<project dir="/scratch/workspaces/myworkspace/projectY"/>
</source>

<configjar jar="/scratch/workspaces/myworkspace/sbconfig-resources.jar">
<resourceLevel>
<fileset>
<exclude name="**/*.proxy"/>
<exclude name="**/*.biz"/>
<exclude name="**/*.flow"/>
</fileset>
</resourceLevel>
</configjar>
</configjarSettings>

例B-5 ファイル拡張子のマッピング

次の例は、追加のファイル拡張子を特定のService Busリソース・タイプ(ここでは、XQueryおよびXMLタイプ)にマップする方法を示しています。

<configjarSettings xmlns="http://www.bea.com/alsb/tools/configjar/config">
<source>
<project dir="/scratch/workspaces/myworkspace/projectX"/>
<project dir="/scratch/workspaces/myworkspace/projectY"/>
<extensionMapping>
<mapping type="Xquery" extensions="xquery,xq,xqy"/>
<mapping type="XML" extensions="toplink"/>
</extensionMapping>
</source>
<configjar jar="/scratch/workspaces/myworkspace/sbconfig.jar">
<resourceLevel/>
</configjar>
</configjarSettings>

注意:

ファイル拡張子をマップする際に、タイプ属性がB.1.3項「Oracle Service Busリソースのデフォルトのファイル拡張子」に定義されているService Busリソース・タイプに一致している必要があります。

B.4.5 エクスポート設定ファイルのスキーマ定義

次に、エクスポート設定XMLファイルのスキーマ定義を示します。読みやすくするために、テキストの一部がラップされています。

<?xml version="1.0"?>
<xs:schema targetNamespace="http://www.bea.com/alsb/tools/configjar/config"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.bea.com/alsb/tools/configjar/config">
<xs:element name="configjarSettings" type="tns:configjarSettings"/>
<xs:complexType name="configjarSettings">
<xs:sequence>
<xs:element name="source" type="tns:source" />
<xs:element name="configjar" type="tns:configjar" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="source">
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="project">
<xs:complexType>
<xs:attribute name="dir" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="system">
<xs:complexType>
<xs:attribute name="dir" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="extensionMapping" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="mapping" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="extensions" type="xs:string"
use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="fileset" type="tns:contentSet" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="configjar">
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="projectLevel" type="tns:projectLevel"/>
<xs:element name="resourceLevel" type="tns:resourceLevel"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="jar" type="xs:string" use="required"/>
<xs:attribute name="overwrite" type="xs:boolean" use="optional"
default="true"/>
</xs:complexType>
<xs:complexType name="projectLevel">
<xs:sequence>
<xs:element name="project" type="xs:string" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="includeSystem" type="xs:boolean" use="optional"
default="false"/>
</xs:complexType>
<xs:complexType name="resourceLevel">
<xs:sequence>
<xs:element name="resources" type="tns:contentSet" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="includeDependencies" type="xs:boolean" use="optional"
default="true"/>
</xs:complexType>
<xs:complexType name="contentSet">
<xs:sequence>
<xs:element name="include" type="tns:contentSetPattern" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="exclude" type="tns:contentSetPattern" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="contentSetPattern">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:schema>

オラクル社の法律上の注意点について

コピーライトについて

Copyright © 1994-2014, Oracle and/or its affiliates.All rights reserved.

商標と登録商標について

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

制限付権利

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション（人的傷害を発生させる可能性があるアプリケーションを含む）への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性（redundancy）、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

ドラフトのアルファ版およびベータ版ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。オラクル社およびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。