操作
バグ #846
完了CrobaPort::deactivateInterfaces で例外 ObjectNotActive が発生する
ステータス:
終了
優先度:
通常
担当者:
-
対象バージョン:
-
開始日:
2009/08/03
期日:
進捗率:
100%
予定工数:
説明
- 現象
registerProvider() にて別インスタンス名で同オブジェクトを登録した場合、deactivateInterfaces() で オブジェクトを deactivate をすると、例外 ObjectNotActive が発生する。
以下に例を示す。// CorbaPortMock は CorbaPort を継承した class // deactivateInterfaces_public は、 deactivateInterfaces をコールしています。 MyService_impl* pImpl0 = new MyService_impl(); CorbaPortMock* port0 = new CorbaPortMock("name of port"); bool ret; ret = port0->registerProvider("registerProvider0", "Generic", *pImpl0); ret = port0->registerProvider("registerProvider1", "Generic", *pImpl0); port0->deactivateInterfaces_public();
- 原因
上記の例の場合、deactivateInterfaces() の deactivate_object() で "registerProvider0" のオブジェクトを deactivate した後、 "registerProvider1" のオブジェクトを deactivate するが、このオブジェクトは "registerProvider0" のときに既に deactivate されたため、例外 ObjectNotActive が発生する。
処理は、例外 ObjectNotActive が発生した時点で終了してしまう。
操作