2010-03-11 12 views
11

मैं डेटाबेस में फ़ाइल के गुण (आकार, अद्यतन समय ...) स्टोर करता हूं। तो समस्या यह है कि डेटाबेस और फ़ाइल के लिए लेनदेन का प्रबंधन कैसे करें।जावा ईई पर्यावरण में डेटाबेस और फ़ाइल सिस्टम के लिए लेनदेन का प्रबंधन कैसे करें?

जावा ईई पर्यावरण में, जेटीए डेटाबेस लेनदेन का प्रबंधन करने में सक्षम है। यदि डेटाबेस अपडेट करना सफल है लेकिन फ़ाइल ऑपरेशन विफल रहता है, तो क्या मुझे इसके लिए फ़ाइल-रोलबैक विधि लिखनी चाहिए? इसके अलावा, ईजेबी कंटेनर में फ़ाइल ऑपरेशन ईजेबी स्पेक का उल्लंघन करता है।

आपकी राय क्या है?

उत्तर

5

फाइल सिस्टम जैसे बाहरी संसाधनों तक पहुंच आदर्श रूप से जेसीए कनेक्टर के माध्यम से जाना चाहिए। हालांकि इस पर चर्चा के आसपास कई पदों कर रहे हैं, मैं कभी नहीं मिला एक रेडी-टू-का उपयोग फाइल सिस्टम के लिए लेन-देन संबंधी पहुँच के लिए JCA कनेक्टर, तो मैं एक लिखना शुरू किया: JCA connector: a file system adapter:

  • पर एक नज़र डालें। यह काफी बुनियादी है, लेकिन फाइलों के प्रतिबद्ध/रोलबैक का प्रबंधन करता है।

के बारे में अन्य परियोजनाओं:

  • मैं commons-transactions की सही स्थिति पता नहीं है, यह मेरे लिए मर चुका है।
  • JBoss Transactional File I/O पर एक नज़र डालें, आशाजनक लग रहा है।
  • भी Filera: File resource adapter पर एक नज़र डालें, लेकिन मैं इसे व्यवहार है

नोट आप एक से अधिक लेन-देन संबंधी भागीदार, एप्लिकेशन है, जैसे ही है कि नहीं लगता। सर्वर को वास्तव में वितरित लेनदेन का उपयोग करने की आवश्यकता है और चीजें अधिक जटिल हो जाती हैं। आपको इस जटिलता को कम से कम नहीं समझना चाहिए (उदा। डेटाबेस में वितरित लेनदेन के लिए एक और टाइमआउट तंत्र है)।

विचार करने के लिए एक और हल्का दृष्टिकोण SFSB का उपयोग करना है जो फ़ाइल सिस्टम पर लिखता है। यदि आप SessionSynchronization इंटरफ़ेस को लागू करते हैं, तो आपको beforeCompletion और afterCompletion कॉलबैक मिलते हैं। बाद में इंगित करता है कि क्या लेनदेन किया गया था या वापस लुढ़का गया था और यदि आवश्यक हो तो आप सफाई कर सकते हैं। फिर आप एक लेनदेन व्यवहार लागू कर सकते हैं।

3

मैन्युअल रूप से। आपको इसके लिए क्षतिपूर्ति लेनदेन लिखने की आवश्यकता होगी।

0

शायद लेनदेन फ़ाइल पहुंच के लिए commons-transaction पर एक नज़र डालें। उल्लेख करने के लिए:

किसी भी मामले में, आप EJB कंटेनर के बाहर फ़ाइलों को लिखने के लिए होगा या के रूप में से एक ने बताया JCA कनेक्टर के साथ बातचीत करने के लिए @ewernli।

4

जेटीए डेटाबेस के लिए नहीं है, तो यह संसाधन किसी भी अन्य संसाधन के साथ लंबे समय तक उपयोग किया जा सकता है यदि वह संसाधन एक्सए लेनदेन का समर्थन करता है। उदाहरण के लिए, XADisk एक्सए लेनदेन के साथ फ़ाइल-सिस्टम के ऐसे एकीकरण को सक्षम बनाता है। इसलिए, यह फ़ाइल-सिस्टम और डेटाबेस स्थिरता की समस्या को भी हल कर सकता है जिसे आप हल करने का प्रयास कर रहे हैं।

उम्मीद है कि मदद करता है।

नितिन

+1

+1 मैंने कभी इस बारे में नहीं सुना था। यह जानकर अच्छा लगा। – ewernli

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