この章では、JavaServer PagesをWebLogic ServerからOracle Application Serverに移行する場合に必要な情報について説明します。具体的には、単純なJSPページ、JSPカスタム・タグ・ライブラリおよびWebLogicカスタム・タグの移行について説明します。
ここで説明する内容は次のとおりです。
WebLogic ServerからOracle Application ServerへのJSPページの移行は簡単であり、コードを変更する必要はほとんどありません。まったくない場合もあります。
WebLogic Server 8.1は、Sun社のJavaServer Pages仕様バージョン1.2に準拠しています。 Oracle Application Server 10g リリース3(10.1.3.1.0)はJSP 2.0に準拠しており、バージョン1.2との下位互換性があります。したがって、バージョン1.2標準仕様に準拠して記述されたJSPページは、Oracle Application Serverで正常に動作し、最小限の作業で移行できます。
新しい環境へのJSPページの移行時に行う主なタスクは、構成およびデプロイです。独自の拡張機能およびタグ・ライブラリを使用している場合は、追加のタスクを行う必要があり、移行作業が複雑になります。
JSPページの移行時に行うタスクは、JSPページがパッケージされている方法およびデプロイされている方法によっても異なります。JSPページは、単純なJSPページ、他のリソースとともに標準のディレクトリ構造にパッケージされたWebアプリケーション(WARファイル)、またはエンタープライズ・アプリケーション・アーカイブ(EAR)・ファイルのいずれかとしてデプロイできます。 展開ディレクトリ形式およびWARファイルでのWebアプリケーションの移行は、「展開Webアプリケーションの移行」を参照してください。
WebLogic ServerとOracle Application Server Containers for J2EE(OC4J)の両方に同じバージョンのJava Server Pages仕様が実装されているため、JSP仕様のコア部分での相違点はありません。コア仕様以外の部分では相違点があります。表4-1に、それらの相違点を示します。
表4-1 JSP機能の比較
機能 | Oracle Application Server 10g リリース3(10.1.3.1.0) | WebLogic Server 8.1 |
---|---|---|
サポートされているJSPバージョン |
2.0 |
1.2 |
JSP基本タグ・ライブラリ |
サポートされている |
サポートされている |
JSP拡張タグ・ライブラリ |
サポートされている |
サポートされていない |
JSPソース・レベルでのデバッグ |
サポートされている |
サポートされていない |
ASPからJSPへのソース・レベルでの変換 |
サポートされている |
サポートされていない |
各ベンダーによって、独自のJSPカスタム・タグが提供されています。WebLogic Serverでは、JSPページで使用できる4つの特殊なJSPタグが提供されています。OC4Jでも、Oracle JSP Markup Language(JML)カスタム・タグ・ライブラリ、XMLおよびXSLとの統合用タグ、複数のJSPユーティリティ・タグなどの様々なJSPタグが提供されています。 これらのタグの詳細は、『Oracle Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス』を参照してください。
Oracle Application Serverには、業界で最速のJSPエンジンの1つが搭載されています。また、Oracle Application Serverでは、グローバリゼーション、SQLJ、式言語のサポートなどの付加価値の高い機能および拡張機能が複数提供されています。Oracle9iAS 1.0.2.2(Oracle Application ServerのOC4Jを導入した最初のリリース)には、2つのJSPコンテナがありました。オラクル社が開発したコンテナ(旧称OracleJSP)およびIronflare ABからライセンスを付与されたコンテナ(旧称Orion JSPコンテナ)です。
Oracle Application Serverでは、これらのコンテナがOC4J JSPコンテナと呼ばれる単一のJSPコンテナに統合されています。この新しいコンテナには、両方の旧バージョンの主要機能が継承されています。このコンテナは、OC4Jサーブレット・コンテナ内でサーブレットとして効率的に稼働し、他のOC4Jコンテナと密接に統合されています。この統合されたコンテナは、OracleJSPトランスレータ、および新しい簡易ディスパッチャとOC4J 1.0.2.2のコア・ランタイム・クラスとともに実行されるOrionコンテナ・ランタイムで主に構成されています。その結果、標準のJSP仕様にはない追加機能を備えた、業界でも最速のJSPエンジンの1つとなりました。
OC4J JSPでは、他のJSP環境に通常は移植可能なカスタム・タグ・ライブラリ、カスタムJavaBeansおよびカスタム・クラスを介して、次の拡張機能が提供されます。
スコープを指定可能なJavaBeansとして実装される拡張タイプ。
イベント処理用のJspScopeListener
。
カスタム・タグを使用したXMLおよびXSLとの統合。
データ・アクセスJavaBeans。
Oracle JSP Markup Language(JML)カスタム・タグ・ライブラリ(JSPの開発に必要なJavaについて、高度な知識は要求されなくなります)。
OC4J JSPでは、接続プーリング・タグ、XMLタグ、EJBタグ、ファイル・アクセス・タグ、電子メール・タグ、キャッシュ・タグ、OracleAS Personalizationタグ、Ultra Searchタグ、SQL機能のためのカスタム・タグ・ライブラリ、JSTL(JavaServer Pages標準タグ・ライブラリ)などがサポートされています。WebLogicでは、cache
、process
、repeat
およびフォーム検証という4つのタグのみがサポートされています。
コンテンツ配信ネットワークのエッジ・サーバーで動作し、Webコンテンツに最適のキャッシュ・ソリューションを提供するJESI(Edge Side Includes for Java)タグ、Web Object CacheタグおよびAPI(後続の各項を参照)。
関連項目: JSPカスタム・タグ・ライブラリの詳細は、『Oracle Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス』を参照してください。 |
OC4J JSPコンテナでは、自動ページ再コンパイルとクラス再ロードのモード切替え機能、JSPインスタンスのプーリング、タグ・ハンドラ・インスタンスのプーリングなどの重要な機能も提供されています。
後続の各項では、Edge Side Includes for Java(JESI)タグおよびWeb Object Cacheタグの概要について説明します。 その他の使用可能なタグについては、『Oracle Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス』を参照してください。
OC4Jのファイングレイン制御によって、開発者は、JSPページの断片を個々のタグにキャッシュできます。これらの断片は、OracleAS Web Cacheにキャッシュ可能で、JSPが変更されると自動的に無効化およびリフレッシュされます。この機能を支えるテクノロジは、Edge Side Includes(ESI)というW3C標準のXMLスキーマ(マークアップ言語)です。このテクノロジによって、動的コンテンツをWeb Cacheにキャッシュしたり、エッジ・ネットワーク上でアセンブルすることが可能になります。この動的コンテンツをキャッシュすることによって、JSPまたはサーブレットを実行する必要性が低くなるため、パフォーマンスが向上し、アプリケーション・サーバーの負荷が軽減され、待機時間が短縮されます。JESI(JSP用のESI)タグは、Edge Side Includes(ESI)フレームワークの最上位レイヤーに位置し、JSPアプリケーションにESIのキャッシュ機能を提供します。JESIタグを使用すると、JSPページの動的コンテンツをキャッシュ可能なコンポーネントまたは断片に分割できます。
Web Object CacheはOracle Application Serverの機能です。この機能によって、JSPまたはサーブレットによって生成された部分的な結果や中間結果を、Javaで記述されたWebアプリケーションで取得、格納、再利用、後処理およびメンテナンスできます。Web Object Cacheでは、プログラミング・インタフェース用としてタグ・ライブラリ(JSPページで使用)およびJava API(サーブレットで使用)が提供されています。キャッシュ・オブジェクトは、HTMLの断片、XMLの断片、XML DOMオブジェクト、またはJavaのシリアライズ可能オブジェクトで構成されます。これらのオブジェクトをメモリー内にキャッシュすることで、次のような様々な操作をキャッシュ・オブジェクトに対して実行できます。
ユーザー・プロファイルまたはデバイス特性に基づく異なるXSLTを、格納済のXMLに適用する操作
HTTP以外(クライアントに電子メールを送信するためのSMTPなど)でキャッシュ・オブジェクトを再利用する操作
Oracle JDeveloperは、OC4J JSPコンテナと統合され、JSPアプリケーションの開発サイクル全体(編集、ソース・レベルでのデバッグおよびJSPページの実行)がサポートされています。JDeveloperでは、広範なデータ対応型およびWeb対応型のJavaBeans(JDeveloper Web Bean)、および事前定義されたWeb Beanを簡単にページに追加できるJSP要素ウィザードも提供されています。また、開発者にとって非常に有効な独自の機能も提供されています。JDeveloperでは、JSPページ・ソース内にブレーク・ポイントを設定して、JSPページからJavaBeansに対するコールを追跡できます。この方法は、JSPページ内にprint文を追加し、状態をレスポンス・ストリームに出力してブラウザに表示したり、サーバー・ログに記録する方法などの手動によるデバッグ方法よりもはるかに有効です。
WebLogic ServerからJSPを移行する作業は簡単で、構成、WARファイルへのパッケージ化、および適切なデプロイ・ディレクトリへのデプロイなどのタスクを行います。これらのタスクは、手動でまたはOracle JDeveloperを使用して実行できます。
独自のタグ・ライブラリが使用されている場合は、Oracle独自のタグ(4.4.1を参照)に移植するか、またはカスタム・タグを作成してタグを置き換えることができます。
JSP移行時の既知の注意事項
WebLogic ServerからJSPを移行する場合の既知の注意事項は次のとおりです。
JSPページでは、HTTPサーブレットで必要とされる固有のマッピングは必要ありません。単純なJSPページをデプロイするには、JSPページおよびそのJSPページで必要なすべてのファイルを適切なディレクトリにコピーします。その他の登録作業は必要ありません。
注意: JSPを含むすべてのタイプのアプリケーションのデプロイに、Application Server Controlコンソールを使用する必要があります。ただし、次の例では、わかりやすくするために、Application Server Controlコンソールを使用せずにJSPファイルを手動でコピーしています。 |
J2EE Webアプリケーションおよび様々な構成ファイルがデフォルトで提供されるため、OC4Jでのデプロイ・プロセスは簡略化されています。
JSPページの移行時に行う作業を確認するために、WebLogic Serverに付属のサンプルJSPページを選択して移行しました。選択したサンプルは、独自の拡張機能が使用されていないものです。
表4-2に、単純なJSPページをWebLogic ServerからOC4Jに移行する一般的なプロセスを示します。
表4-2 単純なJSPページの移行
手順 | 説明 | プロセス |
---|---|---|
1 |
OC4Jインスタンスを起動します(現在実行されていない場合)。 |
Oracle Enterprise Manager 10g Application Server Controlコンソールの管理Webページまたは次の opmnctl @instance startproc ias-component=OC4J |
2 |
JSPページを適切なディレクトリにコピーします。 |
UNIXでのコピー元:
<BEA_HOME>/weblogic81/samples/server/examples/src/ examples/jsp/
コピー先:
<ORACLE_HOME>/j2ee/home/default-web-app/
Windowsでのコピー元:
<BEA_HOME>\weblogic81\samples\server\examples\src\ examples\jsp\
コピー先:
<ORACLE_HOME>\j2ee\home\default-web-app\
|
4 |
WebブラウザからJSPページをリクエストします。 |
Webブラウザから、次のURLを使用してJSPページをリクエストします。
http://<hostname>:7777/j2ee/HelloWorld.jsp
または
http://<hostname>:7777/j2ee/ShowDate.jsp
|
関連項目: JSPページの構成およびデプロイの詳細は、『Oracle Containers for J2EE JavaServer Pages開発者ガイド』および『Oracle Application Server Containers for J2EEユーザーズ・ガイド』を参照してください。 |
WebLogic ServerおよびOC4Jでは、JSPカスタム・タグの作成および使用が可能です。JSPカスタム・タグ・ライブラリをデプロイするプロセスは、WebLogic ServerおよびOC4Jの両方でほぼ同じです。
タグ・ライブラリは、Webアプリケーションの一部としてパッケージおよびデプロイできます。これらのライブラリは、Webアプリケーション・デプロイメント・ディスクリプタの特定のセクションで宣言します。
JSPカスタム・タグ・ライブラリの移行時に行う作業を確認するために、WebLogic Serverに付属のサンプルJSPページを選択して移行しました。選択したサンプルは、独自の拡張機能が使用されていないものです。
表4-3に、JSPカスタム・タグ・ライブラリを使用するJSPページをWebLogic Server 7.0からOC4Jに移行する一般的なプロセスを示します。(注意: この例は、WebLogic Server 8.1には適用できません。)
表4-3 WebLogic Server 7.0からのJSPカスタム・タグ・ライブラリの移行
手順 | 説明 | プロセス |
---|---|---|
1 |
タグ・ライブラリ・ファイルを適切なディレクトリにコピーします。 |
UNIXの場合:
<BEA_HOME>/weblogic700/samples/ server/src/examples/jsp/tagext/counter/
Windowsの場合:
<BEA_HOME>\weblogic700\samples\ server\src\examples\jsp\tagext\counter\
コピー先は、OC4Jインストール環境の次のディレクトリです。 UNIXの場合:
<ORACLE_HOME>/j2ee/home/ default-web-app/WEB-INF/
Windowsの場合:
<ORACLE_HOME>\j2ee\home\ default-web-app\WEB-INF\
|
2 |
タグ・ライブラリを使用するJSPファイルを適切なディレクトリにコピーします。 |
UNIXの場合:
<BEA_HOME>/weblogic700/samples/ server/src/examples/jsp/tagext/counter/
Windowsの場合:
<BEA_HOME>\weblogic700\samples\ server\src\examples\jsp\tagext\counter\
コピー先は、OC4Jインストール環境の次のディレクトリです。 UNIXの場合:
<ORACLE_HOME>/j2ee/home/default-web-app/
Windowsの場合:
<ORACLE_HOME>\j2ee\home\default-web-app\
|
3 |
タグ・ライブラリで必要なすべてのクラス・ファイル、およびJSPファイルで使用されるすべてのクラス・ファイルを適切なディレクトリにコピーします。 |
UNIXの場合:
<BEA_HOME>/weblogic700/samples/server/ config/examples/applications/ examplesWebApp/WEB-INF/classes/ examples/jsp/tagext/counter/
Windowsの場合:
<BEA_HOME>\weblogic700\samples\server\ config\examples\applications\ examplesWebApp\WEB-INF\classes\ examples\jsp\tagext\counter\
コピー先は、OC4Jインストール環境の次のディレクトリです。 UNIXの場合:
<ORACLE_HOME>/j2ee/home/ default-web-app/WEB-INF/ classes/examples/jsp/tagext/counter/
Windowsの場合:
<ORACLE_HOME>\j2ee\home\ default-web-app\WEB-INF\ classes\examples\jsp\tagext\counter\
注意: WebLogic Serverインストール環境に付属のこれらの |
4 |
JSPファイルで使用されるイメージ・ファイルをコピーします。 |
イメージ・ファイルを含むディレクトリをコピーします。コピー元は、WebLogic Serverインストール環境の次のディレクトリです。 UNIXの場合:
<BEA_HOME>/weblogic700/samples/server/ src/examples/jsp/tagext/counter/ images/numbers/
Windowsの場合:
<BEA_HOME>\weblogic700\samples\server\ src\examples\jsp\tagext\counter\ images\numbers\
コピー先は、OC4Jインストール環境の次のディレクトリです。 UNIXの場合:
<ORACLE_HOME>/j2ee/home/ default-web-app/images/numbers/
Windowsの場合:
<ORACLE_HOME>\j2ee\home\ default-web-app\images\numbers\
|
5 |
適切なWebアプリケーション・デプロイメント・ディスクリプタを変更し、変更内容を保存します。 |
後述のディレクティブ・エントリを UNIXの場合:
<ORACLE_HOME>/j2ee/home/ default-web-app/WEB-INF/
Windowsの場合:
<ORACLE_HOME>\j2ee\home\ default-web-app\WEB-INF\
ディレクティブ・エントリ( <taglib> <taglib-uri> counter </taglib-uri> <taglib-location> /WEB-INF/counter.tld </taglib-location> </taglib> |
6 |
OC4Jインスタンスを再起動します(現在実行されていない場合)。 |
opmnctl @instance restartproc ias-component=OC4J |
7 |
WebブラウザからJSPファイルをリクエストします。 |
Webブラウザから、次のURLにアクセスします。
http://
|
関連項目:
|
WebLogicカスタム・タグがWebアプリケーション全体で広範囲に使用されている場合、最も適切な移行オプションは、WebLogicタグ・ライブラリをOC4Jにデプロイして使用する方法です。このオプションについては、前述の「JSPカスタム・タグ・ライブラリの移行」を参照してください。その後、必要に応じて、OC4J JSPタグに移行できます。
WebLogicカスタム・タグがWebアプリケーション全体でほとんど使用されていない場合、最も適切な移行オプションは、JSPページを変更してOC4J JSPタグ・ライブラリを使用する方法です。後続の項で、このオプションについて説明します。
WebLogic Serverでは、JSPページで使用できる3つの特殊なJSPタグが提供されています。これらは、cache
、process
およびrepeat
です。
cache
タグOC4Jでは、Web Object Cacheタグの形式でWebLogic Serverのcache
タグのスーパーセットが提供されています。これらのタグによって、WebLogicのcache
タグにはない追加機能が提供されます。また、OC4JのWeb Object Cacheタグは、XMLタグ・ライブラリなどの他のタグ・ライブラリと密接に統合されています。 たとえば、cacheXMLObj
タグは、OC4JのXMLタグと密接に統合されています。
直接マップされていない機能の1つに、asyncがあります。ただし、Edge Side Includes(ESI)およびEdge Side Includes for Java(JESI)によって、asyncとほぼ同じ機能が提供されます。
関連項目: Web Object CacheタグおよびJESIタグの詳細は、『Oracle Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス』を参照してください。 |
process
タグOC4Jには、process
タグに相当するタグはありません。 最も近いオプションとしては、スクリプトレットのif
文、Apache Strutsの<logic:exists>
タグ、またはJSTLタグを代用する方法があります。別の方法として、Javaコードを記述してこのタグを実装する方法もあります。
repeat
タグOracle Application Server 10g リリース3(10.1.3.1.0)より前のリリースでは、このタグをJMLタグのjml:foreach
で置き換えることができました。しかし、JMLは、現在サポートされておらず、JSTLに置き換えられているため、JSTLのc:forEach
タグまたはx:forEach
タグを使用します。
関連項目:
|
htmlKonaは、WebLogic Serverで使用可能なAPIです。 HTMLをプログラムで作成および操作する場合に使用します。htmlKonaは、JSP仕様が使用可能になる前から使用できました。htmlKonaはWebLogic独自の仕様であるため、Oracle Application Serverではサポートされません。htmlKonaを使用しているアプリケーションをOracle Application Serverに移行する場合は、htmlKona使用部分をJSPで置き換えることをお薦めします。HTMLをプログラムで操作する必要がある場合、Oracle Jdeveloperでは、UMXなどのhtmlKona以上の機能が提供されています。
JSPページは、JSPコンパイラによって自動的にコンパイルされます。ただし、JSPページのテスト時およびデバッグ時には、JSPコンパイラに直接アクセスできます。
JSPコンパイラによって、.jsp
ファイルが解析され、.java
ファイルに変換されます。その後、.java
ファイルは、標準のJavaコンパイラによって.class
ファイルにコンパイルされます。
WebLogic ServerのJSPコンパイラを起動するには、WebLogic Serverのコマンドライン環境で次のコマンドを入力します。
java weblogic.jspc -options fileName
fileName
パラメータは、コンパイルするJSPページの名前を示します。JSPページ名の前後にオプションを指定できます。次に、-d
オプションを使用して、宛先ディレクトリweblogic/classes
にmyFile.jsp
をコンパイルする例を示します。
java weblogic.jspc -d /weblogic/classes myFile.jsp
OC4Jでは、標準のjsp_precompile
メカニズムの他に、JSPページを事前変換するためのojspc
というコマンドライン・ユーティリティが提供されています。
JSPページHelloWorld.jsp
がOC4JのデフォルトのWebアプリケーション・ディレクトリに格納されている例について考えてみます(HelloWorld.jsp
ファイルを<ORACLE_HOME>/j2ee/home/default-web-app/
またはWindows環境の同等のディレクトリから次のサブディレクトリにコピーしてください)。
UNIXの場合:
<ORACLE_HOME>/j2ee/home/default-web-app/examples/jsp/
Windowsの場合:
<ORACLE_HOME>\j2ee\home\default-web-app\examples\jsp\
このJSPページを事前変換するには、現在のディレクトリをアプリケーションのルート・ディレクトリに設定した後、ojspc
で-d
オプションを使用して、_pages
ディレクトリを出力のベース・ディレクトリに設定します。これによって、適切なパッケージ名およびファイル階層が指定されます。次に、実際の使用例を示します。
注意: ojspc に対して適切なJava 実行可能ファイルが使用されるように、path環境変数に<ORACLE_HOME>/jdk/bin が設定されていることを確認してください。 |
UNIXの場合(%
はUNIXプロンプトを意味します。):
% cd j2ee/home/default-web-app % ojspc -d ../application-deployments/default/defaultWebApp/persistence/_pages examples/jsp/HelloWorld.jsp
Windowsの場合(コマンド・プロンプト・ウィンドウで実行します。ここで、Oracle
はOracle Application Serverインストール環境のOracleホームです。):
C:\>cd Oracle\j2ee\home\default-web-app C:\>ojspc -d ../application-deployments/default/defaultWebApp/persistence/_pages examples/jsp/HelloWorld.jsp
前述のディレクトリ構造では、examples/jsp/HelloWorld.jsp
のアプリケーション相対パスが指定されています。変換されたJSPは次の場所に格納されます(UNIXの場合)。
<ORACLE_HOME>/j2ee/home/application-deployments/default/ defaultWebApp/persistence/_pages/_examples/_jsp/
Windowsの場合は、次の場所に格納されます。
<ORACLE_HOME>\j2ee\home\application-deployments\default\ defaultWebApp\persistence\_pages\_examples\_jsp\
実行時、JSPコンテナによって_pages
サブディレクトリ内のコンパイル済JSPファイルが検索されます。 ojspc
を前述の例のように実行すると、_examples/_jsp/
サブディレクトリが自動的に作成されます。
http://
<hostname>
:7777/j2ee/examples/jsp/HelloWorld.jsp
というURLを指定して、JSPページを起動します。事前変換を行わなかった場合より、レスポンス時間が短縮されます。
関連項目: 『Oracle Containers for J2EE JavaServer Pages開発者ガイド』のJSPの変換およびデプロイに関する章を参照してください。 |
JSPを実行せずに事前変換するには、ブラウザからJSPページを起動する際に、標準のjsp_precompile
リクエスト・パラメータを有効にします。 たとえば、http://
<hostname>:
<port>/foo.jsp?jsp_precompile=true
のように指定します。
<ORACLE_HOME>/j2ee/home/default-web-app/HelloWorld.jsp
ファイル(またはWindows環境の同等のファイル)を例として使用して、次のディレクトリにあるすべての_HelloWorld*
ファイルを削除します。
UNIXの場合:
<ORACLE_HOME>/j2ee/home/application-deployments/default/ defaultWebApp/persistence/_pages/
Windowsの場合:
<ORACLE_HOME>\j2ee\home\application-deployments\default\ defaultWebApp\persistence\_pages\
次に、http://
<hostname>:7777/j2ee/HelloWorld.jsp?jsp_precompile=true
というURLを呼び出します。事前変換は実行されますが、ブラウザにページは表示されません。 変換されたファイルが_pages
サブディレクトリにあることを確認します。