ヘッダーをスキップ

Oracle Application Server Web Services開発者ガイド
10g(10.1.3.1.0)

B31868-01
目次
目次
索引
索引

戻る 次へ

12 REST Webサービスのアセンブル

この章では、Oracle Application Server Web ServicesがREST Webサービスの生成と使用をサポートする方法を説明します。この章の内容は、次のとおりです。

REST Webサービスの理解

REST(Representational State Transfer)Webサービス・アーキテクチャは、World Wide Web Consortium(W3C)が策定したWebアーキテクチャに準拠し、そのアーキテクチャの理念を使用したものです。HTTPのセマンティクスを可能なかぎり使用します。REST Webサービスはメッセージの送信にXML文書を使用し、SOAPエンベロープは使用しません。SOAP Webサービスとは異なり、RESTはスタイルであるため、標準やベンダーによるツールのサポートはありません。

Oracle Application Server Web Servicesを使用し、RESTを使用してエンドポイントを公開すると、そのエンドポイントはSOAPポートとしても公開されます。OracleAS Web Servicesは、HTTPコマンドのサポートをGETおよびPOSTに制限しています。REST Webサービスは、他のOracleAS Web Servicesと同様にデプロイします。


注意

OracleAS Web Servicesは、useつまりエンコーディング・メカニズムがliteral(use="literal")の場合にのみ、REST Webサービスをアセンブルできます。REST Webサービスは、メッセージ書式がencodedの場合はサポートされません。  


セキュリティおよび信頼性などのWebサービス管理機能は、REST Webサービスの起動(RESTまたはSOAP)では使用できません。これは、通常この情報の保持に使用するSOAPヘッダーが、REST Webサービスの呼出しでは使用できないためです。

REST Webサービスに対するWebServicesAssemblerのサポート

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

REST Webサービスをアセンブルできるコマンド

WebServicesAssemblerを使用して、REST Webサービスの機能を、HTTPをプロトコルとして使用できるWebアプリケーションに追加できます。これには、Javaクラス、EJBおよびデータベース・リソースに基づいて作成されるWebサービス・アプリケーションがあります。WebServicesAssemblerのブール型引数restSupportを使用すると、次のいずれかのコマンドでREST Webサービスをアセンブルできます。

REST Webサービスをサポートする注釈

Oracle固有の@Deployment注釈には、オプションのブール型属性restSupportを適用できます。属性の値がtrueの場合は、注釈が適用されたポートは、RESTスタイルのGETおよびPOSTのリクエストおよびレスポンスをサポートします。

関連項目

restSupport属性およびDeployタグの詳細は、「OracleによるJ2SE 5.0 JDK注釈への追加」を参照してください。 

REST Webサービスのアセンブル方法

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

トップダウン方式でのREST Webサービスのアセンブル手順

次の手順は、WSDLからのREST Webサービスのアセンブル方法を例で示しています。この例では、トップダウン方式によるWebサービスのアセンブルに必要な手順のアウトラインのみを示しています。

関連項目

