तरीके अनुरोध किया गया:
1. Struts कार्रवाई
2. सेवा वर्ग विधि (@Transactional द्वारा एनोटेट)
3. Xfire वेब सेवा कॉलजेपीए को वापस लेनदेन से कैसे रोकें?
सहित सब कुछ struts (DelegatingActionProxy) और लेन-देन वसंत के साथ कॉन्फ़िगर किया गया है।
जेपीए/हाइबरनेट के साथ दृढ़ता से किया जाता है।
कभी-कभी webservice एक अनचेक अपवाद फेंक देगा। मैं इस अपवाद को पकड़ता हूं और एक चेक अपवाद फेंक देता हूं। मैं नहीं चाहता कि लेनदेन वापस रोल करें क्योंकि वेब सेवा अपवाद वर्तमान स्थिति को बदलता है। मैं इस तरह विधि टिप्पणी किए गए:
@Transactional(noRollbackFor={XFireRuntimeException.class, Exception.class})
public ActionForward callWS(Order order, ....) throws Exception
(...)
OrderResult orderResult = null;
try {
orderResult = webService.order(product, user)
} catch (XFireRuntimeException xfireRuntimeException) {
order.setFailed(true);
throw new WebServiceOrderFailed(order);
} finally {
persist(order);
}
}
मैं अभी भी इस अपवाद: जब मैं JUnit के साथ इस पुन: पेश करने की कोशिश
org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly
, लेनदेन रोल के लिए वापस चिह्नित नहीं है और यह अभी भी संभव है लेनदेन करने के लिए।
मैं वसंत को लेनदेन को वापस न करने के लिए कैसे बना सकता हूं?
यह गलत है। 'noRollbackFor' निर्दिष्ट अपवाद वर्ग और उसके सभी उप-वर्गों की जांच करता है: http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/transaction/annotation/Transactional.html#noRollbackFor() इसके अतिरिक्त , डिफ़ॉल्ट रूप से चेक अपवादों से रोलबैक ट्रिगर नहीं होगा: http://static.springsource.org/spring/docs/2.5.x/reference/transaction.html#transaction-declarative-attransactional-settings – ChssPly76
यह स्पष्ट नहीं करता है कि क्यों उपरोक्त कोड 'WebServiceOrderFailed' पर वापस रोल करता है। –
मेरा अनुमान है कि WebServiceOrderFailed एक रनटाइम अपवाद और उपरोक्त कोड है ('noRollbackFor = {..., अपवाद।कक्षा} ') का कोई प्रभाव नहीं पड़ सकता क्योंकि अपवाद को विशेष रूप से संभाला जाता है (अन्यथा, विरासत कोड भी रनटाइम अपवाद को अनदेखा कर देगा क्योंकि यह अपवाद को बढ़ाता है)। –