2011-01-13 15 views
6

यदि किसी ने फ़ाइल करने के लिए लेनदेन संबंधी लेखन लागू किया है, तो कृपया मेरी सहायता करें।
संबंधित विषय पर पहले थ्रेड (transactional write) पर चर्चा की गई थी।अपाचे लेनदेन: फ़ाइल को लेनदेन से लिखें - संसाधन का उपयोग कैसे करें

उपयोग मामले पीछा कर रहा है:
अगर लॉग फ़ाइल के लिए लिख विफल रहा है, कि उचित डीबी लेनदेन वापस लुढ़का जा shoud।

तो फ़ाइल के लिए लेखांकन लेनदेन के तरीके में किया जाना चाहिए।

मैंने Apache Commons Transaction lib चुना है।
और समस्या है, जो मुझे आगे जाने नहीं देता है, क्योंकि उचित दस्तावेज या उदाहरण नहीं मिला है।

मैं FileResourceManager का उदाहरण बनाया है:

FileResourceManager frm = नए FileResourceManager ("c: \ CUR", "c: \ CUR", सच, लकड़हारा);

मैं इस Apache Commons Transaction tutorial से समझने के रूप में, मैं निम्नलिखित को लागू करना चाहिए कदम:

  1. शुरू लेनदेन:
    इसके लिए frm.start();

  2. प्राप्त लेनदेन आईडी:
    transactionId = frm.generatedUniqueTxId();

  3. कॉल विधि, जरूरी है, उदाहरण के लिए transactionId साथ writeResource और RESOURCEID:
    frm.writeResource(transactionId, resourceId);

और यहाँ अस्पष्टता है:
क) कैसे मैं वास्तविक संसाधन के साथ resourceId कनेक्ट कर सकते हैं, कि मैं transactioanally लिखना चाहिए?
बी) मेरी फ़ाइल कैसे, मैं लेनदेन लिखूंगा अब resourceId होगा?

सलाह के लिए धन्यवाद।

उत्तर

4

अभी तक कोई भी उत्तर नहीं देता है, मैं अपने नवीनतम अनुभव से ऐसा करने की कोशिश करता हूं।

उपयोगी documentataion:
example2(.ppt)

सरलीकृत एल्गोरिथ्म की तरह (वास्तव में, example2 में दिखाया गया) दिखता है:
1. प्रारंभ FileResourceManager
2. शुरू FileResourceManager
3. लेन-देन प्राप्त FileResourceManager इंस्टेंस से आईडी
4. चरण 3
5 से लेनदेन आईडी के साथ लेनदेन शुरू करें। आपको आवश्यक संसाधन लिखना - यहां बताया गया है कि इसे लेनदेन
लिखें, ऐसा लगता है कि यह एक बड़ा कदम है!
6. प्रतिबद्ध या रोलबैक लेनदेन

नोट: 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

उदाहरण 2 (.ppt) ठीक है FileResourceManager अपडेट किया गया – sergionni

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^