2009-11-23 10 views
13

हम स्प्रिंग कॉन्फ़िगरेशन में हमारे स्प्रिंग ट्रांज़ेक्शन को कॉन्फ़िगर करते हैं:वसंत जेटीए कॉन्फ़िगरेशन - TransactionManager कैसे सेट करें?

<tx:jta-transaction-manager/> 

मैं इसका मतलब इकट्ठा करता हूं कि वसंत स्वचालित रूप से अंतर्निहित जेटीए कार्यान्वयन को खोजेगा। तो जब हम जेबॉस शुरू करते हैं तो हम स्प्रिंग खोज करते समय इन संदेशों को देखते हैं:

[JtaTransactionManager] [ ] No JTA TransactionManager found at fallback JNDI location [java:comp/Tran 
sactionManager] 
javax.naming.NameNotFoundException: TransactionManager not bound 
<<Big stack trace>>  
<<More of the same>> 

और फिर अंत में देखें:

[JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction 
Manager] 
[JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT 
[email protected] 

प्रश्न यह है - हम java:/Transaction Manager जेटीए कार्यान्वयन को स्पष्ट रूप से कॉन्फ़िगर करने के लिए हमारे <tx:jta-transaction-manager/> टैग को कैसे संपादित कर सकते हैं इसलिए हम लॉग इन सभी स्टैक निशान से बचते हैं? (मैं सिर्फ लॉग 4 जे लॉगिंग स्तर को नहीं बदलना चाहता हूं)


अद्यतन: मैंने <tx:jta-transaction-manager/> को नीचे की कॉन्फ़िगरेशन के साथ बदल दिया है और ऐसा लगता है कि यह काम करता है .. मुझे लगता है कि यह ठीक है?

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManagerName" value="java:/TransactionManager"/> 
</bean> 
+1

आम तौर पर, जेबॉस के संस्करण जैसे आपके संदर्भ पर जितना संभव हो उतना अधिक जानकारी प्रदान करना हमेशा अच्छा होता है, जिस तरह से आप आवेदन कर रहे हैं, आदि। मैं यह नहीं कह रहा हूं कि यह सवाल यहां हल करेगा, लेकिन यह मदद कर सकता है। –

उत्तर

13

हाँ, यह ठीक है। जो स्टैक ट्रेस आप देख रहे थे वह भी ठीक था: <tx:jta-transaction-manager/> लेन-देन प्रबंधक को कई अलग-अलग मानक स्थानों से प्राप्त करने का प्रयास करता है; प्रत्येक विफल जेएनडीआई लुकअप के लिए, आपको javax.naming.NameNotFoundException दिखाई देगा।

java:/TransactionManager वह जगह है जहां जेबॉस डिफ़ॉल्ट रूप से बाध्य होता है; अन्य सर्वलेट कंटेनर java:/comp/TransactionManager पर डिफ़ॉल्ट होंगे, जो मुझे लगता है कि टीएम के लिए "मानक" स्थान माना जाता है।

Spring reference documentation से

:

WebLogic, WebSphere और OC4J सहित मानक स्थितियों, के लिए, सुविधाजनक <tx:jta-transaction-manager/> विन्यास तत्व का उपयोग पर विचार करें। यह स्वचालित रूप से अंतर्निहित सर्वर का पता लगाएगा और प्लेटफ़ॉर्म के लिए उपलब्ध सर्वोत्तम लेनदेन प्रबंधक चुनें। इसका मतलब है कि आपको सर्वर-विशिष्ट एडाप्टर कक्षाओं को कॉन्फ़िगर नहीं करना होगा (जैसा कि निम्नलिखित अनुभागों में चर्चा की गई है) स्पष्ट रूप से; वे मानक JtaTransactionManager डिफ़ॉल्ट फ़ॉलबैक के साथ स्वचालित रूप से चुने जाएंगे।

4

एक आम "ग़लती" J2EE घटक आप को तैनात में jta.jar और/या jbossall-client.jar तरह बातें बंडल है। कृपया जांचें और अगर यह मामला है तो उन्हें हटा दें।