ヘッダーをスキップ

Oracle Containers for J2EE JavaServer Pages開発者ガイド
10g(10.1.3.1.0)

B31860-01
目次
目次
索引
索引

戻る 次へ

4 ojspcによるJSPページのプリコンパイル

この章では、OC4J付属のojspcユーティリティによって提供されているJSPの事前変換およびプリコンパイル機能について説明します。次の各項で、ojspc機能について説明します。

ojspcユーティリティの仕組み

この章では、ojspcによって提供されている基本的なプリコンパイル機能と、アーカイブ・ファイルを使用するJSPページのバッチ・プリコンパイルについて説明します。次の項が含まれます。

基本的なojspc機能の概要

単純なJSPページの場合、ojspcのデフォルトの機能は次のとおりです。

ojspcは、デフォルトでは、JSPトランスレータがオンデマンド変換で生成したものと同じファイル・セットを生成し、ojspcを実行したときのカレント作業ディレクトリ内またはその下にそのファイル・セットを格納します。

出力には、次のファイルが含まれます。

特定の状況(この章で後述する-extresオプションの説明を参照)では、ojspcオプションによって、JSPトランスレータは、このコンテンツをページ実装クラスに格納せずに、静的なページのコンテンツに対する.res Javaリソース・ファイルを作成します。

WARファイルのバッチ事前変換の概要

ojspcユーティリティは、JSPファイルの変換を行うのみでなく、WARまたはEARファイルのバッチ事前変換も実行できます。処理後の.classファイルとすべてのJavaリソース・ファイルは、WARファイル内のネストされたJARファイルに出力されます。ネストされたJARファイルは、WAR内のWEB-INF\libパス内に追加されるため、アーカイブはそのままOC4Jにデプロイできます。

ojspcのコマンドラインにアーカイブ・ファイル名が含まれている場合、ojspcは、デフォルトで次の手順を実行します。

  1. アーカイブ・ファイルを開きます。

  2. アーカイブ内の.jspおよび.javaファイルをすべて変換およびコンパイルします。

  3. アーカイブ内のタグ・ファイルも、アーカイブ内のJSPで使用されている場合、やはりコンパイルされます。

  4. WEB-INF\libパスに新しいネストされたJARファイルを追加してアーカイブを更新し、出力された.classファイルとすべてのJavaリソース・ファイルをこのファイルに追加します。この過程で作成されたすべての.javaファイルは破棄されます。

ネストされたJARファイルの名前には、出力されたアーカイブ・ファイルのベース名が含まれ、.jar拡張子が付加されます。たとえば、ojspcsample.warに対して実行された場合、WAR内のネストされたJARファイルの名前は__oracle_jsp_sample.jarとなります。

ネストされたJARファイル内のファイル・パスは、Javaパッケージ名と、JSP include文とforward文の指定したファイル・パスに基づきます。ネストされたJARファイル内の.classファイルとリソース・ファイルは、元のJSPファイルが抽出後に変換された場合と同じディレクトリ・パスに配置されます。

ojspcの使用

ojspc実行可能ファイルの場所がホスト・マシンのPATHに追加されていれば、ojspcユーティリティを任意のディレクトリから起動できます。一般的なojspcのコマンドライン構文は、次のとおりです。

ojspc [option_settings] file_list

ソース・ファイル・リストにはJSPファイルと他のソース・ファイル(.java)、またはアーカイブ・ファイル(JAR、WAR、EARまたはZIPファイル)を含めることができます。ディレクトリ内のすべてのJSPファイルをプリコンパイルするには、file_listの値に*.jspを指定します。

個別のojspcの使用例は、次の各項を参照してください。

次に、ファイルの生成および格納の制御に最も頻繁に使用されるojspcオプションを示します。オプションの完全なリストは、「ojspcコマンドライン・オプションのサマリー表」を参照してください。

1つ以上のJSPのプリコンパイル

この項では、JSPをプリコンパイルする使用例を示します。

単一のJSPのプリコンパイル

