oracle internet application server 8iotndnld.oracle.co.jp/.../ias/10/general/ias_10_mig.pdforacle...

48
Oracle Internet Application Server 8i Oracle Application Server からの移行 リリース 1.0 2000 9 部品番号 : J02072-01

Upload: voliem

Post on 11-Apr-2018

226 views

Category:

Documents


2 download

TRANSCRIPT

Oracle Internet Application Server 8i

Oracle Application Serverからの移行

リリース 1.0

2000年 9月

部品番号 : J02072-01

Oracle Internet Application Server 8i Oracle Application Serverからの移行 , リリース 1.0

部品番号 : J02072-01

原本名:Oracle Internet Application Server 8i Migrating from Oracle Application Server, Release 1.0.1

原本部品番号:A83709-02

原本著者:Sanjay Singh

原本協力者:Kai Li, Beth Roeser, Susan Gordon

Copyright © 1999, Oracle Corporation. All rights reserved.

Printed in Japan.

制限付権利の説明

プログラム(ソフトウェアおよびドキュメントを含む)の使用、複製または開示は、オラクル社との契約に記された制約条件に従うものとします。著作権、特許権およびその他の知的財産権に関する法律により保護されています。

当プログラムのリバース・エンジニアリング等は禁止されております。

このドキュメントの情報は、予告なしに変更されることがあります。オラクル社は本ドキュメントの無謬性を保証しません。

* オラクル社とは、Oracle Corporation(米国オラクル)または日本オラクル株式会社(日本オラクル)を指します。

危険な用途への使用について

オラクル社製品は、原子力、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーションを用途として開発されておりません。オラクル社製品を上述のようなアプリケーションに使用することについての安全確保は、顧客各位の責任と費用により行ってください。万一かかる用途での使用によりクレームや損害が発生いたしましても、日本オラクル株式会社と開発元である Oracle Corporation(米国オラクル)およびその関連会社は一切責任を負いかねます。 当プログラムを米国国防総省の米国政府機関に提供する際には、『Restricted Rights』と共に提供してください。この場合次の Noticeが適用されます。

Restricted Rights Notice

Programs delivered subject to the DOD FAR Supplement are "commercial computer software" and use, duplication, and disclosure of the Programs, including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal Acquisition Regulations are "restricted computer software" and use, duplication, and disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065.

このドキュメントに記載されているその他の会社名および製品名は、あくまでその製品および会社を識別する目的にのみ使用されており、それぞれの所有者の商標または登録商標です。

目次目次目次目次

はじめにはじめにはじめにはじめに .......................................................................................................................................................................... vii

対象読者 .................................................................................................................................................................... vii

関連ドキュメント .................................................................................................................................................... viiマニュアルの表記規則 ............................................................................................................................................ vii

1 Oracle Internet Application Serverの概要の概要の概要の概要Oracle Internet Application Serverとはとはとはとは ........................................................................................................... 1-2

Oracle Internet Application Serverのコンポーネントの移行オプションのコンポーネントの移行オプションのコンポーネントの移行オプションのコンポーネントの移行オプション .................................................. 1-2エンタープライズ・サービスの移行エンタープライズ・サービスの移行エンタープライズ・サービスの移行エンタープライズ・サービスの移行 ................................................................................................................... 1-3概要 ................................................................................................................................................................... 1-3

スケーラビリティ ........................................................................................................................................... 1-3

可用性とフォールト・トレラント ............................................................................................................... 1-4

ロード・バランシング ................................................................................................................................... 1-4

管理 ................................................................................................................................................................... 1-5

セキュリティ ................................................................................................................................................... 1-5

2 JWebアプリケーションからアプリケーションからアプリケーションからアプリケーションから Apache JServへの移行への移行への移行への移行Apache JServとはとはとはとは ................................................................................................................................................. 2-2

Oracle Application Serverの JServletから Apache JServサーブレットへの移行 .............................. 2-2

JWebとととと Apache JServ 1.1の違いの違いの違いの違い ....................................................................................................................... 2-2アーキテクチャ ............................................................................................................................................... 2-2

ライフ・サイクル ........................................................................................................................................... 2-6

スレッド ........................................................................................................................................................... 2-7

セッション ....................................................................................................................................................... 2-7

iii

HTMLページの動的コンテンツ生成 .......................................................................................................... 2-8

JWebアプリケーションのコードの変更アプリケーションのコードの変更アプリケーションのコードの変更アプリケーションのコードの変更 ............................................................................................................ 2-8セッション制御 ............................................................................................................................................... 2-8

アプリケーション・スレッド ....................................................................................................................... 2-9

ロギング ........................................................................................................................................................... 2-9

3 Oracle Application Serverカートリッジの移行カートリッジの移行カートリッジの移行カートリッジの移行

カートリッジ・タイプと対応するカートリッジ・タイプと対応するカートリッジ・タイプと対応するカートリッジ・タイプと対応する Apacheモジュールモジュールモジュールモジュール ................................................................................... 3-2PL/SQLの移行の移行の移行の移行 ....................................................................................................................................................... 3-2ファイルのアップロードおよびダウンロード ........................................................................................... 3-3

アップロード・ファイルのドキュメント形式 ........................................................................................... 3-4

oas2iasツールの使用方法 ............................................................................................................................. 3-5

カスタム認証 ................................................................................................................................................... 3-7

位置パラメータの受渡し方式 ....................................................................................................................... 3-7

SQLファイルの実行 ...................................................................................................................................... 3-7

Perlの移行の移行の移行の移行 .............................................................................................................................................................. 3-8Oracle Application Serverの Perlアプリケーション ............................................................................... 3-8

Perlカートリッジ・スクリプトの移行 ....................................................................................................... 3-9

Oracle Application Serverの Perlカートリッジのバリエーション ..................................................... 3-10

LiveHTMLの移行の移行の移行の移行 ............................................................................................................................................... 3-11SSI ................................................................................................................................................................... 3-11

スクリプト ..................................................................................................................................................... 3-12

4 EJB、、、、ECO/Javaおよびおよびおよびおよび JCORBAアプリケーションの移行アプリケーションの移行アプリケーションの移行アプリケーションの移行

EJBの移行の移行の移行の移行 ............................................................................................................................................................... 4-2配置記述子 ....................................................................................................................................................... 4-2

クライアント・コード ................................................................................................................................... 4-3

ロギング(サーバー・コード) ..................................................................................................................... 4-3

ECO/Javaの移行の移行の移行の移行 .................................................................................................................................................... 4-4リモート・インタフェース ........................................................................................................................... 4-4

ホーム・インタフェース ............................................................................................................................... 4-4

インプリメンテーション・クラス ............................................................................................................... 4-4

JCORBAからからからから EJBへの移行への移行への移行への移行 ................................................................................................................................. 4-5リモート・インタフェース ........................................................................................................................... 4-5

ホーム・インタフェース ............................................................................................................................... 4-5

iv

オブジェクトのインプリメンテーション ................................................................................................... 4-5

パラメータのシリアライズ化 ....................................................................................................................... 4-6

索引索引索引索引

v

vi

はじめにはじめにはじめにはじめに

対象読者対象読者対象読者対象読者このマニュアルは、アプリケーション設計者、開発者および Oracle Application ServerのWebサイトのメンテナンス担当者を対象としています。

関連ドキュメント関連ドキュメント関連ドキュメント関連ドキュメント� 『Oracle Internet Application Server 8i Oracle Application Serverからの移行』

� 『Oracle Internet Application Server 8i 概要』

� 『Oracle Internet Application Server 8i インストレーション・ガイド』

� 『Oracle Internet Application Server 8i mod_plsqlの使用』

マニュアルの表記規則マニュアルの表記規則マニュアルの表記規則マニュアルの表記規則次に、このマニュアルで使用される表記規則を示します。

表記規則表記規則表記規則表記規則 例例例例 説明説明説明説明

太字 tnsnames.orarunInstallerwww.oracle.com

ファイル名、ユーティリティ、プロセス、および URLを表します。

斜体 file1 テキスト内の可変部分を表します。このプレースホルダを特定の値や文字列に置き換えます。

山カッコ <filename> コード内の可変部分を表します。このプレースホルダを特定の値や文字列に置き換えます。

vii

固定幅フォント owsctl start wrb 表示どおりに入力するテキスト。ファンクション(関数)にも使用します。

大カッコ [-c string]

[on|off]

オプション項目を表します。

オプション項目の選択肢がそれぞれ垂直バー(|)で区切って示され、その中のいずれか 1つを選択できます。

中カッコ {yes|no} 必須項目の選択肢が垂直バー(|)で区切って示されます。

省略記号 n,... その前の項目を何回でも繰り返すことができることを表します。

表記規則表記規則表記規則表記規則 例例例例 説明説明説明説明

viii

Oracle Internet Applicat

1

Oracle Internet Application Serverの概要の概要の概要の概要

この章では、Oracle Internet Application Serverの特徴を、Oracle Application Serverと比較して説明します。また、Oracle Application Serverのコンポーネントと、Oracle Internet Application Serverにおける同等の機能のマッピングも示します。

内容内容内容内容� Oracle Internet Application Serverとは

� Oracle Internet Application Serverのコンポーネントの 移行オプション

� エンタープライズ・サービスの移行

ion Serverの概要 1-1

Oracle Internet Application Serverとは

Oracle Internet Application ServerOracle Internet Application ServerOracle Internet Application ServerOracle Internet Application ServerとはとはとはとはOracle Internet Application Serverは中間層のアプリケーション・サーバーで、Web、およびデータベース中心のアプリケーションが単一のデータベース・インスタンスの制限を超えたスケーラビリティを実現するよう設計されています。この製品により、次のものが提供されます。

� 複数の運用オプションを備えた運用モデル。

