Interstage Application Server メッセージ集
目次 前ページ次ページ

第3部 メッセージラベルのないメッセージ> 第32章 CORBAサービスから通知される例外情報/マイナーコード

32.1 CORBAサービスの例外情報

 CORBAサービスの例外情報を下表に示します。なお、表内で説明しているインタフェースは、C言語のインタフェースです。

システム例外

意味

発生箇所・原因と対処方法

BAD_CONTEXT

コンテキストオブジェクトの検索に失敗しました。

Contextインタフェースのメソッドに指定した識別子に誤りがあります。

Contextインタフェースのメソッドに指定した識別子に誤りがないかを確認してください。

BAD_INV_ORDER

ルーチンの呼び出しが正常ではありません。

メソッドの呼び出し順序に誤りがあります。

正しい順序でメソッドを呼び出してください。

BAD_OPERATION

オペレーションに誤りがあります。

誤ったオペレーション名のリクエストが実行されました。サーバがそのオペレーションを実装していない可能性があります。

サーバのIDLを確認し、オペレーションが存在するかを確認してください。

アプリケーションがライブラリ化されている、またはCOBOLで作成されている場合、以下の可能性があります。

  • ライブラリのロード、または関数シンボルの獲得に失敗しました。

インプリメンテーションリポジトリに登録されているライブラリのパスに誤りがある可能性があります。パスを確認してください。
 ライブラリのパスを相対パスで指定した場合は、アプリケーションが動作するディレクトリからの相対パスが正しく指定されているかを確認してください。特にCORBAワークユニットの場合は、アプリケーションが動作するディレクトリが<ワークユニット定義のカレントディレクトリ>\<ワークユニット名>\<プロセスID>(Windows(R)の場合)/<ワークユニット定義のカレントディレクトリ>/<ワークユニット名>/<プロセスID>(Solaris OE/Linuxの場合)になるため、このディレクトリからの相対パスが正しく指定されているかを確認してください。

必要なスケルトンファイルやサーバソースがリンクされていない、またはプログラム内で関数シンボルが未決となっている可能性があります。リンクに誤りがないか、未決になっている関数シンボルがないかを確認してください。


環境変数LD_LIBRARY_PATHが設定されていない可能性があります。環境変数LD_LIBRARY_PATHを確認してください。

COBOLアプリケーションの場合は、動的リンク構造(主プログラムのロード時に呼び出される関数すべてをロードする)で作成されていない可能性があります。プログラム構造を確認してください(詳細は“アプリケーション作成ガイド(CORBAサービス編)”(Enterprise EditionおよびStandard Editionで提供)の“COBOLアプリケーション使用時の注意事項”参照)。

JavaのAnyオブジェクトに対して操作を行っている場合は、以下の原因が考えられます。

  • 挿入時(insert_<type>()メソッド)に指定した<type>と抽出時(extract_<type>()メソッド)の<type>が一致していません。
  • 挿入せずに抽出が行われました。

Anyオブジェクトに対する処理を見直してください。

EJBアプリケーションを実行中の場合、接続サーバ/クライアント数、またはリクエスト数の上限に達した可能性があります。

CORBAサービスのconfigファイルの“max_IIOP_local_init_requests”、 “limit_of_max_IIOP_resp_requests”を大きくした後、CORBAサービスを停止・再起動してください。なお、接続先のサーバに旧バージョンのInterstageがインストールされている場合、サーバにインストールされているInterstage用のマニュアルを参照して対処を行ってください。


C/C++のアプリケーションの場合は、すべてのシンボルをダイナミックなシンボルテーブルに追加せずに作成されている可能性があります。

サーバアプリケーション作成時のリンクオプション(ldコマンド実行時は"-E"オプション、gcc/g++コマンド実行時は"-Wl,-E"オプションが指定されているか)を確認してください。

BAD_PARAM

パラメタに誤りがあります。

以下の原因が考えられます。

  • CORBA_NVList_add_item(),CORBA_Request_add_arg()で指定されたTypeCodeオブジェクトがNULLオブジェクトです。
  • CORBA_Object_create_request()で指定されたオペレーション名がNULL文字列です。
  • CORBA_Request_add_arg()に渡されたRequestオブジェクトにNVListが設定されていません。
  • string型のパラメタがNULL文字列です。
  • その他、指定されたパラメタの型・値に誤りがあります。

パラメタに誤りがないかを確認してください。

Portable-ORB使用時、org.omg.CORBA.ORB.resolve_initial_references()メソッドにより本例外が発生した場合は、以下の原因が考えられます。

  • Webサーバ上のPortable-ORB動作環境ファイルの配置に誤りがあります。
  • HTMLファイル内に記述されたPORB_HOMEの設定に誤りがあります。
  • initial_hostsが設定されていない、または設定内容に誤りがあります。
  • その他、initial_hostsに指定されたサーバとの通信に失敗しています。

