2017-06-01 48 views
0

我試圖用我們遇到的一個最近的問題來替換我們的應用程序中的一個現有邏輯,該邏輯使用永久性的proggramatic定時器來處理非持久性定時器。 WAS用於寫入定時器的持久信息的文件系統已滿,Derby數據庫以只讀模式重新啓動,這使得我們的應用程序無法觸發定時器帖子,我們不得不重新啓動服務器以修復相同的問題。爲什麼非持久性ejb計時器不會觸發?

這是用來觸發程序定時器

Timer timer = timerService.createTimer(100,eventContextWrapper); 

按在http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html引述的例子的代碼將當前件,改變了我們的代碼

TimerConfig tC = new TimerConfig(eventContextWrapper, false); 
Timer timer = timerService.createSingleActionTimer(100, tC); 

,但我們面臨的以下例外

[5/31/17 22:18:23:348 GMT+08:00] 000000bf SystemErr  R org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : null vmcid: IBM minor code: 896 completed: No 
[5/31/17 22:18:23:348 GMT+08:00] 000000bf SystemErr  R  at com.ibm.rmi.iiop.CDRReader.read_value(CDRReader.java:771) 
[5/31/17 22:18:23:348 GMT+08:00] 000000bf SystemErr  R  at com.ibm.rmi.iiop.EncoderInputStream.read_value(EncoderInputStream.java:840) 
[5/31/17 22:18:23:348 GMT+08:00] 000000bf SystemErr  R  at com.ibm.ws.ejbcontainer.util.ORBObjectCopierImpl.copy(ORBObjectCopierImpl.java:52) 
[5/31/17 22:18:23:348 GMT+08:00] 000000bf SystemErr  R  at com.ibm.ws.ejbcontainer.util.ObjectUtil.copy(ObjectUtil.java:159) 
[5/31/17 22:18:23:349 GMT+08:00] 000000bf SystemErr  R  at com.ibm.ejs.container.TimerNpImpl.<init>(TimerNpImpl.java:240) 
[5/31/17 22:18:23:349 GMT+08:00] 000000bf SystemErr  R  at com.ibm.ejs.container.TimerNpImpl.<init>(TimerNpImpl.java:276) 
[5/31/17 22:18:23:349 GMT+08:00] 000000bf SystemErr  R  at com.ibm.ws.runtime.component.WASEJBRuntimeImpl.createTimer(WASEJBRuntimeImpl.java:1371) 
[5/31/17 22:18:23:349 GMT+08:00] 000000bf SystemErr  R  at com.ibm.ejs.container.BeanO.createSingleActionTimer(BeanO.java:2551) 
com.test.customer.event.EventTimerBean.triggerTimer(EventTimerBean.java:62) 

第62行是createSing leActionTimer被調用。

已經做了一些分析,無法修復相同。任何潛在客戶都將有所幫助..

+0

嘗試反序列化您的上下文對象時發生錯誤。錯誤消息是無法解讀的,所以如果您需要更多幫助,您應該與IBM一起開啓PMR。 –

+0

@BrettKail當然,會嘗試與IBM一起提高PMR以獲得他們的幫助並更新進展。 – Sudersan

回答

0

最終發現EventContextWrapper中的一個類不是可序列化的,這就是爲什麼我們得到上述錯誤。我們改變了這個類來實現可序列化,它工作。仍然不確定,當使用持久計時器時它是如何工作的。