� 様々なWebコンテンツの生成手段。PL/SQLと PSP、Javaサーブレットと JSP、およびPerlが含まれます。

� Java、J2EEおよび CORBAなど、既存(および展開中)の標準との規格合致性。

Oracle Internet Application ServerOracle Internet Application ServerOracle Internet Application ServerOracle Internet Application Serverのコンポーネントののコンポーネントののコンポーネントののコンポーネントの移行オプション移行オプション移行オプション移行オプション

次の表に、Oracle Application Serverのコンポーネントと、それぞれに対応する Oracle Internet Application Serverの機能を示します。

表表表表 1-1 アプリケーション・モデルの比較アプリケーション・モデルの比較アプリケーション・モデルの比較アプリケーション・モデルの比較

Oracle Application Server Oracle Internet Application Server

JWebアプリケーション Apache JServアプリケーション

JServletアプリケーション Apache JServアプリケーション

LiveHTMLアプリケーション Apache SSIおよび OracleJSPアプリケーション

Perlアプリケーション mod_perlアプリケーション

JCORBAアプリケーション Oracle8i JVM EJBアプリケーション

ECO/Javaアプリケーション Oracle8i JVM EJBアプリケーション

EJBアプリケーション Oracle8i JVM EJBアプリケーション

CWebアプリケーション (現在対応する機能なし)

PL/SQLアプリケーション mod_plsqlアプリケーション

1-2 Oracle Internet Application Server 8i Oracle Application Serverからの移行

エンタープライズ・サービスの移行

エンタープライズ・サービスの移行エンタープライズ・サービスの移行エンタープライズ・サービスの移行エンタープライズ・サービスの移行この項では、エンタープライズ・サービスについて、管理者および開発者に関係するWebサイトの特徴を説明します。Oracle Application Serverにおけるスケーラビリティ、可用性、フォールト・トレラント、ロード・バランシングおよび管理について説明し、さらにご使用のサイトを Oracle Internet Application Serverに移行するとどのように機能するかを示します。

概要概要概要概要Oracle Application Serverは、HTTPレイヤー、サーバー・レイヤーおよびアプリケーション・レイヤーで構成されます。HTTPリスナー・レイヤーは、HTTPサーバーとディスパッチャで構成されています。サーバー・レイヤーは、これらのアプリケーションを管理するための共通のコンポーネント・セットを提供します。これらのコンポーネントには、ロード・バランシング、ロギング、自動障害リカバリ、セキュリティ、ディレクトリおよびトランザクション・コンポーネントが含まれます。アプリケーション・レイヤーはアプリケーション、カートリッジおよびカートリッジ・サーバーで構成されています。リクエストを受信すると、ディスパッチャはそのリクエストをアプリケーション・サーバー・レイヤーにルーティングします。使用可能なカートリッジ・インスタンスが存在する場合はそのインスタンスがリクエストを処理し、存在しない場合は新しいインスタンスが作成されます。

同様に、Oracle Internet Application Serverでは、Oracle HTTP Serverとmod_jservが同じプロセス内で実行されます。Apache JServは純粋な Javaサーブレット・エンジンで、別のプロセスで実行されます。Oracle Application Serverのディスパッチャと同じように、Apache Webサーバーはmod_jservを使用してリクエストを Apache JServプロセスにルーティングします。

スケーラビリティスケーラビリティスケーラビリティスケーラビリティOracle Application Serverは、シングル・ノードの環境でもマルチ・ノードの環境でも運用できます。同様に、Oracle HTTP Serverと Apache JServも、シングル・ノード環境またはマルチ・ノード環境で設定可能です。

HTTPHTTPHTTPHTTPサーバーサーバーサーバーサーバーOracle Application Serverでは、各リスナーは、最大数の同時接続を処理できます。この数値は、オペレーティング・システムの制限によって異なります。1つのサイト上でリクエストの負荷を分散するには、複数のWebリスナーを作成して、それぞれが別の TCPポートをリスニングするようにします。

UNIXプラットフォームの場合、Oracle HTTP Serverは起動時に子プロセスのプールを作成し、受信クライアント・リクエストの処理に使用します。リクエストが処理されるにつれて負荷が増加すると、サーバーは、後続のリクエスト用に新しい予備のプロセスを生成します。プールの初期サイズと最大サイズ、および予備のサーバー・プロセスの最小数と最大数は、それぞれ StartServers、MaxClients、MinSpareServersおよびMaxSpareServersディレクティブで設定されます。

Oracle Internet Application Serverの概要 1-3

エンタープライズ・サービスの移行

Windows NTの場合、Oracle HTTP Serverはマルチスレッド・プロセスとして稼動します。同時接続数は、ThreadsPerChildディレクティブで設定されます。これは、UNIXのStartServersおよび MaxClientsディレクティブに対応するものです。

Oracle HTTP Serverは、1つのホスト上で複数のインスタンスを実行して各インスタンスが異なる IPアドレスと TCPポートの組合せを使用するように設定することも、もしくは異なるホストで実行することも可能です。

サーブレット・エンジンサーブレット・エンジンサーブレット・エンジンサーブレット・エンジンOracle Application Serverでは、リクエスト数が増加すると、システム内に新しいカートリッジ・サーバーとインスタンスが作成されます。

Oracle HTTP Serverでは、サーバーからのリクエストをmod_jservが受信し、そのリクエストをサーブレット・エンジンである Apache JServにルーティングします。

Apache JServは、サーブレットをすべてサーブレット・ゾーン内で実行します。これにより、セキュリティの強化、複数の JVMの実行が可能、および複数の仮想ホストのサポートなどの利点があります。

可用性とフォールト・トレラント可用性とフォールト・トレラント可用性とフォールト・トレラント可用性とフォールト・トレラントリスナーまたはカートリッジ・サーバーなどのコンポーネントで障害が発生した場合、Oracle Application Serverは障害を検出してそのコンポーネントを再起動し、可能であれば保存済みの状態情報を復元します。

Oracle HTTP Serverでは、複数のサーバー・ホストまたは複数の JServホストが存在する場合にそのうちの 1つが停止しても、1つのサーバーと 1つの JServが稼動していればシステムは稼動し続けます。判別可能な最新のステータスが各 JServごとに保持され、すべてのOracle HTTP Serverのインスタンスがすべての Apache JServにリクエストをルーティングできます。

Apacheの場合、障害の発生した Apache Webサーバーまたは Apache JServインスタンスの再起動は、管理者が行う必要があります。

ロード・バランシングロード・バランシングロード・バランシングロード・バランシングOracle Application Serverでは、優先順位ベースおよび最小 /最大ベースの 2種類のロード・バランシング方式に基づいて、システム・リソースの割当て、およびリクエストの優先順位決定が行われます。

優先順位モードでは、アプリケーションおよびカートリッジに設定した優先順位レベルに基づいて、システムによってリソースが自動的に割り当てられます。プロセス数、スレッド数およびインスタンス数は、そのアプリケーションおよびコンポーネントのリクエスト負荷と優先順位レベルに基づいて自動的に決定されます。

最小 /最大モードでは、それぞれのカートリッジのインスタンス数、スレッド数およびクライアントのパラメータ数をカートリッジ・レベルで設定します。

1-4 Oracle Internet Application Server 8i Oracle Application Serverからの移行

エンタープライズ・サービスの移行

Oracle HTTP Serverでは、JServホストの数、ホストの比率およびこれらのホストの論理セットを設定ファイルで定義します。システムは、受信リクエストを JServインスタンスに割り当てます。JServインスタンスの 1つが失敗すると、リクエストは論理セットの他のメンバーにリダイレクトされます。

管理管理管理管理Oracle Application Serverでは、サイト、リスナーおよびアプリケーションの管理とモニター用に、GUIツールや組込みサポートが用意されています。Oracle Application Server Managerツールの設定データは、様々な設定ファイルに格納されています。

Oracle HTTP Serverでは、サイトの管理およびメンテナンスを行うには、Apacheサーバーおよび Apache JServ設定ファイルを編集します。これらの設定ファイルの数とタイプには、Oracle Application Serverの場合と大きな違いがあります。

表表表表 1-2 設定ファイル設定ファイル設定ファイル設定ファイル

セキュリティセキュリティセキュリティセキュリティOracle Application Serverでは、ユーザー認証、ホスト認証、SSLおよび Oracle Wallet Managerについて、様々なセキュリティ方式をサポートしています。

Oracle Internet Application Serverでは、Apache JServはファイアウォールの内側で実行可能です(AJPプロトコルは 1つの TCPポートのみ使用します)。Oracle Internet Application Serverは ACLを使用し(ACLを使用するホストからのみ AJPリクエストを受信)、SSLをサポートしています。

Oracle Application Serverリスナーリスナーリスナーリスナー Oracle HTTPサーバー(サーバー(サーバー(サーバー(Apache))))

owl.cfg - 登録済みのリスナーとそれぞれの設定のリスト。

httpd.conf - 主要な(または唯一の)サーバー全体の設定ファイル。

(ファイルの場所と変換情報を srm.conf、セキュリティ情報を access.confでそれぞれ管理するか、またはすべてのディレクティブを 1つのファイルで管理するかを選択可能。)

site.app - サイトの設定ファイル。 (対応する機能なし)

svlistenerName.cfg - リスナーの設定ファイル。(対応する機能なし)

wrb.app - プロセスおよびカートリッジの設定ファイル。

(対応する機能なし)

resources.ora - ORBの設定ファイル。 (対応する機能なし)

Oracle Internet Application Serverの概要 1-5

エンタープライズ・サービスの移行

1-6 Oracle Internet Application Server 8i Oracle Application Serverからの移行

JWebアプリケーションから Apach

2

JWebアプリケーションからアプリケーションからアプリケーションからアプリケーションから

Apache JServへの移行への移行への移行への移行

