Oracle APEXでのWebサービスの使用
Webサービスを使用すると、アプリケーションはWeb上でプラットフォームおよび言語に依存しない環境で相互に通信できます。典型的なWebサービスのシナリオでは、ビジネス・アプリケーションでHTTPプロトコルを使用して、指定したURLのサービスにリクエストを送信することがあります。サービスは、リクエストを受信すると、これを処理し、レスポンスを返します。通常、Webサービスは、シンプル・オブジェクト・アクセス・プロトコル(SOAP)またはRepresentational State Transfer (REST)アーキテクチャに基づいています。
APEX開発者は、RESTデータ・ソース(旧Webソース・モジュール)を使用して、様々なRESTエンドポイントのデータ・サービスに宣言的にアクセスし、読取りと書込みの両方の操作を実行できます。リモートRESTデータのスマート・キャッシュ・ルールのサポートに加えて、Oracle APEXには、業界標準のSQLを使用してRESTデータ・ソースの結果を直接操作する独自の機能もあります。
APEX_WEB_SERVICE
パッケージを使用すると、PL/SQLを使用できるアプリケーション内の任意の場所でWebサービスと対話できるため、APEXと他のシステムを統合できます。このパッケージには、SOAPスタイルとRESTfulスタイルの両方のWebサービスをコールし、OAuth 2.0フローの実装を簡素化するプロシージャおよびファンクションが含まれています。
Autonomous DatabaseでAPEXのWebサービスを使用する場合、次に注意してください:
-
すべてのWebサービスは保護されている必要があります。デフォルト・ポート(443)ではHTTPSサービスのみがサポートされます。IPアドレスを介した接続は許可されません。APEXインスタンスは、90を超える最も一般的な信頼できるルート証明書と中間SSL証明書を含むOracle Walletで事前構成されています。
APEX_WEB_SERVICE
パッケージは、アプリケーション開発者による追加構成なしでこのOracle Walletを自動的に利用します。 -
各Autonomous Databaseインスタンスは、Oracle APEXからパブリック・エンドポイントへのアウトバウンドWebサービス・コールを許可するネットワーク・アクセス制御リスト(ACL)で事前構成されています。
-
プライベート・サブネット内またはオンプレミス・ファイアウォールの背後にあるエンドポイントに到達するには、UTL_HTTPを使用したプライベート・ホストへのHTTPリクエストの送信の項にある前提条件を満たしていることを確認し、目的のホストに次のアクセス制御リストを追加します:
BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.example.com', ace => XS$ACE_TYPE( privilege_list => XS$NAME_LIST('http'), principal_name => APEX_APPLICATION.g_flow_schema_owner, principal_type => XS_ACL.ptype_db), private_target => true); END; /
ノート
ROUTE_OUTBOUND_CONNECTIONS
データベース・プロパティにPRIVATE_ENDPOINT
を設定する場合、APEXからアクセスするために個々のホストにアクセス制御リストを定義する必要はありません。プライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化 -
APEXインスタンスにアウトバウンドWebプロキシは必要ありません。APIコール・レベルまたはアプリケーション・レベルでのWebプロキシの使用を試行すると、
ORA-01031: insufficient privileges
というエラーが表示されます。 -
24時間のローリング期間のAPEXワークスペースごとに、50,000のアウトバウンドWebサービス・リクエストのデフォルト制限があります。アウトバウンドWebサービス・コール数の制限に達すると、後続のリクエストで次のSQL例外が発生し、リクエストはブロックされます:
ORA-20001: You have exceeded the maximum number of web service requests per workspace. Please contact your administrator.
アウトバウンドWebサービス・リクエストのデフォルト制限は、
MAX_WEBSERVICE_REQUESTS
インスタンス・パラメータの値を設定するか、APEX管理サービスの「最大Webサービス・リクエスト」属性を更新することで増減できます。たとえば、制限を250,000に変更するには、SQLクライアントを使用してADMINとしてデータベースに接続し、次を実行します:BEGIN APEX_INSTANCE_ADMIN.SET_PARAMETER('MAX_WEBSERVICE_REQUESTS', '250000'); COMMIT; END; /
さらに学習するには、次のURLを参照してください。
-
Oracle APEX APIリファレンスのAPEX_WEB_SERVICE
-
『Oracle APEXアプリケーション・ビルダー・ユーザーズ・ガイド』のRESTデータ・ソースの管理