この例では、指定されたJSPを変換およびコンパイルする、基本的なojspcの使用方法を示します。

cd /source
ojspc index.jsp

この場合、次のファイルが/source作業ディレクトリ内に生成されます。

_index.class
_index.java
複数のJSPのプリコンパイル

次の例では、myapp/mysrcdir/内のすべてのJSPがコンパイルされます。

cd /source
ojspc myapp/mysrcdir/*.jsp

デフォルトでは、出力される.javaおよび.classファイルは、/source作業ディレクトリ内の_myapp/_mysrcdirという名前の新しいサブディレクトリに生成されます。

異なるソース・ディレクトリ内のJSPのプリコンパイル

次のように、ソース・ファイルが格納されているディレクトリ構造の外にあるディレクトリから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を使用する際、次の点に注意してください。

WARファイル内のJSPのプリコンパイル

ojspcをWARファイルや、または1つ以上のネストされたWARファイルが格納されているEARに対して実行し、中に格納されているJSPをプリコンパイルできます。ユーティリティにより、WAR内のWEB-INF\libパスに、コンパイル済のJavaクラスを格納した__oracle_jspwarFileName.jarというJARが作成されます。出力されたWARはそのままデプロイできます。

たとえば、ojspcsample.earに対して実行し、その中のsample-web.warには複数のJSPが含まれていると仮定します。出力ファイルを指定していないため、既存のWARは新しいJARファイルで更新されます。

ojspc sample.ear

更新後のsample-web.warでは、WEB-INF\libパスに次のファイルが含まれます。

__oracle_jsp_sample-web.jar

使用の際は、次の点にも注意してください。

Antタスクを使用したJSPのプリコンパイル

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を実行できます。


注意

この章に記載されているOC4J Antタスクは、Apache Antバージョン1.6.5での使用を意図しています。最新のApache Ant製品ドキュメントについては、http://ant.apache.org/manual/を参照してください。 


AntのOC4J実装を使用しない場合は、『Oracle Containers for J2EEデプロイメント・ガイド』の手順に従ってください。

このAntタスクの属性は、ojspcのコマンドライン・オプションに由来します。詳細はojspcオプションを確認してください。名前/値オプションは、それぞれがAntタスクの文字列またはファイルまたはパスの属性になります。ブール型オプション(名前のみで構成されるオプション)は、それぞれがAntタスクのブール型属性になります。

処理するファイルの指定方法は2つあります。1つは、t1というターゲットが示すように、ファイル属性を使用する方法です。もう1つは、t2というターゲットが示すように、標準のAntのfileset要素であるネストされた<fileset>要素を使用する方法です。この方法では、コンパイル対象をより柔軟に指定できます。後者の場合、appRoot属性を、ネストされた<fileset>要素のdir属性と同一にすることを強くお薦めします。

ojspcコマンドライン・オプションのサマリー表

表4-1に、ojspc事前変換ユーティリティでサポートされているコマンドライン・オプションが要約されています。

表4-1    ojspc事前変換ユーティリティのオプション 
オプション  説明 

-addclasspath 

生成されたページ実装クラス・ソースのコンパイル時に使用する、javacのための追加クラスパス・エントリを指定します。 

-approot 

アプリケーション・ルート・ディレクトリを指定します。変換対象のファイルが含まれているディレクトリとは別のディレクトリからojspcを実行する場合のみ、このオプションを使用します。デフォルトはojspcの作業ディレクトリです。

指定したアプリケーション・ルート・ディレクトリ・パスは、次の場合に使用されます。

  • 変換するページの静的なincludeディレクティブで使用

    指定したディレクトリ・パスは、変換するページのincludeディレクティブ内でアプリケーション相対(コンテキスト相対)パスの前に付加されます。

  • ページ実装クラスのパッケージを決定するときに使用

    パッケージのディレクトリは、変換されるファイルの場所に基づいて、アプリケーション・ルート・ディレクトリに対して相対的に決定されます。このパッケージによって、出力ファイルの格納場所も決定します。

次に例を示します。

  • 次のファイルを変換すると仮定します。

    /abc/def/ghi/test.jsp
    
  • 次のように、カレント・ディレクトリの/abcからojspcを実行します。

    cd /abc
    ojspc def/ghi/test.jsp
    
  • test.jspページには次のincludeディレクティブがあります。

    <%@ include file="/test2.jsp" %> 
    
  • 次のように、test2.jspページは/abcディレクトリ内にあります。

    /abc/test2.jsp 
    

この例では、デフォルトのアプリケーション・ルートの設定がカレント・ディレクトリの/abcディレクトリであるため、-appRootの設定は不要です。includeディレクティブでは、アプリケーションに対して相対的な/test2.jsp構文(「/」で始まります)を使用するため、インクルード・ページの場所は、/abc/test2.jspになります。

この場合のパッケージは_def._ghiです。このパッケージは、ojspcを実行したときのカレント・ディレクトリに対して相対的なtest.jspの場所に基づいて決定されます。(カレント・ディレクトリはデフォルトのアプリケーション・ルートです。)これに従って、出力ファイルが格納されます。

ただし、他のディレクトリ(/home/mydirなど)からojspcを実行する場合は、次の例に示すように、-appRootの設定が必要です。

cd /home/mydir
ojspc -appRoot /abc abc/def/ghi/test.jsp

パッケージは_def._ghiのままですが、ディレクトリは、指定のアプリケーション・ルート・ディレクトリに対して相対的なtest.jspの場所に基づいて決定されます。 

-batchMask 

バッチ事前変換の際、アーカイブ・ファイルで処理されるソース・ファイルを指定できます。デフォルトでは、.jspおよび.javaファイルがすべて処理されます。-batchMaskオプションによって指定されたファイル・マスクは、これらのデフォルトに追加するのではなく、デフォルトのかわりに使用されます。

ファイル・マスクのリストの前後は引用符で囲み、リスト内ではデリミタにカンマまたはセミコロンを使用します。ファイル・マスクの前後にある空白は無視されます。マスクにディレクトリを含めることができます。このオプションで指定するファイル・マスクでは大/小文字を区別しません。

-batchMask実装では、標準のワイルドカード・パターン・マッチングが完全にサポートされています。

デフォルト設定の場合、次の2つの例と同じです。

ojspc myapp.war

ojspc -batchMask "*.jsp,*.java" myapp.war

この次の例では、.javaファイルの処理が削除されていますが、.jsphファイルの処理が追加されています。

ojspc -batchMask "*.jsph,*.jsp" myapp.war

次の例では、.javaファイルは処理されていません。名前が「abc」で始まり、アーカイブ・ファイルの上位レベルのサブディレクトリにある.jspファイルのみが処理されます。

ojspc -batchMask "*/abc*.jsp" myapp.zip