この章では、Oracle Application Serverの JWebアプリケーションを Oracle Internet Application Serverの Apache JServに移行する方法について説明します。JWebと JServの機能の違いについて説明し、さらに移行のコード例を示します。

内容内容内容内容� Apache JServとは

� JWebと Apache JServ 1.1の違い

� JWebアプリケーションのコードの変更

e JServへの移行 2-1

Apache JServとは

Apache JServApache JServApache JServApache JServとはとはとはとはOracle Internet Application Serverでは、クライアントからの HTTPリクエストの処理にOracle HTTP Serverを使用します。Apache JServ 1.1は、Servlet 2.0準拠のサーブレット・エンジンで、Oracle Internet Application Serverに同梱されています。Oracle Application Server 4.xで運用している JWebアプリケーションが存在し、Oracle Internet Application Serverに移行する場合は、JWebアプリケーションを Servlet 2.0仕様に移行する必要があります。

Oracle Application ServerOracle Application ServerOracle Application ServerOracle Application Serverのののの JServletJServletJServletJServletからからからから ApacheApacheApacheApache JServ JServ JServ JServサーブレットへの移行サーブレットへの移行サーブレットへの移行サーブレットへの移行Apache JServ 1.1は、Apache 1.3.x、JDK 1.1以降および JSDK 2.0と互換性があります。Oracle Application Server 4.0.8の JServletは、Servlet 2.1の仕様に準拠しています。JServletを Apacheに移行する場合は、2.0と 2.1準拠のサーブレット間には違いがあるため、Oracle8i JVMサーブレットへの移行をお薦めします。

Apache JServの詳細は、 http://java.apache.orgを参照してください。サーブレットの仕様の詳細は、http://java.sun.comを参照してください。

JJJJWebWebWebWebとととと Apache JServ 1.1Apache JServ 1.1Apache JServ 1.1Apache JServ 1.1の違いの違いの違いの違いこの項では、JWebと Apache JServ 1.1アプリケーションの違いについて説明します。

アーキテクチャアーキテクチャアーキテクチャアーキテクチャJWebアプリケーションは、Oracle Application Serverのカートリッジ・インフラストラクチャ内で実行されます。一方、Apache JServ 1.1のサーブレットは、Oracle HTTP Serverおよび JVM内で稼動します。

2-2 Oracle Internet Application Server 8i Oracle Application Serverからの移行

JWebと Apache JServ 1.1の違い

JWebJWebJWebJWebのアーキテクチャのアーキテクチャのアーキテクチャのアーキテクチャOracle Application Serverでは、JWebカートリッジ宛てのリクエストは、HTTPリスナーが受信します。リスナーはリクエストをディスパッチャに渡し、ディスパッチャはWeb Request Broker(WRB)と通信します。WRBは、URLマッピングを使用して、リクエストの送信先カートリッジ・インスタンスを識別します。リクエストされたカートリッジのカートリッジ・インスタンスが存在しない場合、カートリッジ・サーバー・ファクトリがカートリッジ・サーバー・プロセスを作成して、カートリッジのインスタンスを生成します。JWebでは、カートリッジ・サーバー・プロセスは JWebアプリケーション(Oracle Application Serverアプリケーションのパラダイム)を実行する JVMをロードします。図2-1に、これらのコンポーネントを示します。

図図図図 2-1 Oracle Application Serverのカートリッジ・インフラストラクチャのカートリッジ・インフラストラクチャのカートリッジ・インフラストラクチャのカートリッジ・インフラストラクチャ

HTTPリスナー

ディスパッチャ

Web Request Broker

JWebリクエスト

カートリッジ・インスタンス

カートリッジ・サーバー・プロセス(JWebアプリケーション)

使用可能なカートリッジ・インスタンスにリクエストをルーティング

JWebアプリケーションから Apache JServへの移行 2-3

JWebと Apache JServ 1.1の違い

Apache JServApache JServApache JServApache JServのアーキテクチャのアーキテクチャのアーキテクチャのアーキテクチャApache JServは、mod_jservとサーブレット・エンジンという 2つの機能のコンポーネントで構成されます。図 2-2に、この構造を示します。

図図図図 2-2 Apache JServのアーキテクチャ(のアーキテクチャ(のアーキテクチャ(のアーキテクチャ(1対多の例)対多の例)対多の例)対多の例)

mod_jservは、Cでインプリメントされており、Apache Webサーバーと同じプロセスで稼動する Apacheモジュールです。Apache HTTPリスナーからリクエストを受信してそのリクエストをサーブレット・エンジンにルーティングするという、ディスパッチャに似た機能を持っています。サーブレットのビジネス・ロジックは実行しません。

サーブレット・エンジンは、Servlet 2.0 APIをインプリメントするサーブレットを実行するための実行時環境を提供します。Apache Webサーバーと同じノードまたは異なるノードで、JVMプロセス内で実行されます。各 JVMは 1つずつサーブレット・エンジンを持っており、サーブレット・エンジンの数はWebサーバー(mod_jservモジュール)の数に比例しません。mod_jservは複数のサーブレット・エンジンを使用して動作することが可能で、その逆も可能です。また、複数のmod_jservモジュールが複数のサーブレット・エンジンで動作することも可能です。

Apache JServApache JServApache JServApache JServのプロトコルのプロトコルのプロトコルのプロトコルApache JServサーブレット・エンジンはmod_jservを使用してプロセス内で(またはそのモジュールと同じ物理マシンで)は動作しないため、これら 2つのコンポーネントが通信するためにはプロトコルが必要です。Apache JServ Protocol(AJP)1.1という独自のプロトコルが使用されています。AJP 1.1はソケットを使用して通信し、強力な暗号化なしにMD5ハッシングを使用して認証アルゴリズムをインプリメントします。詳細は、http://java.apache.org/jserv/protocol/AJPv11.htmlを参照してください。

サーブレット・エンジン

Apache

mod_perl mod_jserv mod_ssl

AJPAJP

サーブレット・エンジン

ノード 1 ノード n

サーブレット・エンジン

AJP

2-4 Oracle Internet Application Server 8i Oracle Application Serverからの移行

JWebと Apache JServ 1.1の違い

シングル・ノード設定シングル・ノード設定シングル・ノード設定シングル・ノード設定サーブレット・エンジンがWebサーバーと同じマシンに存在する場合、サーブレット・エンジンと JVMをWebサーバーに合わせて停止または起動するようにmod_jservモジュールを設定できます。JVMを正常終了するために必要なタスクは、モジュールがすべて実行します。またこの場合、mod_jservが定期的に JVMのステータスをチェックし、1つ目の JVMがクラッシュしたときには別の JVMを起動することにより、フェイルオーバーを実行することも可能です。

マルチ・ノード設定マルチ・ノード設定マルチ・ノード設定マルチ・ノード設定mod_jservとサーブレット・エンジンが異なるマシンに存在する場合は、自動ライフ・サイクル制御は使用できません。エンジンと JVMは、カスタマイズ可能なスクリプトを使用して手動で起動する必要があります(各サーブレット・エンジンに専用の起動スクリプトが必要です)。つまり、各エンジンは、カスタムの環境で起動することが可能です。1つのmod_jservが処理できるサーブレット・エンジンの最大数は 25です。

mod_jservとサーブレット・エンジン・インスタンスは、1対 1、1対多、多対 1、および多対多の関係を確立できます。また、複数のサーブレット・エンジンを 1つのノードに配置することも可能です(この場合、mod_jservが区別できるよう、各 JVMに異なるポート番号を割り当てる必要があります)。

サーブレット・ゾーンサーブレット・ゾーンサーブレット・ゾーンサーブレット・ゾーンApache JServは、サーブレット・ゾーンというサーブレットの仮想化パラダイムをインプリメントします。サーブレット・ゾーンは、Webサーバーの仮想ホストと同じものと考えることができます。各ゾーンは、サーブレット・クラスの物理的関係(場所)との論理的な境界を提供します。このため、各サーブレット・ゾーンには、メンバー・サーブレットの場所にかかわらず(たとえば、異なるホストに存在しても構わない)、共通の URIなど、共通コンテキストを割り当てることが可能です。ただし、Apache JServの現行のインプリメンテーションでは、各ゾーンに対する強力なセキュリティは提供していません。

JWebアプリケーションから Apache JServへの移行 2-5

JWebと Apache JServ 1.1の違い

ライフ・サイクルライフ・サイクルライフ・サイクルライフ・サイクルJWebクラスと Apache JServは異なるライフ・サイクルを持っています。

JWebJWebJWebJWebのライフ・サイクルのライフ・サイクルのライフ・サイクルのライフ・サイクルJWebクラスでは、標準の main()エントリ・ポイントを使用して実行ロジックを開始します。JWebクラスのライフ・サイクルは、標準の Javaクラスにおける main()のロード、リンク、初期化および実行と似ています。

ライフ・サイクルの詳細は、http://java.sun.com/docs/books/vmspec/index.htmlを参照してください。

Apache JServApache JServApache JServApache JServのライフ・サイクルのライフ・サイクルのライフ・サイクルのライフ・サイクルApache JServでは、サーブレットのライフ・サイクルは Servlet 2.0の仕様に準拠しています。ライフ・サイクルは、すべてのサーブレットによって直接または間接的にインプリメントされる javax.servlet.Servletインタフェースによって定義されます。このインタフェースには、サーブレットのライフ・サイクル中に、サーブレット・エンジンにより特定の順序で特定のタイミングにコールされるメソッドがあります。init()およびdestroy()メソッドはサーブレットの存続期間中に 1回だけ実行されますが、service()メソッドはサーブレットのロジックを実行するために複数回コールされます。

図 2-3に、サーブレットのライフ・サイクルを示します。

図図図図 2-3 JServletのライフ・サイクルのライフ・サイクルのライフ・サイクルのライフ・サイクル

