ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

37 Webサービスの作成と消費

この章では、Webサービス・プロトコルを使用して、WebCenter Sitesをインターネット経由でリモート・アプリケーションと統合する方法について説明します。ここでは、WebCenter Sitesの開発フレームワークと照らし合せて、基本的なWebサービスの作成および消費方法について述べます。

この章には次の項が含まれます。


注意:

WebCenter Sites 11gリリース1 (11.1.1.8.0)では、SOAPベースのWebサービスの機能が非推奨になりました。この機能は、RESTサービスに置き換えられました。


37.1 事前定義されたWebサービスの使用

WebCenter Sitesには、Webサービスとして実装されている一連の充実したアセット配信機能が付属しています。これらのサービスには、Webサービスを有効化するクライアントを作成できるテクノロジを使用してればアクセスできます。用意されたWebサービス機能は、既存のWebCenter Sites API (XML、JSP、JavaおよびCOM)に匹敵します。

提供されている各サービスは、複数のWebサービスの操作に関して記述されている事前定義されたWSDL (Webサービス記述言語)ファイルに記載されています。個々のWSDLファイルは、WebCenter Sitesの機能に関連したWebサービスの操作に関するインタフェースとメソッドを定義しています。関連した操作はグループ化され、機能に応じて、まとめて説明されています。

WSDLを使用して、クライアント・アプリケーションからのWebCenter Sitesとのやり取りに必要なコードを生成します。WSDLファイルを読み取る様々なサードバーティのアプリケーションを使用してクライアント・コードを自動的に生成するか、WSDLの説明を調べてスクラッチからクライアント・コードを記述して手動でクライアント・コードを生成します。その結果生成されたクライアント・スタブが、WebCenter Sitesとのやり取りで使用できる適切なインタフェースを構成します。実行時にはコードにより、WSDL操作に基づいてリクエストされたSOAPが作成されます。

通常は、クライアントとWebCenter Sitesとのやり取りを制御できます。ただし、潜在的に未知のクライアント・アプリケーションがアクセスした場合、提供されているWSDLファイルによりURLにポストし、リモート・アクセス用のUDDI (ユニバーサル・ディスクリプション、ディスカバリー、インテグレーション)を介して登録することも可能です。

この項の内容は、次のとおりです。

37.1.1 アクセス可能な情報

SOAPをサポートし、事前定義されたWSDL仕様に従っているWebサービスであれば、WebCenter Sitesデータベースの次の情報にアクセスできます。

  • コンテンツ管理サイトのサイト・マップ

  • PDFファイルなどのBlobデータ

  • コンテンツ管理サイトにおけるすべての有効なアセット・タイプとアセット・サブタイプのリスト

  • 指定された検索基準に一致するアセットのリスト

  • 特定のアセットに関連付けられたメタデータ

37.1.2 WSDLファイルの場所

WebCenter Sitesの事前定義されたWSDLファイルは、WebCenter Sitesアプリケーションを使用して次の場所に自動的にインストールされます。

http://install_dir/futuretense_cs/Xcelerate/wsdl/*.wsdl

37.1.3 事前定義されたWebサービスのプロセス・フロー

次の一般的な手順は、Webサービスのクライアント・プログラムからのリクエストを、提供されたWSDLファイルを使用して処理する方法を説明しています。

  1. 提供されるWSDLファイルには、リクエスト(WebCenter Sitesで想定される入力データ)に対するフォーマットの説明、およびリターン・データのフォーマットが記載されています。WSDLファイルは、Java、Visual Basic、その他のプログラミング言語で記述されたアプリケーションの標準データ型をXMLスキーマ・データ型にマッピングします。

  2. クライアント・プログラムはWSDLに記載された手順を使用して、データを入力ソース(構造化ファイルなど)から、WebCenter Sites Webサービス・インタフェースによる想定と一貫性のあるXMLスキーマに変換します。

  3. クライアントは、必要なデータを格納するSOAPエンベロープを生成し、それをコンテンツ管理サイトに送信します。

  4. WebCenter SitesはSOAPメッセージを受信します。

  5. XMLパーサーと変換ユーティリティがSOAPメッセージ内のデータをWebCenter Sitesで要求されたフォーマットにマッピングします。

  6. WebCenter Sitesでは、適切なシード・クラスが起動されます。

  7. シードは特定のWebCenter Sitesアクションを起動します。

  8. WebCenter Sitesによって、WSDLファイルで定義された出力フォーマットでリクエストされたデータ(名前/値のペア)がクライアント・アプリケーションに返されます。

  9. クライアント・アプリケーションに対するSOAPプロセッサは、XMLスキーマ・データ型を、特定のプログラミング言語の使用に対応したネイティブのデータ型にマッピングします。

