当前位置: 首页 > 知识库问答 >
问题:

EJB@timeout方法在weblogic server热重部署期间被多次调用

欧阳骏俊
2023-03-14

我们有以下简单的应用程序:一个带有@timeout方法的@singleton bean和一个启动计时器的servlet。在第一次部署之后,我们看到该方法在2秒内被调用一次--这是预期的。然后,在热重部署之后,我们看到该方法在2秒内被调用了两次。在几次重新部署之后,方法在相同的2秒内被调用多次。重新启动服务器没有帮助。请参阅下面的代码:

import javax.ejb.*;

@Remote(TimerRemote.class)
@Singleton
public class TimerBean implements TimerRemote {
  @Resource
  private SessionContext context;

  public void startTimer() {
    context.getTimerService().createTimer(2000,2000,null);    
  }

  @Timeout
  public void timeoutCallback(javax.ejb.Timer timer) {
    System.out.println("timeoutCallback is called: " + timer);
  }
}

@timeout方法应在给定间隔时间后调用。当前方法在一秒钟内被调用多次。

共有1个答案

奚瑾瑜
2023-03-14

定时器默认情况下是持久的,根本不会取消。

请参阅官方的Java EE6教程:使用计时器服务。

如果不需要计时器持久化,则最好使用@schedule并设置persistent=false。或者尝试一种编程方法,自行控制计时器的生命周期。

 类似资料:
  • 我试图为BillingClient v.2.2.0和Kotlin协同程序编写一个包装: 正如您所见,当我试图查询购买或购买时,我确保客户已经准备好。但在生产中存在许多错误: 我试图了解问题的原因,得到了if将被多次调用。可能存在异常。我一直想知道这是怎么可能的,因为我每次调用都会创建新的侦听器?我无法在emulator或测试设备上重现此问题。有人能解释一下这里发生了什么,以及如何解决吗?

  • 本文向大家介绍springboot实现热部署操作方法,包括了springboot实现热部署操作方法的使用技巧和注意事项,需要的朋友参考一下 1.在 Spring Boot 开发环境下禁用模板缓存 2.引入依赖 3.Intellij IEDA 和 Eclipse 不同,Intellij IDEA 必须做一些小调整 在 Eclipse 中,修改文件后要手动进行保存,它就会自动编译,就触发热部署现象,而

  • 本文向大家介绍spring boot devtools在Idea中实现热部署方法,包括了spring boot devtools在Idea中实现热部署方法的使用技巧和注意事项,需要的朋友参考一下 1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 注:project 中添加 spring-boot-maven-plugin,主要在eclipse中使用,idea中不需要添加

  • 本文向大家介绍Intellij IDEA 热部署处理方法(图解),包括了Intellij IDEA 热部署处理方法(图解)的使用技巧和注意事项,需要的朋友参考一下 1. 首先参考IDEA热部署同行经验分享: Intellij IDEA 4种配置热部署的方法 2. IDEA 热部署实战: springboot项目: 不要引入热部署工具包spring-boot-devtools 在Intellij I

  • 我正在尝试在像这样: 然后在我的它呈现: 我正在将我的fetch记录到控制台中,它被调用了三次。流程是我在登录页面上(加载时挂载一次),我登录,它将我重定向到自己呈现的主页。此时,我在控制台中看到:

  • 我有一个代码,在那里我处理多个线程。一个线程等待它所依赖的其他一些线程的执行。 线程的运行代码如下所示 很少有其他线程等待这个线程在相同的方法中完成执行,如图所示,通过调用join()来执行run()。 假设这个线程依赖于另外三个线程,它正在等待它们在thread.join()中完成执行。即nameList大小为3,但此线程也执行了3次操作。它在for循环的外部。 我用另一种方法启动这个线程,比如