この項では、Oracle Application ExpressアプリケーションでWebサービスを使用する方法について説明します。
注意:
SOAP 1.1仕様はW3C技術ノートです。SOAPバージョン1.2仕様はW3C勧告です。
Simple Object Access Protocol(SOAP)については、次の場所を参照してください。
http://www.w3.org/TR/SOAP/
トピック:
Webサービスを使用すると、プラットフォームおよび言語に依存しない環境で、Webを介したアプリケーション間の通信が可能になります。通常のWebサービス・シナリオでは、ビジネス・アプリケーションが、HTTPプロトコルを使用して、特定のURLにあるサービスに対してリクエストを送信します。サービスは、リクエストを受信すると、これを処理し、レスポンスを返します。外部Webサービスへのコールをアプリケーション・ビルダーで開発されたアプリケーションに組み込むことができます。
通常、Webサービスは、Simple Object Access Protocol(SOAP)またはRepresentational State Transfer(REST)アーキテクチャに基づいています。SOAPは、World Wide Web Consortium (W3C)が策定した、インターネットを介したリクエストとレスポンスの送受信用の標準プロトコルです。SOAPメッセージは、サービス・プロバイダとサービス・ユーザー間でSOAPエンベロープに入れて送受信できます。RESTful Webサービスはリソース指向です。WebサービスのスコープはURI内から検出され、サービスのメソッドは使用されるHTTPメソッドによって記述されます。これらのHTTPメソッドには、GET、POST、PUT、HEADおよびDELETEなどがあります。
SOAPには、主に2つのメリットがあります。
SOAPはXMLをベースとしており、使用方法も容易です。
このプロトコルではHTTPなどの単純な転送プロトコルが使用されているため、SOAPメッセージはファイアウォールでブロックされることはありません。
ヒント:
Oracle Application ExpressをOracle Database 11g リリース1 (11.1)以上とともに実行する場合は、Webサービスを使用するためにネットワーク・サービスを有効にする必要があります。
RESTには、同様のメリットがあります。
このプロトコルではHTTPプロトコルが使用されるため、RESTメッセージもファイアウォールでブロックされません。
RESTリクエストではXMLエンベロープやSOAPエンベロープのオーバーヘッドが不要であり、入力は、通常、URI内に指定されます。
Oracle Application ExpressでWebサービスを使用するには、ウィザードを使用してWebサービス参照を作成します。Webサービス参照は、Web Services Description Language(WSDL)ドキュメントに基づくか、RESTfulスタイルに基づくか、サービスに関する情報を指定して手動で作成することができます。
トピック:
Secure Sockets Layer(SSL)は、RSA公開鍵による暗号化と対称鍵による暗号化を使用して、認証、暗号化およびデータの整合性を実現する業界標準プロトコルです。
通信する必要のあるWebサービスがSSL有効Webサービスの場合(つまり、Webサービスに対するURLにhttps
と表示される)、ウォレットを作成し、そのウォレットがOracle Application Expressによって使用されるように構成する必要があります。ウォレットは、SSLに必要な認証および署名された資格証明(秘密鍵、証明書および信頼できる証明書)の格納に使用されるパスワード保護されたコンテナです。
関連項目:
Oracle Application Express管理ガイドの「ウォレット情報の構成」
この項では、WSDLに基づいたWebサービス参照を作成する方法について説明します。
WSDLに基づいてWebサービス参照を作成する前に、WSDLの位置の特定方法を決定する必要があります。WSDLドキュメントにURLを入力して、WSDLの位置を特定します。
WSDLに基づいてWebサービス参照を作成する場合、ウィザードはWSDLを分析し、すべての必要な情報を収集して、次を含んだ有効なSOAPメッセージを作成します。
HTTP(S)を介したSOAPリクエストのポストに使用するURL
SOAP HTTPリクエストを識別するUniversal Resource Identifier(URI)
Webサービスの操作
各操作の入力パラメータ
各操作の出力パラメータ
この項では、Webサービス参照を手動で作成する方法について説明します。
手動でWebサービス参照を作成する場合、必要な情報を指定して、次を含んだ有効なSOAPリクエストを作成します。
HTTP(S)を介したSOAPリクエストのポストに使用するURL
SOAP HTTPリクエストを識別するUniversal Resource Identifier(URI)
アイテムの置換を含んだリクエストのSOAPエンベロープ
オプションで、Webサービスからのレスポンスを格納するコレクション名
この項では、RESTful Webサービス参照を作成する方法について説明します。
RESTful Webサービス参照を作成する場合、次を含むリクエストおよびレスポンスの構造に関する必要な情報を指定します。
RESTfulリクエストを識別するUniversal Resource Identifier(URI)
Webサービスのメソッドを識別するHTTPメソッド
リクエストの一部であるHTTPヘッダー(必要に応じて)
Webサービスに必要な入力のタイプ
レスポンスの書式およびレスポンス・パラメータの識別方法
RESTful Webサービス参照を作成するには、次のステップを実行します。
Webサービス参照の作成成功ページが表示されます。Webサービス参照がWebサービス参照リポジトリに追加されます。
関連項目:
『Oracle Application Express管理ガイド』のインスタンス用のプロキシ・サーバーの作成に関する項
この項では、Webサービスの入力フォームとレポートを作成する方法について説明します。
Webサービスのフォームとレポートの作成ウィザードでは、入力フォーム、送信ボタンおよび結果を表示するレポートが作成されます。WSDLまたはRESTfulスタイルWebサービスからWebサービス参照を作成した直後に、またはページを追加して、このウィザードを実行できます。
このウィザードは、Webサービスの結果が非スカラーであることが予想される場合に使用します。Amazon社のProduct API Webサービスがよい例です。このWebサービスでは、入力フォームに入力された検索基準に基づいて多くの結果が戻されます。
この項では、Webサービスのフォームを作成する方法について説明します。
Webサービスのフォームの作成ウィザードでは、フォームと送信ボタンが作成されます。WSDLから、またはRESTfulスタイルのWebサービスで、Webサービス参照を作成した後に、またはページの作成ウィザードを実行することで、このウィザードを実行できます。
このウィザードは、Webサービスの結果がスカラーであることが予想される場合に使用します。株価を調べるWebサービスがよい例です。入力は銘柄記号で、出力はスカラーの適正価格であるためです。
Webサービスをページ上でプロセスとして起動することもできます。Webサービス用のいずれかのフォームの作成ウィザードを実行すると、プロセスが作成されます。このプロセスを実行すると、リクエストがサービス・プロバイダに送信されます。その後で、レポートにリクエスト結果を表示できます。
WSDLから作成されたWebサービス参照またはRESTfulスタイルのWeb参照でWebサービス・タイプのプロセスを作成した後、サービスへの入力パラメータおよび出力パラメータの属性を変更できます。
Webサービス・プロセスを編集するには、次のステップを実行します。
関連項目:
「Webサービス履歴」では、カレント・アプリケーションのWebサービス参照の変更が、アプリケーションID、Webサービス参照名、開発者および日付ごとに表示されます。
Webサービス参照の変更履歴を表示するには、次のステップを実行します。
注意:
Webサービス参照ページに「履歴」ボタンが表示されるのは、1つ以上の参照が存在する場合のみです。
この項では、レポート・リージョンをRESTful Webサービスとして公開する方法について説明します。
トピック:
関連項目:
『Oracle Application Express SQLワークショップ・ガイド』のRESTfulサービスの使用に関する説明を参照してください。
RESTful Webサービスとしてレポート・リージョンを公開するには、次のステップを実行します。
ステップ1: インスタンス管理者は、インスタンス設定のRESTプロバイダ機能を有効化する必要があります。
ステップ2: 開発者はレポート・リージョンへのRESTfulアクセスを有効化する必要があります。
ステップ3: レポートが格納されているページでは、認証が要求されないようにする必要があります。
関連項目:
『Oracle Application Express管理ガイド』のRESTfulアクセスの有効化に関する項
レポート・リージョンへのRESTfulアクセスを有効化するには、認証が不要になるようにページを公開し、レポートをRESTfulアクセスのために有効化する必要があります。
ヒント:
Oracle Application ExpressインスタンスへのRESTfulアクセスを有効化するには、『Oracle Application Express管理ガイド』のRESTfulアクセスの有効化に関する説明を参照してください。
レポート・リージョンへのRESTfulアクセスを有効化するには、次のステップを実行します。
関連項目:
『Oracle Application Express管理ガイド』のRESTfulアクセスの有効化に関する項
レポートをRESTfulアクセス用に有効化すると、RESTful Webサービスに渡すエンドポイントURLおよびパラメータを知ることが必要となります。エンドポイントURLは、Oracle Application Expressのこのインスタンスへのアクセスに使用するURLと似ており、リソースのapex_rest.getReportが後に続きます。次に例を示します。
http://apex.oracle.com/apex/apex_rest.getReport
ヒント:
クライアントがPOSTメソッドを使用する場合、HTTPヘッダーContent-Type
をapplication/x-www-form-urlencoded
の値に設定する必要があります。
名前 | デフォルト | 必須 | 説明 |
---|---|---|---|
|
|
はい |
RESTful有効レポートが格納されているアプリケーションの数値IDまたは別名。 |
|
|
はい |
RESTful有効レポートが格納されているページの数値IDまたは別名。 |
|
|
はい |
RESTful有効レポートの静的ID属性。 |
|
|
いいえ |
レポート・パラメータの値をカンマ区切りリストで送信できます(例: CLERK,10) |
|
|
いいえ |
渡された言語に基づき、レポートを実行する前にNLS環境変数を設定します(例: de) |
|
|
はい |
XMLまたはJSONのいずれがクライアントに戻されるかを決定します。有効な値のドメインはxml、jsonです。 |
また、apex_restサービスには、アプリケーションIDまたは別名を指定して、RESTful有効レポートを検出できるようにする操作もあります。レスポンスは、RESTful Webサービスによってアクセス可能なすべてのレポートを記述したXMLドキュメントです。このサービスは、次のようなURLを使用して起動します。
http://apex.oracle.com/apex/apex_rest.getServiceDescription?app=691
このURLで、691はアプリケーションの数値IDです。戻されるドキュメントは次のようになります。
<?xml version="1.0"?> <urn:getServiceDescriptionResponse xmlns:urn="urn:oasis:names:tc:wsrp:v1:types"> <urn:requiresRegistration>false</urn:requiresRegistration> <urn:offeredPortlets> <urn:PortletDescription> <urn:portletHandle>employees</urn:portletHandle> <urn:markupTypes> <urn:mimeType>application/xml</urn:mimeType> <urn:mimeType>application/json</urn:mimeType> </urn:markupTypes> <urn:groupID>1</urn:groupID> <urn:description/> <urn:title>EMP</urn:title> <urn:keywords> <urn:value>P1_JOB</urn:value> <urn:value>P1_DEPTNO</urn:value> </urn:keywords> </urn:PortletDescription> </urn:offeredPortlets> </urn:getServiceDescriptionResponse
portletHandle
はレポート・リージョンの静的IDか、RESTリクエストのreportid
パラメータにマップされます。groupID
は、RESTリクエストのページIDまたはページ・パラメータにマップされます。さらに、SQLレポートによって使用されるすべてのパラメータはkeywords
ノードの子としてリストされます。