37.1.4 事前定義されたWebサービスに対するデータの検討

事前定義されたWSDL操作のデータは、RPCスタイルの相互作用(XMLドキュメント全体の交換と対比して)を使用してご使用のプログラムに渡されます。これらは通常文字列ですが、WebCenter Sitesには複雑なデータ型(たとえば、SearchStatesやILists)を使用したネイティブ・オブジェクトを処理するクラスも用意されています。

37.1.5 クライアント・インタフェースの生成

WSDLファイルを使用して、クライアント・アプリケーションのインタフェースを生成します。WSDLファイルからクライアント・コードを生成する様々なツールが使用できます。これらのツールは異なるプログラミング言語の出力をサポートしています。クライアント・アプリケーションのターゲット言語でコードを生成するツールを選択し、必要な操作が記述されているWSDLファイルでそれを実行します。その結果生成されるクライアント・スタブによって、すべてのWebCenter Sites操作が各クライアント・プログラムで使用できるようになります。

37.1.6 クライアント・コールの記述

WSDLファイルから生成されたコードにより、WebCenter Sites機能にインタフェースが提供されます。使用可能になると、必要に応じて、アプリケーションからこの機能をコールできるようになります。

37.2 カスタムWebサービスの作成

WebCenter Sitesを使用して、公開する任意のWebCenter Sites機能からのデータをマッピングするWebサービスを作成できます。XML、JavaおよびJSPがサポートされているため、既存のWebCenter Sites開発環境ではWebサービスの開発で使用しやすいプラットフォームが提供されています。提供されたタグ・セットにより、SOAPレスポンス、およびアプリケーションに対してデータをカプセル化するストリームSOAPを作成できるようになります。あらかじめ同梱されたWebサービスと同様、WebCenter Sites配信機能とページ評価パイプラインはSOAPリクエストの処理に使用されます。Webサービスでは、クライアントはブラウザではなく、プログラムです。

この項の内容は、次のとおりです。

37.2.1 Webサービス作成のプロセス・フロー

次の一般的な手順では、Webサービス・クライアント・プログラムからのリクエストを処理する方法について説明します。

  1. クライアント・プログラムはSOAPで必要な入力すべてをラップし、WebCenter Sitesに渡します。

  2. クライアントはWSDLファイルの手順を使用して、データを入力ソース(構造化ファイルなど)からWebCenter SitesのWebサービス・インタフェースによる想定と一貫性のあるXMLスキーマに変換します。

  3. クライアントは、必要なデータを格納するSOAPエンベロープを生成し、それをコンテンツ管理サイトに送信します。

  4. WebCenter SitesはSOAPメッセージを受信します。

  5. XMLパーサーと変換ユーティリティがSOAPメッセージ内のデータをWebCenter Sitesで要求されたフォーマットにマッピングします。

  6. WebCenter Sitesでは、適切なシード・クラスが起動されます。

  7. シードは特定のWebCenter Sitesアクションを起動します。

  8. WebCenter Sitesによって、WSDLファイルで定義された出力フォーマットでリクエストされたデータ(名前/値のペア)がクライアント・アプリケーションに返されます。

  9. クライアント・アプリケーションに対するSOAPプロセッサは、使用される特定のプログラミング言語に対応したネイティブのデータ型にXMLスキーマ・データ型をマッピングします。

37.2.2 カスタムWebサービスに対するデータの検討

データは、RPCスタイルの相互作用(XMLドキュメント全体の交換と対比して)を使用して各プログラムに渡されます。データを検討し、単純XSIデータ型による処理を検証します。WebCenter Sitesでは、すべてのW3C XSIのプリミティブ・データ型を変更せずに使用できます。


注意:

複雑なWebサービスのデータ型はWebCenter Sitesでサポートできますが、独自のJavaクラスを作成してアプリケーション・サーバーでそれらを配布する必要があります。独自のデータ型を作成する場合には、事前にWebCenter Sitesテクニカル・サポートにお問い合せください。


37.2.3 WebCenter Sitesページの作成

各Webサービスは、SiteCatalog表にページ・エントリが必要です。SiteCatalogに対するページ・エントリは、Webサービスで記述されたWebCenter Sites機能をコールするエレメントを指す名前です。SiteCatalogには、Webサービスを起動するページなど、サイトにおけるページの有効なエントリが格納されています。

