簡體   English   中英

設置/配置EJB Timer Service的DataSource

[英]Set/configure the EJB Timer Service’s DataSource

我正在嘗試在我的應用程序中使用EJB 3.1中的計時器服務。

@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());
    }
}

“..將EJB Timer Service的Timer DataSource設置設置為有效的JDBC資源..”

來自EJB Timer Service

我無法弄清楚如何正確配置Timer Datasource?

部署時出現的錯誤是:

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

跑步:glassfish-3.1.2.2

1.示例數據庫設置

  1. 我使用MySQL作為我的數據庫。

  2. {GF_HOME}/glassfish/lib/install/databases/ejbtimer_{DB_ENGINE}.sql創建表EJB__TIMER__TBL

DB_EN​​GINE =例如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.服務器配置

GlassFish管理控制台

  1. 啟動GlassFish服務器管理控制台:通常為http://localhost:4848
  2. 在左側導航到[Configurations]> [server-config]> [EJB Container]
  3. 然后單擊TAB up top [EJB Timer Service]
  4. 然后用你的JDBC資源填寫Timer Datasource :例如。 [MySQL的普]。 注意: 默認為jdbc/__TimerPool
  5. 重啟服務器

3.結果

...
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.
...

還是壞了嗎? TimerService剛停止工作(它以前工作)?

所以在經過一整天的“部署保存”之后發生了這件事。 TimerService突然無法使用。

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

找到解決方案

5.有用的鏈接

在JBoss / WildFly中,您可以按照以下說明操作:

Mastertheboss.com:創建集群EJB 3計時器
發布時間:2015年3月8日

聽起來像glassfish-3.1.2.2不支持EJB3,嘗試使用jboss 7。

http://docs.oracle.com/cd/E26576_01/doc.312/e24939/release-notes.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM