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

Glassfish服务器上的自动EJB计时器未触发

胡意致
2023-03-14

因此,我正在Glassfish 3.1上运行Java EAR应用程序。我在我的EJB模块中创建了一个带有单个注释计时器函数的无状态会话bean。我没有确切的代码,但它看起来像这样:

@Stateless
public class SessionTimerBean {

    public SessionTimerBean(){
       System.out.println("Constructor Called");
    }

    @Schedule(second="*/10", minute="*", hour="*")
    public void scheduleTimer(final Timer t) {
       System.out.println("Timer Called");
    }
}

当我启动Glassfish时,调试信息似乎表明它识别EJB计时器注释,并且bean的构造函数方法在启动时确实被调用。但timer方法本身似乎从未在任何时候被触发。

还有其他人有过这个问题吗?是不是我缺少了其他配置?

提前道谢。

共有1个答案

柯波峻
2023-03-14

以下定时器代码在glassfish 3.1.2中工作

import javax.ejb.Schedule;
import javax.ejb.Stateless;
import javax.ejb.Timer;

@Stateless
public class LabbBean {

    @Schedule(second="*/5", minute="*",hour="*", persistent=false)
    public void method123(final Timer timer) {
        System.out.println("Timer1234");
    }
}

但当我把

persistent=false 

所以我在服务器日志中发现:

INFO: keepstate is true and will not create new auto timers during deployment.

所以我把'keep-state'更改为false。我不是它也做什么的专家,但是将它更改为false会使计时器在没有persistent=false的情况下工作

我在下面的文件中更改了它

glassFish-ejb.xml:

<glassfish-ejb-jar>
    <enterprise-beans>
    ...
    </enterprise-beans>
    <keep-state>false</keep-state>
</glassfish-ejb-jar>

glassFish-application.xml

<glassfish-application>
    <keep-state>false</keep-state>
</glassfish-application>
 类似资料:
  • 启动服务器时,出现以下错误:无法启动服务器。 localhost上的服务器GlassFish Server Open Source Edition 3(Java EE 6)无法启动。

  • 我在C:\glassfish3目录中安装了GlassFish服务器。 当我在C:\glassfish3\bin目录中键入“dir”时,文件就会被列出。 但是当我输入asadmin时,我得到“系统找不到指定的路径”。 可能出了什么问题? 如何启动GlassFish服务器? --编辑-- 此外,在安装后,我得到: 创建域 执行命令:C:\glassfish3\glassfish\bin\asadmin

  • 我们尝试使用EJB3.1计时器组件。 我们的需求很简单。每分钟在java类中调用一个方法。要使此组件工作: 问题: EJB无法查找EJBTIMER表空间。我们可以在application.py或IBM WebConsole中进行设置。

  • 问题内容: 我用@ Singleton,@ Schedule和@Timeout注释创建了一个简单的示例,以尝试它们是否可以解决我的问题。 场景是这样的:EJB每5秒调用一次“检查”功能,并且如果满足某些条件,EJB将创建单个动作计时器,该计时器将以异步方式调用一些长时间运行的进程。(这是某种队列实现类型的东西)。然后它继续检查,但是尽管运行了很长时间,但不会启动另一个过程。 下面是我想出的代码,但

  • 我的glassFish服务器有问题。当我部署项目时,他们会向我显示以下消息: 构建impl。xml:1045:尚未部署该模块。 我一直在重新启动netbeans,并将debugmode更改为TRUE,但问题仍然存在。 这是build impl生产的1045线。xml: 我使用: macOS塞拉利昂10.12 NetBeans 8.2 GlassFish 4.1.1 JDK 8

  • 我无法在远程GlassFish服务器(4.0)上连接/部署/运行任何应用程序,并且已经为此奋斗了几天。 在本地,我运行的是Windows8,我也尝试过使用NetBeans7.3和8.0。我在本地安装了Java7.25和Java8。远程GF服务器是版本4.0 build 89,在多主机Windows 8计算机上,Java 7 25,在Glassfish中启用远程管理。我还让HTTP在8888端口而不