2009-08-03 12 views
5

मैं अपने डेटाबेस और JMS कार्यान्वयन के रूप में अपनी ओरेकल स्ट्रीम AQ सुविधा के लिए Oracle 11g उपयोग कर रहा हूँ।ओरेकल स्ट्रीम एक्यू का उपयोग कर स्प्रिंग एमडीबी में जेएमएस और हाइबरनेट लेनदेन साझा करना?

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

रूप में अच्छी तरह हाइबरनेट का उपयोग करना संभव है? आदर्श रूप में, मेरा एमडीपी एक जेएमएस लेनदेन शुरू करेगा और एक कतार से एक संदेश पढ़ेगा, फिर हाइबरनेट के माध्यम से डेटा एक्सेस के लिए लेनदेन का पुन: उपयोग करेगा। यदि कुछ भी गलत हो जाता है, तो जेएमएस और डेटाबेस लेनदेन दोनों को 2-चरण प्रतिबद्ध (2 पीसी) का उपयोग किए बिना वापस लुढ़काया जाएगा।

मैं एक सौदे गुरु के ज्यादा नहीं हूँ, इसलिए इससे पहले कि मैं गहराई शुरू करते हैं, किसी को भी पुष्टि कर सकते हैं कि यह संभव है और साथ ही समझ में आता है?

अद्यतन:
क्या मैं चाहता हूँ Shared Transaction Resource pattern के एक कार्यान्वयन है। sample code इसे ActiveMQ और JDBC के लिए प्रदर्शित करता है, लेकिन मुझे ओरेकल स्ट्रीम एक्यू और हाइबरनेट का उपयोग करने की आवश्यकता है।

Update2: ओरेकल के लिए SpringSource उन्नत पैक स्प्रिंग डाटा JDBC के हिस्से के रूप open sourced किया गया है और यह "वितरित 2 महंगा का सहारा के बिना दोनों डेटाबेस और संदेश पहुँच के लिए एक भी स्थानीय लेनदेन प्रबंधक का उपयोग करने का विकल्प प्रदान करता है -फेज प्रतिबद्ध लेनदेन प्रबंधन "।

उत्तर

3

2PC आवश्यक नहीं होना चाहिए, जैसा कि आप कहते हैं, के बाद से appserver इसके बारे में ध्यान रखना चाहिए। हालांकि, आपको जेएनए केवल जेटीए के साथ काम करने के बाद, जेएनटी (यानी जावाई कंटेनर) लेनदेन का उपयोग करना होगा, क्योंकि वेनिला डेटासोर्स लेनदेन के बजाय।

यह एक बड़ी बात नहीं है, यह सिर्फ एक थोड़ा और अधिक बारीकियों है:

  1. आपका स्प्रिंग config <jee:jndi-lookup/> का उपयोग करना चाहिए अपने कंटेनर के DataSource करने के लिए एक संदर्भ प्राप्त करने के लिए, और आप इंजेक्षन कि डेटा स्रोत अपने वसंत-प्रबंधित हाइबरनेट सत्र फ़ैक्टरी में।
  2. फिर आप संदर्भ (<tx:jta-transaction-manager/> सबसे एप्लिकेशन सर्वर में काम करना चाहिए) में एक सौदे के प्रबंधक को पेश करने की जरूरत है।
  3. अपने स्प्रिंग JMS MessageListenerContainer में, यह में उपरोक्त लेन-देन प्रबंधक संदर्भ प्लग।

क्या यह सब समझ में आता है, या क्या मुझे विस्तार करना चाहिए? यह सेटअप यह सुनिश्चित करना चाहिए कि कंटेनर-प्रबंधित लेन-देन जेएमएस और हाइबरनेट इंटरैक्शन में आयोजित किए जाएं।

+0

+1। मुझे आश्चर्य है, हालांकि, "एक्सए-लेनदेन के बिना सभी (आईआईआरसी, इसे ओरेकल के लिए स्प्रिंगसोर्स एडवांस्ड पैक की सुविधा के रूप में विपणन किया गया था)" बयान। मैं काफी सकारात्मक हूं कि एकाधिक नोड्स (जैसे जेएमएस और डीए) में फैले किसी लेनदेन को एक्सए लेनदेन होना है और इसे 2 पीसी का उपयोग करना है - जबकि आमतौर पर दृश्य के पीछे कंटेनर द्वारा किया जाता है, फिर भी यह किया जाता है। क्या मै गलत हु? क्या कोई नई अद्भुत तकनीक है जो किसी भी तरह से अनावश्यक बनाती है? – ChssPly76

+0

आपकी टिप्पणियों के लिए धन्यवाद। मैंने थोड़ा गहरा खोदने के बाद अपना प्रश्न अपडेट किया। जैसा कि मैंने लिंक किए गए लेख में वर्णित है, मैं पूरी तरह से जेटीए और एक्सए से बचना चाहता हूं। [ओरेकल के लिए स्प्रिंगसोर्स एडवांस्ड पैक] के लिए दस्तावेज़ (https://www.springsource.com/products/enterprise/oraclepack) (डाउनलोड करें [यहां] (http://www.springsource.com/downloads/springsource-advanced-pack -for-oracle-डेटाबेस-डाउनलोड)) उस योग्यता का भी उल्लेख करें (अध्याय 3.2 का अंतिम अनुच्छेद देखें, जो दुर्भाग्य से यहां उद्धृत करने में बहुत लंबा है)। –

+1

कोई भी तरीका नहीं है कि आप डेटा स्रोतों और जेएमए के बिना जेएमटी में टीएक्स समन्वय प्राप्त करने जा रहे हैं। – skaffman

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