Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Agendador esta configurado porém não esta sendo executado

Criei o projeto ejb-timerservice conforme o video e fiz o deploy no wildfly 10, porém não esta sendo nada executado no console, ao publicar o projeto percebi um warn no console:

13:43:12,550 INFO  [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) WFLYDS0004: Found ejb-timerservice.jar in deployment directory. To trigger deployment create a file called ejb-timerservice.jar.dodeploy
13:43:12,561 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0027: Starting deployment of "ejb-timerservice.jar" (runtime-name: "ejb-timerservice.jar")
13:43:12,582 WARN  [org.jboss.weld.deployer] (MSC service thread 1-4) WFLYWELD0013: Deployment deployment "ejb-timerservice.jar" contains CDI annotations but no bean archive was not found. (No beans.xml nor class with bean defining annotations)
13:43:12,632 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0010: Deployed "ejb-timerservice.jar" (runtime-name : "ejb-timerservice.jar")

A informação me diz que nenhum arquivo bean foi encontrado porém as anotações da classe criada estão com o @Singleton e @ Startup, segue o código:

package br.com.caelum.timer;
import javax.ejb.Schedule;
import javax.ejb.Startup;
import javax.inject.Singleton;

@Singleton
@Startup
public class Agendador {

    @Schedule(hour="*", minute="*", second="*/10", persistent=false)
    void agendado() {
        System.out.println("verificando serviço externo periodicamente");
    }

}

Como fiz da mesma forma do vídeo não sei o que pode estar acontecendo, as únicas coisas que estão diferentes é que estou usando o wildfly 10 e jdk1.8, mas isso não afetou o projeto livraria, pois esta executando corretamente, somente o agendador não esta funcionando como o esperado.

5 respostas

Oi Jeferson. Só uma pergunta o arquivo beans.xml está no seu projeto ? O ejb-timerservice. no log é que envio é mostrado

contains CDI annotations but no bean archive was not found. (No beans.xml nor class with bean defining annotations)

Creio que como estou usando anotações não é necessário um arquivo beans.xml no meu projeto, pelo que eu entendi apenas com o @Singleton seria o suficiente para a classe ser declarada como uma bean, no vídeo o processo também foi feito apenas com as anotações, criei exatamente igual, um novo projeto (EJB project) e criei a classe agendador com as anotações, porém não funcionou como o esperado.

Compriendo, mas peço que coloque o arquivo citado na pasta META-INF do seu projeto EJB. Pois pela pratica que tenho com o CDI em projetos EJB deve-se criar o beans.xml. Para projeto maven segue o caminho abaixo.

src/main/resources/META-INF/

Caso não seja

src/META-INF/

Fiz a tentativa colocando o beans.xml na pasta META-INF, não ocorreu a WARN porém mesmo assim a Schedule não é executada.

solução!

Jeferson,

Realmente não precisa de nenhum arquivo de configuração, mas você utilizou a anotação @Singleton porem do pacote import javax.inject.Singleton;

A anotação deve ser relativa ao pacote do EJB. Altere o seu importe para import javax.ejb.Singleton;

Até mais