この特集のトップページへ
>
Chapter 5:ビジネスロジック層の構築
COLUMN 自動非アクティベート機能 | ||
ConsistentフラグやDoneフラグは,COMオブジェクト(COMコンポーネント)側でセットしない限り有効でない。COM+で管理されることを想定していないCOMコンポーネントは,当然DoneフラグやConsistentフラグなぞセットしない。Doneフラグがセットされないということは,COMクライアントがCOMオブジェクトを手放すまで存在することになるから,リソースの消費が激しくなる。そこでCOM+では,そのようなCOMオブジェクトであっても,メソッドから戻った時点で強制的にDoneフラグやConsistentフラグがセットされるようにするように設定することもできるようになっている。 コンポーネントサービス管理ツールでCOMコンポーネントの配下のメソッドのプロパティを開くと,[全般]ページに[このメソッドが返ったときに,自動的にこのオブジェクトを非アクティブ化する]というオプションがあるのがわかる(Fig.5-33)。この項目を有効にすると,メソッドから戻ったときに自動的にDoneフラグがTrueにセットされ,COMオブジェクトが非アクティブ化される。 また,非アクティブ化される際にCOMオブジェクトがErr.Raiseメソッドを使って実行時エラーを発生していた場合には,DoneフラグをTrueにすると同時に,ConsistentフラグをFalseに設定する。つまり,このオプションを有効にした場合,COMオブジェクト内で実行時エラーが発生したならば,トランザクションが自動的にアボートに設定されることになる(実行時エラーが発生していなかった場合,ConsistentフラグはTrueに設定される,すなわち,トランザクションはコミットされる)。 Fig.5-33 メソッドのプロパティ
| ||
Chapter 5-1 21/23 |