次の例は、前述の例と同じですが、アーカイブ・ファイルの上位レベルにあり、名前が「abc」で始まる.jspファイルも処理されます。

ojspc -batchMask "abc*.jsp, */abc*.jsp" myapp.jar

最後の例では、ファイルa.jspcと、「My」で始まり、mydir/subdirのサブディレクトリであるディレクトリにあり、パターン「t?st」(2番目の文字が任意の文字、「test」、「tast」、「tust」など)と一致する.jspファイルが明確に処理されます。

ojspc -batchMask "mydir/subdir/t?st/My*.jsp" myapp.ear
 

-debug 

生成後のJavaクラス・ファイル内にSMAPデバッグ・データを生成する場合に使用します。

オプション設定のfileにより、作業ディレクトリ内のSMAPファイルにデバッグ情報が生成されます。ファイル名は生成されるJavaクラスと同じで、.smap拡張子が付加されます。たとえば、foo.jspのデバッグ・データは_foo_jsp.smapに出力されます。 

-deleteSource 

バッチ事前変換で、出力されるアーカイブ・ファイルに、処理されたソース・ファイルを含めない場合に使用します。デフォルトでは、.jspおよび.javaファイルが対象となります。それ以外の場合は、-batchMaskオプションのファイル・マスクと一致するファイルのみが対象となります。生成された.javaファイルも破棄されます。