トップダウン方式でWSDLからWebサービスをアセンブルする手順の各ステップの詳細は、第6章「WSDLからのWebサービスのアセンブル」を参照してください。 

  1. Webサービス生成のベースとなるWSDLを、WebServicesAssemblerのgenInterfaceコマンドへの入力として指定します。

    この例で使用されるWSDLを例12-1に示します。次は、genInterfaceコマンドのサンプルです。

    java -jar wsa.jar -genInterface 
                      -output build/src/service  
                      -wsdl wsdl/MovieFacility.wsdl 
                      -unwrapParameters false 
    

    このコマンドの説明:

    • genInterface: 各ポート・タイプのサービス・エンドポイント・インタフェースと、WSDLに定義された複合型に対応するJava値タイプ・クラス(Bean)を作成します。また、XMLスキーマ型とJava値タイプ・クラス間のマッピングを記述するJAX-RPCマッピング・ファイルも作成されます。「genInterface」を参照してください。

    • output: 生成されるファイルを格納するディレクトリを指定します。そのディレクトリが存在しない場合は、作成します。「output」を参照してください。

    • wsdl: WSDLドキュメントの絶対ファイル・パス、相対ファイル・パスまたはURLを指定します。「wsdl」を参照してください。

    • unwrapParameters: この引数はdocument-literal操作に対してのみ設定でき、その他のメッセージ書式では無視されます。falseに設定すると、生成対象のサービス・エンドポイント・インタフェースが、入力パラメータおよび戻り型をラップするラッパーとともに生成されます。「unwrapParameters」を参照してください。

  2. 生成されたインタフェースおよびタイプ・クラスをコンパイルします。

  3. 提供するWebサービスに対するJavaサービス・エンドポイントを実装します。

  4. Javaサービス・エンドポイントをコンパイルします。

  5. WebServicesAssemblerツールのtopDownAssembleコマンドを実行し、サービスを生成します。

    restSupport引数をtrueに設定します。次に例を示します。

    java -jar wsa.jar -topDownAssemble 
                -wsdl ./wsdl/MovieFacility.wsdl 
                -unwrapParameters false 
                -className oracle.webservices.examples.rest.RpcLitMovieImpl 
                -input build/classes/service 
                -output build 
                -ear dist/rpclit_topdown.ear 
                -restSupport true
    

    このコマンドの説明:

    • topDownAssemble: WSDL記述をベースにしたWebサービスで必要となるクラスとデプロイメント・ディスクリプタを作成します。これらのファイルは、EARファイル、WARファイル、ディレクトリのいずれにも格納できます。「topDownAssemble」を参照してください。

    • wsdl: WSDLドキュメントの絶対ファイル・パス、相対ファイル・パスまたはURLを指定します。「wsdl」を参照してください。

    • unwrapParameters: この引数はdocument-literal操作に対してのみ設定でき、その他のメッセージ書式では無視されます。falseに設定すると、生成対象のサービス・エンドポイント・インタフェースが、入力パラメータおよび戻り型をラップするラッパーとともに生成されます。「unwrapParameters」を参照してください。

    • className: Webサービスの実装クラスのクラス名(パッケージ名を含む)を指定します。「className」を参照してください。

    • input: WEB-INF/classesにコピーされるクラスを格納するJARまたはディレクトリを指定します。この引数は、WebServicesAssemblerによって使用されるクラスパスに追加されます。「input」を参照してください。

    • output: 生成されるファイルを格納するディレクトリを指定します。そのディレクトリが存在しない場合は、作成します。「output」を参照してください。

    • ear: 生成されるEARファイルの名前と位置を指定します。「ear」を参照してください。

    • restSupport: Representational State Transfer(REST)のサポートをこのWebサービスに対して有効にするかどうかを指定します。「restSupport」を参照してください。

  6. サービスをデプロイします。

    通常の方法でEARファイルをOC4Jの実行中インスタンスにデプロイします。EARファイルのデプロイの詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。

  7. (オプション)デプロイが成功したことを確認します。

    OracleAS Web Servicesでは、デプロイされたWebサービスごとにWebサービス・テスト・ページが提供されます。テスト・ページを使用すると、REST POSTまたはGETリクエストを生成して起動できます。Webサービス・テスト・ページへのアクセスおよびその使用方法の詳細は、「Webサービス・テスト・ページの使用方法」を参照してください。


    注意

    REST Webサービスは、J2EEまたはJ2SEクライアントを使用しません。ただし、各RESTエンドポイントは同時にSOAPエンドポイントでもあるため、J2EEまたはJ2SEクライアントを、これらのエンドポイントに対してアセンブルできます。GETまたはPOST RESTメッセージの作成方法の例が必要な場合は、Webサービス・テスト・ページを使用してください。  


REST Webサービス操作へのアクセス方法

例12-1は、「トップダウン方式でのREST Webサービスのアセンブル手順」でprc-literalサービスのアセンブルに使用されたWSDLフラグメントです。

例12-1    RPC-Literal Webサービス向けのWSDLフラグメント

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns0="http://www.oracle.com/rest/doc/types" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://www.oracle.com/rest" name="rest-service"
targetNamespace="http://www.oracle.com/rest"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/">
    <types>
        <schema xmlns="http://www.w3.org/2001/XMLSchema" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://www.oracle.com/rest/doc/types" elementFormDefault="qualified"
