मैं वर्तमान में जेएनडीआई का उपयोग कर वेबलॉगिक 10.3 सर्वर से उपयोगकर्ता ट्रांज़ेक्शन और डेटासोर्स दोनों को पुनर्प्राप्त कर रहा हूं।वेबलॉगिक 10.3 का उपयोग कर उपयोगकर्ता ट्रांज़ेक्शन में भाग लेने के लिए जेएनडीआई डेटासोर्स से प्राप्त जेडीबीसी कनेक्शन कैसे प्राप्त करें?
मैं 'ग्लोबल लेनदेन का समर्थन' और उपयोग करने के लिए करने के लिए डेटा स्रोत निर्धारित किया है अप 'लॉगिंग अंतिम संसाधन'
मेरे आशा थी कि एक UserTranscation शुरुआत और उसके बाद कनेक्शन में भाग लेंगे डेटा स्रोत से एक JDBC कनेक्शन पुन: प्राप्त करने से सौदा।
यह मामला प्रतीत नहीं होता है, और मेरे सम्मिलित बयानों को तुरंत चलाया जा रहा है और लेनदेन वापस रोलिंग का कोई प्रभाव नहीं पड़ता है।
क्या मेरी उपरोक्त धारणाएं सही हैं?
क्या कोई मुझे इसे प्राप्त करने के तरीके पर कुछ दस्तावेज या नमूने की दिशा में इंगित कर सकता है?
अग्रिम में बहुत धन्यवाद
अद्यतन: हल करने
आदेश में:
private void doSomething() {
Connection conn = null;
try {
Hashtable env = new java.util.Hashtable();
env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
env.put(javax.naming.Context.PROVIDER_URL,"t3://localhost:8080");
InitialContext ctx = InitialContext(env));
UserTransaction transaction = null;
transaction = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
DataSource dataSource = (DataSource) context.lookup("jdbc/xxxxx/DataSource");
conn = dataSource.getConnection();
transaction.begin();
// JDBC code goes here
transaction.commit();
} catch(Exception e) {
// TODO
if (transaction != null) {
try {
transaction.rollback();
} catch (Exception ex) {
// TODO
}
} finally {
if (con != null) {
conn.close
}
}
}
अद्यतन 2:
के रूप में यहाँ का अनुरोध कोड मैं उपयोग कर रहा हूँ की एक कंकाल रूपरेखा है इस मुद्दे को मुझे 2 चीजें करना पड़ा:
कोड के क्रम को पहले उपयोगकर्ता लेनदेन शुरू करने के लिए बदलें और फिर डेटास्टोर से एक कनेक्शन प्राप्त करें (जैसा कि पास्कल थिवेंट द्वारा इंगित किया गया है)।
एक जेडबीसी/xxxxx/डेटासोर्स "द्वारा संदर्भित डेटासोर्स को XADatasource में संदर्भित करें। ऐसा इसलिए है क्योंकि मैं उपयोगकर्ता लेनदेन के अंदर कोड बुला रहा था जिसने अन्य डेटासोर्स का उपयोग किया जो पहले से ही एलएलआर का समर्थन करने के लिए कॉन्फ़िगर किया गया था और जैसा कि नीचे पास्कल थिवेंट द्वारा इंगित किया गया है, आपके पास केवल एक एलएलआर डाटासोर्स ट्रांसकेशन में भाग ले सकता है।
मैंने पास्कल थिवेन्ट के उत्तर को नीचे स्वीकार कर लिया है क्योंकि यह दोनों मुद्दों को समझाया गया है।
धन्यवाद चलने की तरह एक सा लग रहा है। मैंने अनुरोध के रूप में मेरे कोड की कंकाल रूपरेखा जोड़ा है। – lucasweb
मैंने आपके सुझाव की कोशिश की। इसके परिणामस्वरूप निम्न त्रुटि हुई: एबीआई_डीएस नामक पूल के लिए इस टीएक्स संदर्भ में कनेक्शन पहले से ही बनाया जा चुका है। किसी अन्य पूल से कनेक्शन बनाने का अवैध प्रयास: AMS_DS जहां ABI_DS डेटास्रोत है जिसका उपयोग मैं कर रहा हूं और AMS_DS एक ही डेटासेट स्रोत है जो उसी परिनियोजन के लिए कॉन्फ़िगर किया गया है – lucasweb