このページはクライアントからのリクエストによって起動されます。次に、WebCenter SitesからのレスポンスはSOAPでカプセル化され、クライアントに返されます。Webサービスではクライアントはプログラムで(ブラウザではない)、レスポンスはXMLです(HTMLではない)。

Webサービスに対応したWebCenter Sitesページを作成するには

  1. Oracle WebCenter Sites Explorerを起動し、WebCenter Sitesにログインします。手順は、オンライン・ヘルプかこのガイドの手順を参照してください。

  2. 左ペインで、SiteCatalog表を開きます。

  3. サイトのフォルダを選択します。

  4. 「Pagename」フィールドで、SiteCatalog表内にWebサービス向けページ名の最後の部分のエントリを作成します。

  5. 「ルート・エレメント」フィールドで、Webサービスのルート・エントリを作成します。(SiteCatalogルートにSiteCatalogエントリを追加すると表のルックアップが回避され、最初の子エレメントのエレメント名が特定のページ名に確実にマッピングされます。)

  6. いずれかの「resargs」フィールドで、適切な場合には、次のオプションの引数を追加します。

    • cs.session=falseは、SOAPリクエストのライフに対するアプリケーション・サーバーのセッション管理を回避します。その際、既存のセッション・オブジェクトを使用したり、現在のリクエストのかわりに新規セッション・オブジェクトを作成しません。これにより、ネイティブ・リクエストおよびセッションの永続性を必要としないクライアントからのリクエストに対するアプリケーション・サーバーのロードが軽減され、パフォーマンスが向上します。どのページでもサポートされていますが、cs.session=false resargは、主にSOAPサービスでの使用を対象としています。

    • cs.contenttype=text/xmlは、処理用ルート・エレメントを準備します。特に、これによりXMLエンジンがタグ上の名前空間を適切に順守し、デフォルトHTMLの圧縮が回避されます。これが必要となるのは、ブラウザ経由のリクエストを想定する場合のみです。Webサービス・リクエストが常にSOAPリクエストとして受信される場合を除いて、このresargを各SiteCatalogエントリに追加してHTML圧縮をオーバーライドする必要があります。ご使用の入力XMLが整形式であれば、コンテンツの出力は間違いなく適切なXMLになると考えられます。

  7. 「csstatus」フィールドに、Liveと入力するか、この場合の適切なステータスを入力します。

  8. 「ファイル」「すべて保存」を選択するか、ツールバー・ボタンの「すべて保存」をクリックして作業内容を保存します。

37.2.4 WebCenter Sitesエレメントの記述

WebCenter Sitesエレメントには、公開する機能のコードが記述されています。このエレメントはデータを処理し、SOAPレスポンスをフォーマットします。SOAPレスポンスをフォーマットするには、WebCenter Sitesで提供されたSOAP XMLタグをコードに追加します。WebCenter Sitesは、自動的にSOAPエンベロープに対するXMLを生成します。

XMLおよびJSPでWebサービスに対して記述されたWebCenter Sitesエレメントには、別の空白やコメントを追加できません。これは、HTMLとは異なり、XMLやそのSOAPの実装では解析の要件が厳しいためです。XMLおよびJSPのページはHTMLページと同じ方法で処理され、WebCenter Sitesでフィルタされないため、空白やコメントを追加するとSOAPメッセージが破損する可能性があります。コメント(XMLまたはJSP)が表示されるのは、soap.messageタグの後のみです。

Webサービスのエレメントを記述するには

  1. Oracle WebCenter Sites Explorerを起動してWebCenter Sitesにログインします(まだログインしていない場合)。手順は、オンライン・ヘルプかこのガイドを参照してください。

  2. 左ペインで、ElementCatalog表を選択してハイライトします。

  3. ElementCatalog表で新規フォルダを作成します(「ファイル」「新規フォルダ」を選択します)。

  4. 新規フォルダを選択してハイライトし、右ペイン内の任意の場所で右クリックして、コンテキスト・メニューから「新規」を選択します。

    表内に新しい行が表示されます。

  5. 「エレメント名」フィールドに、エレメント名として適切なWebサービス名を入力します。

  6. 「説明」フィールドに、エレメントの短い説明を入力します。

  7. 「url」フィールド内でクリックして、表示されたボタンをクリックします。

    「新規ファイル」ダイアログ・ボックスが表示されます。

  8. 「タイプ/拡張子」フィールドで、ドロップダウン・リストからファイル・タイプの「XML」または「JSP」を選択します。

  9. 「OK」をクリックします。Oracle WebCenter Sites Explorerでは、デフォルトのエディタが開きます。WebCenter Sitesでは、すべてのXMLエレメントまたはJSPエレメントで必要なスケルトン・コードが記述されているファイルが作成されます。必要なWebCenter Sites SOAPタグを含む、エレメント・コードを入力します。たとえば、次のXML用のコードを使用します。

    <?xml version="1.0" ?><!DOCTYPE FTCS SYSTEM "futuretense_cs.dtd">
    <FTCS Version="1.2">
    <!-- WebServices/helloworld
    -
    - INPUT
    -
    - OUTPUT--->
    <soap.message  ns="mynamespace">
          <soap.body tagname="HelloWorldOut">      
          <echoStringOut xsi:type="xsd:string">
          <csvar NAME="Variables.echoString"/>      
             </echoStringOut>
          </soap.body>
    </soap.message>
    
    </FTCS>
    
  10. 「ファイル」「すべて保存」を選択して、作業内容を保存します。


