この項では、リクエストをルーティングして複数のデータベースに接続するようにOracle REST Data Servicesを構成する方法を説明し、その他の構成情報については、その他のドキュメント・ソースを参照します。
注意:
Oracle REST Data Servicesは、構成の変更を行った後に再起動する必要があります。アプリケーションを再起動する方法はアプリケーション・サーバーのマニュアルを参照してください。
トピック:
Oracle REST Data Servicesでは、複数のデータベースに接続する機能がサポートされています。この項では、リクエストを適切なデータベースにルーティングするための異なる戦略を説明します。
トピック:
Oracle REST Data Servicesは、リクエストを適切なデータベースにルーティングするための多数の異なる戦略をサポートしています。これらの戦略はすべて、リクエストURLを調べ、URLのどこかの一致に基づいてデータベースを選択することを利用しています。それは、リクエストURLの関連する部分をまとめるのに役立ちます。次のURLについて考えます。
https://www.example.com/ords/sales/f?p=1:1
このURLは、次のセクションで構成されています。
プロトコル: https
ホスト名: www.example.com
コンテキスト・ルート: /ords
コンテキスト・ルートは、アプリケーション・サーバー上のOracle REST Data Servicesがデプロイされている場所です。
リクエスト・パス: /sales/f?p=1.1
これは、リクエストURLのコンテキスト・ルートからの相対となる部分です。
異なるアプリケーションに対しては、リクエスト・パス内の特定の接頭辞またはリクエストURL全体の特定の接頭辞に基づいてリクエストをルーティングすることが重要です。
複数データベースを構成するには、次の2つの手順を行います。
データベース接続情報の構成
どのリクエストをどのデータベースにルーティングするかの構成
最初にOracle REST Data Servicesを構成するとき、apex
という名前のデフォルトのデータベース接続を構成します。setup
コマンドを使用して追加のデータベース接続を作成できます。
ヒント:
setup
コマンドの完全なヘルプを表示するには、次のように入力します。
java -jar ords.war help setup
データベース接続を作成するには、次のように入力します。
java -jar ords.war setup --database <database name>
説明:
<database name>
データベース接続に付ける名前です。
データベースを構成するために必要な情報を入力するように求められます。追加のデータベースを設定したあと、リクエストが適切なデータベースまでルーティングされる方法のルールを定義します。
map-url
コマンドを使用してリクエストのルーティング・ルールを作成します。
ヒント:
map-url
コマンドの完全なヘルプを表示するには、次のように入力します。
java -jar ords.war help map-url
URLのリクエスト・パスの一部の接頭辞の一致に基づいてリクエストをルーティングする場合は、map-url
コマンドを次のように使用します。
java -jar ords.war map-url --type base-path --workspace-id <workspace name> <path prefix> <database name>
説明:
<workspace name>
この接続用のRESTfulサービスが定義されているOracle Application Expressワークスペースの名前です。RESTfulサービスを使用していない場合は省略できます。
<path prefix>
は、必ずリクエスト・パスの先頭にある接頭辞です。
<database name>
は、前の手順で設定したデータベース接続の名前です。
関連トピック
Oracle REST Data Servicesがexample.com
という名前のシステムに/ords
というコンテキスト・パスでデプロイされているとすると、次のルールを作成します。
java -jar ords.war map-url --type base-path --workspace-id sales_rest /sales sales_db
このルールは、https://example.com/ords/sales/...
に一致するすべてのリクエストがsales_db
というデータベース接続にルーティングされることを意味します。sales_db
データベースに定義されているsales_rest
ワークスペースで、RESTfulサービスの定義が検索されます。
前述のルールは、次のすべてのリクエストと一致します。
https://example.com/ords/sales/f?p=1:1
https://example.com/ords/sales/leads/
https://www.example.com/ords/sales/forecasting.report?month=jan (If www.example.com resolves to the same system as example.com.)
前述のルールは、次のリクエストのいずれにも一致しません。
http://example.com/ords/sales/f?p=1:1 (The protocol is wrong.) https://example.com:8080/ords/sales/f?p=1:1 (The port is wrong: 443 is default for https, but don't specify if using default.) https://example.com/ords/f?p=1:1 (Missing the /sales prefix.) https://example.com/pls/sales/leads/ (The context path is wrong.)
リクエストURLの接頭辞の一致に基づいてリクエストをルーティングする場合は、map-url
コマンドを次のように使用します。
java -jar ords.war map-url --type base-url --workspace-id <workspace name> <url prefix> <database name>
説明:
<workspace name>
この接続用のRESTfulサービスが定義されているOracle Application Expressワークスペースの名前です。RESTfulサービスを使用していない場合は省略できます。
<url prefix>
は、リクエストURLの先頭に必要な接頭辞です。
<database name>
は、データベース接続の名前です。
Oracle REST Data Servicesがexample.com
という名前のシステムに/ords
というコンテキスト・パスでデプロイされているとすると、次のルールを作成します。
java -jar ords.war map-url --type base-url --workspace-id sales_rest https://example.com/ords/sales sales_db
このルールは、https://example.com/ords/sales/...
に一致するすべてのリクエストがsales_db
というデータベース接続にルーティングされることを意味します。sales_db
データベースに定義されているsales_rest
ワークスペースで、RESTfulサービスの定義が検索されます。
前述のルールは、次のすべてのリクエストと一致します。
https://example.com/ords/sales/f?p=1:1 https://example.com/ords/sales/leads/ https://example.com/ords/sales/forecasting.report?month=jan
前述のルールは、次のリクエストのいずれにも一致しません。
http://example.com/ords/sales/f?p=1:1 (The protocol is wrong.) https://example.com:8080/ords/sales/f?p=1:1 (The port is wrong: 443 is default for https, but don't specify if using default.) https://example.com/ords/f?p=1:1 (Missing the /sales segment of the base URL.) https://example.com/pls/sales/leads/ (The context path is wrong.) https://www.example.com/ords/sales/forecasting.report?month=jan (The host name is wrong.)
Oracle REST Data Service (ORDS)は、Oracle Real Application Clusters (Oracle RAC)のFast Connection Failover (FCF)機能をサポートします。
Oracle REST Data Serviceは、WebLogic、Tomcat、GlassFishなど、サポートするすべてのApplication Server環境でUniversal Connection Pool (UCP)とともに実行されます。また、UCPはFast Connection Failoverをサポートします。FCFを有効化するには、Oracle Notification Service (ONS)が有効化されている必要があります。ONSを有効化するには、次のコード・スニペットに示すように、Oracle REST Data Services defaults.xml
構成ファイルにあるプロパティのリストにエントリを追加します。
<entry key="jdbc.enableONS">true</entry> <entry key= "jdbc.ONSConfig">nodes=racnode1:4200,racnode2:4200\nwalletfile=/oracle11/onswalletfile</entry>
<entry key="db.connectionType">customurl</entry> <entry key="db.customURL">jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER=ON)(ADDRESS_LIST= (LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=prod_scan.example.com)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=ISPRD)))|</entry>
defaults.xml
構成ファイルを更新した後、ORDSを再起動するまで変更は有効になりません。
計画外停止
: RACはインスタンス障害を検出するとFAN Downイベントを生成し、それをFCFが捕捉します。 FCFは失敗したインスタンスへのすべての接続を終了し、それ以降のすべてのリクエストを、残っているRACインスタンスに送ります。計画停止
: たとえば、データベース管理者(DBA)が、一部のメンテナンス・アクティビティを実行するためにRACインスタンスを正常にシャットダウンしたいことがあります。インスタンス・シャットダウンはFAN Planned Downイベントを生成し、それをFCFが捕捉します。 続いてFCFはすべての新しいリクエストを他のRACインスタンスに送り、現在アクティブなトランザクションを排出するか完了させます。注意:
長い間実行されているトランザクションは、強制終了が必要な場合があります。セキュリティ、キャッシュ、前処理と後処理、環境およびExcel設定の構成は、「SQL Developerを使用したOracle REST Data Servicesの管理(オプション)」を参照してください。
Oracle REST Data Servicesで使用するRESTfulサービスを開発する方法の詳細は、「Oracle REST Data Servicesアプリケーションの開発」を参照してください。