インスタンス生成

インプリメンテーション

service()

破棄destroy()

初期化init()

サーブレット

(複数のコール)

2-6 Oracle Internet Application Server 8i Oracle Application Serverからの移行

JWebと Apache JServ 1.1の違い

スレッドスレッドスレッドスレッドJWebカートリッジと Apache JServサーブレット・エンジンでは、1つまたは複数のスレッドの実行をサポートしていますが、スレッドのインプリメンテーションは異なります。

JWebJWebJWebJWebのスレッドのスレッドのスレッドのスレッドJWebカートリッジのスレッドは、Oracle Application Serverのカートリッジ設定で「状態を保持しない」パラメータ(TRUEまたは FALSE)を切り替えることにより定義されます。TRUEの場合、カートリッジ・インスタンスは複数のクライアントで共有されます。FALSEの場合は共有されず、一度に 1つのクライアントのみアクセスできます。また、Oracle Application Serverが最小 /最大モードの場合、最小 /最大カートリッジ・サーバーと最小/最大スレッド値を変更して、そのカートリッジのマルチ・スレッドのインプリメント方法を変更できます。

Apache JServApache JServApache JServApache JServのスレッドのスレッドのスレッドのスレッドApache JServサーブレット・エンジンは、デフォルトではマルチ・スレッドに設定されています。エンジン内のサーブレット・コンテナが、クライアントのリクエストを処理するスレッドを管理します。サーブレット・クラスの各インスタンスに、複数のスレッドを実行させることが可能です。この場合、サーブレット・インスタンスは複数のクライアントで共有されます。かわりに、あるクラスによって javax.servlet.SingleThreadインタフェースをインプリメントすることにより、そのクラスが一度に 1つのスレッドのみ実行するよう指定できます。この場合、このサーブレット・クラスのインスタンスのプールが維持され、各インスタンスが一度に 1つのクライアントにのみ割り当てられます(インスタンスは共有されません)。

セッションセッションセッションセッションJWebカートリッジでは、Oracle Application Server Managerを使用してクライアント・セッションを使用可能にできます。Apache JServでは、Servlet 2.0の仕様に従い、プログラムによるセッションのみ使用可能です。このため、コード以外の手段によってセッションが使用可能になっている JWebアプリケーションを移行する場合は、サーブレット・セッション APIを使用して、セッション・メカニズムをプログラムによってインプリメントする必要があります。2-8ページの「セッション制御」を参照してください。

JWebアプリケーションから Apache JServへの移行 2-7

JWebアプリケーションのコードの変更

HTMLHTMLHTMLHTMLページの動的コンテンツ生成ページの動的コンテンツ生成ページの動的コンテンツ生成ページの動的コンテンツ生成HTMLページで動的コンテンツを生成するために、JWeb Toolkit機能を使用できます。JWeb Toolkitは、HTMLページ内に特殊なプレースホルダを埋め込みます。ファイルがoracle.html.HtmlFileオブジェクトとして JWebクラスにインポートされると、setItemAt()メソッドにより、プレースホルダの場所にコードから生成されたデータが挿入されます。

これは JWeb固有の機能であるため、Apache JServでは使用できません。動的情報をHTMLページに埋め込む(スクリプト)場合は、Oracle Internet Application Serverで OracleJSPを使用し、JavaServer Pagesを使用することを検討してください。

JWebJWebJWebJWebアプリケーションのコードの変更アプリケーションのコードの変更アプリケーションのコードの変更アプリケーションのコードの変更JWebアプリケーションを Apache JServに移行するには、次の部分のコードを変更する必要があります。

� セッション制御

� アプリケーション・スレッド

� ロギング

セッション制御セッション制御セッション制御セッション制御JWebアプリケーションでセッションを使用可能にするには、Node Managerの「Webパラメータ」フォーム内のカートリッジの「クライアント・セッション」パラメータを使用します。これにより、実行されたクラスの静的パラメータが、複数のコールにまたがってクライアント・データを保有することが可能になります。Servlet 1.0の APIでは、セッションの状態はサーブレット・クラスの静的変数に格納されません。かわりにセッション・オブジェクトが明示的に取得され、名前付きの属性を使用してセッションの状態を格納します。

Apache JServでは設定可能なセッションをサポートしていないため、次のように、javax.servlet.http.HttpServletRequestの getSession()メソッドを使用してコード内でセッションを使用可能にする必要があります。

HttpSession session = request.getSession(true);

すると、セッション情報が javax.servlet.http.HttpSessionの putValue()およびgetValue()メソッドを使用してそれぞれ格納および取得できるようになります。

session.putValue("List", new Vector());Vector list = (Vector) session.getValue("List");

2-8 Oracle Internet Application Server 8i Oracle Application Serverからの移行

JWebアプリケーションのコードの変更

JServJServJServJServセッションのタイムアウトセッションのタイムアウトセッションのタイムアウトセッションのタイムアウトセッションのタイムアウト値は、jserv.propertiesファイルの session.timeoutパラメータで指定できます。また、サーブレット・セッション APIの invalidate()を実行することにより、セッションを期限切れにすることも可能です。

JWebのセッション・タイムアウト・コールバックは、Apache JServでは使用できません。

アプリケーション・スレッドアプリケーション・スレッドアプリケーション・スレッドアプリケーション・スレッドJWebでは、アプリケーションは oracle.owas.wrb.WRBRunnableクラスを使用してスレッドを管理します。このクラスにより、アプリケーション・スレッドはリクエストおよびレスポンス情報にアクセスできます。Apache JServでは、アプリケーション・スレッドの管理には、標準の Javaスレッド管理のみ必要です(java.lang.Runnableインタフェースが使用されます)。JWebでも Apache JServでも、マルチスレッド・アプリケーションはロード・バランシングの効果を制限するため、アプリケーション・スレッドの使用はお薦めしません。

ロギングロギングロギングロギングJWebアプリケーションは、WRBにより提供される Oracle Application Server Loggerサービスを使用して、メッセージのログを出力します。このサービスにより、ファイル・システムまたはデータベースなどの中央リポジトリにメッセージを書き込むことができます。oracle.owas.wrb.services.logger.OutputLogStreamクラスは、Loggerサービスとの間のインタフェースとして機能します。

Apache JServでは、メッセージは 2つのログ・ファイルに書き込まれます。mod_jservによって生成されたメッセージは、Oracle HTTP Serverの http.conf設定ファイル内のApJServLogFileディレクティブで指定されたファイルに記録されます。このディレクティブのデフォルト値は <ORACLE_HOME>/Apache/Jserv/logs/mod_jserv.logです。サーブレット・エンジンによって生成されたメッセージは、jserv.propertiesファイルのlog.fileパラメータで指定されたファイルに記録されます。このディレクティブのデフォルト値は、<ORACLE_HOME>/Apache/Jserv/logs/jserv.logです。

例外スタック・トレースなど、サーブレット・アプリケーションによって生成されたメッセージは、jserv.logに記録されます。コード内で、javax.servlet.ServletContext.log()または javax.servlet.GenericServlet.log()メソッドを使用してこのログ・ファイルへの書込みが可能です。

注意注意注意注意 : Apache JServでは、セッションの状態の保持に静的データ・メンバーを使用しないでください(ただし、これは JWebでは一般的な手法です)。かわりにサーブレット・セッション APIを使用します。後者のほうが、サーブレット・エンジンはメモリーを効率的に使用します。

JWebアプリケーションから Apache JServへの移行 2-9

JWebアプリケーションのコードの変更

jserv.propertiesファイルにより、サーブレット・エンジンの機能のうち特定の部分をログに出力するよう選択できます。jserv.logでは、これらの部分はチャネルと呼ばれます。

表表表表 2-1 jserv.logのチャネルのチャネルのチャネルのチャネル

JWeb ToolkitJWeb ToolkitJWeb ToolkitJWeb Toolkitパッケージ(パッケージ(パッケージ(パッケージ(JWeb APIJWeb APIJWeb APIJWeb API))))Oracle Application Serverの JWebカートリッジには、Oracle独自の JavaパッケージのJWeb Toolkitが含まれています。JWebアプリケーションでこれらのパッケージを使用してOracle Internet Application Serverに移行する場合は、コードを変更して、対応する Servlet 2.0のクラスおよびメソッドを使用する必要があります。対応する機能がない場合は、JWebパッケージで提供されていた機能をインプリメントするためにコードを再作成する必要があります。

一部の JWeb Toolkitパッケージは、WRBなどの Oracle Application Serverコンポーネントと対話するように特別に設計されているため、これらのパッケージの機能は標準のサーブレット APIでは再現できません。このため、移行プロセスには、一部のアプリケーションの再設計も含まれます。

チャネルチャネルチャネルチャネル メッセージ・タイプメッセージ・タイプメッセージ・タイプメッセージ・タイプ

log.channel.authentication AJPプロトコルからの認証メッセージ。

log.channel.exceptionTracing サーブレット・エンジンによって捕捉された例外スタック・トレース。

log.channel.init サーブレット・エンジンからの初期化メッセージ。

log.channel.requestData HTTPリクエストから取得されたデータ。たとえば、HTTPの GETまたは POST方式のパラメータ。

log.channel.responseHeaders HTTPレスポンスからのヘッダー情報。

log.channel.serviceRequest リクエスト処理メッセージ。

log.channel.servletLog javax.servlet.ServletContext.logおよびjavax.servlet.GenericServlet.logメソッドからのメッセージ。

log.channel.servletManager サーブレット・マネージャからのメッセージ。これらには、サーブレット・ゾーンのロード /アンロードおよびクラスの自動リロードに関するメッセージが含まれます。

log.channel.signal システム・シグナル・メッセージ。

log.channel.terminate サーブレット・エンジン終了時に生成されるメッセージ。

