Ustaw/skonfiguruj źródło danych usługi EJB Timer

[2]}próbuję skorzystać z usługi Timer w EJB 3.1 w mojej aplikacji.

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

".. Ustaw źródło danych Timer usługi EJB na prawidłowy zasób JDBC.."

Z EJB Timer Service

Nie mogę dowiedzieć się, jak poprawnie skonfigurować źródło danych timera?

Błąd, który dostaję podczas wdrażania to:

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

Author: ejohansson, 2012-11-08

3 answers

1. Przykładowa Konfiguracja Bazy Danych

  1. Używam MySQL dla mojej bazy danych.

  2. Utwórz tabelę EJB__TIMER__TBL z {GF_HOME}/glassfish/lib/install/databases/ejbtimer_{DB_ENGINE}.sql

DB_ENGINE = np. 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. Konfiguracja Serwera

GlassFish Admin Console

  1. uruchom konsolę administratora serwera GlassFish: zwykle http://localhost:4848
  2. po lewej stronie przejdź do [konfiguracje] > [server-config] > [EJB Container]
  3. następnie kliknij kartę do góry [EJB Timer Service]
  4. następnie wypełnić Timer Datasource : Z zasobów JDBC np. [mysql-pu]. ( Uwaga: domyślnie:jdbc/__TimerPool)
  5. Restart Serwer

3. Wynik

...
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. Nadal Zepsuty? TimerService po prostu przestał działać(kiedyś działał)?

Przytrafiło mi się to po dniu pełnym "deploy on save". TimerService był niedostępny wszystkie nagle.

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

Rozwiązanie Znalezione Tutaj

5. Przydatne Linki

 29
Author: ejohansson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:20

W JBoss / WildFly możesz wykonać następujące instrukcje:

Mastertheboss.com: tworzenie klastrów EJB 3 timery
Opublikowano: 08 Marzec 2015

 0
Author: Jose Tepedino,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-23 19:03:56

Wygląda na to, że glassfish-3.1.2.2 nie obsługuje EJB3, spróbuj użyć jboss 7.

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

 -3
Author: favrycio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-08 16:43:59