[英]EJB Timer service: WTRN0006W: Transaction xxxx has timed out after 120 seconds
我們有4個計時器作業,每天在不同的時間運行。 為此,我們使用具有4個線程的內部默認持久計時器調度程序。 在此批處理作業中,我們將檢索許多DB2表的內容,然后將每個表數據存儲在遠程服務器或IBM Cloud Object Store中的文件中。 我們注意到的是,如果任何外部資源(例如DB2或遠程服務器的SFTP或IBM COS)確實在120秒之前做出響應,我們將得到以下異常:
WTRN0124I: When the timeout occurred the thread with which the transaction is, or was most recently, associated was
Thread[WebSphere_EJB_Timer_Service_WorkManager.Alarm Pool : 0,5,WebSphere_EJB_Timer_Service_WorkManager: WAS Scheduler:
WebSphere_EJB_Timer_Service]. The stack trace of this thread when the timeout occurred was:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.socketRead(SocketInputStream.java:127)
java.net.SocketInputStream.read(SocketInputStream.java:182)
java.net.SocketInputStream.read(SocketInputStream.java:152)
發生這種情況時,批處理作業將繼續到下一個表,但是當所有表完成后,它將再次重新啟動同一作業。 我們想停止重新啟動批處理作業。 您能幫助我們如何做到這一點。
有幾種不同的方法可以實現所需的行為:
1)增加bean的事務超時,以便timer方法成功完成。 這是在ibm-ejb-jar-ext.xml
部署描述符文件中完成的,看起來像這樣將事務超時增加到600秒:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-ext xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-ext_1_0.xsd" version="1.0">
<session name="<your timer bean name>">
<global-transaction transaction-time-out="600"/>
</session>
</ejb-jar-ext>
注:您還需要增加服務器的最大事務超時: https : //www.ibm.com/support/knowledgecenter/zh-CN/SSNGTE_7.1.0/com.ibm.tspm.doc_7.1/install/任務/ ConfigureTransactionLifetimeTimeout.html
2)將bean超時方法更改為不使用事務:
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
3)將bean更改為使用bean管理的事務,然后要么不使用事務,要么在UserTransaction上設置事務超時:
@TransactionManagement(TransactionManagementType.BEAN)
userTransaction.setTransactionTimeout(600);
userTransaction.begin();
4)將EJB TimerService配置為不重試。 計時器方法可能仍會超時,因此從技術上講會失敗,但是容器不會重試該方法。 不幸的是,這僅適用於非持久計時器,方法是按照此處記錄的方式設置“ Maximum number of retries
: https : //www.ibm.com/support/knowledgecenter/zh/SSAW57_8.5.5/com.ibm.websphere.nd .multiplatform.doc / AE / uejb_timerservice.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.