2-10 Oracle Internet Application Server 8i Oracle Application Serverからの移行

JWebアプリケーションのコードの変更

次の表に、JWebのメソッドと、それぞれの機能と同等のサーブレット APIクラスのメソッドを示します。

� 表 2-2「javax.servlet.http.HttpServletRequestクラスのメソッドと同等の JWebのメソッド」

� 表 2-3「javax.servlet.ServletRequestクラスのメソッドと同等の JWebのメソッド」

� 表 2-4「javax.servlet.ServletResponseクラスのメソッドと同等の JWebのメソッド」

� 表 2-5「javax.servlet.ServletContextクラスのメソッドと同等の JWebのメソッド」

� 表 2-6「javax.servlet.http.HttpUtilsクラスのメソッドと同等の JWebのメソッド」

表表表表 2-2 javax.servlet.http.HttpServletRequestクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等の JWebのメソッドのメソッドのメソッドのメソッド

JWeb のメソッドのメソッドのメソッドのメソッド サーブレットのメソッドサーブレットのメソッドサーブレットのメソッドサーブレットのメソッド

oracle.owas.wrb.services.http.HTTP.getHeader(String) getHeader(name)

oracle.owas.wrb.services.http.getCGIEnvironment("AUTH_TYPE") getAuthType()

oracle.owas.wrb.services.http.HTTP.getHeaders()1

1 ヘッダー名と値のハッシュテーブルが返されます。

getHeaderNames()2

2 ヘッダー名の列挙が返されます。

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("PATH_INFO") getPathInfo()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("PATH_TRANSLATED") getPathTranslated()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("QUERY_STRING") getQueryString()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("REQUEST_METHOD") getMethod()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("REMOTE_USER") getRemoteUser()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("SCRIPT_NAME") getServletPath()

表表表表 2-3 javax.servlet.ServletRequestクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等の JWebのメソッドのメソッドのメソッドのメソッド

JWeb のメソッドのメソッドのメソッドのメソッド サーブレットのメソッドサーブレットのメソッドサーブレットのメソッドサーブレットのメソッド

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("CONTENT_TYPE") getContentType()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("CONTENT_LENGTH") getContentLength()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("SERVER_PROTOCOL") getProtocol()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("REMOTE_ADDR") getRemoteAddr()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("REMOTE_HOST") getRemoteHost()

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("SERVER_NAME") getServerName()

JWebアプリケーションから Apache JServへの移行 2-11

JWebアプリケーションのコードの変更

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment("SERVER_PORT") getServerPort()

oracle.owas.wrb.services.http.HTTP.getURLParameter(name) getCharacterEncoding()

getParameter(name)

oracle.owas.wrb.services.http.HTTP.getURLParameters getParameterNames()

getParameterValues(name)1

1 "name"に対して複数の値が存在する場合。

表表表表 2-4 javax.servlet.ServletResponse クラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等の JWebのメソッドのメソッドのメソッドのメソッド

JWeb のメソッドのメソッドのメソッドのメソッド サーブレットのメソッドサーブレットのメソッドサーブレットのメソッドサーブレットのメソッド

oracle.owas.wrb.WRBWriter getWriter()

表表表表 2-5 javax.servlet.ServletContextクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等の JWebのメソッドのメソッドのメソッドのメソッド

JWeb のメソッドのメソッドのメソッドのメソッド サーブレットのメソッドサーブレットのメソッドサーブレットのメソッドサーブレットのメソッド

oracle.owas.wrb.services.http.HTTP.getCGIEnvironment getServerInfo()

oracle.OAS.Services.Loggerを使用 log(Exception, String)

log(String)

表表表表 2-6 javax.servlet.http.HttpUtilsクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等の JWebのメソッドのメソッドのメソッドのメソッド

JWeb のメソッドのメソッドのメソッドのメソッド サーブレットのメソッドサーブレットのメソッドサーブレットのメソッドサーブレットのメソッド

oracle.owas.wrb.services.http.HTTP.getURLParameters(Hashtable) parsePostData(int, ServletInputStream)

oracle.owas.wrb.services.http.HTTP.getURLParameters(Hashtable) parseQueryString(String)

oracle.html.HtmlStream.print javax.servlet.ServletOutputStream.print

oracle.html.HtmlStream.println avax.servlet.ServletOutputStream.println

oracle.owas.wrb.services.http.MultipartElement javax.servlet.ServletInputStream.readLine

表表表表 2-3 javax.servlet.ServletRequestクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等のクラスのメソッドと同等の JWebのメソッド(続き)のメソッド(続き)のメソッド(続き)のメソッド(続き)

JWeb のメソッドのメソッドのメソッドのメソッド サーブレットのメソッドサーブレットのメソッドサーブレットのメソッドサーブレットのメソッド

2-12 Oracle Internet Application Server 8i Oracle Application Serverからの移行

Oracle Application Serverカー

3

Oracle Application Serverカートリッジのカートリッジのカートリッジのカートリッジの

移行移行移行移行

この章では、Oracle Application Serverカートリッジの機能とそれに対応する機能とを比較し、カートリッジを Oracle Internet Application Serverのインフラストラクチャに移行する際の考慮点について説明します。

内容内容内容内容� カートリッジ・タイプと対応する Apacheモジュール

� PL/SQLの移行

� Perlの移行

� LiveHTMLの移行

トリッジの 移行 3-1

カートリッジ・タイプと対応する Apacheモジュール

カートリッジ・タイプと対応するカートリッジ・タイプと対応するカートリッジ・タイプと対応するカートリッジ・タイプと対応する ApacheApacheApacheApacheモジュールモジュールモジュールモジュール次の表に、Oracle Application Serverの各カートリッジ・タイプと、Oracle HTTP Serverでそれに対応するものを示します。

各アプリケーション・カートリッジの移行方法について、次の各項で説明します。

PL/SQLPL/SQLPL/SQLPL/SQLの移行の移行の移行の移行Oracle Application Serverの PL/SQLカートリッジ・アプリケーションは、Oracle Internet Application Serverのmod_plsqlに移行できます。mod_plsqlは、PL/SQLカートリッジ・アプリケーションと同様に、Web上での PL/SQLベースのアプリケーションの構築と運用をサポートします。

mod_plsqlは Oracle Internet Application Serverに同梱されており、Oracle HTTP Serverモジュールとして実行されます。mod_plsqlは、Oracleデータベース内で PL/SQLロジックを実行する PL/SQLプログラムに、HTTPリクエストの処理を委任します。

PL/SQLアプリケーションを Oracle Application Serverから Oracle Internet Application Serverに移行する場合は、まず『Oracle Internet Application Server 8i mod_plsqlの使用』を読み、このモジュールの機能について理解しておくことをお薦めします。

次に示す Oracle Application Serverの PL/SQLカートリッジの機能に対するサポートは、Oracle Internet Application Serverのmod_plsqlでは変更されています。この項の続きの部分で、これらの機能を使用する Oracle Application Serverアプリケーションの移行方法について説明します。

表表表表 3-1 カートリッジ・タイプとカートリッジ・タイプとカートリッジ・タイプとカートリッジ・タイプと Apache モジュールモジュールモジュールモジュール

Oracle Application Serverのカートリッジ・のカートリッジ・のカートリッジ・のカートリッジ・タイプタイプタイプタイプ Oracle HTTP Serverで対応するもので対応するもので対応するもので対応するもの

Perl mod_perl

LiveHTML Apache SSIおよび OracleJSP

PL/SQL mod_plsql

3-2 Oracle Internet Application Server 8i Oracle Application Serverからの移行

PL/SQLの移行

ファイルのアップロードおよびダウンロードファイルのアップロードおよびダウンロードファイルのアップロードおよびダウンロードファイルのアップロードおよびダウンロード次の表に、Oracle Application Serverと Oracle Internet Application Serverでサポートされているファイルのアップロードおよびダウンロード機能を示します。

ファイルの圧縮 /解凍以外の Oracle Application Serverの機能は、すべて Oracle Internet Application Serverでサポートされている点に注意してください。Oracle Application Serverで圧縮されたアップロード・ファイルが存在しても、手動でファイルを解凍する必要はありません。これらのファイルは、3-5ページの「oas2iasツールの使用方法」で説明するoas2iasファイル移行ツールにより、自動的に解凍されて Oracle Internet Application Serverドキュメント表に非圧縮形式でアップロードされます。

Oracle Internet Application Serverでサポートされているその他のファイルのアップロード機能の詳細は、『Oracle Internet Application Server 8i mod_plsqlの使用』を参照してください。

表表表表 3-2 ファイルのアップロードおよびダウンロード機能の比較ファイルのアップロードおよびダウンロード機能の比較ファイルのアップロードおよびダウンロード機能の比較ファイルのアップロードおよびダウンロード機能の比較

ファイルのアップロードおよびダウンロード機能ファイルのアップロードおよびダウンロード機能ファイルのアップロードおよびダウンロード機能ファイルのアップロードおよびダウンロード機能

Oracle Application Serverでのでのでのでのサポートサポートサポートサポート

Oracle Internet Application Serverでのサポートでのサポートでのサポートでのサポート

文字変換なしでロー・バイト・ストリームとしてのファイルのアップロード /ダウンロード

はい はい

LONG RAW列型へのファイルのアップロード はい はい

BLOB列型へのファイルのアップロード いいえ はい

CLOB列型、NCLOB列型へのファイルのアップロード

いいえ はい

ファイルのアップロード時に DADごとに表を指定 いいえ - WEBSYSスキーマにのみアップロード

はい

アップロード /ダウンロード時のファイルの圧縮/解凍

はい いいえ

1回のフォーム送信につき複数のファイルのアップロード

はい はい

Oracle Application Serverカートリッジの 移行 3-3

PL/SQLの移行