-outputオプションを使用しない場合、元のアーカイブ・ファイルのコンテンツが上書きされ、処理後に処理されたソース・ファイルが削除されます。-outputオプションを使用すると、処理されたソース・ファイルは、指定の出力アーカイブ・ファイルにはコピーされません。(元のアーカイブ・ファイルは変更されません。)

使用上の注意:

  • 名前がデフォルトのファイル拡張子と一致しない(-batchMaskオプションを使用しない場合)ファイル、または-batchMaskオプションを使用して指定した名前マスクと一致しないファイルは、-deleteSourceオプションでは破棄されません。これらのファイルは、必要に応じて、出力されたアーカイブ・ファイルから削除する必要があります。これは特に、静的にインクルードされたソース・ファイルの場合に当てはまります。静的にインクルードされたソース・ファイルは、独自に変換できないため、.jsp拡張子、またはファイルを独自に変換しようとする他の拡張子を使用できません。

  • JSPソース・ファイルをデプロイしない場合に、-deleteSourceを使用するには、ターゲットのJSP実行時環境を、使用可能なソース・ファイルがない場合でも正しく動作するように構成する必要があります。

 

-dir(または-d) 

ojspcが生成されたバイナリ・ファイル(.classファイルとJavaリソース・ファイル)を格納するベース・ディレクトリを指定します。(-extresオプションによって静的なコンテンツに対して作成された.resファイルは、Javaリソース・ファイルです。)ショートカットとして、-dも使用できます。

指定されたパスは、ファイルのシステム・パスとして(アプリケーション相対パスまたはページ相対パスではなく)取得されるため、ディレクトリはすでに存在している必要があります。

指定されたディレクトリ下のサブディレクトリは、パッケージに応じて、必要な場合に自動的に作成されます。

デフォルトでは、カレント・ディレクトリ(ojspcを実行したときのカレント・ディレクトリ)を使用します。

このオプションを使用して、生成されたバイナリ・ファイルを未使用のディレクトリに格納することをお薦めします。これによって、作成されたファイルを簡単に識別できます。

注意

  • このオプションは、WARまたはEARファイルのバッチ事前変換の際は無視されます。

  • ディレクトリ名に空白を使用できるWindowsおよびUNIXなどの環境では、ディレクトリ名を引用符で囲んでください。

 

-extend 

生成されたページ実装クラスが拡張するクラスを指定します。バッチ事前変換には、このオプションを使用しないでください。 

-extraImports 

OC4JによってインポートされるデフォルトのJSPパッケージよりも多くのインポートを追加します。追加のインポートのパッケージ名または完全修飾されたクラス名を指定します。名前を指定する場合は、次の例のように引用符で囲み、カンマまたはセミコロンで区切る必要があります。

ojspc -extraImports "java.util.*,java.io.*" foo.jsp

-extraImportsオプションは、Oracle Containers for J2EE 10g(10.1.3.1.0)では推奨されていません。 

-extres 

ページの静的なコンテンツを、生成されたページ実装クラスのサービス・メソッドではなく、Javaリソース・ファイルに格納します。1ページに大量の静的なコンテンツが存在する場合は、この技法によって変換速度が向上し、ページの実行速度も向上します。詳細は、「大量の静的なコンテンツまたはタグ・ライブラリの使用の管理」を参照してください。

リソース・ファイルは、出力された.classファイルと同じディレクトリに格納されます。

ファイル名は、JSPページ名に基づいて付けられます。現在のOC4JのJSP実装では、コア名がJSP名と同じになりますが(JSP名に特殊文字が含まれない場合)、接頭辞のアンダースコア(_)と接尾辞の.resが名前に付けられます。たとえば、MyPage.jspを変換すると、通常の出力以外に、_MyPage.resが作成されます。

