11 プラグインによるORDS機能の拡張
この章では、ORDSプラグイン・フレームワークの使用について説明し、例を示します。
ORDSには、お客様独自のカスタム機能をORDS Webアプリケーションに追加できるプラグイン・フレームワークがあります。プラグインは、jarファイルをlib/extディレクトリに配置することでORDSランタイムに追加できます。ORDSディストリビューションには、サンプル・プラグインのソースが含まれています。それらのプラグイン・サンプルは、ビルド・プロセスの自動化に使用するソフトウェア・ツールであるApache antを使用してビルドできます。
11.1 プラグイン・デモンストレーション・サンプル
この項では、プラグイン・デモンストレーション・サンプルを見つけてビルドする方法を示します。
プラグインデモンストレーション・サンプルは、examples/plugins/plugin-demoの場所にあります。これには、HttpServlet (実行時にデータベース接続が挿入される)のソースが含まれでいます。このサーブレットでは、そのJDBCデータベース接続を使用してデータベースで問合せが実行され、実行時にレスポンスが返されます。
- ディレクトリを
examples/plugins/plugin-demoに変更します。 antを実行してexamples/plugins/plugin-demo/built/plugin-demo.jarファイルをビルドしますplugin-demo.jarをORDSディストリビューションのlib/extディレクトリにコピーし、ORDSインスタンスを起動します。- 次のURLパターンを使用してサーブレットを起動します:
http://server/ords/schema/demos/plugin?who=somebody- たとえば、
http://localhost:8080/ORDS/hr/demos/plugin?who=scottのようにします。ここでは、ORDSはデフォルト・プールを使用して構成されており、HRはそのデータベース内のREST対応スキーマの別名です。
- たとえば、
関連項目:
11.2 プラグインJavascript
ORDSでは、リクエスト時にORDSインスタンスで実行可能なJavaScriptをお客様が定義できるようにするためのサービス・フレームワークとして、JavaScriptが提供されています。これは、アプリケーションの開発に使用される従来のRESTfulサービスの概念に似ています。このフレームワークは、モジュール、テンプレートおよびハンドラというアーキテクチャに基づいています。「Oracle REST Data Servicesアプリケーションの開発」を参照してください。データベースでモジュール、テンプレートおよびハンドラを定義するのではなく、それらをプラグインとしてXML表現において指定し、そのXML表現がlib/ext/ディレクトリから読み取られます。
plugin-javascriptサンプルが含まれており、そのソースはexamples/plugins/plugin-javascriptディレクトリにあります。この項では、そのプラグインの主要要素について説明します。
ノート:
ORDSのJavaScriptプラグイン機能が動作するには、JSコンポーネント付属GraalVMが必要です。このサンプルには、JavaScriptソースのインライン定義と外部定義が多数含まれています。外部JavaScriptソースへの参照は、クラスパスにあるファイルに対するものです。
| ファイル | 説明 |
|---|---|
build.xml |
antビルド・プロジェクト。
|
src/js/example.js |
外部JavaScriptファイルのサンプル。ここでの外部とは、XMLリソース・モジュール・ファイル内で定義されているのではなく参照されているということです。 |
src/META-INF/manifest.json |
XMLリソース・モジュールを登録するためにORDSで起動時に読み取る、プラグイン構成メタデータ・ファイル。 |
src/META-ING/modules/javascript.xml |
テンプレートとハンドラを多数含むサンプル・モジュールを定義する、XMLリソース・モジュール・ファイル。 |
- ディレクトリを
examples/plugins/plugin-javascriptに変更します。 antを実行してexamples/plugins/plugin-javascript/built/plugin-javascript.jarファイルをビルドします。plugin-javascript.jarファイルをORDSディストリビューションのlib/extディレクトリにコピーし、サポートされているJSコンポーネント付属GraalVMを使用してORDSインスタンスを起動します。- 次のURLパターンを使用して定義済ハンドラを起動します:
http://server/ords/javascript-examples/{template pattern}- たとえば、
http://localhost:8080/ords/javascript-examples/nowです。この場合は、現在の時間が返されます。ノート:
ORDS RESTサービスとは異なり、JavaScript as a Service実装ではデータベース接続が不要であり使用されません。
- たとえば、
11.2.1 サンプル・サービスの用途と使用
この項では、サンプル・サービスの用途と使用について説明します。
| 用途 | リクエスト | アクション | レスポンス |
|---|---|---|---|
現在のUTC時間をapplication/jsonとして返すインラインJavascriptのサンプル。
|
/ords/javascript-examples/now |
GET |
{ "now":"2023-08-31T16:08:55.471Z" } |
| パラメータを受け入れるインラインJavascriptのサンプル。 | /ords/javascript-examples/future?days=7 |
GET |
{ "now":"2023-08-31T16:08:55.471Z", "future":"2023-09-07T16:08:55.471Z", "days":7 } |
| 様々なソースからの各種パラメータを受け入れるインラインJavascriptのサンプル。 |
|
GET |
|
| パラメータを受け入れる外部Javascriptファイルのサンプル。 | /ords/javascript-examples/fibonacci?length=50 |
GET | {fib: 12586269025} |
暗黙的パラメータcontent_typeおよびbody_textを使用してリクエスト値を取得し、ords_responseを使用してHttpServletResponseでのsetStatusおよびsetContentTypeを呼び出すインラインJavascriptのサンプル。
|
|
POST |
|