targetNamespace="http://www.oracle.com/rest/doc/types">
            <complexType name="Movie">
                <sequence>
                    <element name="Title" type="xsd:string"/>
                    <element name="Director" type="xsd:string"/>
                    <element name="Year" type="xsd:int" />
                </sequence>
            </complexType>
            <complexType name="ArrayOfMovie">
                <sequence>
                    <element name="Movie" type="tns:Movie"
                                      maxOccurs="unbounded" />
                </sequence>
            </complexType>
        </schema>
    </types>
    <message name="FindMoviesRequest">
        <part name="TitleWords" type="xsd:string" />
        <part name="Year" type="xsd:int" />
    </message>
    <message name="FindMoviesResponse">
        <part name="Movies" type="tns0:ArrayOfMovie" />
    </message>
    <message name="AddMovieRequest">
        <part name="Movie" type="tns0:Movie" />
    </message>
    <message name="AddMovieResponse">
        <part name="Added" type="xsd:boolean" />
    </message>
    <portType name="MovieDB">
         <operation name="findMovies">
             <input message="tns:FindMoviesRequest" />
             <output message="tns:FindMoviesResponse" />
         </operation>
         <operation name="addMovie">
             <input message="tns:AddMovieRequest" />
             <output message="tns:AddMovieResponse" />
         </operation>
     </portType>

    <binding name="HttpSoap11Binding" type="tns:MovieDB">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="findMovies">
            <soap:operation soapAction="http://www.oracle.com/rest/findMovies"/>
            <input>
                <soap:body use="literal" parts="TitleWords Year" 
namespace="http://www.oracle.com/rest"/>
            </input>
            <output>
                <soap:body use="literal" parts="Movies" 
namespace="http://www.oracle.com/rest"/>
            </output>
        </operation>
        <operation name="addMovie">
            <soap:operation soapAction="http://www.oracle.com/rest/addMovie"/>
            <input>
                <soap:body use="literal" parts="Movie" 
namespace="http://www.oracle.com/rest"/>
            </input>
            <output>
                <soap:body use="literal" parts="Added" 
namespace="http://www.oracle.com/rest"/>
            </output>
        </operation>
    </binding>
    <service name="rest-service">
        <port name="HttpSoap11" binding="tns:HttpSoap11Binding">
            <soap:address location="http://localhost:8888/webservice/webservice/"/>
        </port>
    </service>
</definitions>

前述のWSDLを使用し、「トップダウン方式でのREST Webサービスのアセンブル手順」に記載の手順を実行することで、次のようなインタフェースが生成されます。

interface MovieDb {
    public Movie[] findMovies (String titleWords, int year);
    public boolean addMovie (Movie movie);
}

生成されたインタフェース内の最初のメソッドは、単純なパラメータのみを持ちます。このメソッドは、HTTP GETを使用して起動できます。次に例を示します。

http://{yourhost}/{context-path}/{service-url}/findMovies?TitleWords=Star+Wars&Year=1977

この問合せ文字列は、次のXMLレスポンスを返します。

<ns0:findMoviesResponse xmlns:ns0="http://www.oracle.com/rest">
   <Movies>
      <ns1:Movie xmlns:ns1="http://www.oracle.com/rest/doc/types">
         <ns1:Title>tim</ns1:Title>
         <ns1:Director>tim</ns1:Director>
         <ns1:Year>1978</ns1:Year>
      </ns1:Movie>
   </Movies>

</ns0:findMoviesResponse>

生成されたインタフェース内のaddMovieメソッドは、複雑なパラメータを取るため、HTTP POSTによってのみ起動できます。たとえば、次のXMLメッセージを独自のWebサービスのURL、http://{yourhost}/{context-path}/{service-url}に対してPOSTできます。

<ns0:addMovie xmlns:ns0="http://www.oracle.com/rest">
   <Movies>
      <ns1:Movie xmlns:ns1="http://www.oracle.com/rest/doc/types">
         <ns1:Title>tim</ns1:Title>
         <ns1:Director>tim</ns1:Director>
         <ns1:Year>1978</ns1:Year>
      </ns1:Movie>
   </Movies>
</ns0:addMovie>

ボトムアップ方式でのREST Webサービスのアセンブル手順

次の手順は、JavaクラスからのREST Webサービスのアセンブル方法を例で示しています。この例では、ボトムアップ方式によるWebサービスのアセンブルに必要な手順のアウトラインのみを示しています。

関連項目

