2015-01-05 8 views
14

मैं इस तथ्य से उलझन में था कि हम एक गैर-एक्सए-डेटासोर्स के साथ जेटीए लेनदेन का उपयोग करने की अनुमति दे सकते हैं। Link to the documentation। तो एक्सए/गैर-एक्सए डेटा स्रोतों के बीच क्या अंतर है? हमें एक्सए-डेटा स्रोतों का उपयोग क्यों करना चाहिए?jta = "true" और XADataSource के साथ nonXADatasource के बीच क्या अंतर है?

उत्तर

22

सबसे सामान्य शर्तों में एक एक्सए लेनदेन एक "वैश्विक लेनदेन" है जो कई संसाधनों का विस्तार कर सकता है। एक गैर-एक्सए लेनदेन में हमेशा एक संसाधन शामिल होता है।

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

jta = "true", लेनदेन स्वचालित रूप से प्रतिबद्ध हो जाता है।

11

मैं इस बारे में सोच रहा था (गैर-एक्सए डेटासोर्स में "जेटीए" विकल्प का उपयोग करें) इसलिए मैंने कई कॉन्फ़िगरेशन का परीक्षण किया। मेरे पास दो MySQL सर्वर से कनेक्ट एक वितरित लेनदेन है।

यहां मेरे परिणाम हैं। अगर मैं है:

  1. दो गैर XA datasources, दोनों JTA = "true"

परिणाम: "। मेटा-अवगत वस्तु में प्रवेश पर लेन-देन में भर्ती नहीं किया जा सका" त्रुटि

  1. दो गैर XA datasources, एक JTA साथ = "true"

परिणाम: वे वितरित लेन-देन में भाग लेने नहीं होंगे। प्रत्येक अलग से प्रतिबद्ध होगा।

  1. एक XA और JTA साथ = "false" एक गैर XA,

परिणाम: एक ही # 2

के रूप में
  1. जेएटी = "सत्य" के साथ एक एक्सए और एक गैर-एक्सए।

परिणाम: काम करता है!

इनमें से, ऐसा लगता है कि "जेटीए का उपयोग करें" विकल्प इंगित करता है कि यदि एक्सए डेटासॉर है तो यह वितरित लेनदेन में भाग लेगा या नहीं।

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