2011-04-19 13 views
5

हम प्रयोग कर रहे हैं jboss EntityMangerFactory वसंत सेम निम्नलिखित का उपयोग करस्प्रिंग JTA लेन-देन प्रबंधक सवाल

<jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence-units/myPU"/> 

अब हमारे वसंत सेम में कामयाब रहे हम @PersistenceContext का उपयोग entitymanager पाने के लिए और यह ठीक काम करता है। मैं जो चाहता हूं वह यह है कि मैं जब्स जेटीए सेवा द्वारा प्रदान किए गए लेनदेन प्रबंधक को पकड़ने के लिए वसंत कैसे कह सकता हूं और इसे अपने दाओ में उपयोग कर सकता हूं?

यदि मैं नीचे की तरह txmanager को परिभाषित करता हूं तो वसंत @ ट्रान्सएक्शन एनोटेशन के साथ ट्रांसक्शन के प्रबंधन का नियंत्रण ले सकता है?

<bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
     <property name="transactionManagerName" value="java:/TransactionManager"/> 
    <property name="userTransactionName" value="UserTransaction"/> 
</bean> 

यदि ऐसा है तो वसंत लेनदेन कब करेगा और इसे वापस रोल करेगा?

धन्यवाद

उत्तर

17

लगभग - आप इसे बल्कि txManager से बुलाना चाहिए transactionManager। आप जिस नाम की तलाश में हैं उसे ओवरराइड कर सकते हैं, लेकिन सम्मेलन में रहना आसान है।

इसके अलावा, JtaTransactionManager आम तौर पर विभिन्न जेएनडीआई नामों का स्वतः पता लगाएगा, आपको उन्हें मैन्युअल रूप से निर्दिष्ट करने की आवश्यकता नहीं है।

अभी तक बेहतर है, JtaTransactionManager बिल्कुल घोषित न करें, बस <tx:jta-transaction-manager/>, और Spring should do the right thing का उपयोग करें।

तो, आप सभी की जरूरत चाहिए:

<context:annotation-driven/> 
<tx:jta-transaction-manager/> 

एक बार उस जगह में है, किसी भी सेम @Transactional साथ एनोटेट उनके लेन-देन सीमाओं स्प्रिंग, उदा द्वारा प्रबंधित होगा जब एनोटेटेड विधि निकलती है (see docs) लेनदेन किया जाता है या वापस ले जाता है।

+1

धन्यवाद skaffman। यह ठीक काम कर रहा है। जिस तरह से मैं समझ नहीं आया विन्यास। सर्वर द्वारा प्रदान किए गए लेनदेन को वसंत कैसे मिलेगा? – user509755

+2

@ user509755: संभावित स्थानों की एक ज्ञात सूची में इसकी तलाश करके। – skaffman

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