JavaクラスでWebサービスをアセンブルする手順の各ステップの詳細は、第7章「Javaクラスを使用したWebサービスのアセンブル」を参照してください。 

  1. Webサービスとして公開するコンパイル済Javaクラスとそのコンパイル済インタフェースを用意します。

    例12-2は、この例で使用しているStringToolsインタフェースです。

  2. restSupport引数をtrueにしたassembleコマンドを指定して、サービスのアーチファクトを生成します。

    java -jar wsa.jar -assemble 
               -appName tools 
               -serviceName StringTools 
               -interfaceName oracle.webservices.examples.rest.StringTools 
               -className oracle.webservices.examples.StringToolsImpl 
               -input ./build/classes/service 
               -output build 
               -use literal
               -ear dist/tools.ear  
               -uri StringToolsService 
               -restSupport true
    

    このコマンドの説明:

    • assemble: ボトムアップ方式でJavaファイルからWebサービスを生成します。このコマンドにより、デプロイ可能なアーカイブを作成するために必要なすべてのファイルが作成されます。「assemble」を参照してください。

    • appName: アプリケーションの名前を指定します。この名前は、通常contexturiなどの他の引数のベース値として使用されます。「appName」を参照してください。

    • serviceName: サービス名を指定します。「serviceName」を参照してください。

    • interfaceName: サービス・エンドポイント・インタフェース(SEI)を格納するJavaクラスの名前(パッケージ名を含む)を指定します。「interfaceName」を参照してください。

    • className: Webサービスの実装クラスのクラス名(パッケージ名を含む)を指定します。「className」を参照してください。

    • input: WEB-INF/classesにコピーされるクラスを格納するJARまたはディレクトリを指定します。この引数は、WebServicesAssemblerによって使用されるクラスパスに追加されます。「input」を参照してください。

    • output: 生成されるファイルを格納するディレクトリを指定します。そのディレクトリが存在しない場合は、作成します。「output」を参照してください。

    • use: ボトムアップ方式Webサービス・アセンブリの場合、この引数は、生成されるWSDL内のメッセージ書式のuse属性を指定します。「use」を参照してください。

    • ear: 生成されるEARファイルの名前と位置を指定します。「ear」を参照してください。

    • uri: Webサービスに使用するURIを指定します。「uri」を参照してください。

    • restSupport: Representational State Transfer(REST)のサポートをこのWebサービスに対して有効にするかどうかを指定します。「restSupport」を参照してください。

  3. サービスをデプロイし、アプリケーションをバインドします。

    通常の方法でEARファイルをOC4Jの実行中インスタンスにデプロイします。EARファイルのデプロイの詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。

  4. 必要に応じて、デプロイメントが成功したかどうかを確認します。OracleAS Web Servicesでは、デプロイされたWebサービスごとにWebサービス・テスト・ページが提供されます。

    テスト・ページを使用すると、REST POSTまたはGETリクエストを生成して起動できます。Webサービス・テスト・ページへのアクセスおよびその使用方法の詳細は、「Webサービス・テスト・ページの使用方法」を参照してください。


    注意

    REST Webサービスは、J2EEまたはJ2SEクライアントを使用しません。ただし、各RESTエンドポイントは同時にSOAPエンドポイントでもあるため、J2EEまたはJ2SEクライアントを、これらのエンドポイントに対してアセンブルできます。GETまたはPOST RESTメッセージの作成方法の例が必要な場合は、Webサービス・テスト・ページを使用してください。  


REST Webサービス操作へのアクセス方法

例12-2は、前述のステップ2でREST Webサービスのアセンブルに使用されていたStringToolsインタフェースです。

例12-2    REST Webサービスのアセンブルに使用するインタフェース