Portable-ORBの環境設定、およびサーバ側の環境に問題がないかを確認してください。

BAD_QOS

要求されているQOSをサポートできません。

本製品では発生しません。

他社CORBA製品との接続で発生していないかを確認してください。

BAD_TYPECODE

TypeCodeに誤りがあります。

TypeCodeクラスのインタフェースの使用方法に誤りがあります。インタフェースと、その処理対象であるTypeCodeオブジェクトの種類があっていません。

インタフェースの使用方法に誤りがないかを確認してください。

CODESET_INCOMPATIBLE

コード変換ができません。

本製品では発生しません。

他社CORBA製品との接続で発生していないかを確認してください。

COMM_FAILURE

通信に失敗しました。

通信に失敗しました。

ローカルマシン内で通信に失敗した場合は、サーバアプリケーションが動作しているか以下を使用して確認してください。
 Windows(R):タスクマネージャなど
 Solaris OE/Linux:psコマンドなど

クライアントマシンで、オブジェクトリファレンスに設定されているホストマシンとの接続に問題がないか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通信は行わないでください。

CONTEXT

コンテキストオブジェクトの検索に失敗しました。

Contextインタフェースのメソッドに指定した識別子に誤りがあります。

Contextインタフェースのメソッドに指定した識別子に誤りがないかを確認してください。

DATA_CONVERSION

コード変換に失敗しました。

指定された文字列にコード変換不可の文字列が存在しています。(configファイルの"undefined_char_conversion"パラメタの値が"fail"の場合、コード変換の対象に未定義文字が含まれている可能性があります。)

指定した文字列、およびコード系の指定を確認してください。
 クライアント側:環境変数OD_CODE_SETの設定値
 サーバ側:OD_or_admコマンド、またはWU定義で指定したコード系

FREE_MEM

メモリが解放できません。

メモリが解放できません。

メモリの不正使用がないかを確認してください。メモリ不足が発生している場合は、不要なアプリケーションを終了させてください。

IMP_LIMIT

実装に関する制限です。

インタフェースの使用において、以下の原因が考えられます。

  • 同じプログラムでCORBA_BOA_impl_is_ready()を2回以上呼び出しました。
  • CORBA_BOA_impl_is_ready()を行わずに、CORBA_BOA_deactivate_impl()を呼び出しました。
  • CORBA_BOA_set_exception()で設定しようとした例外IDが長すぎます(最大128文字)。
  • CORBA_NVList_add_item()でNVListに追加するitemの数が多すぎます。数を減らすか、必要な数のitemを登録できるNVListを作成する必要があります。
  • 以下の未サポートのインタフェースが呼び出されました。
    • CORBA_TypeCode_param_count()
    • CORBA_TypeCode_parameter()

インタフェースの使用方法に誤りがないかを確認してください。

ネーミングサービスに登録できるネーミングコンテキストの個数が上限に達しました(上限値:ルートコンテキスト含め128)。

ネーミングコンテキストの数を減らしてください。

ネーミングサービスが生成するバインディングアイテレータの個数が上限に達しました(上限値:256)。

CosNaming_NamingContext_list()およびバインディングアイテレータインタフェースを使用している場合は、CosNaming_BindingIterator_destroy()により不要なバインディングアイテレータを破棄してください。

INITIALIZE

初期化処理が行われていません。

初期化処理CORBA_ORB_init()が行われていません。

CORBA_ORB_init()で初期化を行ってください。

JDK/JRE1.2.2、JDK/JRE1.3およびJDK/JRE1.4を使用した場合に、CORBAクライアントのJavaライブラリ、またはCORBA環境の切替えが正しく設定されていない可能性があります。

CORBAクライアントのJavaライブラリ、CORBA環境の切替えの設定を見直してください(“アプリケーション作成ガイド(CORBAサービス編)”(Enterprise EditionおよびStandard Editionで提供)の“CORBAアプリケーションの実行”参照)。

分散トランザクション連携において、データベース連携サービスの設定が正しくない可能性があります。

データベース連携サービスの設定を見直してください。詳細は、“アプリケーション作成ガイド(データベース連携サービス編)”(Enterprise EditionおよびStandard Editionで提供)を参照してください。


プレインストール型Javaライブラリを使用している場合は、環境変数LD_LIBRARY_PATHが正しく設定されていない可能性があります。

環境変数LD_LIBRARY_PATHに“CORBAサービスのインストールディレクトリ/lib”が設定されているかを確認してください。

プレインストール型Javaライブラリを使用している場合は、使用するJDK/JREの版と環境変数CLASSPATHに指定する内容とに矛盾がある可能性があります。

