2011-01-13 10 views
6

誰かがファイルへのトランザクション書き込みを実装している場合は、私を助けてください。
関連トピックは以前のスレッド(transactional write)で説明しました。Apacheトランザクション:トランザクションでファイルを書き込む - resourceIdの使い方

ユースケースは以下の通りです:ログファイルへの書き込みが失敗した場合
、その適切なDBトランザクションがロールバックさshoud。

したがって、ファイルへの書き込みはトランザクション方式で実行する必要があります。

私はApache Commons Transactionを選択しました。
適切な文書や例が見つからなかったため、それ以上の問題はありません。

私はFileResourceManagerのインスタンス作成しました:

FileResourceManager FRM =新しい FileResourceManager( "C:\ CUR"、 "C:\ CUR"、trueの場合、ロガーを)。

私はこのApache Commons Transaction tutorialから理解したように、私は、次の手順を実装する必要があります。

  1. 開始トランザクション:
    transactionId = frm.generatedUniqueTxId();

  2. コール:
    frm.start();

  3. GETトランザクションIDそれのためにメソッド、それは必要です、例えばtransactionIdとRESOURCEIDとwriteResource:
    frm.writeResource(transactionId, resourceId);

そして、ここが曖昧である:
a)はどのように私はtransactioanally書くべきことを、実際のリソースとのresourceIdを接続することができますか?
b)私がトランザクションで書くファイルは、今ではresourceIdくらいでしょうか?

アドバイスありがとうございます。

答えて

4

私の最新の経験からは誰も答えません。

便利なdocumentataion:
example2(.ppt)

簡素化アルゴリズムは(実際には、例2に示されている)のようになります。
1.FileResourceManager
2.スタートを初期化FileResourceManager
3.トランザクションを取得しますFileResourceManagerインスタンスのID
4.ステップ3のトランザクションIDでトランザクションを開始します
5。あなたが必要とするリソースを書いてください - ここに書かれています
と書いてありますので、それは大きな一歩です!
トランザクションをコミットまたはロールバック

注:私は、私の質問にで尋ねについては、をRESOURCEIDは、単にトランザクションファイルです。 この名前は、この属性を非常によく表していません。

コードは、私が使用:

private static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(FileAppender.class); 
private static LoggerFacade loggerFacade = new Log4jLogger(logger); 

private static String tempDir = (String) System.getProperties().get("java.io.tmpdir"); 

private FileResourceManager frm = new FileResourceManager(tempDir, tempDir, false, loggerFacade); 
private static OutputStream outputStream; 

public void writeOut(E event) throws IOException { 
    Object txId = null; 
    try { 
     frm.start(); 
     txId = frm.generatedUniqueTxId(); 
     frm.startTransaction(txId); 
     outputStream = frm.writeResource(txId, fileName, true); 
     frm.commitTransaction(txId); 

    } 

    catch (Exception e) { 
     throw new IOException("DB rollback"); 
    } 
} 
+0

ひとつひとつのリンクは死んでいます!できれば更新してください。ありがとう。 –

+0

example2(.ppt)は正常です FileResourceManagerが更新されました – sergionni

関連する問題