2012-09-05 16 views
12

पर जेबॉस में कनेक्शन पुनर्प्राप्त करने में त्रुटि, हम जेबॉस 6 से जेबॉस 7 तक अपग्रेड करने की प्रक्रिया में हैं। हमारे आवेदन की प्रकृति में प्रत्येक ग्राहक के साथ एक अलग डेटाबेस उदाहरण है, साथ ही कोर कॉन्फ़िगरेशन डेटाबेस सभी ग्राहकों के लिए आम है। हमारे पास अक्सर ईजेबी कोड होता है जो कम से कम कोर डेटाबेस और व्यक्तिगत ग्राहक के डेटा को एक कॉल में संदर्भित करता है, और यहां तक ​​कि कुछ सामान्य पृष्ठभूमि प्रक्रियाएं जो सभी ग्राहकों के माध्यम से जाती हैं।किसी भी लेनदेन

जेबॉस 6 में इसे NOT_SUPPORTED लेनदेन विशेषता के साथ विधि सेट करके समस्या के बिना संभाला गया था। हालांकि, JBoss 7 निम्न त्रुटि के साथ इस बारे में शिकायत:

ARJUNA012140: Adding multiple last resources is disallowed. Trying to add LastResourceRecord(XAOnePhaseResource([email protected][connectionListener=d3ce980 connectionManager=25b47a05 warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:11, node_name=1, branch_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:14, subordinatenodename=null, eis_name=unknown eis name >])), but already have LastResourceRecord(XAOnePhaseResource([email protected][connectionListener=1a05d94a connectionManager=135f1cfe warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:11, node_name=1, branch_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:13, subordinatenodename=null, eis_name=unknown eis name >]))

कैसे हम एक अलग EJB कॉल और लेन-देन में विभिन्न डेटाबेस के लिए हर कॉल लपेटकर के बिना इस समस्या को हल कर सकते हैं। क्या ईजेबी कॉल या कुछ समान में जेबॉस लेनदेन प्रबंधन को वास्तव में बंद करने का कोई तरीका है?

नोट: विशिष्ट समस्या पर ध्यान केंद्रित करने और अन्य संभावनाओं को दूर करने के लिए अतिरिक्त खोज के आधार पर बाउंटी शुरू होने के बाद इस प्रश्न को संशोधित किया गया था।

+1

मुझे यह मिला। https://venugopaal.wordpress.com/2009/02/11/jboss5-adding-multiple-last-resources-is-disallowed/। सम्बंधित? – pd40

उत्तर

7

ठीक है, यह पता चला है कि जेबॉस 6 के विपरीत, NOT_S समर्थित लेनदेन अभी भी एक लेनदेन है जहां तक ​​डेटा स्रोतों को पुनर्प्राप्त करने के लिए सत्यापन तर्क संबंधित है।

तरह से इस पर काम करने के लिए पूरे EJB एक सेम कामयाब लेन-देन करने के लिए है:

@TransactionManagement(TransactionManagementType.BEAN) 

यह दुर्भाग्य है कि कुछ दिनों में कुछ लचीलापन बजाय यदि आप इस विधि द्वारा विधि नियंत्रण होगा सीमित करता है, लेकिन यह एक कामकाज बहुत दर्दनाक नहीं है।

13

दो सुझाव:

  1. उनके XA समकक्ष datasources को अद्यतन करने पर विचार करें। यह आपकी सभी समस्याओं का समाधान करेगा। मुझे संदेह है कि आप यहां बाधा डाल रहे हैं?
  2. सर्वर conf में सत्य के लिए com.arjuna.ats.arjuna.allowMultipleLastResources सेटिंग पर विचार करें। यह आपके इच्छित व्यवहार की अनुमति देगा, लेकिन दुर्भाग्यवश पूरे ऐप के लिए, केवल विधि ही नहीं।

अद्यतन:

मैं कई एक चरण संसाधनों को सक्षम करने के बाद से यह आप के लेन-देन संबंधी गुण एप्लिकेशन को काफी हद तक कमजोर सलाह नहीं देते। लेकिन तुम standalone.xml को संशोधित करने और जोड़ने की जरूरत है अगर आप JBoss 7 में ऐसा करना चाहते हैं:

<system-properties> 
     <property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/> 
</system-properties> 

अब आप एक प्रणाली है जो अब तक एक से दूर लेनदेन के बिना नहीं है। हालांकि यह अभी भी क्या करेगा, आपको चेतावनी देना है कि क्या आपको ह्युरिस्टिक परिणाम मिलते हैं।

यदि आप कर सकते हैं तो मेरी सिफारिश अभी भी XA डेटा स्रोतों का उपयोग करना है।

अद्यतन 2:

ओह, और अगर किसी को इस मैं जोड़ना चाहते हैं पढ़ने के लिए साथ आता है आप अलग अलग तरीकों में अपने कोड को विभाजित कर सकते हैं, ओ पी के विपरीत है कि, मैं अपने कोड और उपयोग के पुनर्गठन की सिफारिश करेंगे समांतर लेनदेन बनाने के लिए @TransactionAttribute(REQUIRES_NEW)।यह एकाधिक 1 पीसी चालू करने से बेहतर है, यद्यपि एक्सए चालू करने के जितना अच्छा नहीं है।

+0

धन्यवाद। हमने एक्सए के साथ भुगतान किया, लेकिन यह काम नहीं किया (यह शायद हमारे हिस्से में विफलता थी), लेकिन यह गलत समाधान था, इसलिए हमने उस दिशा में धक्का नहीं दिया। JBoss 7 में एकाधिक बहुभाषी स्रोतों की अनुमति कहां है, हम इसे नहीं ढूंढ पाए? – Yishai

+0

मेरे उत्तर का अपडेट देखें –

+0

क्या यह आपके लिए काम करता है? –