アップロード・ファイルのドキュメント形式アップロード・ファイルのドキュメント形式アップロード・ファイルのドキュメント形式アップロード・ファイルのドキュメント形式Oracle Application Serverの PL/SQLカートリッジと Oracle Internet Application Serverのmod_plsqlは、どちらもアップロード・ファイルをサポートしています。ただし、それぞれ異なるドキュメント表スキーマを使用します。Oracle Application Serverでアップロードされたファイルがあり、Oracle Internet Application Serverに移行する場合は、oas2ias移行ツールを使用してファイルを変換する必要があります。

oas2iasツールは、次の 2つの機能を実行します。

� アップロードされた内容とその説明を維持したまま、Oracle Application Serverの表のデータを Oracle Internet Application Serverの表にマッピングする。

� Oracle Application Serverで圧縮された内容をOracle Internet Application Serverに移行する前に解凍する。現行バージョンの Oracle Internet Application Serverでは、アップロード済みファイルの圧縮 /解凍をサポートしていません(詳細は、前の項を参照してください)。

oas2iasツールは、OCIライブラリを使用して Cでインプリメントされています。このツールは、ows_content表のすべての行を読み込み、ユーザーが指定したドキュメント表にその内容と属性をすべて挿入します。

表 3-3に、Oracle Internet Application Serverのドキュメント表の列が Oracle Application Serverから値を導出する方法を示します。

Oracle Application Serverから取得した内容は、必ず Oracle Internet Application Serverのドキュメント表の BLOB_CONTENT列に格納されます。このツールは、Oracle Internet Application Serverのドキュメント表にロードされたデータが非圧縮データであることを確認します。この確認のため、データが圧縮されている場合は(ows_attributes表のエントリのチェックによって検証される)、データは zlibライブラリを使用して解凍され、その後Oracle Internet Application Serverのドキュメント表にロードされます。

表表表表 3-3 導出された列値導出された列値導出された列値導出された列値

Oracle Internet Application Serverののののドキュメント表の列ドキュメント表の列ドキュメント表の列ドキュメント表の列

Oracle Application Serverののののtable.column の値の値の値の値

NAME ows_object.name

MIME_TYPE ows_fixed_attrib.content_type

DOC_SIZE ows_content.length

DAD_CHARSET ows_fixed_attrib.character_se

CONTENT_TYPE "BLOB"

CONTENT NULL

BLOB_CONTENT ows_content.content

3-4 Oracle Internet Application Server 8i Oracle Application Serverからの移行

PL/SQLの移行

ooooas2iasas2iasas2iasas2iasツールの使用方法ツールの使用方法ツールの使用方法ツールの使用方法oas2iasツールは、すべての Oracle Application Serverのファイルを Oracle Internet Application Server形式に変換するために、1回だけ実行する必要があります。次のステップを実行します。

1. Oracle Application Serverのすべてのアップロード・ファイルの最新のバックアップが作成済みであることを確認します。

2. Oracle Internet Application Serverのドキュメント表を作成します。これは、任意のデータベース・ユーザーで作成できます。

SQL> CREATE TABLE my_doc_table( NAME VARCHAR2(128) UNIQUE NOT NULL, MIME_TYPE VARCHAR2(128), DOC_SIZE NUMBER, DAD_CHARSET VARCHAR2(128), LAST_UPDATED DATE, CONTENT_TYPE VARCHAR2(128), CONTENT LONG RAW, BLOB_CONTENT BLOB);

3. 環境を検証します。

� Oracle Application Serverバージョン 4.0.7.1以降

� Oracle Internet Application Serverリリース 1.0.0以降

� Oracle8i R8.1.x

� ORACLE_HOMEに Oracle Internet Application Serverの ORACLE_HOMEが設定されていること

� (Windows NTのみ)%ORACLE_HOME%¥binがシステム・パスに含まれていること

� (UNIXのみ)$ORACLE_HOME/binが PATH環境変数に含まれていること

� (UNIXのみ)LD_LIBRARY_PATH環境変数に $ORACLE_HOME/libおよび/usr/java/libの両方が含まれていること

Oracle Application Serverカートリッジの 移行 3-5

PL/SQLの移行

4. Oracle Application Serverデータベース("WEBSYS" スキーマが存在している場所)とOracle Internet Application Serverデータベース(my_doc_table表を持つ Oracle Internet Application Serverユーザー・スキーマが存在している場所)の TNS別名を作成します。TNS別名を $ORACLE_HOME/network/admin/tnsnames.oraに格納します。このファイル内の TNS別名の形式は、次のとおりです。

<alias> =(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(Host = <hostname>)(Port = <port_number>))(CONNECT_DATA = (SID = <sid>))

)

TNS別名の詳細は、ご使用のデータベースのドキュメントを参照してください。

5. Oracle Internet Application Server環境の ORACLE_HOME内の binディレクトリに入っている oas2iasツールを実行します。このツールにより、次のパラメータの入力プロンプトが表示されます。

次に、oas2iasの実行例を示します。

