Oracle Containers for J2EE JavaServer Pages開発者ガイド 10g(10.1.3.1.0) B31860-01 |
|
この章では、OC4J付属のojspc
ユーティリティによって提供されているJSPの事前変換およびプリコンパイル機能について説明します。次の各項で、ojspc
機能について説明します。
この章では、ojspc
によって提供されている基本的なプリコンパイル機能と、アーカイブ・ファイルを使用するJSPページのバッチ・プリコンパイルについて説明します。次の項が含まれます。
単純なJSPページの場合、ojspc
のデフォルトの機能は次のとおりです。
.java
ファイルを作成します。
.java
ファイルをコンパイルし、ページ実装クラスに対する.class
ファイルを作成します。
ojspc
は、デフォルトでは、JSPトランスレータがオンデマンド変換で生成したものと同じファイル・セットを生成し、ojspc
を実行したときのカレント作業ディレクトリ内またはその下にそのファイル・セットを格納します。
出力には、次のファイルが含まれます。
.java
ソース・ファイル(バッチ事前変換の場合はコンパイル後に破棄されます。)
.class
ファイル
.res
)
特定の状況(この章で後述する-extres
オプションの説明を参照)では、ojspc
オプションによって、JSPトランスレータは、このコンテンツをページ実装クラスに格納せずに、静的なページのコンテンツに対する.res
Javaリソース・ファイルを作成します。
ojspc
ユーティリティは、JSPファイルの変換を行うのみでなく、WARまたはEARファイルのバッチ事前変換も実行できます。処理後の.class
ファイルとすべてのJavaリソース・ファイルは、WARファイル内のネストされたJARファイルに出力されます。ネストされたJARファイルは、WAR内のWEB-INF\lib
パス内に追加されるため、アーカイブはそのままOC4Jにデプロイできます。
ojspc
のコマンドラインにアーカイブ・ファイル名が含まれている場合、ojspc
は、デフォルトで次の手順を実行します。
.jsp
および.java
ファイルをすべて変換およびコンパイルします。
WEB-INF\lib
パスに新しいネストされたJARファイルを追加してアーカイブを更新し、出力された.class
ファイルとすべてのJavaリソース・ファイルをこのファイルに追加します。この過程で作成されたすべての.java
ファイルは破棄されます。
ネストされたJARファイルの名前には、出力されたアーカイブ・ファイルのベース名が含まれ、.jar
拡張子が付加されます。たとえば、ojspc
がsample.war
に対して実行された場合、WAR内のネストされたJARファイルの名前は__oracle_jsp_sample.jar
となります。
ネストされたJARファイル内のファイル・パスは、Javaパッケージ名と、JSP include
文とforward
文の指定したファイル・パスに基づきます。ネストされたJARファイル内の.class
ファイルとリソース・ファイルは、元のJSPファイルが抽出後に変換された場合と同じディレクトリ・パスに配置されます。
ojspc
実行可能ファイルの場所がホスト・マシンのPATHに追加されていれば、ojspc
ユーティリティを任意のディレクトリから起動できます。一般的なojspc
のコマンドライン構文は、次のとおりです。
ojspc [option_settings] file_list
ソース・ファイル・リストにはJSPファイルと他のソース・ファイル(.java
)、またはアーカイブ・ファイル(JAR、WAR、EARまたはZIPファイル)を含めることができます。ディレクトリ内のすべてのJSPファイルをプリコンパイルするには、file_list
の値に*.jsp
を指定します。
個別のojspc
の使用例は、次の各項を参照してください。
次に、ファイルの生成および格納の制御に最も頻繁に使用されるojspc
オプションを示します。オプションの完全なリストは、「ojspcコマンドライン・オプションのサマリー表」を参照してください。
-appRoot
は、JSPソース・ファイルが格納されているディレクトリと、ojspc
が実行されている作業ディレクトリとが異なる場合に、アプリケーション・ルート・ディレクトリを指定します。
-srcdir
は、ソース・ファイルを指定の場所に格納します(バッチ事前変換の場合は関係ありません)。
-dir
は、バイナリ・ファイル(.class
ファイルとJavaリソース・ファイル)を指定の場所に格納します(バッチ事前変換の場合は関係ありません)。
-noCompile
は、生成されたページ実装クラスのソースをコンパイルしません。その結果、.class
ファイルは作成されません。
-extres
は、静的なテキストをJavaリソース・ファイル(.res
)に格納します。
この項では、JSPをプリコンパイルする使用例を示します。
この例では、指定されたJSPを変換およびコンパイルする、基本的なojspc
の使用方法を示します。
cd /source ojspc index.jsp
この場合、次のファイルが/source
作業ディレクトリ内に生成されます。
_index.class _index.java
次の例では、myapp/mysrcdir/
内のすべてのJSPがコンパイルされます。
cd /source ojspc myapp/mysrcdir/*.jsp
デフォルトでは、出力される.java
および.class
ファイルは、/source
作業ディレクトリ内の_myapp/_mysrcdir
という名前の新しいサブディレクトリに生成されます。
次のように、ソース・ファイルが格納されているディレクトリ構造の外にあるディレクトリからojspc
を実行すると仮定します。この場合、ファイルへの絶対パスに加え、-appRoot
オプションを使用してアプリケーション・ルートも指定する必要があります。
cd /stuff ojspc -appRoot /source D:/source/myapp/mysrcdir/*.jsp
出力されるファイルは/stuff/_source/_myapp/_mysrcdir
に生成されます。
次の例では、-dir
オプションで指定したディレクトリにJavaクラスとファイルを生成し、-srcdir
オプションで指定したディレクトリに.java
ソース・ファイルを生成します。-extres
オプションを使用すると、JSP内の静的なテキストが_MyPage.res
というJavaリソース・ファイルに格納されます。これは、ページに大量の静的なコンテンツが含まれている場合に便利です。
ojspc -dir myapp/mybindir -extres -srcdir myapp/mysrcdir MyPage.jsp
ojspc
を使用する際、次の点に注意してください。
*.jsp
を指定します。
-extres true
ではなく、-extres
と入力します。
ojspc
をWARファイルや、または1つ以上のネストされたWARファイルが格納されているEARに対して実行し、中に格納されているJSPをプリコンパイルできます。ユーティリティにより、WAR内のWEB-INF\lib
パスに、コンパイル済のJavaクラスを格納した__oracle_jsp
warFileName
.jar
というJARが作成されます。出力されたWARはそのままデプロイできます。
たとえば、ojspc
をsample.ear
に対して実行し、その中のsample-web.war
には複数のJSPが含まれていると仮定します。出力ファイルを指定していないため、既存のWARは新しいJARファイルで更新されます。
ojspc sample.ear
更新後のsample-web.war
では、WEB-INF\lib
パスに次のファイルが含まれます。
__oracle_jsp_sample-web.jar
使用の際は、次の点にも注意してください。
ojspc
により、元のアーカイブ・ファイルが新しいJARで更新されます。元のアーカイブ・ファイルを変更したくない場合、-output
オプションを使用すると、新しいアーカイブ・ファイル名を指定できます。
-batchMask
オプションを使用すると、事前変換およびコンパイル用のファイル名拡張子を指定できます。指定した拡張子は、デフォルト(*.jsp
および*.java
)のかわりに使用されます。
-deleteSource
オプションを使用します。その場合、使用前に、「ojspcコマンドライン・オプションのサマリー表」に記されているこのオプションの説明を確認してください。
.java
ファイルは更新後のWARから破棄されます。
Antタスクを使用してJSPをプリコンパイルできます。ORACLE_HOME
/ant/
にあるAntのOC4J実装を使用する場合は、Antタスクを次のように設定できます。
<project name="test" default="t1" basedir="." xmlns:oracle="antlib:oracle" > <property name="oracle.home" value=ORACLE_HOME/> <target name="t1" > <oracle:compileJsp file="test/simplest.ear" verbose="true" output="test/out.ear" /> </target> <target name="t2" > <oracle:compileJsp verbose="true" appRoot="/scratch/ojspcAntTask/build" dir="/scratch/ojspcAntTask/generatedClass" srcDir="/scratch/ojspcAntTask/generatedJavaSources" addClasspath="lib/a.jar;lib/b.jar:${oracle.home}/lib/some.jar"> <fileset dir="/scratch/ojspcAntTask/build"> <include name="**/*.jsp"/> <exclude name="**/*negativeExample.jsp*"/> </fileset> </oracle:compileJsp> </target> </project>
これで、ant t1 t2を実行できます。
AntのOC4J実装を使用しない場合は、『Oracle Containers for J2EEデプロイメント・ガイド』の手順に従ってください。
このAntタスクの属性は、ojspcのコマンドライン・オプションに由来します。詳細はojspcオプションを確認してください。名前/値オプションは、それぞれがAntタスクの文字列またはファイルまたはパスの属性になります。ブール型オプション(名前のみで構成されるオプション)は、それぞれがAntタスクのブール型属性になります。
処理するファイルの指定方法は2つあります。1つは、t1というターゲットが示すように、ファイル属性を使用する方法です。もう1つは、t2というターゲットが示すように、標準のAntのfileset要素であるネストされた<fileset>
要素を使用する方法です。この方法では、コンパイル対象をより柔軟に指定できます。後者の場合、appRoot
属性を、ネストされた<fileset>
要素のdir
属性と同一にすることを強くお薦めします。
表4-1に、ojspc
事前変換ユーティリティでサポートされているコマンドライン・オプションが要約されています。
オプション | 説明 |
---|---|
|
生成されたページ実装クラス・ソースのコンパイル時に使用する、 |
|
アプリケーション・ルート・ディレクトリを指定します。変換対象のファイルが含まれているディレクトリとは別のディレクトリから 指定したアプリケーション・ルート・ディレクトリ・パスは、次の場合に使用されます。
次に例を示します。
この例では、デフォルトのアプリケーション・ルートの設定がカレント・ディレクトリの
この場合のパッケージは
ただし、他のディレクトリ( cd /home/mydir
パッケージは |
|
バッチ事前変換の際、アーカイブ・ファイルで処理されるソース・ファイルを指定できます。デフォルトでは、 ファイル・マスクのリストの前後は引用符で囲み、リスト内ではデリミタにカンマまたはセミコロンを使用します。ファイル・マスクの前後にある空白は無視されます。マスクにディレクトリを含めることができます。このオプションで指定するファイル・マスクでは大/小文字を区別しません。
デフォルト設定の場合、次の2つの例と同じです。 ojspc myapp.war
この次の例では、 ojspc -batchMask "*.jsph,*.jsp" myapp.war
次の例では、 ojspc -batchMask "*/abc*.jsp" myapp.zip
次の例は、前述の例と同じですが、アーカイブ・ファイルの上位レベルにあり、名前が「abc」で始まる ojspc -batchMask "abc*.jsp, */abc*.jsp" myapp.jar
最後の例では、ファイル ojspc -batchMask "mydir/subdir/t?st/My*.jsp" myapp.ear |
|
生成後のJavaクラス・ファイル内にSMAPデバッグ・データを生成する場合に使用します。
オプション設定の |
|
バッチ事前変換で、出力されるアーカイブ・ファイルに、処理されたソース・ファイルを含めない場合に使用します。デフォルトでは、
使用上の注意:
|
|
指定されたパスは、ファイルのシステム・パスとして(アプリケーション相対パスまたはページ相対パスではなく)取得されるため、ディレクトリはすでに存在している必要があります。 指定されたディレクトリ下のサブディレクトリは、パッケージに応じて、必要な場合に自動的に作成されます。
デフォルトでは、カレント・ディレクトリ( このオプションを使用して、生成されたバイナリ・ファイルを未使用のディレクトリに格納することをお薦めします。これによって、作成されたファイルを簡単に識別できます。 注意 |
|
生成されたページ実装クラスが拡張するクラスを指定します。バッチ事前変換には、このオプションを使用しないでください。 |
|
OC4JによってインポートされるデフォルトのJSPパッケージよりも多くのインポートを追加します。追加のインポートのパッケージ名または完全修飾されたクラス名を指定します。名前を指定する場合は、次の例のように引用符で囲み、カンマまたはセミコロンで区切る必要があります。 ojspc -extraImports "java.util.*,java.io.*" foo.jsp
|
|
ページの静的なコンテンツを、生成されたページ実装クラスのサービス・メソッドではなく、Javaリソース・ファイルに格納します。1ページに大量の静的なコンテンツが存在する場合は、この技法によって変換速度が向上し、ページの実行速度も向上します。詳細は、「大量の静的なコンテンツまたはタグ・ライブラリの使用の管理」を参照してください。
リソース・ファイルは、出力された
ファイル名は、JSPページ名に基づいて付けられます。現在のOC4JのJSP実装では、コア名がJSP名と同じになりますが(JSP名に特殊文字が含まれない場合)、接頭辞のアンダースコア(_)と接尾辞の ただし、名前の生成に関する正確な実装は、今後のリリースで変更される場合があります。 |
|
単一のJSP変換単位内で同じディレクティブ属性に重複する設定がある場合に、JSPの変換エラーを回避します。
|
|
コンソールに |
|
JSPとともにパッケージ化されているXMLディスクリプタ( |
|
生成されたページ実装クラスが実装するインタフェースを指定します。バッチ事前変換には、このオプションを使用しないでください。 |
|
|
|
ネストされた このオプションは、Oracle9iASリリース2より前のOC4Jバージョンとの下位互換性を維持するために使用します。
|
|
バッチ事前変換の場合に、出力アーカイブ・ファイル名を指定します。元のアーカイブ・ファイルのすべてのコンテンツが、指定したアーカイブ・ファイルにコピーされます。次に、事前変換で出力された 元のアーカイブ・ファイルは変更されません。デプロイには、元のファイルではなく新しいファイルを使用します。(ネストされたJARファイルの詳細は、「WARファイルのバッチ事前変換の概要」を参照。)
次に、
|
|
生成されたページ実装クラスのパッケージ名を指定します。指定されていない場合のパッケージ名は、
たとえば、 % cd /myapproot
この結果、パッケージ名として
この例で |
|
カスタム・タグを使用するために生成されたコードのサイズをさらに縮小します。デフォルトは |
|
コンパイル時にイントロスペクションが実行できなかった場合、リクエスト時にJavaBeanのイントロスペクションを実行できます。ただし、有効なコンパイル時のイントロスペクションが正常終了した場合、このフラグの設定に関係なく、リクエスト時のイントロスペクションは実行されません。デフォルトは
リクエスト時のイントロスペクションの使用例として、タグ・ハンドラによって、タグ補足情報クラスの
このフラグには、 <% if (cond) { %> |
|
property="*"の場合、
|
|
生成されたソース・ファイルを未使用のディレクトリに格納します。これによって、作成されたファイルを簡単に識別できます。バッチ事前変換には、このオプションを使用しないでください。
指定されたディレクトリ下のサブディレクトリは、パッケージに応じて、必要な場合に自動的に作成されます。
デフォルトでは、カレント・ディレクトリ( |
|
JSPトランスレータが、JSPページの静的なテキストをバイトではなく文字として生成します。デフォルトの 次の例に示すように、実行時に文字エンコードをアプリケーションで動的に変更する必要がある場合は、このフラグを有効にします。 <% response.setContentType("text/html; charset=UTF-8"); %> |
|
このオプションを使用して、タグ・ハンドラの再利用(タグ・ハンドラ・インスタンスのプーリング)のモードを指定します。有効な値は次のとおりです。
|
|
このオプションは、TLDのXML妥当性チェックを無効にします。デフォルトでは、TLDの妥当性チェックが実行されます。 |
|
次の例は、 > ojspc -verbose myerror.jsp |
|
JSPのバージョン番号を表示します。 |
|
![]() Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|