バグ #967
完了exampleのSimpleServiceでActivate→Deactivateを繰り返すとMyServiceProviderでstate:ERRORになる
100%
説明
examples/SimpleService の動作確認時、以下の操作を行った場合に不具合が発生する。
1. コンポーネント起動(MyServiceConsumer、MyServiceProvider)
2. ポート接続
3. All Activate
4. All Deactivate
5. All Activate
※MyServiceProvider が赤色(state:ERROR)表示になる
6. コマンドを実行すると、No service connected. が出力される
匿名ユーザー さんが約15年前に更新
- ステータス を 新規 から 解決 に変更
- 進捗率 を 0 から 100 に変更
●原因
CorbaPort クラス
Provider情報を格納する内部クラスのコンストラクタ引数とメンバー変数が同じ変数名に
なっており、メンバー変数に代入されず、nullとなっていた為、
activateInterfaces()の際、activate_object_with_id(oid, servant)の
servantがnullで指定され、NullPointerException 例外が発生していた。
●対処
// 対処前
private class ProviderInfo {
public ProviderInfo() {
}
public ProviderInfo(Servant servant, byte[] objectid) {
servant = servant;
oid = objectid;
}
public Servant servant = null;
public byte[] oid = null;
}
protected HashMap<String, ProviderInfo> m_servants = new HashMap<String, ProviderInfo>();
// 対処後
public ProviderInfo(Servant svt, byte[] objectid) {
servant = svt;