Caché Web サービスおよび Web クライアントの概要
Caché は、SOAP (Simple Object Access Protocol) の 1.1 および 1.2 をサポートしています。このサポートは、使いやすく効率的で、SOAP 仕様と完全な互換性があります。このサポートは、Caché に組み込まれており、Caché にサポートされるすべてのプラットフォームで使用できます。
この章は、以下のセクションで構成されます。
Caché Web サービスの概要
このセクションでは、Caché Web サービスの概要について説明します。
Caché Web サービスの作成
Caché では、次のいずれかの方法で Web サービスを作成できます。
-
既存のクラスに小さな変更をいくつか加えて、Web サービスに変換します。この場合、引数として使用されているオブジェクト・クラスを変更して、%XML.AdaptorOpens in a new tab を拡張し、SOAP メッセージにパッケージ化できるようにする必要もあります。
-
新規の Web サービス・クラスを最初から作成します。
-
Caché SOAP ウィザードを使用して、既存の WSDL ドキュメントを読み取り、Web サービス・クラスおよびサポートするすべてのタイプ・クラスを生成します。
この方法 (WSDL-first の開発) は、WSDL が設計済みで、それに応じた Web サービスを作成する必要がある場合に適用されます。
Web アプリケーションの一部としての Web サービス
Caché Web サービス・クラスは、%SOAP.WebServiceOpens in a new tab クラスから継承され、その継承元クラスは %CSP.PageOpens in a new tab クラスから継承されます。
そのため、Caché Web サービスは、Web アプリケーション内に格納されます。このアプリケーションの構成は、管理ポータルで行います。詳細は、"Caché セキュリティ管理ガイド" の “アプリケーション” の章を参照してください。
WSDL
クラス・コンパイラは、Web サービスをコンパイルする際、そのサービス用の WSDL を生成し、利便性を向上するために、その WSDL を Web サーバ経由で公開します。この WSDL は、WS-I (Web Services Interoperability Organization)Opens in a new tab によって確立された Basic Profile 1.0 に準拠しています。Caché では、WSDL ドキュメントが特定の URL で動的に処理され、(実行時に追加されるヘッダ要素以外にも) ユーザの Web サービス・クラスのインタフェースに対する変更のすべてが自動的に反映されます。ほとんどの場合は、このドキュメントを使用して、Web サービスと相互運用する Web クライアントを生成できます。
詳細と重要な注意事項は、次の章の “WSDL の表示” を参照してください。
Web サービスのアーキテクチャ
Caché Web サービスの既定の機能を理解するには、Web サービスが認識可能なメッセージである、SOAP メッセージが含まれる HTTP 要求を受け取ったときに、Web サービスで発生するイベントについて理解することが有用です。
まず、特定の URL にリダイレクトされる HTTP 要求のコンテンツを考えてみます。
-
HTTP のバージョンや文字セットなどの情報を示す HTTP ヘッダ。
HTTP ヘッダには SOAP アクションが含まれている必要があります。これは、SOAP HTTP 要求の目的を示す URI です。
SOAP 1.1 の場合、SOAP アクションは、SOAPAction HTTP ヘッダとして含まれます。SOAP 1.2 の場合は、Content-Type HTTP ヘッダ内に含まれます。
SOAP アクションは、通常、着信 SOAP メッセージを転送するのに使用されます。例えば、ファイアウォールは、HTTP での SOAP 要求メッセージを適切にフィルタするためにこのヘッダを使用できます。SOAP はこの URI の形式や具体性、および解決可能性について、何も制限していません。
-
GET、POST、HEAD などの HTTP メソッドを含む要求行。この行は、実行されるアクションを示します。
-
メッセージ本文。この場合、メソッド呼び出しを含む SOAP メッセージです。より具体的に言うと、この SOAP メッセージは、呼び出すメソッドの名前とその引数に使用される値を示します。このメッセージには、SOAP ヘッダを含めることもできます。
ここで、この要求が送信された場合に実行される処理を確認しましょう。
-
サードパーティの Web サーバがこの要求を受け取ります。
-
この要求は .cls で終わる URL 宛てになっているため、Web サーバはこの要求を CSP ゲートウェイに転送します。
-
CSP ゲートウェイで、この URL が検証されます。CSP ゲートウェイは、この URL の一部を Web アプリケーションの論理名として解釈します。CSP ゲートウェイは、Web アプリケーション内の該当する物理位置 (Web サービスのページ) にこの要求を転送します。
-
Web サービス・ページはこの要求を受け取ると、その OnPage メソッドを呼び出します。
-
Web サービスは、要求に Caché SOAP セッション・ヘッダが含まれているかどうかを確認し、含まれている場合には、該当する SOAP セッションを再開するか、新規のセッションを開始します。
Note:この手順では、SOAP セッションとは、Caché SOAP サポートでサポートされるセッションのことです。SOAP 仕様がセッションの標準を定義するわけではありません。ただし、ここで説明するように、Caché SOAP サポートでは、Web クライアントと Web サービス間のセッションの管理に使用できる専用の Caché SOAP セッション・ヘッダが提供されます。
-
Web サービスは、メッセージをアンパックし、それを検証して、すべての入力パラメータを適合する Caché 表記に変換します。変換では、複雑なタイプごとに、その複雑なタイプを表現するオブジェクト・インスタンスが作成され、そのオブジェクトが Web メソッドの入力として使用されます。
ここで HTTP ヘッダの SOAP アクションを使用して、メソッドと要求オブジェクトが指定されます。
Web サービスは、メッセージをアンパックするときに、新しい要求オブジェクトを作成し、そのオブジェクトに SOAP メッセージをインポートします。このプロセスでは、Web サービスは、この Web サービスがコンパイルされたときに作成されたクラス (Web メソッド・ハンドラ・クラス) を使用します。
-
Web サービスは、要求された Caché メソッドを実行し、応答をパッケージ化して、SOAP 応答を作成します。このときに必要に応じて SOAP ヘッダも組み込みます。
-
Web サービスは、SOAP 応答 (XML ドキュメント) を現在の出力デバイスに書き込みます。
次の図は、このフローの外部部分を示しています。
Caché Web クライアントの概要
このセクションでは、Caché Web クライアントの概要について説明します。
Caché Web クライアントの作成
Caché では、Caché SOAP ウィザードを使用して既存の WSDL ドキュメントを読み取ることで、Web クライアントを作成します。このウィザードでは、Web クライアント・クラスおよびサポートするすべてのタイプ・クラスが生成されます。
生成された Web クライアント・インタフェースには、Web サービスで定義された各メソッドのプロキシ・メソッドを含むクライアント・クラスがあります。各プロキシでは、対応する Web サービス・メソッドで使用されるものと同じシグニチャが使用されます。インタフェースには、メソッドの入出力として必要な XML タイプを定義するためのクラスも含まれています。
通常は、生成されたクラスをカスタマイズすることはありません。その代わり、Web クライアントの動作を制御し、そのプロキシ・メソッドを呼び出す追加クラスを作成します。
Web クライアントのアーキテクチャ
Caché Web クライアントの機能を理解するため、ここでは、ユーザまたは他のエージェントが Web クライアント内のメソッドを呼び出したときに発生するイベントについて考えてみます。
-
まず、Web クライアントで、メソッド呼び出しとその引数値を表す SOAP メッセージが作成されます。
-
次に、SOAP メッセージを含む HTTP 要求が作成されます。前述のとおり、HTTP 要求には要求行と HTTP ヘッダが含まれます。
-
HTTP 要求が発行され、それが適切な URL に送信されます。
-
Web クライアントは、HTTP 応答を待機し、状態を判断します。
-
Web サービスから SOAP 応答を受信します。
-
SOAP 応答をアンパックします。
以下の図は、このフローを示しています。
その他の機能
Caché Web サービスおよび Web クライアントには、次の機能を追加できます。
-
セッションのサポート。前述のように、SOAP 仕様がセッションの標準を定義するわけではありませんが、CSP インフラストラクチャ、および %SOAP パッケージが提供するセッション・サポートを使用することにより、クライアントとサーバ間の SOAP セッションを作成できます。
-
カスタムの SOAP ヘッダ (WS-Addressing ヘッダを含む)、カスタムの SOAP メッセージ本文、およびカスタムの SOAP フォルト。
-
MIME 添付。
-
MTOM (Message Transmission Optimization Mechanism) の使用。
-
Web クライアントと Web サービス間の認証 (ユーザ・ログイン)、および WS-Security 規格における主要部分。
-
ポリシー。これにより、サービスまたはクライアントが次の操作をどのように行うかを制御できます。
-
使用または要求する WS-Security ヘッダ要素の指定。
-
MTOM の使用の指定。
-
WS-Addressing の使用の指定。
"Caché Web サービスの保護" を参照してください。
-
-
形式に関するほとんどの要件を満たすように、生成される WSDL ドキュメントを調整するオプション。
-
Web クライアントと Web サービス間での HTTP 以外による転送。
サポートされる規格の詳細は、次のセクションを参照してください。
Caché でサポートされる規格
ここでは、Caché Web サービスおよび Web クライアントの基本規格と WSDL のサポートの詳細を紹介します。
その他の規格は、"Caché Web サービスの保護" を参照してください。
基本規格
Caché Web サービスおよび Web クライアントは、次の基本規格をサポートします。
-
SOAP 1.1 (http://www.w3.org/TR/2000/NOTE-SOAP-20000508/Opens in a new tab を参照)、エンコード形式が含まれます。
-
SOAP 1.2、セクション 3 SOAP バージョン 1.2 パート 2: Adjuncts で指定されたエンコード形式が含まれます (http://www.w3.org/TR/soap12-part2/Opens in a new tab)。
-
MTOM (Message Transmission Optimization Mechanism) 1.0 (http://www.w3.org/TR/soap12-mtom/Opens in a new tab)。
-
WSDL 1.1。Caché の Web サービスは、WS-I (Web Services Interoperability Organization)Opens in a new tab によって確立された Basic Profile 1.0 に準拠する WSDL ドキュメントを作成します。ただし、Caché の Web クライアントは、より汎用的な WSDL ドキュメントに対応できます。
“Caché における WSDL のサポート” を参照してください。
-
クライアント・アクセス専用 (リポジトリ提供なし) の UDDI バージョン 1.0。http://uddi.xml.org/Opens in a new tab を参照してください。
-
SOAP with Attachments の仕様に基づいてマルチパートまたは関連 MIME メッセージとして扱われる添付 (http://www.w3.org/TR/SOAP-attachmentsOpens in a new tab)。
SOAP with Attachments は SOAP 1.2 および SOAP 1.1 でサポートされています。
-
HTTP 1.1 または HTTP 1.0 による転送。
-
Web クライアントからの出力では UTF-8 のみがサポートされます。
Caché でサポートされる XML 規格の詳細については、"Caché XML ツールの使用法" を参照してください。
Caché における WSDL のサポート
Caché では、可能なすべての WSDL ドキュメントをサポートしているわけではありません。変更できない特定の WSDL に対応する Web クライアントの作成が必要なことが多いため、クライアント側により高い柔軟性が与えられます。ここでは、サポートの詳細について説明します。
生成された WSDL ドキュメント
Caché Web サービスによって生成される WSDL ドキュメントにはヘッダが含まれません。また、Caché で作成できる Web サービスがすべての可能なバリエーションを反映するわけではありません。
SOAP 仕様では、WSDL を生成する Web サービスは一切必要とされていないことに注意してください。
WSDL の利用
Caché SOAP ウィザードは、考えられるすべての WSDL ドキュメントを処理できるわけではありません。特に次の制限事項があります。
-
Caché SOAP クライアント・ウィザードでは、<fault> 要素はサポートされません。つまり、バインディングの <operation> 要素内に <fault> 要素が含まれている場合、その <fault> 要素は無視されます。
-
応答メッセージでは、以下の条件のうち 1 つを満たしている必要があります。
-
各応答メッセージは、対応する要求メッセージと同じネームスペースに置く必要があります。
-
応答メッセージはすべて、互いに同一のネームスペースに置く必要があります (要求メッセージで使用するネームスペースとは異なる場合があります)。
-
-
Caché SOAP ウィザードでは WSDL のヘッダは処理されません。
SOAP ウィザードでは、WSDL における MIME バインディングを使用できます (http://www.w3.org/TR/wsdl#_Toc492291084Opens in a new tab)。 MIME パーツは無視され、WSDL の残りの部分が処理されます。 MIME バインディングを含む WSDL を基盤とする Web サービスまたは Web クライアントを作成する場合は、MIME 添付をサポートする ObjectScript コードを明示的に追加する必要がありますが、この作業はこのドキュメントの対象ではありません。
SAX パーサについての重要な点
Caché SAX パーサは、Caché が SOAP メッセージを受け取るたびに使用されます。その既定の動作を知っておくと役に立ちます。パーサは、以下のようなタスクを行います。
-
XML ドキュメントが適格な文書であるかどうかを検証します。
-
指定されたスキーマまたは DTD を使用して、ドキュメントを検証しようとします。
ここでは、1 つのスキーマには、他のスキーマを参照する <import> 要素および <include> 要素を含めることができる、ということを覚えておくと役に立ちます。以下はその例です。
<xsd:import namespace="target-namespace-of-the-importing-schema" schemaLocation="uri-of-the-schema"/> <xsd:include schemaLocation="uri-of-the-schema"/>
これらの他のスキーマをパーサで使用できる場合以外は、検証は失敗します。特に WSDL ドキュメントの場合は、すべてのスキーマをダウンロードして、修正された場所を使用するように主スキーマを編集することが必要になる場合もあります。
-
すべての外部エンティティを含め、すべてのエンティティを解決しようとします (この作業は他の XML パーサでも行います)。場所によっては、このプロセスには時間がかかる場合もあります。特に、Xerces では一部の URL の解決にネットワーク・アクセサが使用され、実装ではブロックする I/O が使用されます。結果的に、タイムアウトは発生せず、ネットワーク・フェッチがエラー状態になって停止する可能性があります (現実にはまず発生しません)。
必要に応じて、カスタム・エンティティ・リゾルバを作成することもできます。"Caché XML ツールの使用法" の “SAX パーサの使用法のカスタマイズ” を参照してください。