環境変数CLASSPATHに以下を指定してください。
 JDK/JRE1.1で運用する場合:ODjava.jar
 JDK/JRE1.2またはJDK/JRE1.3で運用する場合:ODjava2.jar
 JDK/JRE1.4で運用する場合:ODjava4.jar

INTERNAL

CORBAサービスの内部エラーが発生しました。

odadmin_ex/odadminコマンドなどの処理で、init_svc/initial_servicesファイルの書込みに失敗しました。

CORBAサービスと通信できません。iscollectinfoコマンドを使用して調査情報を採取した後、技術員に連絡してください。

ディスクに空きがない可能性があります。ディスク容量を確認してください。

INTF_REPOS

インタフェースリポジトリのアクセスでエラーが発生しました。

以下の処理で、インタフェースリポジトリのオブジェクトリファレンスを獲得できません。

  • CORBA_Object_get_interface()

インタフェースリポジトリの設定を確認してください。

INV_FLAG

フラグの指定に誤りがあります。

以下のインタフェースにおけるフラグの指定に誤りがあります。

  • CORBA_NVList_add_item()
  • CORBA_Object_create_request()
  • CORBA_Request_add_arg()
  • CORBA_Request_invoke()
  • CORBA_Request_send()
  • CORBA_Request_get_response()
  • CORBA_get_next_response()

インタフェースの使用方法を確認してください。

INV_IDENT

識別子のシンタックスが無効です。

本製品では発生しません。

他社CORBA製品との接続で発生していないかを確認してください。

INV_OBJREF

オブジェクトリファレンスに誤りがあります。

以下の関数でNULLオブジェクトが渡されました。

  • CORBA_BOA_get_id()
  • CORBA_Object_get_implementation()
  • CORBA_Object_get_interface()
  • CORBA_Object_duplicate()

正しい(NULLでない)オブジェクトを渡してください。

オブジェクトを指定するリポジトリやオブジェクト名に誤りがないかを確認してください。

アプリケーションに渡すオブジェクトに誤りがないかを確認してください。

以下の関数が同一のobjに対して、複数回呼び出されました。

  • CORBA_ORB_net_disconnect()

上記関数が複数回呼び出されていないかを確認してください。

INV_POLICY

ポリシが不正です。

本製品では発生しません。

他社CORBA製品との接続で発生していないかを確認してください。

MARSHAL

パラメタ・戻り値のマーシャリングでエラーが発生しました。

CORBA_ServerRequest_ctx()で、Contextのマーシャリングに失敗しました。

クライアントから送信されたContextデータに誤りがないかを確認してください。

Portable-ORBを使用している場合、固定長文字列パラメタに定義された長さを超えた文字数の文字列を設定して、転送した可能性があります。

固定長文字列パラメタに設定した文字列の長さを確認してください。

EJBアプリケーションを実行中の場合、クライアントとサーバとの間で転送対象オブジェクトのクラス版数が異なるか、または必要なクラスが存在していない可能性があります。

クライアントとサーバのそれぞれの環境において、配置されたオブジェクトに誤りがないかを確認してください。

NO_IMPLEMENT

オペレーションの実装がありません

CORBA_BOA_impl_is_ready()に渡されたImplementationDefオブジェクトに対応するインプリメンテーション情報がインプリメンテーションリポジトリ中に見つかりませんでした。

OD_impl_instコマンドの-pオプションを使用してインプリメンテーションリポジトリの登録情報を確認してください。

イニシャルサービスLightInterfaceRepositoryを使用して以下の関数を呼び出そうとしました。

  • CORBA_Repository_lookup_id()
  • CORBA_InterfaceDef__get_RepositoryId()
  • CORBA_InterfaceDef_is_a()
  • CORBA_InterfaceDef_contents()
  • CORBA_InterfaceDef_lookup_name()
  • CORBA_Container_contents()
  • CORBA_Container_lookup_name()

上記関数を使用する場合は、イニシャルサービスInterfaceRepositoryを使用してください。また、初期環境設定時に、インタフェースリポジトリサービスの使用を有効にしてください。

キューの受付けが停止されています。

odcntlqueコマンドによりキューの受付けを開始してください。

→ サーバアプリケーションがワークユニット配下で動作している場合は、ispermitqueコマンドによりキューの受付けを開始してください。

インタフェースリポジトリサービスが未起動の状態で、以下の関数を呼び出そうとしました。

  • CORBA_Object_get_interface()

インタフェースリポジトリサービスが起動されているかを確認してください。

未起動のサーバアプリケーションに対してリクエストを発行しました。

サーバアプリケーションが起動されているかを確認してください。

未サポート機能を使用しようとしました。

アプリケーションプログラムに問題ないかを確認してください。

