9.2.3. リカバリおよび永続性


StateManager クラスはクラス階層のルート部分に存在し、オブジェクトの有効化、無効化、および回復を行います。例9.1「StateManager 実装」を参照してください。

例9.1 StateManager 実装

public abstract class StateManager
{
public boolean activate ();
public boolean deactivate (boolean commit);

public Uid get_uid (); // object’s identifier.

// methods to be provided by a derived class

public boolean restore_state (InputObjectState os);
public boolean save_state (OutputObjectState os);

protected StateManager ();
protected StateManager (Uid id);
};
Copy to Clipboard Toggle word wrap
オブジェクトは、1)回復可能、2) 回復可能および永続的あるいは、3)回復可能でも永続的でもないというように分類可能です。
回復可能
StateManagerは、オブジェクトに関する適切なリカバリ情報を生成、保持しようとします。このようなオブジェクトの有効期間は、オブジェクトを作成したアプリケーションの有効期間を越えないものとします。
回復可能かつ永続的
オブジェクトの有効期間は、そのオブジェクトを作成する、あるいはアクセスするアプリケーションの有効期限よりも長くなっています。リカバリ情報を保持するだけでなく、StateManager は、適時activate あるいは deactivate 操作を呼び出すことで、オブジェクトの既存ステートおよび永続ステートを自動的にload あるいは unload しようとします。
回復可能でも永続的でもない
リカバリ情報は保持されず、オブジェクトの有効化、無効化も自動試行されません。
オブジェクトが回復可能、あるいは回復可能かつ永続的であれば、StateManager は、アプリケーション実行中の様々な時点に、deactivate メソッド実行の一部としてsave_state メソッドを呼び出し、activate実行の一部としてrestore_stateを呼び出します。StateManager はユーザーレベルのステート変更を検知することができないため、プログラマはこれらのメソッドを実装しなければなりません。そしてプログラマは、オブジェクトステートのどの部分を永続化するか決定します。例えば、スプレッドシートの場合、値を再計算できるのであれば、全エントリを保存する必要がありません。例9.2「save_state の例」の例は、A、B、Cという整数のメンバ変数を含むExample クラスのsave_state 実装について示しています。

例9.2 save_state の例

public boolean save_state(OutputObjectState o)
{
    if (!super.save_state(o))
	return false;
      
    try
	{
	    o.packInt(A);
	    o.packInt(B);
	    o.packInt(C));
}
catch (Exception e)
    {
	return false;
    }
      
return true;
}                      
Copy to Clipboard Toggle word wrap

注記

クラッシュリカバリの仕組みに関する改善点を活用し、save_staterestore_state メソッドはすべてsuper.save_state および super.restore_stateを呼出す必要があります。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat