Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド
オブジェクトインプリメンテーションは,「20. VisiBroker 4.xインタセプタの使用」で説明しているインタセプタを介してシステム例外を発生させることができますが,通常はVisiBroker ORBがシステム例外を発生させます。
主要なCORBA例外の一覧とVisiBroker ORBがその例外を発生させた理由を表5-1に示します。また,CORBA例外のマイナーコードを表5-2に示します。
例外 | 例外の内容 | 考えられる原因 |
---|---|---|
CORBA::BAD_CONTEXT | サーバに無効コンテキストが渡されました。 | クライアントがオペレーションを呼び出したが,渡されたコンテキストにオペレーションで必要なコンテキスト値がない場合に,オペレーションはこの例外を発生します。 |
CORBA::BAD_INV_ORDER | オペレーション要求の前に,必要な前提条件オペレーションが呼び出されていません。 |
|
CORBA::BAD_OPERATION | 無効なオペレーションが実行されました。 |
|
CORBA::BAD_PARAM | 無効なパラメタが引き渡されました。 |
|
CORBA::BAD_TYPECODE | ORBが不正なTypeCodeを検出しました。 | - |
CORBA::CODESET_INCOMPATIBLE | クライアントとサーバのコードセットに互換がないため,通信に失敗しました。 | クライアントとサーバが使用するコードセットが,一致していません。例えば,クライアントはISO 8859-1を使用し,サーバは日本語コードセットを使用しています。 |
CORBA::COMM_FAILURE | 通信障害が発生しました。 | C++ORBでは,一端のコネクション障害によって,既存のコネクションがクローズすることがあります。また,クライアントマシンまたはサーバマシンのリソース制限によって(最大コネクション数に到達し)通信が失敗した場合,この例外が発生します。 Java ORBでは,オペレーションの進行中(クライアントがリクエストを送信後で,サーバからクライアントに応答が返される前)に通信が損失すると,この例外が発生します。 |
CORBA::DATA_CONVERSION | データ変換エラーが発生しました。 | マーシャリングで不正な文字コードを検出した場合,この例外が発生します。 |
CORBA::IMP_LIMIT | インプリメンテーションの上限に違反しました。 | - |
CORBA::INITIALIZE | 必要な初期化が実行されませんでした。 | ORB_init()メソッドまたはORB.init()メソッドが呼び出されなかった可能性があります。VisiBroker ORB対応のオペレーションを実行する前には,クライアントは,C++アプリケーションの場合はORB_init()メソッドを,Javaアプリケーションの場合はORB.init()メソッドを呼び出す必要があります。この呼び出しは通常,mainルーチンの最上部でプログラムが起動されるとすぐに実行されます。 Java ORBでは,起動時に指定するオプションに不正値を設定したおそれがあります。例えば,vbroker.orb.gcTimeoutにマイナスの値を設定した場合が該当します。 |
CORBA::INTERNAL | 内部エラーが発生しました。 | VisiBroker ORBの内部データ構造が破壊されるなど,ORB内部で論理矛盾を検出した場合に発生します。 |
CORBA::INTF_REPOS | インタフェースリポジトリへのアクセスエラーが発生しました。 | get_interface()メソッドの呼び出し時に,オブジェクトインプリメンテーションがIRを見つけられないと,クライアントでこの例外が発生します。IRが実行されていることを確認してください。また,リクエストされたオブジェクトのインタフェース定義が,IRにロードされていることを確認してください。 |
CORBA::INV_IDENT | 識別子の構文が無効です。 | IRに渡された識別子の書式が正しくありません。 不当なオペレーション名が動的起動インタフェースで使用されています。 |
CORBA::INV_OBJREF | 無効なオブジェクトリファレンスが検出されました。 | 使用できるプロファイルが指定されていないオブジェクトリファレンスが取得されると,VisiBroker ORBはこの例外を発生させます。 文字列型オブジェクトリファレンスの先頭文字が「IOR:」でないと,CORBA::ORB::string_to_object()メソッドは,この例外を発生させます。 |
CORBA::INV_POLICY | 無効なポリシーの変更が検出されました。 | この例外は,どの呼び出しからも発生する可能性があります。特定の呼び出しに適用されるポリシーの変更同士で互換性がないために呼び出しができない場合に発生します。 |
CORBA::INVALID_TRANSACTION | トランザクションコンテキストが不正です。 | この例外の詳細については,トランザクションサービスのドキュメントを参照してください。 |
CORBA::MARSHAL | マーシャルパラメタまたは結果が不当です。 | ネットワークからの要求または応答が構造的に不当です。このエラーは,通常,クライアント側またはサーバ側のランタイムのどちらかのバグを示します。例えば,サーバからの応答で,メッセージが1000バイトであるが,実際のメッセージが1000バイトより短いか長いことを示す場合,VisiBroker ORBはこの例外を発生させます。MARSHAL例外はDIIやDSIを不当に使用しても発生します。例えば,送信された実際のパラメタの型がオペレーションのIDLシグニチャと一致しない場合です。 |
CORBA::NO_IMPLEMENT | リクエストオブジェクトが見つかりませんでした。 | 呼び出されたオペレーションがある(IDL定義がある)のに,そのオペレーションのインプリメンテーションがないことを示します。 |
CORBA::NO_PERMISSION | 許可されていないオペレーションを実行しようとしました。 | - |
CORBA::NO_RESOURCES | 必要な資源を取得できませんでした。 |
|
CORBA::NO_RESPONSE | クライアントが送信したリクエストの応答がまだありません。 | OADに登録したオブジェクトインプリメンテーションの活性化が,OADに指定した時間内に行われなかった場合に,この例外が発生します。 |
CORBA::OBJ_ADAPTER | オブジェクトアダプタが障害を検出しました。 | アプリケーションのサーバントマネージャの問題を検出した場合などに,POAはこの例外を発生させます。 |
CORBA::OBJECT_NOT_EXIST | リクエストされたオブジェクトが存在していません。 |
|
CORBA::REBIND | クライアントが,QoSポリシーに矛盾するIORを受信しました。 | 設定されたQoSポリシーに矛盾するIORをクライアントが取得するとこの例外が発生します。RebindPolicyにNO_REBIND,NO_RECONNECT,またはVB_NOTIFY_REBINDの値があると,バインドされたオブジェクトリファレンスの呼び出しの結果,オブジェクト転送メッセージやロケーション転送メッセージが生成されます。 |
CORBA::TIMEOUT | オペレーションがタイムアウトしました。 | コネクションを設定しようとしている時,またはリクエストの送受信の完了を待っているときに,指定時間前にオペレーションが完了しないと,TIMEOUT例外が発生します。 |
CORBA::TRANSACTION_REQUIRED | リクエスト時に無効なトランザクションコンテキストがトランザクションサービスに渡されましたが,アクティブなトランザクションが必要です。 | この例外の詳細については,トランザクションサービスのドキュメントを参照してください。 |
CORBA::TRANSACTION_ROLLEDBACK | リクエストに対応するトランザクションがすでにロールバックされているか,またはロールバック用にマーキングされています。 | この例外の詳細については,トランザクションサービスのドキュメントを参照してください。 |
CORBA::TRANSIENT | 通信エラーが検出されましたが,再接続できる場合があります。 | 通信障害が発生したおそれがありますが,VisiBroker ORBは通信が失敗したサーバとリバインドする必要があるとシグナル通知しています。RebindPolicyの設定によっては,この例外は発生しません。 |
CORBA::UNKNOWN | 未知の例外です。 |
|
(凡例)-:該当しない
表5-2 CORBA例外のマイナーコード
システム例外 | マイナーコード | 説明 |
---|---|---|
BAD_PARAM | 1 | 値ファクトリの登録,登録解除,または探索に失敗しました。 |
2 | RIDがすでにIRに定義されています。 | |
3 | 名前がすでにIRのコンテキストで使用されています。 | |
4 | ターゲットが有効なコンテナではありません。 | |
5 | 継承されたコンテキストで名前がクラッシュしました。 | |
6 | abstractインタフェースのタイプが正しくありません。 | |
MARSHAL | 1 | 値ファクトリを探索できません。 |
NO_IMPLEMENT | 1 | ローカル値インプリメンテーションがありません。 |
2 | 値のインプリメンテーションバージョンの互換性がありません。 | |
BAD_INV_ORDER | 1 | IRに依存性が存在し,オブジェクトがデストラクトできません。 |
2 | IR内のデストラクトできないオブジェクトをデストラクトしようとしました。 | |
3 | オペレーションがデッドロックになりました。 | |
4 | VisiBroker ORBがシャットダウンしました。 | |
OBJECT_NOT_EXIST | 1 | 活性化されていない(登録解除されている)値をオブジェクトリファレンスとして渡そうとしました。 |
class SystemException : public CORBA::Exception { public: static const char*_id; virtual ~SystemException(); CORBA::ULong minor() const; void minor(CORBA::ULong val); CORBA::CompletionStatus completed() const; void completed(CORBA::CompletionStatus status); . . . static SystemException *_downcast(Exception *exc); . . . };
public abstract class org.omg.CORBA.SystemException extends java.lang.RuntimeException { protected SystemException(java.lang.String reason, int minor,CompletionStatus completed) {...} public String toString() {...} public CompletionStatus completed; public int minor; }
All Rights Reserved. Copyright (C) 2008, Hitachi, Ltd.
COPYRIGHT (C) 1992-2004 Borland Software Corporation. All rights reserved.