注意:

「ファイル」「すべて保存」のかわりに、「ファイル」「保存」を選択してもファイルは保存されますが、アプリケーション・サーバーで使用できなくなります。


37.2.5 WSDLファイルの作成

WSDL (Webサービス記述言語)ファイルではWebサービスが記述されているため、基本的なWebサービス・クライアントがその情報に基づいて自動的に生成されます。WebCenter Sitesで提供されている事前定義サービスを使用しない場合には、オプションで独自のWSDLファイルを作成してWebサービスを記述できます。

WSDLファイルには、SOAPアドレス、SOAPアクション、リクエスト(WebCenter Sitesで想定される入力データ)に対するフォーマットの説明、およびリターン・データのフォーマットが記述されています。WSDLファイルは、Java、Visual Basic、その他のプログラミング言語で記述されたアプリケーションの標準データ型をXMLスキーマ・データ型にマッピングします。WebCenter Sites機能に対応した任意の事前定義されたWSDLファイルをテンプレートとして使用して開始します。

37.2.5.1 WSDLファイルのエレメントの記述

WSDLには、次の4つのセクションがあります。

  • Types: データ・フォーマットおよび操作のスキーマ定義を指定します。タイプは、リターン・データと関連付けられています。

  • Message: 入力および出力を名付けます。これには、WebCenter Sitesページが返信する必要のある事項が記述されています。

  • Operation: 入力および出力を記述します。

  • Binding: SOAPのアクションと操作を指定します。

  • Service: 関連付けられたポートおよびURLとのバインドを記述します。

これらのセクションでは、次の主要なXMLエレメントを指定します。

  • ターゲット名前空間

  • サービス名

  • ポート名

  • 操作名

  • 操作の入力パラメータ(単純データ型に対応)。単純XSIデータ型(文字列、整数、浮動小数点数など)は単一値を返します。

37.2.5.2 WSDLファイルの例

各WSDLファイルは、WebCenter Sites機能に応じて論理的にグループ化された、相互関連のある操作のコレクションです。完了したWebサービスは、SOAPのカプセル化レスポンスのフォームでXMLを返します。WebCenter SitesのWebサービスを記述するには、Webサービス記述言語を理解する必要があります。WebCenter SitesはWSDL 1.1をサポートしています。

<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:s="http://www.w3.org/2001/XMLSchema"
 xmlns:s0="http://FatWire.com/someuri/"
 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
 xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
 targetNamespace="http://FatWire.com/someuri/"
 xmlns="http://schemas.xmlsoap.org/wsdl/">
   <types>
   </types>
   <message name="HelloWorldIn">
      <part name="echoString" type="s:string"/>
   </message>
   <message name="HelloWorldOut">
      <part name="echoStringOut" type="s:string"/>
   </message>
   <portType name="HelloWorldPortType">
      <operation name="helloworld">
         <documentation>FOR LATER</documentation>
         <input message="s0:HelloWorldIn"/>
         <output message="s0:HelloWorldOut"/>
      </operation>
   </portType>
   <binding name="HelloWorldBinding" type="s0:HelloWorldPortType">
      <soap:binding transport="http://schemas.xmlsoap.org/soap/
       http" style="rpc"/>
      <operation name="helloworld">
         <soap:operation soapAction="WebServices/" />
         <input>
            <soap:body use="encoded"/>
         </input>
         <output>
            <soap:body use="encoded"/>
         </output>
      </operation>
   </binding>
   <service name="HelloWorld">
      <port name="HelloWorldPort" binding="s0:HelloWorldBinding">
         <soap:address location="http://localhost:8080/servlet/ContentServer"/>
      </port>
   </service>
</definitions>