ヘッダーをスキップ
Oracle Containers for J2EEデプロイメント・ガイド
10g(10.1.3.5.0)
B56032-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

15 デプロイ・エラーのトラブルシューティング

この章では、デプロイ時に発生する一般的なエラーについて説明します。次の項目について説明します。

アプリケーション・デプロイ時の割込み

デプロイ・プロセスがなんらかの理由で割り込まれた場合には、システムの一時ディレクトリ(デフォルトでは/var/tmp)をクリーンアップする必要があります。

Application Server Controlのデプロイ・ウィザードでは、デプロイ・プロセス中に情報を格納するために、一時ディレクトリのおよそ20MBのスワップ領域を使用します。終了すると、デプロイ・ウィザードによって一時ディレクトリから不要なファイルがクリーンアップされます。

ただし、ウィザードが割り込まれると、一時ディレクトリをクリーンアップする時間や機会を失うことがあります。このため、このディレクトリから不要なデプロイ・ファイルを自分でクリーンアップする必要があります。そうしないと、このディレクトリがいっぱいになり、その後のデプロイができなくなります。

OC4Jの起動時に、java.io.tmpdirコマンドライン・オプションで新しい場所を指定して、一時ディレクトリを変更することができます。システム・プロパティの設定の詳細は、『Oracle Containers for J2EE構成および管理ガイド』を参照してください。

アプリケーション・デプロイ時の例外

この項では、デプロイ時に発生する可能性がある次のタイプのエラーについて詳しく説明します。

OC4Jのメモリー不足エラー

大容量のEARファイル(75MBを超えるファイルなど)をデプロイするときに、OC4Jによりjava.lang.OutOfMemoryエラーがスローされることがあります。十分なメモリーがある場合は、OC4Jの起動時にOC4Jプロセスのヒープ・サイズを増やすことで、この問題を解消できます。次に例を示します。

java -Xms512m -Xmx512m -jar oc4j.jar

admin.jarコマンドライン・ユーティリティを使用してアプリケーションをデプロイするときにも、この問題が発生することがあります。この場合も、このユーティリティのヒープ・サイズを増やして解決します。

java -Xms512m -Xmx512m -jar admin.jar ormi://localhost:23791 admin welcome -deploy ...

LinuxまたはUNIX環境でOC4Jを実行している場合は、JVMプロセスでこのような大容量のメモリーの割当てが許可されていることを、ulimit設定で確認してください。

Javaコンパイラのメモリー不足エラー

EJBラッパー・クラスをコンパイルするためにプロセス外モードでjavacコンパイラを使用しているときに、OC4Jから次のメッセージが返されることがあります。

The system is out of resources.
Consult the following stack trace for details.
java.lang.OutOfMemoryError: Java heap space

このメッセージは、javacを実行するために生成された外部JVMプロセスで、メモリーが不足していることを示します。

コンパイラに割り当てられているデフォルトのヒープ・サイズは1024MBです。コンパイラに割り当てるメモリーを増やすには、server.xml<java-compiler>要素のoptions属性で-Xmxオプションを設定してヒープ・サイズを増やします。次に例を示します。

<java-compiler name="javac" in-process="false" options="-J-Xmx2048m"/>

スタック・オーバーフロー・エラー

EJBラッパー・クラスをコンパイルするときに、アプリケーションが大きすぎると、javacコンパイラによりjava.lang.StackOverflowErrorがスローされることがあります。

スレッドのスタック・サイズ・オプションにより、スレッド属性オブジェクトのstacksize属性を制御できます。この属性に、作成されたスレッドで使用される最小スタック・サイズを指定します。

このエラーが発生した場合は、server.xml<java-compiler>要素のoptions属性で-Xssオプションを設定して、スレッド・スタック・サイズを増やすことができます。次に例を示します。

<java-compiler name="javac" in-process="false" options="-J-Xmx2048m -J-Xss=8m"/>

開いているファイル数のエラー

大容量のアプリケーションをデプロイするときに、OC4J JVMにより、開いているファイルの数が多すぎることを知らせる例外がスローされる場合があります。次に例を示します。

java.net.SocketException: Too many open files
java.io.IOException: Too many open files

このような例外は、オペレーティング・システムでファイル記述子が不足していることを示します。ファイル記述子は、様々な種類の開いているファイル(ソケットやパイプなど)を識別するために、プロセスによって使用されます。

通常、ファイル記述子の数を増やすと、このような問題は解決されます。UNIX環境では、ulimit -nコマンドでファイル記述子の数を増やすことができます。ファイル記述子の最大数と、プロセスに割り当てられる最大サイズは、リソースの制限によって定義されます。強い制限値の詳細は、オペレーティング・システム固有のシステム管理マニュアルを参照してください。