Estoy tratando de utilizar el Servicio de Temporizador en EJB 3.1 en mi aplicación.

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

«.. el conjunto de los EJB Servicio de Temporizador Temporizador del origen de datos de la configuración válida de recursos JDBC..»

de EJB Servicio de Temporizador de

No puedo averiguar cómo configurar el Temporizador de origen de datos correctamente?

El error al implementar es:

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

Ejecución: glassfish-3.1.2.2

Sólo por curiosidad, ¿funciona para el programa de instalación no persistentes temporizadores? @Cronograma(segundo=»/5″, minuto=»«,hora=»*», persistente=false)
No trabajo. Me acaba de resolver que estoy a punto de escribir la respuesta.

OriginalEl autor ejohansson | 2012-11-08

3 Comentarios

  1. 28

    1. Ejemplo De Instalación De Base De Datos

    1. Yo uso MySQL para la base de datos.

    2. Crear la tabla EJB__TIMER__TBL de {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. Configuración Del Servidor De

    Ajustar/configurar el Servicio de EJB Timer del origen de datos

    1. Iniciar su GlassFish server de la consola de administración: generalmente http://localhost:4848
    2. A su izquierda vaya a [Configuraciones] > [server-config] > [Contenedor de EJB]
    3. A continuación, haga clic en el FICHA en la parte superior del [EJB Servicio de Temporizador]
    4. A continuación, rellene Temporizador de origen de datos: con sus Recursos JDBC, por ejemplo. [mysql-pu]. ( Nota: por defecto jdbc/__TimerPool)
    5. Reiniciar el Servidor

    3. El Resultado

    ...
    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. Todavía Roto? TimerService simplemente dejó de funcionar (se utiliza para el trabajo)?

    Así que esto me pasó a mí después de un día lleno de «implementar en guardar». El TimerService no estaba disponible de repente.

    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

    La Solución Se Encuentra Aquí

    5. Enlaces Útiles

    OriginalEl autor ejohansson

Dejar respuesta

Please enter your comment!
Please enter your name here