interface StringTools {
package oracle.webservices.examples.rest;
import java.rmi.Remote;
import java.rmi.RemoteException;

public interface StringTools extends Remote{
    public String appendStrings (String a, String b) throws RemoteException;
    public String toUpperCase (String c) throws RemoteException;
    public String concatArrayOfStrings (String s[]) throws RemoteException;

このインタフェースの最初の2つのメソッド、appendStringsおよびtoUpperCaseは、単純なパラメータを使用しています。このため、これらは、REST Webサービス操作として公開すると、HTTP GETを使用してアクセスできます。次の例は、アセンブリ時にdocumentスタイルを指定した場合の、appendStrings操作のコールを示します。

http://{yourserver}/{context-path}/{service-URL}/appendStrings?String_1=Hello+&String_2
=World

この問合せ文字列は、次のXMLレスポンスを返します。

<appendStringsResponseElement xmlns="http://oracle.webservices.examples.rest/">
     <result>Hello World</result>
</appendStringsResponseElement>

このインタフェース内の3番目のメソッドconcatArrayOfStringsは、複雑なパラメータを取ります。このため、これは、REST Webサービス操作として公開しても、HTTP GETではコールできません。HTTP POSTによってのみ、コールできます。次に例を示します。

<ns1:concatArrayOfStringsElementxmlns:ns1="http://oracle.webservices.examples.rest/">
            <ns1:arrayOfString_1>a,</ns1:arrayOfString_1>
            <ns1:arrayOfString_1>b.</ns1:arrayOfString_1>
</ns1:concatArrayOfStringsElement>
<concatArrayOfStringsRequest xmlns="http://oracle.webservices.examples.rest/">

このリクエスト文字列は、次のXMLコードを返します。

<ns0:concatArrayOfStringsResponseElement
xmlns:ns0="http://oracle.webservices.examples.rest/">
   <ns0:result>a,b.</ns0:result>
</ns0:concatArrayOfStringsResponseElement>

REST Webサービスのテスト方法

Webサービス・テスト・ページを使用して、REST Webサービスが正常にデプロイされたかどうかをテストできます。

関連項目

Webサービス・テスト・ページの使用方法の詳細は、「REST Webサービスのテストの起動」を参照してください。  

RESTでのデプロイメント・ディスクリプタへの追加

RESTサポートがWebサービスに対して有効になっている場合は、オプションのブール型<rest-support>サブ要素が、oracle-webservices.xmlデプロイメント・ディスクリプタの<port-component>要素に追加されます。<rest-support>trueに設定されると、サブ要素が適用されるポートは、RESTスタイルのGETおよびPOSTのリクエストおよびレスポンスをサポートします。デフォルト値はfalseです。

関連項目

<rest-support>サブ要素の追加情報は、「<rest-support>」を参照してください。 

RESTがリクエストとレスポンスを作成する方法

次の各項では、REST Webサービス・リクエストのクライアント・サイドでの構築方法、およびサーバー・サイドでの処理方法を説明します。

HTTP GETリクエスト

SOAPエンドポイントが次のURLにデプロイされていると仮定します。

http://example.com/my-app/my-service

このエンドポイントがREST対応の場合は、次のURLへのHTTP GETリクエストが受け入れられます。

http://example.com/my-app/my-service/{operationName}?{param1}={value1}&{param2}={value2}

この例において、{operationName}はサービスに対するWSDL内の操作名の1つです。RPC-literal操作の場合は、{param1}{param2}などが、操作の入力であるwsdl:message内で定義される各部分の名前になります。ただし、これらの各部分はsimpleTypesxsd:intなど)である必要があります。


注意

ブラウザによっては、HTTP GET URLのサイズを制限している場合があります(一般的には2000文字未満)。パラメータ数を制限し、パラメータの名前と値を短くすることで、URLサイズを小さくするように注意してください。 


document-literal操作では、メッセージはパラメータを1つのみ持ちます。複数パラメータをシミュレートするため、WSDLには、スキーマでsequenceとして定義されているパラメータを指定します。sequenceの各メンバーをパラメータと考えることができます。この場合、{param1}{param2}などが、message部分ではなくsequence型のメンバーになります。RPCの場合と同様に、これらのメンバーはsimpleTypesである必要があります。

例12-3は、addNumbersという名前の操作に対して定義されたリクエスト・メッセージです。

例12-3    操作に対するGETリクエスト

<wsdl:message name="AddNumbersRequest"> 
      <wsdl:part name="a" type="xsd:int" /> 
      <wsdl:part name="b" type="xsd:int" />
</wsdl:Message>

このリクエストは、次のURLを指定したGETで起動できます。

http://{yourhost}/{context-path}/{service-url}/addNumbers?a=23&b=24

例12-4は、OracleAS Web ServicesプラットフォームがGETリクエストからサーバー・サイドで作成するSOAPエンベロープを示します。このメッセージは、他の受信SOAPリクエストと同様に処理されます。

例12-4    GETリクエストから作成されるSOAPエンベロープ

<soap:Envelope> 
    <soap:Body> 
        <ns:addNumbers> 
            <ns:a>23</ns:a> 
            <ns:b>24</ns:b> 
        </ns:addNumbers> 
    <soap:Body> 
<soap:Envelope>

例12-5は、addNumbersサービスがdocument-literal操作として定義されている場合に送信されるリクエスト・メッセージです。

例12-5    document-literalのラップ操作に対するGETリクエストのサンプル

<wsdl:message name="AddNumbersRequest"> 
     <wsdl:part name="params" type="tns:AddNumbersRequstObject" />
</wsdl:Message>

例12-6は、AddNumbersRequestObjectの定義を示しています。これはスキーマでも同じ定義になります。

例12-6    document-literalのラップ操作のXML定義

<xsd:complexType name="AddNumbersRequestObject"> 
    <xsd:complexContent> 
        <xsd:sequence>
            <xsd:element name="a" type="xsd:int"/> 
            <xsd:element name="b" type="xsd:int"/>
        </xsd:sequence> 
    </xsd:complexContent> 
</xsd:complexType>

この操作は、次のURLを指定したGETリクエストによって起動できます。これは、例12-3のRPC-literalリクエストに対して使用したものと同じURLである点に注意してください。

http://{yourhost}/{context-path}/{service-url}/addNumbers?a=23&b=24

HTTP POSTリクエスト

REST Webサービスでは、単純なXMLメッセージのHTTP POSTリクエストはサポートされていますが、SOAPエンベロープのHTTP POSTリクエストはサポートされていません。RESTリクエストでは、添付ファイル付きのメッセージはサポートされていません。REST WebサービスではSOAPリクエストもサポートされているため、指定されたリクエストがSOAPまたはRESTのどちらであるかを実装側で判断する必要があります。

SOAPサービスは、POSTリクエストを受信するとSOAPActionヘッダーを検索します。ヘッダーが存在する場合は、実装はこのリクエストをSOAPリクエストであると判断します。存在しない場合は、リクエストのroot要素のQNameが検索されます。それがSOAPエンベロープのQNameの場合は、メッセージはSOAPリクエストとして処理されます。そうでない場合は、RESTリクエストとして処理されます。

RESTリクエストは、リクエスト・ドキュメントをSOAPエンベロープでラップすることで処理されます。SOAP 1.2リクエストのContent-TypeヘッダーではないHTTPヘッダーのみが、そのまま受信されます。このContent-Typeヘッダーは、SOAP 1.2に対する適切なコンテンツ・タイプであるapplication/soap+xmlに変更されます。

たとえば、例12-7のRESTリクエストは、例12-8のSOAPエンベロープにラップされます。

例12-7    RESTリクエスト

<ns:addNumbers> 
    <ns:a>23</ns:a> 
    <ns:b>24</ns:b> 
</ns:addNumbers>

例12-8のリクエストは、通常のSOAPリクエストとして処理されます。

例12-8    RESTリクエストをラップするSOAPエンベロープ

<soap:Envelope> 
       <soap:Body> 
               <ns:addNumbers> 
                       <ns:a>23</ns:a> 
                       <ns:b>24</ns:b> 
               </ns:addNumbers> 
           </soap:Body> 
</soap:Envelope>

RESTレスポンス

RESTリクエストとして処理される(GETまたはPOST)リクエストに対するレスポンスも、RESTスタイルである必要があります。OracleAS Web Servicesプラットフォームは、サーバー上のSOAPレスポンスをクライアントに送信する前に、RESTレスポンスに変換します。RESTレスポンスは、SOAP本体の最初の子要素をルート要素として持つXML文書になります。たとえば、例12-9のSOAPエンベロープが、サーバー上にあると想定します。

例12-9    SOAPレスポンス

<soap:Envelope>
    <soap:Body> 
        <ns0:result xmlns:nso="…"> 
            <ns:title>How to Win at Poker</ns:title> 
            <ns:author>John Doe</ns:author> 
        </ns0:result>
    </soap:Body>
</soap:Envelope>

例12-10は、クライアントに返送されるレスポンスを示します。Content-Typeが常にtext/xmlである点に注意してください。SOAPヘッダーや添付ファイルは、クライアントに返送されません。

例12-10    RESTレスポンス

<ns0:result xmlns:ns0="…"> 
       <ns:title>How to Win at Poker</ns:title> 
       <ns:author>John Doe</ns:author> 
</ns0:result>

REST Webサービスに対するツールのサポート

WebサービスのREST機能を有効化するオプションが、Oracle JDeveloperのJava Webサービスの作成ウィザードに用意されています。Oracle JDeveloperを使用してWebサービスのREST機能を有効化する方法の詳細は、Oracle JDeveloperのオンライン・ヘルプを参照してください。

制限事項

「REST Webサービスのアセンブル」を参照してください。

追加情報

詳細は、次を参照してください。


戻る 次へ
Oracle
Copyright © 2006 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引