この章では、多数(およそ100以上)のEnterprise JavaBeans(EJB)モジュールを含む大型のJ2EEアプリケーションをデプロイする際のOC4JおよびJavaコンパイラの構成方法を示します。
次の項目について説明します。
1つ以上の注釈を含むEJB 3.0アプリケーションをデプロイすると、OC4Jはメモリー内ejb-jar.xmlファイルをデプロイ・ディレクトリ内のorion-ejb-jar.xml
ファイルと同じ場所に自動的に書き込みます。このejb-jar.xml
ファイルは、注釈とデプロイされたejb-jar.xml
ファイル(存在する場合)の両方から取得された構成を表します。
1つ以上のEJB 2.1 JARファイルを含むアプリケーションがデプロイされると、OC4Jは各EJBモジュールに対して、アプリケーションにパッケージされた様々なコンポーネント・インタフェースを実装するラッパー・クラスを自動的に生成します。次に、OC4Jは、Javaコンパイラを起動して、生成したEJBラッパー・クラスをコンパイルします。
OC4Jは、EJBラッパー・クラスをコンパイルするために、バッチ・モードと非バッチ・モードという2つのモードをサポートしています。
バッチ・モード
これはOC4Jで使用されるデフォルトのコンパイル・モードです。一般的に、バッチ・モードでは、多数のEJBを含む大型アプリケーションをデプロイするときに処理が迅速に行われます。ただし、非バッチ・モードでのデプロイよりも大容量のヒープ・メモリー割当てが必要です。
このモードでは、OC4JはJavaコンパイラを1回コールして、デプロイしているEAR内のすべてのEJBモジュールに対するすべてのJavaラッパー・コードをコンパイルします。
コンパイラがプロセス外モードで実行するように構成されている場合(OC4Jのデフォルト)、OC4Jは1つのJVMプロセスを作成して、ラッパー・コードのコンパイルを実行します。コンパイラをプロセス外で実行するように構成する方法や、OC4Jと同じJVMプロセスで実行するように構成する方法は、「プロセス外またはプロセス内でのコンパイラ実行の構成」を参照してください。
非バッチ・モード
OC4Jがバッチ・モードでのコンパイル中にjava.lang.OutOfMemory
例外をスローした場合は、必要なメモリー割当てが少ない非バッチ・モードでコンパイルしてください。ただし、このモードを使用するとデプロイの時間が長くかかります。
このモードでは、OC4Jは複数のコンパイラをコールします。つまり、デプロイしているEAR内のEJB JARファイルごとに1つずつコールします。
Javaコンパイラがプロセス外モードで実行するように構成されている場合、OC4Jは、デプロイしているEARファイルに含まれるEJB JARファイルごとにJVMプロセスを作成します。
非バッチ・モードでデプロイするには、application.xml
またはorion-application.xml
の<orion-application>
要素のbatch-compile
属性をfalse
に設定します。次に例を示します。
<orion-application ... batch-compile="false" .../>
ラッパー・コードのデバッグ
OC4JはEJB 2.1 CMPアプリケーションをデプロイすると、デフォルトでラッパー・コードをORACLE_HOME
/j2ee/
instance
/application-deployments/
ear-name
/
ejb-name
/
generated
ディレクトリに生成し、そのコードをコンパイルし、コンパイルされたクラスを含むJARファイルを作成してから、生成したラッパー・コードを削除します。生成したラッパー・コードを保持するようにOC4Jを設定することもできます。ラッパー・コードを調べると、アプリケーションのなんらかの問題のデバッグに役立つ場合があります。
注意: コンパイルのバッチ・モードと非バッチ・モードの指定に使用していたejbdeploy.batch システム・プロパティは、OC4J 10g(10.1.3.5.0)では非推奨になります。
生成したラッパー・コードのデバッグもこのリリースでは非推奨になります。 これらのオプションはコンテナ管理の永続性を持つEJB 2.1エンティティBeanのみに適用されます。セッションBean、メッセージドリブンBeanまたはEJB 3.0エンティティには適用されません。OC4Jは、コンテナ管理の永続性を持つ各EJB 2.1エンティティBeanに対して1ファイルだけ生成します。ユーザーがEJB 3.0エンティティのみを使用すると、OC4Jはアーティファクトを生成しません。 |
この項では、デプロイ中にEJBラッパー・クラスやJSPをコンパイルするJavaコンパイラの構成に関するガイドラインを説明します。次の項目について説明します。
すべてのコンパイラ構成パラメータは、<java-compiler>
要素の属性としてORACLE_HOME
/j2ee/
instance
/config/server.xml
(OC4Jサーバー構成ファイル)に指定されることに注意してください。
デフォルトでは、OC4JはSun Microsystems JDKに含まれるjavac
コンパイラを使用して、生成したEJBラッパー・クラス、JavaServer Pages、Webサービス・クラス、およびアプリケーションにパッケージされた任意の.java
ファイルをコンパイルします。ただし、server.xml
の<java-compiler>
要素を代替コンパイラ構成に変更することで、別のJavaコンパイラを使用するようにOC4Jを構成できます。
たとえば、次の表記法では、OC4JはIBMのJikesコンパイラを使用します。
<java-compiler name="jikes" in-process="false"/>
Javaコンパイラは、2つのモード(プロセス外またはプロセス内)のいずれかで実行するようにOC4J内で構成できます。
プロセス外
このモードでは、コンパイラの実行のために個別のJVMプロセスが生成されます。これは、OC4Jで使用されるデフォルトのコンパイラ実行モードで、メモリー・リソースの管理に優れています。EJBラッパー・クラスのコンパイルが完了すると、関連するJVMに割り当てられていたメモリーが解放され、他のプロセスで使用できるようになります。
<java-compiler>
要素のin-process
属性をfalse
に設定すると、このモードでコンパイルが実行されます。
プロセス内
このモードでは、コンパイラはOC4Jと同じJVMプロセスで実行されます。<java-compiler>
要素のin-process
属性をtrue
に設定すると、このモードでコンパイルが実行されます。
表4-1に、server.xml
(OC4J構成ファイル)でJavaコンパイラの構成を定義する<java-compiler>
要素の属性をまとめています。
表4-1 <java-compiler>要素の属性
属性 | 説明 |
---|---|
|
値: 文字列 デフォルト: javac コンパイラ名を指定します。デフォルト値の |
|
値: 文字列 コンパイラのディレクトリの絶対パスを指定します。 デフォルトの |
|
値: ブール デフォルト: Javaコンパイラをプロセス内( |
|
コマンドライン・オプションをJavaコンパイラに渡すときに使用します。複数のオプションは空白で区切って指定します。次に例を示します。 <java-compiler name="javac" options="-J-Xmx2048m -J-Xss=8m"/> |
|
値: 文字列 デフォルト: 使用するソース・ファイルのエンコーディングを指定します。 |
|
コンパイラの拡張機能ライブラリの場所を指定します。 |
|
値: ブール デフォルト:
|
大型アプリケーションをデプロイするときは、OC4J JVMのヒープ・サイズ(若い世代と古い世代)の設定のみでなく、永続的な世代のサイズにも注意してください。
JVMの永続的な世代は、大型アプリケーションをデプロイするときに重要な役割を果します。大型アプリケーションには、数百あるいは数千に及ぶEJBモジュールが含まれることがあり、OC4J JVMは多数のクラスをロードする必要があります。このため、永続的な世代のサイズ値を高く設定してください。
永続的な世代の設定サイズが小さすぎると、ヒープに十分な空きメモリーがある場合でも、JDKからjava.lang.OutOfMemoryError
エラーを受け取ります。この場合は、-XX:MaxPermSize
プロパティを設定して永続的な世代(Perm)のサイズを増やしてください。
たとえば、合計ヒープ・サイズを768MBに設定するには、OC4Jの起動時に次のように設定します。
java -Xms512m -Xmx512m -XX:MaxPermSize=256m -jar oc4j.jar
若い世代と古い世代のサイズも含めて-XX:MaxPermSize
プロパティの値を決めるには、visualgc
を使用してアプリケーションのデプロイ時にOC4J JVMを監視します。visualgc
ガベージ・コレクションのモニタリング・ツールは、Sun社が提供する無料のjvmstat 3.0
ディストリビューションに含まれています。このツールの詳細やダウンロード方法は、次のWebサイトを参照してください。
http://java.sun.com/performance/jvmstat/