Welcome to the OAS to iAS migration UtilityPlease enter the following parameters:WEBSYS password: managerOAS database connect string (<ENTER if local database>: orc8iAS database user: oracleiAS database user's password: welcomeiAS database connect string <ENTER if local database>: orc8iAS doc table: my_doc_table

Transferred file : C:¥TEMP¥upload.htmLength of file : 422Transferred file : C:¥Tnsnames.ora

パラメータパラメータパラメータパラメータ 説明説明説明説明

websys_password "WEBSYS"ユーザーのパスワード。

websys_connstr Oracle Application Serverデータベースの接続文字列。

ias_user_name ステップ 2で作成した Oracle Internet Application Serverのドキュメント表が含まれているスキーマのデータベース・ユーザー名。

ias_password <ias_user_name>のパスワード。

ias_connstr mod_plsqlデータベースの接続文字列。

ias_doc_table ステップ 2で作成した Oracle Internet Application Serverのドキュメント表の名前。

3-6 Oracle Internet Application Server 8i Oracle Application Serverからの移行

PL/SQLの移行

Length of file : 2785Transferred file : C:¥rangan¥mails1.htmLength of file : 717835Freeing handles ...

6. これにより、Oracle Internet Application Serverのドキュメント表へのファイル変換が完了し、Oracle Internet Application Serverのmod_plsqlを使用してアクセス可能になります。

カスタム認証カスタム認証カスタム認証カスタム認証カスタム認証は、Oracle Application Serverで、自ら(つまりアプリケーション内で)アクセスを制御するアプリケーションで使用されます。アプリケーションは、データベース・レベルではなく、アプリケーション・レベルでユーザーを認証します。

mod_plsqlではカスタム認証をサポートしています。詳細は、『Oracle Internet Application Server 8i mod_plsqlの使用』を参照してください。

位置パラメータの受渡し方式位置パラメータの受渡し方式位置パラメータの受渡し方式位置パラメータの受渡し方式Oracle Application Serverの PL/SQLカートリッジでは、位置パラメータの受渡し方式をサポートしています。この機能は Oracle Internet Application Serverではサポートされていないため、使用できません。Oracle Internet Application Serverのmod_plsqlでサポートされているパラメータの受渡し方法の詳細は、『Oracle Internet Application Server 8i mod_plsqlの使用』を参照してください。

SQLSQLSQLSQLファイルの実行ファイルの実行ファイルの実行ファイルの実行データベースに格納されている PL/SQLプロシージャの実行に加え、Oracle Application Serverの PL/SQLカートリッジでは、ファイル・システムの PL/SQLソース・ファイルも実行できます。ソース・ファイルには、ファンクションまたはプロシージャを定義しない無名 PL/SQLブロックが含まれています。この機能により、ユーザーは PL/SQL文をデータベースに格納しなくても実行できます。この機能は、編集するたびにプロシージャをデータベースにリロードする必要がないため、PL/SQLコードのプロトタイプの作成時に役立ちます。

この機能は、Oracle Internet Application Serverではサポートされていません。ユーザーは、無名ブロックに名前を割り当て、データベースでストアド・プロシージャとしてコンパイルする必要があります。

Oracle Application Serverカートリッジの 移行 3-7

Perlの移行

PerlPerlPerlPerlの移行の移行の移行の移行この項では、Oracle Application Serverにおける Perlカートリッジ・アプリケーションのインプリメント方法と、Oracle Internet Application Serverへの移行方法について説明します。

Oracle Application ServerOracle Application ServerOracle Application ServerOracle Application Serverのののの PerlPerlPerlPerlアプリケーションアプリケーションアプリケーションアプリケーション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カートリッジは、実行時に共有オブジェクトまたはライブラリとリンクします。

カートリッジ・スクリプトとカートリッジ・スクリプトとカートリッジ・スクリプトとカートリッジ・スクリプトと CGICGICGICGIスクリプトの違いスクリプトの違いスクリプトの違いスクリプトの違いカートリッジによるインタプリタの実行方法が違うため、Perlカートリッジ用に作成されたスクリプトと CGI環境用のスクリプトは異なります。Perlカートリッジは、次のことを行います。

� 永続的なインタプリタを維持し、Perlスクリプトをプリコンパイルし、キャッシュします(これによりパフォーマンスが向上します)。

� stdinおよび stdoutをWRBクライアントの入出力(ブラウザ)にリダイレクトします。

� stderrをWRB Loggerにリダイレクトします。

� Perlインタプリタがシステム環境変数をコールすると、追加の CGI環境変数を Perlインタプリタに返します。

� forkコールのかわりにシステム・コールをサポートします。システム・コールは、Perlインタプリタのインプリメンテーションを変更し、子プロセスの出力をWRBクライアントの入出力にリダイレクトします。

� エラーのロギングをサポートします。

� パフォーマンスの計測をサポートします。

3-8 Oracle Internet Application Server 8i Oracle Application Serverからの移行

Perlの移行

CGIスクリプトとして実行されるように Oracle Application Serverで開発された Perlスクリプトは、変更せずに CGIスクリプトとして Oracle Internet Application Serverで実行可能です。ただし、Oracle Application Serverの Perlカートリッジで実行されるように開発されたPerlスクリプトは、Oracle Internet Application Serverで実行するためには変更する必要がある場合があります。

PerlPerlPerlPerlカートリッジ・スクリプトの移行カートリッジ・スクリプトの移行カートリッジ・スクリプトの移行カートリッジ・スクリプトの移行この項では、Oracle Application Serverと Oracle Internet Application Serverの Perlインプリメンテーション、および Perlスクリプトを Oracle Internet Application Serverに移行するためのコードの変更について説明します。

Oracle Internet Application ServerOracle Internet Application ServerOracle Internet Application ServerOracle Internet Application Serverのののの PerlPerlPerlPerl環境環境環境環境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には含まれていないため、別にインストールする必要があります。バージョン要件、ダウンロード・サイトおよびインストール手順については、リリース・ノートを参照してください。

PerlPerlPerlPerlモジュールモジュールモジュールモジュール表 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

Oracle Application Serverカートリッジの 移行 3-9

Perlの移行

Oracle Application ServerOracle Application ServerOracle Application ServerOracle Application Serverのののの PerlPerlPerlPerlカートリッジのバリエーションカートリッジのバリエーションカートリッジのバリエーションカートリッジのバリエーション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.plcgi-lib.plcgi-lib.plcgi-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モジュール(続き)モジュール(続き)モジュール(続き)モジュール(続き)

モジュールモジュールモジュールモジュール バージョンバージョンバージョンバージョン

3-10 Oracle Internet Application Server 8i Oracle Application Serverからの移行

LiveHTMLの移行

し、各 Perlスクリプトのリクエスト時には必要な部分のみ実行するようにすると、パフォーマンスが向上します。

Oracle Application Serverでは、モジュールのプリロードと初期タスクの実行に、$ORAWEB_HOME/../cartx/common/perl/lib/perlinit.plファイルが使用されます。このファイルは、カートリッジ・インスタンスの起動時に一度だけ実行されます。デフォルトでは、このファイルには実行可能な文は含まれていません。このファイルは、「Perlアプリケーションの設定」フォームの「初期化スクリプト」パラメータで指定します。

Apacheのmod_perlには、これに対応する機能はありません。

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

SSISSISSISSIApacheで提供されている SSIと LiveHTMLで提供されている SSIとでは、エレメントが同等ではありません。次の表に、Apacheおよび LiveHTMLで使用可能な SSIを示します。

表表表表 3-5 Apacheおよびおよびおよびおよび LiveHTMLのののの SSIのリストのリストのリストのリスト

Apacheのののの SSI LiveHTMLのののの SSI

config config

echo echo

exec exec

fsize fsize

flastmod flastmod

include include

printenv -

set -

- request

Oracle Application Serverカートリッジの 移行 3-11

LiveHTMLの移行

Apacheまたは LiveHTMLで SSIを指定する場合の構文は同じです。たとえば、次のようになります。

<!--#config sizefmt="bytes" -->

Apacheの SSIは、mod_includeモジュールによってインプリメントされます。このモジュールは、デフォルトで Apacheサーバーにコンパイルされます。

前の表で示したエレメントに加え、Apacheの SSIには変数置換およびフロー制御用のエレメントが含まれています。http://www.apache.orgのドキュメントを参照してください。

スクリプトスクリプトスクリプトスクリプトOracle Application Serverでは、LiveHTMLを使用して、Perlスクリプトを HTMLファイルに埋め込むことが可能です。LiveHTMLは Oracle Application Server独自のコンポーネントであるため、Oracle Internet Application Serverには対応する機能が存在しません。ただし、JavaServer Pagesを使用して、Javaコードを HTMLファイルに埋め込むことが可能です。JavaServer Pages 1.0(JSP)モデルは、Oracle Internet Application ServerではOracleJSPとしてインプリメントされています。

LiveHTMLアプリケーションを Oracle Internet Application Serverに移行するには、次のことを行う必要があります。

� LiveHTMLアプリケーション・モデルを JSPアプリケーション・モデルに移行する。

� LiveHTMLタグを JSPタグに移行する。

� Perlコードを Javaコードとして再作成する。

ご使用の LiveHTMLアプリケーションが Oracle Application ServerでWeb Application Objectsを使用している場合、この機能を埋込み Javaコードまたは JavaBeanクラスとしてインプリメントし、JSPの <jsp:useBean>タグで宣言する必要があります。

注意注意注意注意 : 最後の終了記号 "-->" の前には空白が必要です。

3-12 Oracle Internet Application Server 8i Oracle Application Serverからの移行

EJB、ECO/Javaおよび JCORBA アプリケ

4

EJB、、、、ECO/Javaおよびおよびおよびおよび JCORBA

アプリケーションの移行アプリケーションの移行アプリケーションの移行アプリケーションの移行

この章では、Oracle Application Serverの EJB、ECO for Javaおよび JCOアプリケーションを Oracle8i JVMの EJBオブジェクトに移行する方法について説明します。Oracle8i JVMは、Enterprise JavaBeansアプリケーションの実行時環境を提供する Oracle Internet Application Serverのコンポーネントです。

EJBを Oracle8i JVMで運用する知識があることを前提としているため、これについては、ここでは説明しません。Oracle8i JVMの詳細は、『Oracle8i Enterprise JavaBeansと CORBA開発者ガイド』を参照してください。

内容内容内容内容� EJBの移行

� ECO/Javaの移行

� JCORBAから EJBへの移行

ーションの移行 4-1

EJBの移行

EJBEJBEJBEJBの移行の移行の移行の移行EJBを Oracle Application Server 4.0.8.1(またはそれ以降)から Oracle8i JVMに移行するには、次の領域のコードを変更する必要があります。

� 配置記述子

� クライアント・コード

� ロギング(サーバー・コード)(該当する場合)

これらの変更について、この後の項で説明します。

配置記述子配置記述子配置記述子配置記述子Oracle8i JVMでは、配布情報をテキスト・ファイルに保存し、これを ejbdescriptorコマンドライン・ツールで実行して、シリアライズされた配置記述子を作成できます。このテキスト・ファイルの書式は、Javaに似ています。次に基本構造の例を示します。ejb.test.serverは、Beanクラス ExampleBeanのインプリメンテーションが入っているパッケージです。

SessionBean ejb.test.server.ExampleBeanImpl{

<attribute>=<value>...

}

必須の属性は、次のとおりです。

� BeanHomeName

� HomeInterfaceClassName

� RemoteInterfaceClassName

共通の追加属性には、次のものが含まれます。

� StateManagementType(Beanが状態を保持するかしないかを定義する)

� TransactionAttribute(トランザクションの属性値を設定する)

� RunAsMode(Beanの権限を指定する)

� RunAsIdentity(Beanの権限を指定する)

� AllowedIdentities(Beanにアクセスできるユーザーを指定する)

また、この書式を使用して、Beanの Java環境変数を設定できます。追加情報は、『Oracle8i Enterprise JavaBeansと CORBA開発者ガイド』を参照してください。

4-2 Oracle Internet Application Server 8i Oracle Application Serverからの移行

EJBの移行

クライアント・コードクライアント・コードクライアント・コードクライアント・コードクライアント・コードの変更は、JNDIを使用して初期コンテキスト・コールで行われます。初期コンテキスト・コールに渡されるハッシュ・テーブルには、次の表に示すプロパティがすべて含まれている必要があります。

また、EJBホームにアクセスする URLも、Oracle8iの書式に変更する必要があります。

sess_iiop://<host>:<port>:<SID>/<path>/<bean>

たとえば、次のようになります。

sess_iiop://myhost:2481:ORCL/test/myBean

ロギング(サーバー・コード)ロギング(サーバー・コード)ロギング(サーバー・コード)ロギング(サーバー・コード)Oracle Application Serverでアプリケーションのロギングを行っている場合は、EJBコードから oracle.oas.ejb.Loggerのリファレンスをすべて削除してください。Oracle8i JVMでは、printlnファンクションを使用して単純なログ出力を行うか、またはデータベースにログを記録できます。

注意注意注意注意 : テキスト・ファイルのかわりに、シリアライズされた配置記述子を使用することも可能です。

表表表表 4-1 ハッシュ・テーブルの値ハッシュ・テーブルの値ハッシュ・テーブルの値ハッシュ・テーブルの値

プロパティプロパティプロパティプロパティ 値値値値

javax.naming.Context.URL_PKG_PREFIXES

oracle.aurora.jndi

javax.naming.Context.SECURITY_AUTHORIZATION

次のうちのいずれか。

� oracle.aurora.sess_iiop.ServiceCtx.NON_SSL_LOGIN

� oracle.aurora.sess_iiop.ServiceCtx.SSL_CREDENTIAL

� oracle.aurora.sess_iiop.ServiceCtx.SSL_LOGIN

javax.naming.Context.SECURITY_PRINCIPAL

データベースまたは Oracle8i Cacheのユーザー名。例 : scott

javax.naming.Context.SECURITY_CREDENTIALS

ユーザーのパスワード。例 : tiger

EJB、ECO/Javaおよび JCORBA アプリケーションの移行 4-3

ECO/Javaの移行

ECO/JavaECO/JavaECO/JavaECO/Javaの移行の移行の移行の移行ECO for Java(ECO/Java)を Oracle8i JVMに移行する場合、EJBまたは CORBAのいずれに移行するかを選択できます。ECOのモデルは EJBと非常に似ているため、EJBに移行するのが最も簡単です。前述の EJBの移行に関する項で説明した配置記述子およびクライアント・コードの変更に加え、後述のようにサーバー・コードを変更する必要があります。

ECO for Javaコンポーネントを Oracle8i JVMの EJB互換に変更するには、インプリメンテーション・ファイル、リモート・インタフェース・ファイルおよびホーム・インタフェース・ファイルを変更する必要があります。

リモート・インタフェースリモート・インタフェースリモート・インタフェースリモート・インタフェースoracle.oas.eco.ECOObjectではなく、javax.ejb.EJBObjectを拡張するようにリモート・インタフェースを変更します。各メソッドで java.rmi.RemoteExceptionをスローする必要があります。

ホーム・インタフェースホーム・インタフェースホーム・インタフェースホーム・インタフェースoracle.oas.eco.ECOHomeではなく、javax.ejb.EJBHomeを拡張するようにホーム・インタフェースを変更します。

createメソッドでは、oracle.oas.eco.CreateExceptionではなく、javax.ejb.CreateExceptionおよび java.rmi.RemoteExceptionをスローする必要があります。

インプリメンテーション・クラスインプリメンテーション・クラスインプリメンテーション・クラスインプリメンテーション・クラスインプリメンテーション・クラスを次のように変更します。

1. oracle.oas.eco.Loggerおよびそのリファレンスをすべて削除する。

2. oracle.oas.eco.*をすべて javax.ejb.*に変更する。

3. ECOCreateメソッドを ejbCreateメソッドに変更する。

4. ECORemoveメソッドを ejbRemoveメソッドに変更する。

5. ECOActivateメソッドを ejbActivateメソッドに変更する。

6. ECOPassivateメソッドを ejbPassivateメソッドに変更する。

4-4 Oracle Internet Application Server 8i Oracle Application Serverからの移行

JCORBAから EJBへの移行

JCORBAJCORBAJCORBAJCORBAからからからから EJBEJBEJBEJBへの移行への移行への移行への移行Oracle Application Serverバージョン 4.0.7では、Java CORBA Object(JCO)と呼ばれる、ECO for Java(ECO/Java)モデルの先行コンポーネント・モデルが提供されていました。この項では、Oracle Application Serverの JCOから Oracle8i JVMの EJBへの移行について説明します。

EJBへ移行するには、次の各項で説明するように、サーバーおよびクライアントのコードを変更する必要があります。サーバー・コードを変更するには、リモート・インタフェースの変更、ホーム・インタフェースの作成、JCORBAオブジェクト・インプリメンテーションの変更およびパラメータのシリアライズ化が必要です。さらに、4-2ページの「配置記述子」で説明したように、配置記述子を変更する必要があります。

リモート・インタフェースリモート・インタフェースリモート・インタフェースリモート・インタフェースリモート・インタフェースを次のように変更します。

1. org.omg.CORBA.Objectまたは oracle.oas.jco.JCORemoteをすべてjavax.ejb.EJBObjectに変換します。

2. インタフェースのすべてのメソッドに対して、java.rmi.RemoteExceptionをスローします。

ホーム・インタフェースホーム・インタフェースホーム・インタフェースホーム・インタフェースEJB仕様で定義されているようにホーム・インタフェースを作成する必要があります。次に、例を示します。

import javax.ejb.*;import java.rmi.RemoteException;public interface ServerStackHome extends EJBHome{ public ServerStackRemote create() throws CreateException, RemoteException;}

オブジェクトのインプリメンテーションオブジェクトのインプリメンテーションオブジェクトのインプリメンテーションオブジェクトのインプリメンテーションインプリメンテーション・クラスを移行するために次のことを行います。

1. import oracle.oas.jco.*を import javax.ejb.*に変更します。

2. そのクラスで javax.ejb.SessionBeanがインプリメントされることを確認します。

EJB、ECO/Javaおよび JCORBA アプリケーションの移行 4-5

JCORBAから EJBへの移行

3. Loggerのリファレンスが存在する場合はすべて削除します。

4. 初期化操作が存在する場合は、すべて ejbCreate()メソッドに移動します。

5. setSessionContext()メソッドに渡されたセッション・コンテキストをインスタンス変数に保存します。

6. クラス内のパブリック・メソッドがすべて java.rmi.RemoteException例外をスローすることを確認します。

7. ObjectManagerタイプが存在する場合は、すべて SessionContextタイプに変更します。次の表に、ObjectManagerクラスのメソッドと SessionContextクラスのメソッドのマッピングを示します。

パラメータのシリアライズ化パラメータのシリアライズ化パラメータのシリアライズ化パラメータのシリアライズ化リモート・インタフェースでユーザー定義のパラメータが渡されている場合、そのクラスでjava.io.Serializableがインプリメントされることを確認してください。

注意注意注意注意 : JCORBAの Lifecycleは、EJBではサポートされていません。このため、JCORBAオブジェクトで oracle.oas.jco.Lifecycleをインプリメントしている場合は、これを削除する必要があります。

表表表表 4-2 ObjectManagerメソッドとメソッドとメソッドとメソッドと SessionContextメソッドメソッドメソッドメソッド

SessionContextメソッドメソッドメソッドメソッド ObjectManagerメソッドメソッドメソッドメソッド

getEnvironment() getEnvironment()

setSessionContext()に渡されるパラメータ getObjectManager()

getEJBObject() getSelf()

getEJBObject().remove() revokeSelf()

getUserTransaction() getCurrentTransaction()

4-6 Oracle Internet Application Server 8i Oracle Application Serverからの移行

索引索引索引索引

AApache JServセキュリティ,2-5通信プロトコル,2-4定義,2-2ロギング,2-9

Ccgi-lib.pl,3-10CGI環境変数,3-8CORBA~に移行,4-4

DData-Dumper,3-10DBD,3-9DBI,3-9

Eejbdescriptorツール,4-2eval,3-10

HHTML動的コンテンツ,2-8

HTTPサーバー,1-3メソッド,2-10リスナー,2-3

http.conf,2-9

IIO,3-10

JJava環境変数,4-2標準,1-2

JNDI,4-3JServセキュリティ,2-5通信プロトコル,2-4定義,2-2ロギング,2-9

JServlet,2-2JWeb

Toolkit,2-8,2-10カートリッジセッションを使用可能にする,2-7

「クライアント・セッション」パラメータ,2-8セッションのタイムアウト,2-9セッションを使用可能なアプリケーション,2-7ロギング,2-9

Llibperlctx.so,3-8libwww-perl,3-9Loggerサービス,2-9LWP,3-9

MMD5,3-10

索引索引索引索引 -1

mod_jservApache JServアーキテクチャにおける~,2-4設定,2-5定義,2-4フェイルオーバー,2-5

mod_perlApache JServアーキテクチャにおける~,2-4~と OASの Perl,3-9プリロード,3-11

mod_plsqloas2iasツール,3-4,3-5SQLファイル,3-7導出された列値,3-4認証,3-7ファイルのアップロードおよびダウンロード機能,

3-3mod_ssl

Apache JServアーキテクチャにおける~,2-4

NNET,3-10

OOAS

Java CORBA object (JCO),4-5JCOから EJBへの移行,4-5Loggerサービス,2-9,4-2,4-3,4-6Node Manager,2-7,2-8Perlカートリッジの設定,3-11Perlのインプリメンテーション,3-8「Webパラメータ」フォーム,2-8カートリッジ・タイプと Apacheモジュール,3-2~からの EJBの移行,4-2~からの JServletの移行,2-2コンポーネント,2-10配置記述子,4-2

oas2ias移行ツール,3-3OASの CGIモジュール,3-10oracle.owas.wrb.services.logger.OutputLogStreamクラ

ス,2-9oracle.owas.wrb.WRBRunnableクラス,2-9

Pperlinit.pl,3-11

perlnt40.dll,3-8Perlスクリプト

CGIとして実行,3-8Perlカートリッジの使用,3-8名前領域の競合,3-10パフォーマンス,3-8

Perlモジュール,3-9

SServlet 2.1仕様,2-2

UURI,2-5

WWeb Request Broker (WRB)カートリッジ・リクエストと~,2-3定義,2-3

Web Request Broker(WRB)Loggerサービス,2-9OASコンポーネントと~,2-10クライアント,3-8

ああああアプリケーション・スレッド,2-9

かかかか可用性,1-4環境変数,4-2

くくくくクラス,2-9

ささささサーブレットアプリケーション,2-9エンジン,2-4エンジンのメッセージ,2-9ゾーン,2-5メッセージ・ログ,2-10

索引索引索引索引 -2

ライフ・サイクル,2-6

しししし「初期化スクリプト」パラメータ,3-11シリアライズ可能なパラメータ,4-6シリアライズされたオブジェクト,4-2

すすすすスケーラビリティ,1-3スレッドアプリケーション,2-9

せせせせ静的データ・メンバー,2-9セッションコンテキスト,4-6状態,2-9

設定ファイル,1-5

そそそそ属性

Bean,4-2ソケット,2-4

ちちちちチャネル,2-10

ててててデータ・メンバー,2-9

はははは配置記述子,4-2パスワード,4-3パッケージ名,3-10パラメータシリアライズ可能,4-6ユーザー定義,4-6

ふふふふプロトコル,2-4

ほほほほホーム・インタフェース・ファイル,4-4

めめめめメソッド

create,4-4ECO,4-4EJB,4-4HTTP,2-10javax.servlet.http.HttpServletRequestクラス,2-11javax.servlet.http.HttpSession,2-8javax.servlet.http.HttpUtilsクラス,2-12javax.servlet.ServletContextクラス,2-12javax.servlet.ServletRequestクラス,2-11javax.servlet.ServletResponseクラス,2-12ObjectManager,4-6SessionContext,4-6パブリック,4-6

ゆゆゆゆユーザー名,4-3

りりりりリモート・インタフェース・ファイル,4-4

ろろろろロード・バランシング,1-4

索引索引索引索引 -3

索引索引索引索引 -4