ただし、名前の生成に関する正確な実装は、今後のリリースで変更される場合があります。 

-forgiveDupDirAttr 

単一のJSP変換単位内で同じディレクティブ属性に重複する設定がある場合に、JSPの変換エラーを回避します。

-forgiveDupDirAttrオプションは、Oracle Containers for J2EE 10g(10.1.3.1.0)では推奨されていません。 

-help(または-h) 

コンソールにojspcの使用情報が表示されます。 

-ignoreErrors 

JSPとともにパッケージ化されているXMLディスクリプタ(web.xmlまたはorion-web.xmlなど)の1つによるエラーでないかぎり、エラーが発生した場合も処理を継続するようojspcに強制します。 

-implement 

生成されたページ実装クラスが実装するインタフェースを指定します。バッチ事前変換には、このオプションを使用しないでください。 

-noCompile 

ojspcが生成されたページ実装クラスをコンパイルしないよう指示します。このオプションは、なんらかの理由で、後で代替のJavaコンパイラを使用してコンパイルする場合などに使用します。 

-oldIncludeFromTop 

ネストされたincludeディレクティブ内のページの場所をトップレベルのページに対して相対的にします。それ以外の場合は、1つ上位の親ページに対して相対的になります。これはJSP仕様に準拠しています。

このオプションは、Oracle9iASリリース2より前のOC4Jバージョンとの下位互換性を維持するために使用します。

-oldIncludeFromTopオプションは、Oracle Containers for J2EE 10g(10.1.3.1.0)では推奨されていません。 

-output 

バッチ事前変換の場合に、出力アーカイブ・ファイル名を指定します。元のアーカイブ・ファイルのすべてのコンテンツが、指定したアーカイブ・ファイルにコピーされます。次に、事前変換で出力された.classファイルおよびリソース・ファイルが、指定したファイル内のネストされたJARファイルに格納されます(-deleteSourceが有効になっている場合、指定したファイルからソース・ファイルが削除されます)。

元のアーカイブ・ファイルは変更されません。デプロイには、元のファイルではなく新しいファイルを使用します。(ネストされたJARファイルの詳細は、「WARファイルのバッチ事前変換の概要」を参照。)

-outputオプションを指定しないと、元のアーカイブ・ファイルが更新され、新しいアーカイブ・ファイルは作成されません。

次に、-outputの使用例を示します。

ojspc -output myappout.war myapp.war
 

-packageName 

生成されたページ実装クラスのパッケージ名を指定します。指定されていない場合のパッケージ名は、ojspcを実行したときのカレント・ディレクトリに対して相対的な.jspファイルの場所に基づいて決定されます。

たとえば、/myapprootディレクトリからojspcを実行し、.jspファイルが/myapproot/src/jspsrcディレクトリに存在する場合について考えます(%はUNIXプロンプトを表します)。

% cd /myapproot
% ojspc -packageName myroot.mypackage src/jspsrc/Foo.jsp

この結果、パッケージ名としてmyroot.mypackageが使用されます。

この例で-packageNameオプションが使用されなかった場合、JSPトランスレータは(現在の実装内で)デフォルトの_src._jspsrcをパッケージ名として使用します。(実装の詳細は、今後のリリースで変更される場合があります。) 

-reduceTagCode 

カスタム・タグを使用するために生成されたコードのサイズをさらに縮小します。デフォルトはfalseです。 

-reqTimeIntrospection 

コンパイル時にイントロスペクションが実行できなかった場合、リクエスト時にJavaBeanのイントロスペクションを実行できます。ただし、有効なコンパイル時のイントロスペクションが正常終了した場合、このフラグの設定に関係なく、リクエスト時のイントロスペクションは実行されません。デフォルトはfalseです。

リクエスト時のイントロスペクションの使用例として、タグ・ハンドラによって、タグ補足情報クラスのVariableInfoインスタンスにある一般的なjava.lang.Objectインスタンスが変換時とコンパイル時に戻される一方で、実際には、特定のオブジェクトがリクエスト時(実行時)に生成される場合を想定します。この場合、-reqTimeIntrospectionが有効になっていると、Webコンテナはリクエスト時までイントロスペクションを遅延します。

