• 検索結果がありません。

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のみです。

SSI

関連したドキュメント