2012-03-12 20 views
5

मेरे पास वसंत एकीकरण + बैच एप्लिकेशन है।स्प्रिंग एकीकरण और बैच लेनदेन के लिए प्रत्येक विधि (वसंत बैच नौकरी के) का डिफ़ॉल्ट अलगाव स्तर क्यों है?

एकीकरण का उपयोग इनबॉर्न चैनल एडेप्टर के साथ फ़ाइल पढ़ने और बैच नौकरी को कॉल करने के लिए किया जाता है। jobRepository से परिभाषित किया गया है: org.springframework.batch.core.repository.support.JobRepositoryFactoryBean

लेनदेन प्रबंधक org.springframework.orm.jpa.JpaTransactionManager है।

जब अनुप्रयोग मैं क्यों लेकिन मैं विन्यास के इस अजीब तरह पढ़ा नहीं जानता कि शुरू होता है:

[5860] [2012-03-12 17:40:47,267] D [main] [org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource] Adding transactional method [*] with attribute [PROPAGATION_REQUIRED,ISOLATION_DEFAULT] 
[5860] [2012-03-12 17:40:47,267] D [main] [org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource] Adding transactional method [create*] with attribute [PROPAGATION_REQUIRES_NEW,ISOLATION_SERIALIZABLE] 
[5860] [2012-03-12 17:40:47,267] D [main] [org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource] Adding transactional method [getLastJobExecution*] with attribute [PROPAGATION_REQUIRES_NEW,ISOLATION_SERIALIZABLE] 

ऐसा लगता है कि डिफ़ॉल्ट के लिए हर jobmethod अलगाव serializable साथ कॉन्फ़िगर किया गया है, लेकिन मैं इसे सेट नहीं किया कहीं भी नहीं। कोई विचार है कि डिफ़ॉल्ट अलगाव स्तर को ISOLATION_DEFAULT के रूप में कैसे सेट करें?

उत्तर

4

डिफ़ॉल्ट रूप से 2 या अधिक बक्से पर एक ही नौकरी के उदाहरण को निष्पादित करने से रोकने के लिए यह डिफ़ॉल्ट रूप से सर्जिकल है। यदि आप यह चिंता नहीं करते हैं तो आप इसे आराम कर सकते हैं।

http://static.springsource.org/spring-batch/reference/html/configureJob.html#txConfigForJobRepository

isolation-level-for-create 

विशेषता * और getLastJobExecution * तरीकों बनाने के लिए प्रचार को नियंत्रित करता है

+1

मैं यह कर कैसे करूँ जब एनोटेशन @EnableBatchProcessing का उपयोग कर? –

+1

आपको उस मामले में अपना खुद का बैच कॉन्फ़िगरर प्रदान करना होगा। आप DefaultBatchConfigurer का विस्तार कर सकते हैं और createJobRepository() को ओवरराइड कर सकते हैं। –

+1

@ गैरी-रसेल आप क्या सलाह देते हैं यदि हम नौकरी के उदाहरण को 2 या अधिक बक्से पर एक साथ निष्पादित करने से रोकना चाहते हैं? लेनदेन सर्जिकल एक विकल्प नहीं है। मैं निम्नलिखित कक्षा में देख रहा था, और निम्नलिखित आवेदक को देख रहा था: org.springframework.batch.core.repository.dao.JdbcJobInstanceDao.jobIncrementer – svlada