14 プラグインによるORDS機能の拡張
この章では、ORDSプラグイン・フレームワークの使用について説明し、例を示します。
ORDSには、お客様独自のカスタム機能をORDS Webアプリケーションに追加できるプラグイン・フレームワークがあります。プラグインは、jarファイルをlib/ext
ディレクトリに配置することでORDSランタイムに追加できます。ORDSディストリビューションには、サンプル・プラグインのソースが含まれています。それらのプラグイン・サンプルは、ビルド・プロセスの自動化に使用するソフトウェア・ツールであるApache ant
を使用してビルドできます。
- プラグイン・デモンストレーション・サンプル
この項では、プラグイン・デモンストレーション・サンプルを見つけてビルドする方法を示します。 - Graal JavaScriptコンポーネントの埋込み
- プラグインJavascript
14.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対応スキーマの別名です。
- たとえば、
関連項目:
親トピック: プラグインによるORDS機能の拡張
14.2 Graal JavaScriptコンポーネントの埋込み
JDKバージョン21のGraalVMで実行されているORDSでJavaScriptをゲスト言語として実行できるようにするには、JavaScriptコンポーネントをプラグインとして埋め込む必要があります。
- GraalVMポリグロットAPI
- JavaScript言語
<dependency>
<groupId>org.graalvm.polyglot</groupId>
<artifactId>polyglot</artifactId>
<version>${graalvm.version}</version>
</dependency>
<dependency>
<groupId>org.graalvm.polyglot</groupId>
<!-- Language: js -->
<artifactId>js</artifactId>
<version>${graalvm.version}</version>
<type>pom</type>
</dependency>
埋込み言語への依存性設定の詳細は、GraalVMリファレンス・マニュアルの言語の埋込みの項を参照してください。必要なアーティファクトをダウロードしたら、実行時にクラスパスに含められるようにlib/ext/
ディレクトリに配置します。
関連項目:
言語の埋込み親トピック: プラグインによるORDS機能の拡張
14.3 プラグイン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実装ではデータベース接続が不要であり使用されません。
- たとえば、
- サービスの用途と使用
この項では、サンプル・サービスの用途と使用について説明します。
親トピック: プラグインによるORDS機能の拡張
14.3.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 |
|
親トピック: プラグインJavascript