このフラグには、if..then..elseループの別の分岐などで、Beanを2回宣言できるという効果もあります。次の例を考えてみます。-reqTimeIntrospectionが有効になっていないと、このコードにより、解析例外が発生します。有効になっている場合、コードはエラーなしで機能します。

<% if (cond) { %> 
<jsp:useBean id="foo" class="pkgA.Foo" />
<% } else { %>
<jsp:useBean id="foo" class="pkgA.Foo2" />
<% } %>
 

-setpropertyOnErrContinue 

property="*"の場合、jsp:setPropertyの使用時にエラーが発生したとき、リクエスト・パラメータの反復と対応するBeanプロパティの設定が継続されます。

-setpropertyOnErrContinueオプションは、Oracle Containers for J2EE 10g(10.1.3.1.0)では推奨されていません。 

-srcdir 

生成されたソース・ファイルを未使用のディレクトリに格納します。これによって、作成されたファイルを簡単に識別できます。バッチ事前変換には、このオプションを使用しないでください。

ojspcが、生成された(.java)ソース・ファイルを格納する場所を指定します。指定するディレクトリはすでに存在している必要があります。指定されたパスは、アプリケーション相対パスまたはページ相対パスではなく、ファイルのシステム・パスとして取得されます。

指定されたディレクトリ下のサブディレクトリは、パッケージに応じて、必要な場合に自動的に作成されます。

デフォルトでは、カレント・ディレクトリ(ojspcを実行したときのカレント・ディレクトリ)を使用します。 

-staticTextInChars 

JSPトランスレータが、JSPページの静的なテキストをバイトではなく文字として生成します。デフォルトのfalseでは、静的なテキスト・ブロックの出力で、パフォーマンスが改善されます。

次の例に示すように、実行時に文字エンコードをアプリケーションで動的に変更する必要がある場合は、このフラグを有効にします。

<% response.setContentType("text/html; charset=UTF-8"); %>
 

-tagReuse 

このオプションを使用して、タグ・ハンドラの再利用(タグ・ハンドラ・インスタンスのプーリング)のモードを指定します。有効な値は次のとおりです。

  • runtime: タグ・ハンドラ再利用の実行時モデルを有効にします。この設定は、特定のJSPページで、JSPページ・コンテキスト属性oracle.jsp.tags.reusefalseの値に設定するとオーバーライドできます。現在のリリースでは、このオプションは推奨していません。

  • none: タグ・ハンドラの再利用を無効にします。この設定は、特定のJSPページで、JSPページ・コンテキスト属性oracle.jsp.tags.reusetrueの値に設定するとオーバーライドできます。

  • compiletime(デフォルト): タグ・ハンドラ再利用のコンパイル時モデルをその基本モードで有効にします。

  • compiletime_with_release: タグ・ハンドラ再利用のコンパイル時モデルを、その「解放」モードで有効にします。この場合、タグ・ハンドラのrelease()メソッドは、指定したページの指定したタグ・ハンドラの使用の合間にコールされます。

 

-validateXML 

web.xmlファイルのXML妥当性チェックをリクエストします。デフォルトでは、web.xmlの妥当性チェックは実行されません。

このオプションは、TLDのXML妥当性チェックを無効にします。デフォルトでは、TLDの妥当性チェックが実行されます。 

-verbose 

ojspcが実行時の状態情報を出力します。

次の例は、myerror.jspの変換に対する-verboseの出力を示します。(この例では、ojspcmyerror.jspが存在するディレクトリから実行されます。)

> ojspc -verbose myerror.jsp
Translating file: myerror.jsp
JSP files translated successfully.
Compiling Java file: ./_myerror.java
 

-version 

JSPのバージョン番号を表示します。 


戻る 次へ
Oracle
Copyright © 2007 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引