簡體   English   中英

Spring Batch暫停事務(NOT_SUPPORTED)以在Websphere應用程序服務器上執行Tasklet

[英]Spring Batch suspend transaction (NOT_SUPPORTED) for tasklet execution on websphere application server

這是為Spring批處理配置我們的應用程序的方式。

Spring Batch和Quartz相關的表在單獨的實例上配置。 特定於應用程序的數據庫實例是不同的。 應用程序在WebSphere Application Server 8.0上運行

我們不希望將Spring Batch事務傳播到Tasklet執行中。 為了達到這個目的,我們已經嘗試過,但是似乎沒有用。 有沒有人遇到過類似的問題? 請建議如何進行。

交易沒有被暫停。 Spring使用ConnectionHolder緩存連接,如果正在事務中,則不釋放連接。 我們不希望連接被緩存,我們希望從數據源(連接池)獲得一個新的連接,而不是使用spring緩存的連接句柄。

<batch:job id="jobId" job-repository="jobRepository">
    <batch:step id="stepId">
        <batch:tasklet ref="taskletId">
            <batch:transaction-attributes propagation="NOT_SUPPORTED" />
        </batch:tasklet>
    </batch:step>
</batch:job>

<bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>

謝謝。

確實,解決此問題的最佳方法是使用單獨的,特定於應用程序的數據源,該數據源與您當前所參與的事務無關。 首先,這避免了使用中的連接成為事務的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM