SQL ファイルの実行 ファイルの実行 ファイルの実行 ファイルの実行
データベースに格納されているPL/SQLプロシージャの実行に加え、Oracle Application
ServerのPL/SQLカートリッジでは、ファイル・システムのPL/SQLソース・ファイルも
実行できます。ソース・ファイルには、ファンクションまたはプロシージャを定義しない無
名PL/SQLブロックが含まれています。この機能により、ユーザーはPL/SQL文をデータ
ベースに格納しなくても実行できます。この機能は、編集するたびにプロシージャをデータ ベースにリロードする必要がないため、PL/SQLコードのプロトタイプの作成時に役立ちま す。
この機能は、Oracle Internet Application Serverではサポートされていません。ユーザーは、
無名ブロックに名前を割り当て、データベースでストアド・プロシージャとしてコンパイル する必要があります。
Perlの移行
Perl Perl Perl
Perl の移行 の移行 の移行 の移行
この項では、Oracle Application ServerにおけるPerlカートリッジ・アプリケーションのイ ンプリメント方法と、Oracle Internet Application Serverへの移行方法について説明します。
Oracle Application Server Oracle Application Server Oracle Application Server
Oracle Application Server の の の の Perl Perl Perl Perl アプリケーション アプリケーション アプリケーション アプリケーション
Oracle Application Serverで実行可能なPerlアプリケーションには2種類あります。
■ CGIスクリプトとして実行されるPerlスクリプト
■ Perlカートリッジを使用して実行されるPerlスクリプト
CGIスクリプトとしてOracle Application Serverで実行されるPerlスクリプトは、標準の Perlインタプリタを使用します。これは、Oracle Application Serverのインストレーション とは別に、Perlの実行モジュールとしてシステムにインストールする必要があります。
Perlカートリッジを使用してOracle Application Serverで実行されるPerlスクリプトは、
カートリッジ内に含まれている、Perlバージョン5.004に基づいたPerlインタプリタを使用 します。このインタプリタは、次のうちのいずれかとして構築されています。
■ (UNIXのみ)共有オブジェクトlibperlctx.so
■ (NTのみ)共有ライブラリperlnt40.dll
Perlカートリッジは、実行時に共有オブジェクトまたはライブラリとリンクします。
カートリッジ・スクリプトと カートリッジ・スクリプトと カートリッジ・スクリプトと
カートリッジ・スクリプトと CGI CGI CGI CGI スクリプトの違い スクリプトの違い スクリプトの違い スクリプトの違い
カートリッジによるインタプリタの実行方法が違うため、Perlカートリッジ用に作成された スクリプトとCGI環境用のスクリプトは異なります。Perlカートリッジは、次のことを行い ます。
■ 永続的なインタプリタを維持し、Perlスクリプトをプリコンパイルし、キャッシュしま す(これによりパフォーマンスが向上します)。
■ stdinおよびstdoutをWRBクライアントの入出力(ブラウザ)にリダイレクトします。
■ stderrをWRB Loggerにリダイレクトします。
■ Perlインタプリタがシステム環境変数をコールすると、追加のCGI環境変数をPerlイン タプリタに返します。
■ forkコールのかわりにシステム・コールをサポートします。システム・コールは、Perl インタプリタのインプリメンテーションを変更し、子プロセスの出力をWRBクライア ントの入出力にリダイレクトします。
■ エラーのロギングをサポートします。
■ パフォーマンスの計測をサポートします。
Perlの移行
Oracle Application Serverカートリッジの 移行 3-9 CGIスクリプトとして実行されるようにOracle Application Serverで開発されたPerlスクリ プトは、変更せずにCGIスクリプトとしてOracle Internet Application Serverで実行可能で す。ただし、Oracle Application ServerのPerlカートリッジで実行されるように開発された Perlスクリプトは、Oracle Internet Application Serverで実行するためには変更する必要が ある場合があります。
Perl Perl Perl
Perl カートリッジ・スクリプトの移行 カートリッジ・スクリプトの移行 カートリッジ・スクリプトの移行 カートリッジ・スクリプトの移行
この項では、Oracle Application ServerとOracle Internet Application ServerのPerlインプ リメンテーション、およびPerlスクリプトをOracle Internet Application Serverに移行する ためのコードの変更について説明します。
Oracle Internet Application Server Oracle Internet Application Server Oracle Internet Application Server
Oracle Internet Application Server の の の の Perl Perl Perl Perl 環境 環境 環境 環境
Oracle Internet Application ServerのPerl環境は、ApacheのPerlモジュール(mod_perl)
に基づきます。Oracle Application Serverのインプリメンテーションのように、mod_perl は、サーバーに埋め込まれた永続的なPerlインタプリタと、モジュールおよびスクリプトを 1回だけロードおよびコンパイルしてキャッシュから処理するコード・キャッシング機能を 備えています。Oracle Application ServerのPerlカートリッジのように、mod_perlは
stdoutをリスナーにリダイレクトします。
mod_perlの詳細は、http://perl.apache.orgを参照してください。
インストール要件 インストール要件 インストール要件 インストール要件
PerlのDBIモジュールとDBDモジュールは、標準のOracle Internet Application Serverに は含まれていないため、別にインストールする必要があります。バージョン要件、ダウン ロード・サイトおよびインストール手順については、リリース・ノートを参照してくださ い。
Perl Perl Perl
Perl モジュール モジュール モジュール モジュール
表3-4に、Oracle Application Serverに付属しているPerlモジュールを示します。これらの モジュールは標準のOracle Internet Application Serverには含まれていません。そのため、
これらのモジュールを使用するアプリケーションをOracle Application ServerからOracle
Internet Application Serverに移行するには、http://www.cpan.orgからこれらのモジュール
を入手し、インストールする必要があります。
表 表表
表3-4 Oracle Application ServerののののPerlモジュールモジュールモジュールモジュール モジュール
モジュール モジュール
モジュール バージョンバージョンバージョンバージョン
DBI 0.79
DBD::Oracle 0.44
LWPまたはlibwww-perl 5.08
Perlの移行
Oracle Application Server Oracle Application Server Oracle Application Server
Oracle Application Server の の の の Perl Perl Perl Perl カートリッジのバリエーション カートリッジのバリエーション カートリッジのバリエーション カートリッジのバリエーション
Oracle Application ServerのPerlカートリッジとOracle Internet Application Serverの
mod_perlとでは、次の点に注意する必要があります。
名前領域の競合 名前領域の競合 名前領域の競合 名前領域の競合
Oracle Application ServerとOracle Internet Application Serverでは、コンパイル済みの Perlスクリプトはキャッシュされます。複数のPerlスクリプトをキャッシングした場合、正 しく処理しないと名前領域の競合が起こる可能性があります。この競合を回避するために、
Oracle Application ServerとOracle Internet Application ServerはいずれもPerlスクリプト のファイル名を一意のパッケージ名に変換し、その後evalを使用してコードをパッケージ にコンパイルします。その後、そのスクリプトは一意のパッケージ名のサブルーチンとして コンパイル済みの形式となり、Perlアプリケーションから使用可能になります。
Oracle Application ServerとOracle Internet Application Serverでは、パッケージ名の作成 方法が異なります。Oracle Application Serverでは、同じ名前のサブルーチンをキャッシュ できません。Oracle Internet Application Serverでは、Apache::ROOT::とURLのパスを
("/"を"::"に置換して)付加してパッケージ名を作成します。
cgi-lib.pl cgi-lib.pl cgi-lib.pl
cgi-lib.pl の使用 の使用 の使用 の使用
cgi-lib.plを使用するOracle Application ServerのPerlスクリプトは、Perlカートリッジ用 にカスタマイズされたバージョンのライブラリを使用するよう、変更する必要があります。
(cgi-lib.plの詳細は、http://cgi-lib.stanford.edu/cgi-libを参照してください。)Oracle
Internet Application Serverの場合、この必要はありません。
これらのPerlスクリプトをOracle Internet Application Serverで実行できるように変更する 方法は、リリース・ノートを参照してください。
モジュールのプリロード モジュールのプリロード モジュールのプリロード モジュールのプリロード
Oracle Application ServerのPerlスクリプトには、スクリプトのリクエストのたびに繰り返
し実行する必要がない命令が含まれていることがあります。このような命令を1回だけ実行
CGI 2.36
MD5 1.7
IO 1.15
NET 1.0502
Data-Dumper 2.07
表表表
表3-4 Oracle Application ServerののののPerlモジュール(続き)モジュール(続き)モジュール(続き)モジュール(続き)
モジュール モジュール モジュール
モジュール バージョンバージョンバージョンバージョン
LiveHTMLの移行
Oracle Application Serverカートリッジの 移行 3-11 し、各Perlスクリプトのリクエスト時には必要な部分のみ実行するようにすると、パフォー マンスが向上します。
Oracle Application Serverでは、モジュールのプリロードと初期タスクの実行に、
$ORAWEB_HOME/../cartx/common/perl/lib/perlinit.plファイルが使用されます。このファ イルは、カートリッジ・インスタンスの起動時に一度だけ実行されます。デフォルトでは、
このファイルには実行可能な文は含まれていません。このファイルは、「Perlアプリケー ションの設定」フォームの「初期化スクリプト」パラメータで指定します。
Apacheのmod_perlには、これに対応する機能はありません。
LiveHTML LiveHTML LiveHTML
LiveHTML の移行 の移行 の移行 の移行
Oracle Application Serverでは、LiveHTMLカートリッジを使用してHTMLページに
Server-Side Includes(SSI)およびスクリプトを埋め込むことにより、動的コンテンツを生 成できます。LiveHTMLアプリケーションをOracle Internet Application Serverに移行する 場合は、LiveHTMLのSSIをApacheのSSIに移行する必要があります。現在Oracle
Internet Application ServerでLiveHTMLの埋込みスクリプトに対応するのは、JavaServer
Pagesのみです。