CORBAサービスから通知される例外情報を以下の表に示します。
注意
以下の表で説明しているインタフェースは、C言語のインタフェースです。
システム例外 | 意味 | 発生箇所・原因と対処方法 |
---|---|---|
BAD_CONTEXT | コンテキストオブジェクトの検索に失敗しました。 | Contextインタフェースのメソッドに指定した識別子に誤りがあります。 → Contextインタフェースのメソッドに指定した識別子に誤りがないかを確認してください。 |
BAD_INV_ORDER | ルーチンの呼び出しが正常ではありません。 | メソッドの呼び出し順序に誤りがあります。 → 正しい順序でメソッドを呼び出してください。 |
BAD_OPERATION | オペレーションに誤りがあります。 | 誤ったオペレーション名のリクエストが実行されました。サーバがそのオペレーションを実装していない可能性があります。 → サーバのIDLを確認し、オペレーションが存在するかを確認してください。 |
アプリケーションがライブラリ化されている、またはCOBOLで作成されている場合、以下の可能性があります。
→ インプリメンテーションリポジトリに登録されているライブラリのパスに誤りがある可能性があります。パスを確認してください。 → 必要なスケルトンファイルやサーバソースがリンクされていない、またはプログラム内で関数シンボルが未決となっている可能性があります。リンクに誤りがないか、未決になっている関数シンボルがないかを確認してください。 → COBOLアプリケーションの場合は、動的リンク構造(主プログラムのロード時に呼び出される関数すべてをロードする)で作成されていない可能性があります。プログラム構造を確認してください。詳細については、“アプリケーション作成ガイド(CORBAサービス編)”の“アプリケーションの開発(COBOL)”-“COBOLアプリケーション使用時の注意事項”を参照してください。 | ||
JavaのAnyオブジェクトに対して操作を行っている場合は、以下の原因が考えられます。
→ Anyオブジェクトに対する処理を見直してください。 | ||
EJBアプリケーションを実行中の場合、接続サーバ/クライアント数、またはリクエスト数の上限に達した可能性があります。 → CORBAサービスのconfigファイルの“max_IIOP_local_init_requests”、 “limit_of_max_IIOP_resp_requests”を大きくした後、CORBAサービスを停止・再起動してください。なお、接続先のサーバに旧バージョンのInterstageがインストールされている場合、サーバにインストールされているInterstage用のマニュアルを参照して対処を行ってください。 | ||
→ サーバアプリケーション作成時のリンクオプション(ldコマンド実行時は“-E”オプション、gcc/g++コマンド実行時は“-Wl,-E”オプションが指定されているか)を確認してください。 | ||
BAD_PARAM | パラメタに誤りがあります。 | 以下の原因が考えられます。
→ パラメタに誤りがないかを確認してください。 |
Portable-ORB使用時、org.omg.CORBA.ORB.resolve_initial_references()メソッドにより本例外が発生した場合は、以下の原因が考えられます。
→ Portable-ORBの環境設定、サーバ側の環境設定、およびネットワークの環境設定に問題がないかを確認してください。 | ||
BAD_QOS | 要求されているQOSをサポートできません。 | CORBAサービスでは発生しません。 → 他社CORBA製品との接続で発生していないかを確認してください。 → イベントサービスを使用している場合は、“イベントサービスの例外情報/マイナーコード”を参照してください。 |
BAD_TYPECODE | TypeCodeに誤りがあります。 | TypeCodeクラスのインタフェースの使用方法に誤りがあります。インタフェースと、その処理対象であるTypeCodeオブジェクトの種類があっていません。 → インタフェースの使用方法に誤りがないかを確認してください。 |
CODESET_INCOMPATIBLE | コード変換ができません。 | 本製品では発生しません。 → 他社CORBA製品との接続で発生していないかを確認してください。 |
COMM_FAILURE | 通信に失敗しました。 | 通信に失敗しました。 → ローカルマシン内で通信に失敗した場合は、サーバアプリケーションが動作しているか以下を使用して確認してください。 → クライアントマシンで、オブジェクトリファレンスに設定されているホストマシンとの接続に問題がないかpingコマンドを使用して確認してください。 → その他、ネットワークの接続に問題がないかを確認してください。 |
タイムアウトが発生した可能性があります。以下の原因が考えられます。
接続サーバ/クライアント数、またはリクエスト数の上限に達した可能性があります。 → CORBAサービスのconfigファイルの該当するパラメタ値(“period_receive_timeout” 、 “max_IIOP_local_init_con” 、 “max_IIOP_local_init_requests”)を大きくした後、CORBAサービスを停止・再起動してください。 | ||
マルチスレッドで動作しているアプリケーションにおいて、あるスレッドからCORBA_ORB_net_disconnect関数を発行しているためにコネクションが切断され、同コネクションを使用している別スレッドで本例外が発生している可能性があります。 → 別スレッドでCORBA_ORB_net_disconnect関数を発行しないでください。 | ||
クライアントアプリケーションにおいて、サーバアプリケーション呼び出しに使用するオブジェクトリファレンスが不当な可能性があります。 → 解放済みのオブジェクトリファレンスを使用していないか確認してください。 例: CORBA_Environment e; CORBA_Object obj = CosNaming_NamingContext_resolve(...): /* サーバオブジェクトの取得 */ ... CORBA_Object_release(obj, &e); /* サーバオブジェクトの解放 */ test1_intf1_add(obj, ...); /* NG!! 解放済みのサーバオブジェクトを使用 */ なお、CORBAのJava言語インタフェースを使用している場合は、アプリケーションのユーザ実装クラスでオーバライドしたfinalize()メソッド内でCORBA通信処理を行い、そこで解放済みのオブジェクトリファレンスを使用している可能性があります。 → finalize()メソッド内での、CORBA通信は行わないでください。 | ||
ORBの指定に誤りがあります。 → Javaアプリケーションの場合、Javaクライアントアプリケーション起動時に、ORBの切替えが正しく設定されていない可能性があります。ORBは、以下の方法で必ず指定する必要があります。
ORBの指定方法の詳細については、以下を参照してください。
| ||
Portable-ORBを使用したアプレット運用でSSL通信を行っている場合、SSLを使用する場合に必要な権限が不足しています。 → 使用するアプレット、Portable-ORBのライブラリの環境設定を確認してください。詳細については、“アプリケーション作成ガイド(CORBAサービス編)”の“アプリケーションの開発(Java言語)”-“アプレットのデジタル署名”を参照してください。 | ||
CONTEXT | コンテキストオブジェクトの検索に失敗しました。 | Contextインタフェースのメソッドに指定した識別子に誤りがあります。 → Contextインタフェースのメソッドに指定した識別子に誤りがないかを確認してください。 |
DATA_CONVERSION | コード変換に失敗しました。 | 指定された文字列にコード変換不可の文字列が存在しています(configファイルの“undefined_char_conversion”パラメタの値が“fail”の場合、コード変換の対象に未定義文字が含まれている可能性があります)。 → 指定した文字列、およびコード系の指定を確認してください。 |
FREE_MEM | メモリが解放できません。 | メモリが解放できません。 → メモリの不正使用がないかを確認してください。メモリ不足が発生している場合は、不要なアプリケーションを終了させてください。 |
IMP_LIMIT | 実装に関する制限です。 | インタフェースの使用において、以下の原因が考えられます。
→ インタフェースの使用方法に誤りがないかを確認してください。 |
ネーミングサービスに登録できるネーミングコンテキストの個数が上限に達しました(上限値:ルートコンテキスト含め128)。 → OD_or_admコマンドを使用して不要なネーミングコンテキストを削除してください。 | ||
ネーミングサービスが生成するバインディングアイテレータの個数が上限に達しました(上限値:256)。 → CosNaming_NamingContext_list()およびバインディングアイテレータインタフェースを使用している場合は、CosNaming_BindingIterator_destroy()により不要なバインディングアイテレータを破棄してください。 | ||
INITIALIZE | 初期化処理が行われていません。 | 初期化処理CORBA_ORB_init()が行われていません。 → CORBA_ORB_init()で初期化を行ってください。 |
CORBAクライアントのJavaライブラリ、またはCORBA環境の切替えが正しく設定されていない可能性があります。 → CORBAクライアントのJavaライブラリ、CORBA環境の切替えの設定を確認してください。詳細については、“アプリケーション作成ガイド(CORBAサービス編)”の“アプリケーションの開発(Java言語)”-“CORBAアプリケーションの実行”を参照してください。 | ||
分散トランザクション連携において、データベース連携サービスが正しく設定されていない可能性があります。 → データベース連携サービスの設定を確認してください。詳細については、“アプリケーション作成ガイド(データベース連携サービス編)”を参照してください。 | ||
→ 環境変数LD_LIBRARY_PATHに“CORBAサービスのインストールディレクトリ/lib”が設定されているかを確認してください。 | ||
プレインストール型Javaライブラリを使用している場合は、環境変数CLASSPATHに設定されたJavaライブラリに誤りがある可能性があります。 → 環境変数CLASSPATHに“ODjava4.jar”が設定されているかを確認してください。 | ||
プレインストール型Javaライブラリを使用してアプレット運用を行っている場合、アプレット運用に必要な権限が不足しています。 → 使用するアプレット、Javaライブラリの環境設定を確認してください。詳細については、“アプリケーション作成ガイド(CORBAサービス編)”の“アプリケーションの開発(Java言語)”-“アプレットのデジタル署名”を参照してください。 | ||
INTERNAL | CORBAサービスの内部エラーが発生しました。 | odadminコマンドなどの処理で、initial_servicesファイルの書込みに失敗しました。 → CORBAサービスと通信できません。iscollectinfoコマンドを使用して調査情報を採取した後、技術員に連絡してください。 → ディスク容量が不足している可能性があります。ディスク容量を確認してください。 |
インタフェースの使用において、以下の原因が考えられます。
→ インタフェースの使用方法に誤りがないかを確認してください。 | ||
INTF_REPOS | インタフェースリポジトリのアクセスでエラーが発生しました。 | 以下の処理で、インタフェースリポジトリのオブジェクトリファレンスを獲得できません。
→ インタフェースリポジトリの設定を確認してください。 |
INV_FLAG | フラグの指定に誤りがあります。 | 以下のインタフェースにおけるフラグの指定に誤りがあります。
→ インタフェースの使用方法を確認してください。 |
INV_IDENT | 識別子のシンタックスが無効です。 | 本製品では発生しません。 → 他社CORBA製品との接続で発生していないかを確認してください。 |
INV_OBJREF | オブジェクトリファレンスに誤りがあります。 | 以下の関数でNULLオブジェクトが渡されました。
→ 正しい(NULLでない)オブジェクトを渡してください。 |
→ オブジェクトを指定するリポジトリやオブジェクト名に誤りがないかを確認してください。 → アプリケーションに渡すオブジェクトに誤りがないかを確認してください。 | ||
以下の関数が同一のobjに対して、複数回呼び出されました。
→上記関数が複数回呼び出されていないかを確認してください。 | ||
以下の関数で登録されたインタフェースに対して、オブジェクトとプロセスのバインド関係が登録されていない状態で呼び出されました。
→プロセスとのバインド関係が登録されているオブジェクトを使用してください。 | ||
INV_POLICY | ポリシが不正です。 | 本製品では発生しません。 → 他社CORBA製品との接続で発生していないかを確認してください。 |
MARSHAL | パラメタ・戻り値のマーシャリングでエラーが発生しました。 | CORBA_ServerRequest_ctx()で、Contextのマーシャリングに失敗しました。 → クライアントから送信されたContextデータに誤りがないかを確認してください。 |
Portable-ORBを使用している場合、固定長文字列パラメタに定義された長さを超えた文字数の文字列を設定して、転送した可能性があります。 → 固定長文字列パラメタに設定した文字列の長さを確認してください。 | ||
EJBアプリケーション実行中の場合、クライアントとサーバとの間で転送対象オブジェクトのクラス版数が異なるか、または必要なクラスが存在していない可能性があります。 → クライアントとサーバのそれぞれの環境において、配置されたオブジェクトに誤りがないかを確認してください。 | ||
クライアントとサーバ間でIDLが一致していない可能性があります。 →クライアントとサーバとのIDLが一致しているかを確認してください。 | ||
送信側でNULLオブジェクトを送信した可能性があります。 →送信側がNULLオブジェクトを送信していないかを確認してください。 | ||
NO_IMPLEMENT | オペレーションの実装がありません。 | CORBA_BOA_impl_is_ready()に渡されたImplementationDefオブジェクトに対応するインプリメンテーション情報がインプリメンテーションリポジトリ中に見つかりませんでした。 → OD_impl_instコマンドの-pオプションを使用してインプリメンテーションリポジトリの登録情報を確認してください。 |
イニシャルサービス“LightInterfaceRepository”を使用して以下の関数を呼び出そうとしました。
→ 上記関数を使用する場合は、イニシャルサービス“InterfaceRepository”を使用してください。また、初期環境設定時に、インタフェースリポジトリサービスの使用を有効にしてください。 | ||
キューの受付けが停止されています。 → odcntlqueコマンドでキューの受付けを開始してください。 → サーバアプリケーションがワークユニット配下で動作している場合は、ispermitqueコマンドによりキューの受付けを開始してください。 | ||
インタフェースリポジトリサービスが未起動の状態で、以下の関数を呼び出そうとしました。
→ インタフェースリポジトリサービスが起動されているかを確認してください。 | ||
未起動のサーバアプリケーションに対してリクエストを発行しました。 → サーバアプリケーションが起動されているかを確認してください。 | ||
未サポート機能を使用しようとしました。 → アプリケーションプログラムに問題ないかを確認してください。 | ||
環境変数CLASSPATHの設定内容に誤りがあります。 → Javaアプリケーションの場合は、環境変数CLASSPATHに“ODjava4.jar”が設定されているかを確認してください。 | ||
以下のサービスが起動されていない状態で、以下のサービスのアプリケーションインタフェースを呼び出そうとしました。
→ 上記のサービスが起動されているかを確認してください。 | ||
ORBの指定に誤りがあります。 → Javaアプリケーションの場合は、Javaサーバアプリケーション起動時に、ORB切替えが正しく設定されていない可能性があります。“アプリケーション作成ガイド(CORBAサービス編)”の“アプリケーションの開発(Java言語)”-“CORBAアプリケーションの実行”を参照してください。 | ||
sharedサーバ/unsharedサーバの起動処理中にリクエストが到達しました。 → クライアントからリクエストを再送してください。 | ||
| 動的メモリの獲得に失敗しました。 | 動的メモリの割当てに失敗しました。 → スワップの使用量を確認し、使用率が高ければ、スワップ/実メモリを増やしてください。 |
NO_PERMISSION | メソッドの実行権限がありません。 | 本製品では発生しません。 → 他社CORBA製品との接続で発生していないかを確認してください。 |
NO_RESOURCES | リソースが不足し、リクエストを実行できません。 | 1つのサーバで実装可能なインタフェース数/オペレーション数を超えました。 → IDLを編集し、インタフェース数/オペレーション数を減らしてください。 |
メモリ不足が発生しました。 → 実メモリ/スワップを増やしてください。 | ||
プロセス多重度の上限を超えてサーバを起動しました。 → odlistprocコマンドを使用して、意図しないアプリケーションが残存していないかを確認してください。 | ||
セマフォの上限に達しました。 → カーネルパラメタのセマフォの上限値を増やしてください。 | ||
受け付けたリクエスト数がキューの受付け数の上限を超えました。 → odsetqueコマンドでキューの受付け可能リクエスト数の上限値を増やしてください。 | ||
サーバで使用可能なファイルディスクリプタ数の上限を超えました。 → ulimitコマンドで使用可能なファイルディスクリプタ数の上限を拡張し、サーバを再起動するか、不要なクライアントアプリケーションを終了させてください。 | ||
Javaサーバおよびプレインストール型Javaクライアントの場合、接続サーバ/クライアント数、またはリクエスト数の上限に達した可能性があります。 → CORBAサービスのconfigファイルの“max_IIOP_local_init_requests”、 “limit_of_max_IIOP_resp_requests”を大きくした後、CORBAサービスを停止・再起動してください。なお、接続先のサーバに旧バージョンのInterstageがインストールされている場合、サーバにインストールされているInterstage用のマニュアルを参照して対処を行ってください。 | ||
CORBA_BOA_impl_is_ready()でサーバアプリケーションを活性化しようとした際に、スレッド初期多重度分のスレッド生成に失敗した可能性があります。 → システムログにod10916メッセージが出力されていないかを確認してください。対処については、“80.13.11 od10916”を参照してください。 | ||
すでに出口関数が登録されています。 → 出口関数の登録は、アプリケーション内で一回にしてください。 | ||
NO_RESPONSE | リクエストに対する応答がありません。 | 本製品では発生しません。 → 他社CORBA製品との接続で発生していないかを確認してください。 |
OBJ_ADAPTER | オブジェクトの実装に関するエラーです。 | CORBA_BOA_impl_is_ready()で活性化しようとしたインプリメンテーションのサーバタイプと起動方法が矛盾しています。 → OD_impl_instコマンドの-pオプションを使用してインプリメンテーションリポジトリの登録情報を確認してください。 |
POAManager.activate()で活性化しようとしたインプリメンテーションのサーバタイプと起動方法が矛盾しています。 → 環境変数OD_IMPLIDを使用したインプリメンテーションリポジトリIDを指定している場合には、環境変数OD_IMPLIDの設定内容に誤りがないかを確認してください。 → POA作成時のアダプタ名として指定したインプリメンテーションリポジトリID/インタフェースリポジトリIDに誤りがないかを確認してください。 | ||
ServantManager、AdapterActivator、またはデフォルトサーバントが登録されていません。 → アプリケーションプログラムで、POAのポリシの設定に誤りがないかを確認してください。 | ||
オブジェクトリファレンスを生成したサーバプロセスと異なるサーバプロセスが呼び出されました。 → オブジェクトリファレンスを生成したサーバプロセスが終了していないかを確認してください。終了していた場合は、新しいサーバプロセス上でオブジェクトリファレンスを再生成してください。 | ||
OBJECT_NOT_EXIST | オブジェクトが存在しません。 | ネーミングコンテキストインタフェースおよびネーミングコンテキスト拡張インタフェースを使用する際に、対象のネーミングコンテキストが存在しません。 → 対象のネーミングコンテキストのバインディングをOD_or_adm(-zオプション)コマンドを使用して削除し、再度ネーミングコンテキストを登録してください。 |
Javaサーバアプリケーションに対象となるオブジェクトが存在しません。 → デフォルトインスタンス形式のJavaサーバアプリケーションをプロセス多重で動作させている場合は、アプリケーションプログラムにおいて以下のオブジェクトリファレンスを使用しているかを確認してください。
| ||
PERSIST_STORE | 永続的な蓄積に失敗しました。 | 本製品では発生しません。 → 他社CORBA製品との接続で発生していないかを確認してください。 |
REBIND | RebindPolicyに設定されたポリシに反する状況が発生しました。 | 本製品では発生しません。 → 他社CORBA製品との接続で発生していないかを確認してください。 |
TIMEOUT | タイムアウトが発生しました。 | 本製品では発生しません。 → 他社CORBA製品との接続で発生していないかを確認してください。 |
TRANSIENT | 一時的なエラーです。 | 同じプログラムの複数のスレッドから並列にCORBA_ORB_init()が呼び出されました。 → CORBA_ORB_init()を再度呼び出してください。 |
UNKNOWN | CORBAサービスの初期化エラーまたは、未知の例外が発生しました。 | CORBA_ORB_init()が失敗しました。 → CORBAサービスが起動されているかを確認してください。 → CORBAサービスが動作するための資源が不足していないかを確認してください。 → メモリ不足の可能性があります。システムに十分な空きメモリが確保されているかを確認してください。 |
以下の原因が考えられます。
→ パラメタに誤りがないかを確認してください。 → サーバアプリケーション内で実行時の例外およびエラーが発生していないかを確認してください。 | ||
CORBAアプリケーションを停止せずに、CORBAサービスを停止/再起動しました。 → CORBAサービスを停止する場合は、事前にすべてのCORBAアプリケーションを停止させてください。 | ||
プレインストール型Javaライブラリを使用している場合は、サーバアプリケーションにDefault Servantが登録されていません。 → サーバアプリケーションの処理を見直し、Default Servant登録後にPOAManager.activate()を呼び出すようにしてください。 | ||
configファイルが存在しません。 → configファイルを確認してください。 | ||
Portable-ORBを使用してアプレット運用を行っている場合、アプレット運用に必要な権限が不足しています。 → 使用するアプレット、Portable-ORBのライブラリの環境設定を確認してください。詳細については、“アプリケーション作成ガイド(CORBAサービス編)”の“アプリケーションの開発(Java言語)”-“アプレットのデジタル署名”を参照してください。 | ||
ORBの指定に誤りがあります。 → Javaアプリケーションの場合、Javaサーバアプリケーション起動時に、ORB切替えの設定が正しく行われていない可能性があります。詳細については、“アプリケーション作成ガイド(CORBAサービス編)”の“アプリケーションの開発(Java言語)”-“CORBAアプリケーションの実行”を参照してください。 |