设置/配置 EJB 计时器服务的数据源 [英] Set/configure the EJB Timer Service’s DataSource

查看:23
本文介绍了设置/配置 EJB 计时器服务的数据源的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在我的应用程序中使用 EJB 3.1 中的计时器服务.

@Stateless@LocalBean公共类 StatelessTimerSessionBean {@Schedule(minute = "*", second = "0", dayOfMonth = "*", month = "*", year = "*", hour = "9-17", dayOfWeek = "Mon-Fri")公共无效我的定时器(){System.out.println("定时器事件:" + new Date());}}

<块引用>

.. 将 EJB 定时器服务的定时器数据源设置设置为有效的 JDBC 资源.."

来自

  1. 启动您的 GlassFish 服务器管理控制台:通常是 http://localhost:4848
  2. 在您的左侧导航到 [Configurations] > [server-config] > [EJB Container]
  3. 然后点击顶部的TAB[EJB Timer Service]
  4. 然后填写计时器数据源:使用您的 JDBC 资源,例如.[mysql-pu].( 注意: 默认为 jdbc/__TimerPool)
  5. 重启服务器

3.结果

<代码>...信息:[TimerBeanContainer] 创建的 TimerBeanContainer:TimerBean信息:EJB5181:EJB TimerBean 的可移植 JNDI 名称:[java:global/ejb-timer-service-app/TimerBean, java:global/ejb-timer-service-app/TimerBean!com.sun.ejb.containers.TimerLocal]信息:WEB0671:在 [/ejb-timer-service-app] 加载应用程序 [ejb-timer-service-app]信息:EJB5109:EJB 定时器服务为数据源成功启动 [mysql-pu]信息:将 DBReadBeforeTimeout 设置为 false信息:==>正在恢复定时器...信息:此服务器没有 EJB 计时器信息:<== ... 计时器已恢复....

4.还是破?TimerService 刚刚停止工作(它曾经工作过)?

在充满保存时部署"的一天之后,这发生在我身上.TimerService 突然不可用.

严重:加载应用程序时出现异常严重:上下文/ejb-timer-service-app 的取消部署失败警告:无法部署或加载 EJBTimerService:org.glassfish.deployment.common.DeploymentException:链接 ejb-timer-service-app 的安全策略时出错——模块状态不一致

此处找到解决方案

5.有用的链接

I'm trying to use the Timer Service in EJB 3.1 in my app.

@Stateless
@LocalBean
public class StatelessTimerSessionBean {

    @Schedule(minute = "*", second = "0", dayOfMonth = "*", month = "*", year = "*", hour = "9-17", dayOfWeek = "Mon-Fri")
    public void myTimer() {
        System.out.println("Timer event: " + new Date());
    }
}

".. set the EJB Timer Service’s Timer DataSource setting to a valid JDBC resource.."

from EJB Timer Service

I cannot figure out how to configure the Timer Datasource correctly?

The error I get when deploying is:

SEVERE: Exception while invoking class org.glassfish.ejb.startup.EjbApplication start method
java.lang.RuntimeException: EJB Timer Service is not available

Running: glassfish-3.1.2.2

解决方案

1. Example Database Setup

  1. I use MySQL for my database.

  2. Create the table EJB__TIMER__TBL from {GF_HOME}/glassfish/lib/install/databases/ejbtimer_{DB_ENGINE}.sql

DB_ENGINE = e.g MySQL:

CREATE TABLE EJB__TIMER__TBL (
    `CREATIONTIMERAW`      BIGINT        NOT NULL,
    `BLOB`                 BLOB,
    `TIMERID`              VARCHAR(255)  NOT NULL,
    `CONTAINERID`          BIGINT        NOT NULL,
    `OWNERID`              VARCHAR(255)  NULL,
    `STATE`                INTEGER       NOT NULL,
    `PKHASHCODE`           INTEGER       NOT NULL,
    `INTERVALDURATION`     BIGINT        NOT NULL,
    `INITIALEXPIRATIONRAW` BIGINT        NOT NULL,
    `LASTEXPIRATIONRAW`    BIGINT        NOT NULL,
    `SCHEDULE`             VARCHAR(255)  NULL,
    `APPLICATIONID`        BIGINT        NOT NULL,
    CONSTRAINT `PK_EJB__TIMER__TBL` PRIMARY KEY (`TIMERID`)
);

2. Server Configuration

  1. Start your GlassFish server admin console: usually http://localhost:4848
  2. On your left navigate to [Configurations] > [server-config] > [EJB Container]
  3. Then click the TAB up top [EJB Timer Service]
  4. Then fill out Timer Datasource: with your JDBC Resource eg. [mysql-pu]. ( Note: Defaults to jdbc/__TimerPool)
  5. Restart the Server

3. The Result

...
INFO: [TimerBeanContainer] Created  TimerBeanContainer: TimerBean
INFO: EJB5181:Portable JNDI names for EJB TimerBean: [java:global/ejb-timer-service-app/TimerBean, java:global/ejb-timer-service-app/TimerBean!com.sun.ejb.containers.TimerLocal]
INFO: WEB0671: Loading application [ejb-timer-service-app] at [/ejb-timer-service-app]
INFO: EJB5109:EJB Timer Service started successfully for data source [mysql-pu]
INFO: Setting DBReadBeforeTimeout to false
INFO: ==> Restoring Timers ... 
INFO: There are no EJB Timers owned by this server
INFO: <== ... Timers Restored.
...

4. Still Broken? TimerService just stopped working (it used to work)?

So this happened to me after a day full of "deploy on save". The TimerService was unavailable all of a sudden.

Severe:   Exception while loading the app
Severe:   Undeployment failed for context /ejb-timer-service-app
Warning:   Cannot deploy or load EJBTimerService: org.glassfish.deployment.common.DeploymentException: Error in linking security policy for ejb-timer-service-app -- Inconsistent Module State

Solution Found Here

5. Useful Links

这篇关于设置/配置 EJB 计时器服务的数据源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