2017-06-01 89 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中的一个类不是可序列化的,这就是为什么我们得到上述错误。我们改变了这个类来实现可序列化,它工作。仍然不确定,当使用持久计时器时它是如何工作的。