Java EE関連の例外情報を説明します。
コネクタサービスで異常検出時に出力される例外情報について説明します。
例外メッセージに出力される原因や対象オブジェクト名を参考に対処を行ってください。
例外のスタックトレースに「Caused by:」に続いて別の例外のスタックトレースが出力される場合があります。
根本原因を表していますので、根本原因の例外情報もあわせて確認してください。
例外の説明
[意味]
コネクタサービスの処理中に異常を検出しました。
[原因]
以下の原因が考えられます。
例外メッセージが「JMS resource not created : {0} 」の場合
可変情報{0}のJMSリソース生成に失敗しました。定義に誤りがある可能性があります。
例外メッセージが「Failed to start resource adapter」の場合
リソースアダプタの起動に失敗しました。リソースアダプタのstart()メソッドの実行時に例外が発生した可能性があります。
[ユーザの対処]
以下の対処を行ってください。
例外メッセージが「JMS resource not created : {0} 」の場合
EJB規約を参照して、deployment descriptor(ejb-jar.xml)定義を確認し誤りを修正してください。
Message-driven Beanの場合は、「Interstage EJB application deployment descriptor (sun-ejb-jar.xml)」定義を確認し誤りを修正してください。
例外メッセージが「Failed to start resource adapter」の場合
根本原因の例外情報から原因を特定し、原因を取り除いてからコネクタの再活性処理を行ってください。
レルムの動作時に出力される例外情報について説明します。
例外情報にスタックトレースが出力されている場合、スタックトレースに続けて「Caused by:」として別の例外が出力されていることがあります。根本原因を表していますので、こちらをあわせて確認してください。
例外の説明
[可変情報]
{0}:エラー情報
[意味]
レルムの初期化時に例外が発生しました。
[システムの処理]
処理を中断します。
[ユーザの対処]
可変情報{0}のエラー原因を確認して、対処してください。
メッセージブローカとの通信時に出力される例外情報について説明します。
例外情報にスタックトレースが出力されている場合、スタックトレースに続けて「Caused by:」として別の例外が出力されていることがあります。根本原因を表していますので、こちらをあわせて確認してください。
例外の説明
[意味]
クライアントからのリクエストで異常を検出しました。
[原因]
-uオプションを指定せずに、-fオプションを指定してimqcmdコマンドを実行した可能性があります。
[ユーザの対処]
-uオプションを指定して、imqcmdコマンドを再度実行してください。
[可変情報]
{0}:エラー原因
[意味]
メッセージブローカでエラーが発生しました。
[システムの処理]
処理を中断します。
[ユーザの対処]
可変情報{0}のエラー原因を確認して、対処してください。
[可変情報]
{0}:エラー原因
[意味]
JMS APIメソッドを呼び出そうとしましたが、JMSオブジェクトはすでにcloseされています。
[システムの処理]
処理を中断します。
[ユーザの対処]
アプリケーションを確認してください。
すでにcloseされたJMSオブジェクトのAPIメソッドを呼び出すことはできません。
[意味]
クライアントからのリクエストで異常を検出しました。
[ユーザの対処]
例外のメッセージに「IJMQ」で始まるメッセージIDが含まれます。該当するメッセージIDを参照し、対処を実施してください。
アプリケーションの運用中に出力される例外情報について説明します。説明されている例外以外についてはJavaのAPI仕様書を参照して対処してください。
例外情報にスタックトレースが出力されている場合、スタックトレースに続けて「Caused by:」として別の例外が出力されていることがあります。根本原因を表していますので、こちらをあわせて確認してください。
例外の説明
[意味]
指定されたファイルの検出に失敗しました。
[原因]
メッセージブローカの起動時に-nameオプションで指定するメッセージブローカインスタンス名を使用したファイルの作成に失敗しました。
[ユーザの対処]
メッセージブローカの起動時に-nameオプションで指定するメッセージブローカインスタンスの文字数を減らし、再度実行してください。
[意味]
java.lang.ArrayIndexOutOfBoundsExceptionの発生元が、org.apache.xml.resolver.readers.TextCatalogReader、またはorg.apache.xml.resolver.Catalog、またはcom.sun.org.apache.xml.internal.resolver.readers.TextCatalogReader、またはcom.sun.org.apache.xml.internal.resolver.Catalogの場合は、カタログファイルに誤りがあります。
[原因]
java.lang.ArrayIndexOutOfBoundsExceptionの発生元が、org.apache.xml.resolver.readers.TextCatalogReader、またはorg.apache.xml.resolver.Catalog、またはcom.sun.org.apache.xml.internal.resolver.readers.TextCatalogReader、またはcom.sun.org.apache.xml.internal.resolver.Catalogの場合は、以下の原因が考えられます。
カタログファイルの解析に失敗しました。
[ユーザの対処]
java.lang.ArrayIndexOutOfBoundsExceptionの発生元が、org.apache.xml.resolver.readers.TextCatalogReader、またはorg.apache.xml.resolver.Catalog、またはcom.sun.org.apache.xml.internal.resolver.readers.TextCatalogReader、またはcom.sun.org.apache.xml.internal.resolver.Catalogの場合は、以下の対処を行ってください。
カタログファイルの書式を見直して再実行してください。
注意
カタログファイルは、OASIS XML Catalogの仕様に従った記述を行ってください。
[意味]
オブジェクトのクラスキャスト(型変換)に失敗しました。
[原因]
あるオブジェクトを継承関係にないクラスにキャストしようとしました。
[ユーザの対処]
アプリケーションの実装を確認し、適切なクラスにキャストするよう修正してください。
キャストに失敗したクラス名は、以下のように例外メッセージに出力される場合があります。
java.lang.ClassCastException: <キャストに失敗したクラス名> |
キャストに失敗したクラス名が「$Proxy99」のような<$Proxy数値>で、かつ発生タイミングがアプリケーション起動時の場合は、以下の原因が考えられます。
1つのアプリケーション内でEJB2.1形式とEJB3.0形式など、仕様の異なるバージョンの実装や定義が混在している
アプリケーションの定義ファイルやアノテーションに定義したクラスの型が誤っている(deployment descriptorの<local-home>タグにRemoteインタフェースクラスを定義しているなど)
アプリケーション配備時に配備モジュールの検証を有効にして配備を行うと、アプリケーションがJava EE規約に準拠しているか確認できます。
[意味]
クラスの文字列名を使用してクラスローダよりロードしようとしましたが、指定された名前のクラスの定義が見つかりませんでした。
[原因]
アプリケーションまたは指定されたクラスパスの中に指定された名前のクラスが含まれていません。
[ユーザの対処]
指定された名前のクラスをアプリケーションまたはクラスパスに追加してください。
実装に問題のないアプリケーションをHotDeployした時に当エラーが発生した場合は、IJServerクラスタを再起動してください。
[意味]
不正な引数、または不適切な引数をメソッドに渡しました。
[原因]
API、メソッドに不正または不適切な引数が渡された可能性があります。
[ユーザの対処]
例外メッセージ、およびスタックトレースを参照し、アプリケーションがAPI、メソッドに不正または不適切な引数を渡していないか確認してください。
[意味]
不正または不適切なときにメソッドが呼び出されたことを示します。すなわち、Java環境またはJavaアプリケーションは、要求されたオペレーションに適した状態ではありません。
[原因]
以下の原因が考えられます。
例外メッセージが「Operation not allowed」の場合
実行された操作は許可されていません。
例外メッセージが「EJB not in READY state」の場合
呼び出し可能な状態ではありません。
例外メッセージが「EJBObject not available」の場合
EJBObjectは取得できません
例外メッセージが「EJBLocalObject not available」の場合
EJBLocalObjectは取得できません
例外メッセージが「ERROR: only SessionBeans with bean-managed transactionscan obtain UserTransaction」の場合
トランザクション管理種別が「Container」のSession BeanではUserTransactionを取得できません。
アプリケーションで作成したスレッドでトランザクション取得を行っています。
例外メッセージが「No transaction context.」の場合
トランザクションが開始されていないため、トランザクションコンテキストがありません。
アプリケーションで作成したスレッドでトランザクション操作メソッドが実行されました。
例外メッセージが「EJB Timer Service not available」の場合
EJBタイマーサービスの初期化に失敗している可能性があります。
例外メッセージが「cannot add non-XA Resource to global JTS transaction.」の場合
グローバルトランザクションで動作する条件に該当し、非XAリソースを使用している可能性があります。
例外メッセージが「Post too large」の場合
リクエストのContent-Lengthヘッダーのサイズが、「POSTリクエストの最大サイズ」で指定した値を超えた可能性があります。
[ユーザの対処]
以下の対処を行ってください。
例外メッセージが「Operation not allowed」の場合
EJB規約を参照し、実行したメソッドを呼び出し可能なメソッドで実行するようにアプリケーションを修正してください。
例外メッセージが「EJB not in READY state」の場合
EJB規約を参照し、実行したメソッドを呼び出し可能なメソッドで実行するようにアプリケーションを修正してください。
例外メッセージが「EJBObject not available」の場合
EJB規約を参照し、getEJBObjectメソッドを呼び出し可能なメソッドで実行するようにアプリケーションを修正してください。
例外メッセージが「EJBLocalObject not available」の場合
EJB規約を参照し、getEJBLocalObjectメソッドを呼び出し可能なメソッドで実行するようにアプリケーションを修正してください。
例外メッセージが「ERROR: only SessionBeans with bean-managed transactionscan obtain UserTransaction」の場合
UserTransactionの操作を行わないようアプリケーションを修正してください。トランザクションのロールバックを行いたい場合は、EJBContext.setRollbackOnlyメソッドを使用してください。
アプリケーションで作成したスレッドでトランザクション管理することはJava EE規約で禁止されているため、コンテナから呼び出されたスレッドでトランザクション管理を実行してください。
例外メッセージが「No transaction context.」の場合
トランザクションを開始した状態でメソッドを実行するようにアプリケーションを修正してください。
アプリケーションで作成したスレッドでトランザクション管理することはJava EE規約で禁止されているため、コンテナから呼び出されたスレッドでトランザクション管理を実行してください。
例外メッセージが「EJB Timer Service not available」の場合
IJServerクラスタ起動時にEJB5108のメッセージが出力されていないか確認してください。EJB5108のメッセージが出力されている場合、EJB5108の対処を実施してください。
例外メッセージが「cannot add non-XA Resource to global JTS transaction.」の場合
グローバルトランザクションで動作する条件に合致しないように環境を変更するか、もしくはXAリソースを使用してください。できる限り環境を変更してローカルトランザクションを使用することをお勧めします。
例外メッセージが「Post too large」の場合
リクエストのContent-Lengthヘッダーが想定内のサイズの場合、「POSTリクエストの最大サイズ」を見直してください。
[意味]
クラスのロードに失敗しました。
[原因]
アプリケーションまたは指定されたクラスパスの中に必要なクラスが含まれていません。
[ユーザの対処]
例外メッセージに含まれるクラスをアプリケーションまたはクラスパスに追加してください。javaコマンドでJava SEスタンドアロンアプリケーションを実行している場合、以下も参照して対処してください。
エラーが発生したクラスが「javax/security/jacc/PolicyContextException」の場合
javaee.jarにクラスパスが設定されていません。正しくクラスパスを設定してください。
エラーが発生したクラスが「com/sun/enterprise/admin/monitor/registry/MonitoringLevelListener」の場合
appserv-admin.jarにクラスパスが設定されていません。正しくクラスパスを設定してください。
エラーが発生したクラスが「com/sun/jms/spi/xa/JMSXAQueueConnectionFactory」の場合
imqjmsra.jarにクラスパスが設定されていません。正しくクラスパスを設定してください。
J2EE実行環境のIJServerで発生した場合、以下も参照して対処してください。
エラーが発生したクラスが「com/sun/appserv/management/util/misc/RunnableBase$HowToRun」の場合
appserv-ext.jarにクラスパスが設定されていません。正しくクラスパスを設定してください。
エラーが発生したクラスが「javax/servlet/jsp/JspApplicationContext」の場合
appserv-rt.jarが設定されていないか確認してください。設定されている場合、appserv-rt.jarの定義を削除し、代わりにappserv-rt-client.jarを設定してください。
[意味]
呼び出されたメソッドの定義がない場合にスローされます。
[原因]
以下の原因が考えられます。
Applicationクラスローダの設定先とWebクラスローダの設定先の両方に同じクラスが存在しており、バッティングが発生している。
親(祖先)のクラスローダの設定先とアプリケーションの両方に同じクラスが存在しており、バッティングが発生している。
[ユーザの対処]
以下の対処を行ってください。
Applicationクラスローダの設定先とWebクラスローダの設定先の両方に同じクラスが存在していないか確認してください。存在する場合は以下を検討してください。
アプリケーションの構成の変更を検討してください。
親(祖先)クラスローダへの委譲を後に設定することで回避可能か検討してください。
親(祖先)クラスローダの設定先とアプリケーションの両方に同じクラスが存在していないか確認してください。存在する場合は以下を検討してください。
親(祖先)クラスローダの設定先とアプリケーションの両方に同じクラスが設定されないようにクラスローダの設定を変更してください。
親(祖先)クラスローダの設定を変更できない場合、親(祖先)クラスローダに設定しているクラスのバージョンにあったアプリケーションの構築を検討してください。
[意味]
呼び出されたメソッドの定義がない場合にスローされます。
[原因]
Webサービスクライアントの実行で実行環境からスローされた場合、おもに以下の原因が考えられます。
javax.xml.ws.WebServiceRefアノテーションでtype要素に指定している型に誤りがあります。
[ユーザの対処]
以下の対処を行ってください。
javax.xml.ws.WebServiceRefアノテーションでtype要素に指定した型に合わせて変数の型宣言を行ってください。
[意味]
Java VMによって、クラスファイルのメジャーバージョン番号とマイナーバージョン番号がサポートしていない番号と判定された場合にスローされます。
[原因]
アプリケーションまたは指定されたクラスパスの中のクラスファイルとJDK/JREの組み合わせが正しくありません。
[ユーザの対処]
Javaは基本的に上位互換ですが、後のバージョンのJDKでコンパイルしたものの実行は保証されません。実行時に使用するJavaと同じバージョンでコンパイルされているか確認してください。
[意味]
要求されたオペレーションはサポートしていません。
[原因]
サポートされないAPIを実行しました。
[ユーザの対処]
例外メッセージ、およびスタックトレースを参照し、アプリケーションが非サポートのAPIを呼び出していないか確認してください。
[意味]
RMI-IIOP通信で呼び出したサーバアプリケーションで例外が発生しました。
[原因]
サーバアプリケーションで何らかの異常が発生しています。
[ユーザの対処]
サーバアプリケーションが配備されているIJServerクラスタのサーバーログを参照し、エラー情報を確認して対処してください。
IPCOMと連携したIIOP通信の負荷分散機能を利用している場合は、負荷分散対象となるIJServerクラスタが停止していないか確認してください。
[意味]
アクセス権限が不足しています。
[原因]
例外メッセージが以下の場合、IIOP通信を行うための権限が不足しています。
access denied (java.io.SerializablePermission enableSubclassImplementation) |
セキュリティーマネージャー使用時に発生する場合があります。
[ユーザの対処]
例外メッセージが以下の場合、1または2の対処を行ってください。
access denied (java.io.SerializablePermission enableSubclassImplementation) |
システムプロパティに以下を設定してください。
jdk.corba.allowOutputStreamSubclass=true |
policyファイルに以下の権限を追加してください。
permission java.io.SerializablePermission "enableSubclassImplementation"; |
[意味]
JDBC API実行中にエラーが発生しました。
[原因]
データベースで異常が発生しました。
[ユーザの対処]
メッセージに以下の文字列が出力されている場合は、Symfowareのエラーが発生しています。“付録A List Works組込データベースまたはSymfowareの保守作業時のメッセージ”を参照して対処してください。
JYPXXXXE ('X'は数字) |
メッセージに以下の文字列が出力されている場合は、Oracleのエラーが発生しています。Oracleの「エラーメッセージ」を参照して対処してください。
ORA-XXXXX ('X'は数字) |
メッセージに以下の文字列が出力されている場合は、アプリケーションですでにクローズした(closeメソッドを実行した)接続に対して処理を実行しています。アプリケーションを見直してください。
Connection closed |
OracleデータベースがサポートしていないバージョンのJDBCドライバを使用している場合、正常にデータが挿入できないなどの現象が発生することがあります。
使用するJDBCドライバのバージョンがOracleデータベースがサポートするバージョンか確認してください。
「Caused by:」としてorg.apache.derbyパッケージの例外が出力されている場合はJava DBで異常が発生しています。Java DBのマニュアルを参照して対処してください。
例外メッセージが以下の場合、最大プールサイズ分のコネクションがすべて使用中で、待ち時間が最大待ち時間を超過しています。しばらく待ってから再度実行するか、最大プールサイズまたは最大待ち時間の設定値が妥当か確認してください。
Error in allocating a connection. Cause: In-use connections equal max-pool-size and expired max-wait-time. Cannot allocate more connections. |
例外メッセージ「This pool is not registered with the runtime environment : null」が出力されている場合はテーブル自動生成に使用するJDBCリソースのアクセスに失敗した可能性があります。アプリケーションのdeployment descriptorに定義したJDBCリソース名を確認し再度コマンドを実行してください。
使用するデータベースがSymfowareの場合、「文のタイムアウト」機能を使用できません。文のタイムアウトを有効にした場合、Statement、PreparedStatement、CallableStatementオブジェクトに対して、アプリケーションサーバから「setQueryTimeout」メソッドが呼び出された際に、以下のエラーメッセージが出力されます。
指定されたメソッドは当ドライバではサポートされていません |
メッセージに「Error in allocating a connection. Cause: null」が出力されており、SymfowareまたはHA Database Ready SX1のNative SQLを使用している場合は、同時に使用しているPowerGres PlusまたはHA Database Ready SX1のOpen SQLの問題で発生している可能性があります。データベース提供元にお問い合わせください。
[意味]
トランザクションはすでにロールバックされているか、ロールバックにマークされています。
[原因]
トランザクションの状態が不正なため、処理を中断しました。
[ユーザの対処]
アプリケーション実行時のトランザクションの状態を適切な状態になるように修正してください。
トランザクションのタイムアウトが発生した可能性があります。その場合は、以下の定義値を見直してください。
トランザクションタイムアウトの定義値
トランザクションタイムアウトに指定した値を見直してください。
<ejb><cmt-timeout-in-seconds>タグの定義値
EJBアプリケーションのトランザクション管理種別が「Container」の場合、かつ「Interstage EJB application deployment descriptor (sun-ejb-jar.xml)」の<ejb><cmt-timeout-in-seconds>タグを定義している場合は、指定した値を見直してください。
[可変情報]
{0}:エラー原因
[意味]
使用できないJMS APIメソッドを呼び出そうとしました。
[システムの処理]
処理を中断します。
[ユーザの対処]
アプリケーションを確認してください。
QueueSessionインタフェースは、以下のメソッドを呼び出すことはできません。
unsubscribe()
createTemporaryTopic()
TopicSessionインタフェースは、以下のメソッドを呼び出すことはできません。
createSender()
createBrowser()
createTemporaryQueue()
[意味]
クライアントからのリクエストで異常を検出しました。
[ユーザの対処]
例外のメッセージに「IJMQ」で始まるメッセージIDが含まれます。該当するメッセージIDを参照し、対処を実施してください。
[意味]
JNDI APIに指定したJNDI名が不当です。
[原因]
JNDI APIに指定したJNDI名が不当です。例外メッセージが「Name is empty」の場合には、JNDI名に空文字(長さ0の文字列)が指定されている可能性があります。
[ユーザの対処]
正しいJNDI名を指定して再度実行してください。
[意味]
指定されたJNDI名はすでに他のオブジェクトにバインドされているために、バインディングを追加できませんでした。
[原因]
バインドで使用しようとしたJNDI名が重複使用されています。
[ユーザの対処]
JNDI名を重複して使用しないようにアプリケーションを修正してください。
実装に問題のないアプリケーションをHotDeployした時に当エラーが発生した場合は、IJServerクラスタを再起動してください。
[意味]
指定されたJNDI名に対応するサーバアプリケーションが見つかりません。
[原因]
以下の原因が考えられます。
例外メッセージが「No object bound to name java:comp/XXX」(XXXは可変)の場合
参照するオブジェクトの参照名がdeployment descriptorファイルに定義されていません。環境ネーミングコンテキストを使用する場合には、deployment descriptorファイルに参照するオブジェクトの情報を定義する必要があります。
例外メッセージに加えて例外がスローされる原因となった例外情報が出力されており、その例外が「org.omg.CORBA.XXX」(XXXは可変)の場合にはINS形式で指定したJNDI名(接続先ホスト名とポート番号を含む)でネーミングサービスの接続に失敗しています。
例外メッセージが「{0} not found」({0}はJNDI名、サブコンテキスト名、論理名のいずれか)の場合
ターゲットに指定したホスト名・ポート番号に対応するIJServerクラスタに、指定したJNDI名のオブジェクトが登録または配備されていません。
ターゲットに指定したホスト名・ポート番号に対応するIJServerクラスタにおいて、リソースまたはアプリケーションが無効になっています。
deployment descriptorファイルのmapped-nameタグまたはInterstage deployment descriptorファイルのjndi-nameタグに指定したJNDI名に誤りがあります。
deployment descriptorファイルの参照するオブジェクトの定義情報(ejb-refタグの指定など)に誤りがあります。
アプリケーション内で指定したJNDI名に誤りがあります。
例外メッセージが「{0}#null not found」({0}はJNDI名)の場合
deployment descriptorファイルのejb-refタグにインタフェースの定義が不足しています。
例外メッセージが「Lookup of java:comp/UserTransaction not allowed for Container managed Transaction beans」の場合
トランザクション管理種別が「Container」のEJBアプリケーションでUserTransactionのlookupが実行されました。
[ユーザの対処]
以下の対処を行ってください。
例外メッセージが「No object bound to name java:comp/XXX」(XXXは可変)の場合
参照するオブジェクトの情報をdeployment descriptorファイルに定義して再度実行してください。
INS形式で指定したJNDI名を確認し、接続先ホスト名とポート番号が正しいか、または接続先でアプリケーションが有効になっているか確認し、エラー原因を取り除いてから再度実行してください。エラーが解決しない場合には、例外がスローされる原因となった「org.omg.CORBA.XXX」(XXXは可変)の例外の意味を「5.3.2.6 IIOP通信時の例外情報」で確認して対処してください。
例外メッセージが「{0} not found」({0}はJNDI名、サブコンテキスト名、論理名のいずれか)の場合
ホスト名・ポート番号に誤りがないか確認してください。または、呼出し先のIJServerクラスタに参照するオブジェクトを配備または登録してください。
なお、IPCOMと連携したIIOP通信の負荷分散機能を利用している場合は、負荷分散対象となるIJServerクラスタすべてについて確認してください。
呼出し先のIJServerクラスタにおいて、アプリケーションまたはリソースが無効になっている場合には有効にしてください。
deployment descriptorファイルのmapped-nameタグまたはInterstage deployment descriptorファイルのjndi-nameタグが誤っている場合には正しいJNDI名を指定してください。
deployment descriptorファイルの参照するオブジェクトの定義情報(ejb-refタグの指定など)に定義したJNDI名やインタフェース名が正しいか確認してください。
アプリケーション内で指定したJNDI名に誤りがないか確認してください。
例外メッセージが「{0}#null not found」({0}はJNDI名)の場合
deployment descriptorファイルのejb-refタグにインタフェースの定義を追加して再度実行してください。
例外メッセージが「Lookup of java:comp/UserTransaction not allowed for Container managed Transaction beans」の場合
UserTransactionのlookupを行わないようアプリケーションを修正してください。
注意
JNDIは階層管理されています。"jdbc/MyDS"というJNDI名の場合、"jdbc"というサブコンテキストに、"MyDS"という論理名でオブジェクトが管理されています。JNDIでオブジェクトを参照する場合、この階層を辿ってオブジェクトを検索します。このため、"jdbc/MyDS"を参照する場合に"jdbc"サブコンテキストのオブジェクトが存在しない場合には、"jdbc not found"というサブコンテキストが見つからないというエラーが発生します。
[意味]
JNDI APIの実行でエラーが発生しました。
[原因]
例外メッセージが「invocation exception」の場合
規約で環境ネーミングコンテキストの利用が許可されていないメソッド(Enterprise Beanクラスのコンストラクタなど)でJNDI APIを呼び出しています。
アプリケーションで作成したスレッドで環境ネーミングコンテキストを利用してます。
例外メッセージが「java:comp namespace cannot be modified」の場合
環境ネーミングコンテキストはbindやunbindなどのオブジェクトを更新するAPIは実行できません。
例外メッセージが「ejb ref resolution error for remote business interface」の場合
EJB 3.0アプリケーションのビジネスインタフェース取得時にエラーが発生しました。
例外メッセージが「<JNDI名> is not found」の場合
InitialContextのコンストラクタを呼び出すときに渡す環境プロパティ情報に誤りがあります。
[ユーザの対処]
例外メッセージが「invocation exception」の場合
JNDI APIを呼び出し可能なメソッドで実行するようにアプリケーションを変更してください。上記に該当しない場合にはJava API仕様書を参照して対処してください。
アプリケーションで作成したスレッドで環境ネーミングコンテキストを利用することはJava EE規約で禁止されているため、コンテナから呼び出されたスレッドで環境ネーミングコンテキストを利用してください。
例外メッセージが「java:comp namespace cannot be modified」の場合
bindやunbindなどのオブジェクトを更新するAPIを実行しないようにアプリケーションを修正してください。
例外メッセージが「ejb ref resolution error for remote business interface」の場合
J2EE実行環境のIJServerで発生した場合、呼び出すEJBアプリケーションを修正し、EJB2.1以前のようにHomeインタフェース、 Remoteインタフェースを実装してください。
例外メッセージが「<JNDI名> is not found」の場合
J2EE実行環境のIJServerで発生した場合、InitialContextのコンストラクタに渡す環境プロパティが正しいか見直してください。
[意味]
javax.naming.InitialContextオブジェクトの生成に失敗しました。
[原因]
クラスパスにappserv-rt.jarが設定されていません。
java.naming.factory.initialプロパティの指定に誤りがあります。
J2EE実行環境のIJServerで発生した場合、アプリケーション固有ライブラリにappserv-rt-client.jarが設定されていません。
[ユーザの対処]
クラスパスを正しく設定してください。
java.naming.factory.initialプロパティに正しい値を設定してください。
J2EE実行環境のIJServerで発生した場合、J2EE実行環境のIJServerのアプリケーション固有ライブラリの設定を見直してください。
[意味]
サーバアプリケーションで例外が発生し、トランザクションをロールバックしました。
[原因]
サーバアプリケーションで何らかの異常が発生しています。
[ユーザの対処]
サーバアプリケーションが配備されているIJServerクラスタのサーバーログを参照し、エラー情報を確認して対処してください。
[意味]
リソースマネージャが関連付けられたトランザクションでエラーを検出しました。
[原因]
リソースマネージャが管理するリソース内の処理で異常が発生しました。
[ユーザの対処]
インダウトトランザクションの回復処理時に「SQL Exception thrown from oracle driver:」のメッセージが出力された場合は、Oracleのエラーが発生しています。後続のエラーメッセージを参照して対処してください。
JDBCドライバのプロパティuserで指定したユーザに対し、以下の権限が付与されているかを確認してください。
SYS.PENDING_TRANS$のSELECT権限
SYS.DBA_2PC_NEIGHBORSのSELECT権限
インダウトトランザクションの回復処理時に「XA Exception thrown from oracle driver:」のメッセージが出力された場合は、Oracleのエラーが発生しています。後続の以下の形式のエラーメッセージを参照して対処してください。
ERR_CODE=XAExceptionのエラーコード, MSG=XAExceptionのエラーメッセージ |
また、JDBCドライバのプロパティuserで指定したユーザに対し、以下の権限が付与されているかを確認してください。
DBA_PENDING_TRANSACTIONSのSELECT権限
SYS.DBMS_SYSTEMのEXECUTE権限
Java Persistence APIを使用して異常が発生した場合、Interstage永続性プロバイダは例外をスローします。例外のcauseとして、oracle.toplink.essentialsで始まる例外をスローする場合があります。ここでは、この例外情報について説明します。
なお、ここで説明している例外が発生した場合、以下の対処が有効です。
ほとんどの例外は環境またはアプリケーションの問題を表しています。異常が発生しないように、必要に応じて環境を確認しアプリケーションを修正してください。
例外情報に記述されている例外クラス名を確認して、その例外クラスの説明で意味と対処方法を確認してください。
例外のスタックトレースが出力されている場合、スタックトレースに続けて「Caused by:」として別の例外が出力されていることがあります。根本原因を表していますので、こちらをあわせて確認してください。
スタックトレースから異常が発生したアプリケーションのクラス名、メソッド名や呼び出していたJava Persistence APIのクラスとメソッド名を特定できる場合があります。
注意
ここで説明しているすべての例外クラスはjava.lang.RuntimeExceptionクラスを継承しているため、説明している例外をキャッチしなくてもコンパイルエラーにはならずにアプリケーションを実行できます。
また、アプリケーションで例外をキャッチする場合、汎用的ではないアプリケーションとなりますのでoracle.toplink.essentialsで始まる例外クラスをキャッチする処理は行わないでください。アプリケーションで例外をキャッチする場合にはJava EE規約のAPI 仕様で規定された例外をキャッチするように修正してください。例えば、javax.persistence.EntityManagerのpersistメソッドは、API仕様としてjavax.persistence.EntityExistsException、java.lang.IllegalStateException、java.lang.IllegalArgumentException、javax.persistence.TransactionRequiredExceptionの例外クラスが返却されると規定されているため、これらの例外クラスをキャッチするように修正してください。
例外情報の形式
Exception [TOPLINK-{0}] ({1}): {2}
Exception Description: {3}
Internal Exception: {4}
Target Invocation Exception: {5}
Mapping: {6}
Descriptor: {7}
Error Code: {8}
Call: {9}
Query: {10}
可変情報
| 意味 |
---|---|
{0} | エラー番号 |
{1} | 内部情報 |
{2} | 例外クラス名 |
{3} | エラー情報 |
{4} | 本例外にラップされた例外情報 |
{5} | ラップされた例外クラスがjava.lang.reflect.InvocationTargetExceptionである場合、getTargetException()メソッドから返却されるターゲット例外の情報 |
{6} | 定義マッピング情報 |
{7} | 説明 |
{8} | {4}の例外クラスがjava.sql.SQLExceptionまたはjava.sql.SQLExceptionのサブクラスである場合、getErrorCodeメソッドから返却されるデータベースベンダー固有の例外コード。その他の場合、"000" |
{9} | SQL文の情報 |
{10} | 内部情報 |
情報がない項目はその行が出力されません。
SQLログ機能を有効にしていない場合はSQL文情報の行が出力されません。
例外スタックトレースの形式
WARNING: ISJEE_JPA0020: caught throwable.
Local Exception Stack
{0}
Internal Exception Stack:
{1}
Target Invocation Exception Stack:
{2}
ERROR: ISJEE_JPA0022: caught throwable.
Local Exception Stack
{0}
Internal Exception Stack:
{1}
Target Invocation Exception Stack:
{2}
可変情報
| 意味 |
---|---|
{0} | 本例外の例外情報とスタックトレース |
{1} | 本例外にラップされた例外のスタックトレース |
{2} | ラップされた例外クラスがjava.lang.reflect.InvocationTargetExceptionである場合、getTargetException()メソッドから返却されるターゲット例外のスタックトレース |
情報がない項目は出力されません。
例外の説明
[意味]
Java並行性に違反しました。実行中のスレッドが割り込まれて、java.lang.InterruptedException例外がスローされた場合、この例外がラップされます。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
互換性のないデータの変換によって変換エラーが発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
エラー番号が3001であり、「Caused by:」にjava.lang.NullPointerExceptionが出力された場合、配列の要素にnullを指定しているjava.lang.Character[]型のフィールドをデータベースに格納しようとしている可能性があります。この場合、すべての要素に文字に変換できる値を指定して、再度実行してください。
[意味]
データベースのアクセス時に異常が発生しました。
[対処]
エラー情報やJDBCドライバから返却された例外情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
deployment descriptorファイルの定義内容に誤りがあります。または、定義した情報が不十分です。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
JPQLクエリ文の解析に失敗しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
エンティティマネージャファクトリまたはエンティティマネージャの作成に失敗しました。
[対処]
エラー情報や本例外にラップされた例外情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
エンティティマネージャファクトリまたはエンティティマネージャの初期化で異常が発生しました。
「Descriptor Exceptions:」の下にスローされたoracle.toplink.essentials.exceptions.DescriptorException例外の情報が出力されます。
上記以外の例外がスローされた場合、その例外情報が「Runtime Exceptions:」の下に出力されます。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
レコードが他トランザクションによって更新、またはテーブルから削除されました。
[対処]
レコードを再度検索し処理を再度実行してください。
[意味]
deployment descriptorファイルの読み込みに失敗しました。または、定義内容に誤り、または不足があります。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
JPQLクエリ文の解析に失敗しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
relationshipでFetchType.LAZYを定義したEntityクラスの準備処理で異常が発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
トランザクション中に異常が発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
JPAの実行環境やデータベース環境に不適当な箇所があります。または、永続化フィールドがInterstage永続性プロバイダで対応している型に適合していません。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
エラー番号が7027の場合、プライマリキー値の自動生成機能で使用するデータベースのシーケンスが作成されているか、確認してください。
エラー番号が7212の場合、java.util.Date型またはjava.util.Calendar型の永続化フィールドにTemporalTypeが定義されているか、確認してください。
エラー番号が7231の場合、一意制約違反が発生したため、テーブルのレコード、または挿入しようとしたEntityの値を確認してください。
[意味]
deployment descriptorファイル(persistence.xmlまたはマッピングファイル)の読み込みで異常が発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
[意味]
deployment descriptorファイル(persistence.xmlまたはマッピングファイル)のパーサ処理で異常が発生しました。
[対処]
エラー情報を参照して原因を確認し、原因を取り除いてから再度実行してください。
IIOP通信でエラーが発生した場合に出力される例外情報について説明します。
出力される例外のメッセージ情報と意味を確認して対処してください。
例外 | 意味 |
---|---|
BAD_CONTEXT | コンテキストオブジェクトの検索に失敗しました。 |
BAD_INV_ORDER | ルーチンの呼出しが正常ではありません。 |
BAD_OPERATION | オペレーションに誤りがあります。 |
BAD_PARAM | パラメタに誤りがあります。 |
BAD_QOS | 要求されているQOSをサポートできません。 |
BAD_TYPECODE | TypeCodeに誤りがあります。 |
CODESET_INCOMPATIBLE | コード変換ができません。 |
COMM_FAILURE | 通信に失敗しました。 |
CONTEXT | コンテキストオブジェクトの検索に失敗しました。 |
DATA_CONVERSION | コード変換に失敗しました。 |
FREE_MEM | メモリが解放できません。 |
IMP_LIMIT | 実装に関する制限です。 |
INITIALIZE | 初期化処理が行われていません。 |
INTERNAL | IIOPサービスの内部エラーが発生しました。 |
INTF_REPOS | インタフェースリポジトリのアクセスでエラーが発生しました。 |
INV_FLAG | フラグの指定に誤りがあります。 |
INV_IDENT | 識別子のシンタックスが無効です。 |
INV_OBJREF | オブジェクトリファレンスに誤りがあります。 |
INV_POLICY | ポリシーが不正です。 |
MARSHAL | パラメタ・戻り値のマーシャリングでエラーが発生しました。 |
NO_IMPLEMENT | オペレーションの実装がありません。 |
NO_MEMORY | 動的メモリの獲得に失敗しました。 |
NO_PERMISSION | メソッドの実行権限がありません。 |
NO_RESOURCES | リソースが不足し、リクエストを実行できません。 |
NO_RESPONSE | リクエストに対する応答がありません。 |
NotFound | 指定されたJNDI名に対応するサーバアプリケーションが見つかりません。javax.naming.NameNotFoundExceptionが出力されている場合、「5.3.2.4 java、javaxで始まる例外情報」を参照して対処してください。 |
OBJ_ADAPTER | オブジェクトの実装に関するエラーです。 オブジェクトリファレンスのキャッシュ機能を使用している場合、参照するEnterprise JavaBeansが再配備または配備解除された可能性があります。オブジェクトリファレンスがキャッシュされたサーバーインスタンス(またはクライアントアプリケーション)を再起動してください。 |
OBJECT_NOT_EXIST | オブジェクトが存在しません。以下のような原因が考えられます。
|
PERSIST_STORE | 永続的な蓄積に失敗しました。 |
REBIND | RebindPolicyに設定されたポリシーに反する状況が発生しました。 |
TIMEOUT | タイムアウトが発生しました。 |
TRANSIENT | 一時的なエラーです。 |
UNKNOWN | IIOPサービスの初期化エラーまたは未知の例外が発生しました。 |
BAD_OPERATIONに対するマイナーコード
BAD_OPERATIONシステム例外が発生した場合、例外情報に以下のように出力されることがあります。
org.omg.CORBA.BAD_OPERATION: vmcid: SUN minor code: 232 completed: No
出力される例外のvmcidおよびminor codeの値と意味を確認して対処してください。
vmcid | minor code | 意味 | 原因・対処方法 |
---|---|---|---|
SUN | 232 | サーバアプリケーションが実装していないリモートインタフェースのメソッド呼び出しが行われました。 | クライアントアプリケーションとサーバアプリケーションで使用しているリモートインタフェースが一致しているかを確認してください。 |
259 | プロパティの解析処理で、例外が発生しました。 | 直前に出力されたメッセージを参照して対処してください。 | |
1204 | 受信したリクエストの内容に、問題が検出されました。 | 送信側の保持するオブジェクト参照が不正なものである可能性があります。 | |
1405 | RMI-IIOPでリモートインタフェースを実装するスタブの呼出しに失敗しました。 | アプリケーションクライアントコンテナでセキュリティーマネージャーが有効化されています。 |
BAD_OPERATIONシステム例外の詳細や対処方法については、「5.1.35.13 IOP01210200番台のメッセージ」も参照してください。
minor codeは、IOP01210XXXのXXXの部分に対応します。
COMM_FAILUREに対するマイナーコード
COMM_FAILUREシステム例外が発生した場合、例外情報に以下のように出力されることがあります。
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 219 completed: Maybe
出力される例外のvmcidおよびminor codeの値と意味を確認して対処してください。
vmcid | minor code | 意味 | 原因・対処方法 |
---|---|---|---|
SUN | 201 | コネクションを作成できません。 | 指定したホスト名またはポート番号に誤りがないかを確認してください。 |
203 | コネクションが切断されたため、データの送信処理を中止しました。 | 何らかの原因によりコネクションが切断された可能性があります。 | |
208 | コネクションの切断を検出しました。 | サーバが受け付けるコネクション数の限界値を超えたためサーバからの通信が切断された可能性があります。ORBの総接続数の値を見直してください。 IIOP通信ソケットの送受信待機時間の超過等によりデータが不整合となったためコネクションが切断された可能性があります。 | |
210 | 接続先でメッセージを正しく受信できませんでした。 | 接続先で受信したデータに誤りを検出しました。 | |
211 | データの受信処理で、データの読み込みが完了できませんでした。 | 何らかの原因によりコネクションが切断された可能性があります。 | |
216 | 指定されたIPアドレスおよびポート番号への接続に失敗しました。 | 指定されたアドレス(IIOPリスナーのネットワークアドレスおよびポート番号)への接続に失敗しました。 | |
218 | accept処理で入出力例外が発生しました。 | 同時に出力されている入出力例外の内容から、原因を特定して対処を行ってください。 | |
219 | サーバメソッド復帰時間に対するタイムアウトが発生しました。 | サーバ側の処理が長くかかりすぎているか、サーバ側の処理がハングアップしている場合は、サーバ側の処理を見直してください。 | |
220 | コネクション接続処理中にタイムアウトが発生しました。 | 何らかの原因によりコネクション接続に失敗しました。 | |
225 | ソケットへの書込み処理でタイムアウトが発生しました。 | com.sun.corba.ee.transport.ORBTCPTimeoutsプロパティの値を見直してください。 | |
227 | ソケットへの書込み処理中に、予期せぬ例外が発生しました。 | 何らかの原因によりコネクションが切断された可能性があります。 | |
228 | データの受信処理で例外が発生しました。 | 同時に発生しているメッセージを確認し、例外が発生した原因を取り除いてください。 | |
229 | ソケットからの読込み処理でタイムアウトが発生しました。 | com.sun.corba.ee.transport.ORBTCPTimeoutsプロパティの値を見直してください。 | |
233 | 受信データサイズが最大受信バッファサイズを超えたため、データを受信することができません。 | 最大メッセージ分割サイズが受信バッファサイズより小さくなるようにチューニングを行ってください。 | |
234 | データの受信処理で、データの読込みが完了できませんでした。 | 何らかの原因によりコネクションが切断された可能性があります。 | |
801 | キャンセルリクエストメッセージ送信時、入出力例外が発生しました。 | 同時に出力されている入出力例外の内容から、原因を特定して対処を行ってください。 |
COMM_FAILUREシステム例外の詳細や対処方法については、「5.1.35.6 IOP00410200番台のメッセージ」も参照してください。
minor codeは、IOP00410XXXのXXXの部分に対応します。
MARSHALに対するマイナーコード
MARSHALシステム例外が発生した場合、例外情報に以下のように出力されることがあります。
org.omg.CORBA MARSHAL: vmcid: SUN minor code:211 completed: Maybe
出力される例外のvmcidおよびminor codeの値と意味を確認して対処してください。
vmcid | minor code | 意味 | 原因・対処方法 |
---|---|---|---|
SUN | 211 | データ受信中に例外を検出しました。 | データ受信中に回線が切断された可能性があります。ネットワーク環境に誤りがないか、接続先がダウンしていないか、com.sun.corba.ee.transport.ORBTCPTimeoutsプロパティの値によるタイムアウトが発生していないかを確認してください。 |
MARSHALシステム例外の詳細や対処方法については、「5.1.35.11 IOP00810200番台のメッセージ」も参照してください。
minor codeは、IOP00810XXXのXXXの部分に対応します。