環境変数CLASSPATHの設定内容に誤りがあります。

Javaアプリケーションの場合、使用するJDK/JREの版と環境変数CLASSPATHに指定する内容とに矛盾があります。
環境変数CLASSPATHには、以下を指定する必要があります。
 JDK/JRE1.1で運用する場合:ODjava.jar
 JDK/JRE1.2またはJDK/JRE1.3で運用する場合:ODjava2.jar
 JDK/JRE1.4で運用する場合:ODjava4.jar

以下のサービスが起動されていない状態で、以下のサービスのアプリケーションインタフェースを呼び出そうとしました。

  • ネーミングサービス
  • インタフェースリポジトリサービス
  • ロードバランス機能

上記のサービスが起動されているかを確認してください。
上記のサービスは、CORBAサーバアプリケーションです。各サービスのアプリケーションインタフェースを使用する場合は、アプリケーションインタフェースを実装するサービスが起動されている必要があります。

ORBの指定に誤りがあります。

Javaアプリケーションの場合、Javaサーバアプリケーション起動時に、JDK/JRE1.2以降におけるORB切替えの設定が正しく行われていない可能性があります。“アプリケーション作成ガイド(CORBAサービス編)”(Enterprise EditionおよびStandard Editionで提供)の“CORBAアプリケーションの実行”を参照してください。

NO_MEMORY

動的メモリの獲得に失敗しました。

動的メモリの割り当てに失敗しました。

スワップの使用量を確認し、使用率が高ければ、スワップまたは実メモリを増やしてください。

NO_PERMISSION

メソッドの実行権限がありません。

本製品では発生しません。

他社CORBA製品との接続で発生していないかを確認してください。

NO_RESOURCES

リソースが不足し、リクエストを実行できません。

1つのサーバで実装可能なインタフェース数/オペレーション数を超えました。

IDLを編集し、インタフェース数/オペレーション数を減らしてください。

メモリ不足が発生しました。

実メモリやスワップを増やしてください。

プロセス多重度の上限を超えてサーバの起動を行いました。
同一アプリケーションが、すでにアプリケーションの多重度限界で動いている可能性があります。

odlistprocコマンドを使用して、意図しないアプリケーションが残存していないかを確認してください。
 また、odprtcurparamコマンドを使用して“max_exec_instance”、“max_processes”の現在値を確認してください。現在値が上限に達している場合は、CORBAサービスのconfigファイルの“max_exec_instance”または“max_processes”を大きくした後、CORBAサービスを停止・再起動してください。

セマフォの上限に達しました。

カーネルパラメタのセマフォの上限値を増やしてください。

受け付けたリクエスト数がキューの受付け数の上限を超えました。

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メッセージが出力されていないか確認してください。対処については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オプション)コマンドを使用して削除し、再度ネーミングコンテキストを登録してください。

PERSIST_STORE

永続的な蓄積に失敗しました。

本製品では発生しません。

他社CORBA製品との接続で発生していないかを確認してください。

REBIND

RebindPolicyに設定されたポリシに反する状況が発生しました。

本製品では発生しません。

他社CORBA製品との接続で発生していないかを確認してください。

TIMEOUT

タイムアウトが発生しました。

本製品では発生しません。

他社CORBA製品との接続で発生していないかを確認してください。

TRANSIENT

一時的なエラーです。

同じプログラムの複数のスレッドから並列にCORBA_ORB_init()が呼び出されました。

CORBA_ORB_init()を再度呼び出してください。

UNKNOWN

CORBAサービスの初期化エラーまたは、未知の例外が発生しました。

CORBA_ORB_init()が失敗しました。

CORBAサービスが起動されているか、CORBAサービスが動作するための資源が不足していないかを確認してください。

メモリ不足の可能性があります。システムに十分な空きメモリが確保されているかを確認してください。

Red Hat Enterprise Linux AS (v. 3)/Red Hat Enterprise Linux ES (v. 3)において、LinuxThreads実装を使用した環境で動作させている可能性があります。NPTL実装を使用した環境で動作させているかを確認してください。

以下の原因が考えられます。

  • CDR関数内で未知の例外が発生しました。
  • サーバアプリケーションが異常終了しました。

パラメタに誤りがないかを確認してください。

サーバアプリケーション内で実行時の例外およびエラーが発生していないかを確認してください。

CORBAアプリケーションを停止せずに、CORBAサービスを停止/再起動しました。

CORBAサービスを停止する場合は、事前にすべてのCORBAアプリケーションを停止させてください。

プレインストール型Javaライブラリを使用している場合は、サーバアプリケーションにDefault Servantが登録されていません。

サーバアプリケーションの処理を見直し、Default Servant登録後にPOAManager.activate()を呼び出すようにしてください。


目次 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005