【问题标题】:Why is the non persistent ejb timer not triggering?为什么非持久 ejb 计时器没有触发?
【发布时间】:2017-11-02 12:30:34
【问题描述】:

由于我们最近遇到的一个问题,我正在尝试将我们的应用程序中的现有逻辑替换为非持久性计时器,该逻辑使用持久性编程计时器。 WAS 用于写入计时器持久信息的文件系统已满,并且 Derby 数据库以只读模式重新启动,导致我们的应用程序无法触发计时器,因此我们不得不重新启动服务器以修复该问题。

这是用于触发编程计时器的当前代码段

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 行是调用 createSingleActionTimer 的位置。

已经做了一些分析,但无法修复。任何线索都会有所帮助..

【问题讨论】:

  • 尝试反序列化上下文对象时发生错误。错误消息无法辨认,因此如果您需要更多帮助,您应该向 IBM 开一个 PMR。
  • @BrettKail 当然,将尝试向 IBM 提出 PMR 以获得他们的帮助并更新进度。

标签: websphere ejb-3.1 ejb-timer


【解决方案1】:

最终发现 EventContextWrapper 中的一个类不可序列化,这就是我们收到上述错误的原因。我们更改了该类以实现可序列化并且它起作用了。仍然不确定,使用持久计时器时它是如何工作的。

【讨论】:

    猜你喜欢
    • 2012-02-23
    • 2021-04-20
    • 1970-01-01
    • 2016-11-21
    • 2019-02-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多