2
respostas

Erro no timer do Singleton

Quando eu subo a minha aplicação, recebo os seguintes erros:

Error invoking timeout for timer: [id=3c5672a7-6f41-425e-8137-86350b8cb70a timedObjectId=EmailScheduler-0.0.1-SNAPSHOT.EmailScheduler-0.0.1-SNAPSHOT.Scheduler auto-timer?:true persistent?:true timerService=org.jboss.as.ejb3.timerservice.TimerServiceImpl@762e939f previousRun=Fri Oct 15 10:09:13 BRT 2021 initialExpiration=null intervalDuration(in milli sec)=0 nextExpiration=Fri Oct 15 10:13:00 BRT 2021 timerState=IN_TIMEOUT info=null] ScheduleExpression [second=0;minute=*/1;hour=*;dayOfMonth=*;month=*;dayOfWeek=*;year=*;timezoneID=null;start=null;end=null]: javax.ejb.EJBException: java.lang.IllegalArgumentException: argument type mismatch

E também um error during retrying timeout for timer;

Passei a receber essas mensagens depois de configurar a classe com @Singleton;

Uma outra coisa que aparece depois que eu subo o servidor é esta mensagem: Internal Error Deployment Scanners for Server

2 respostas

Murilo, boa tarde. Pelo que da pra entender na exceção, o tipo que vc está passando como parâmetro não é o correto, porém não sei qual tipo de parâmetro. Vc pode colocar o código da sua classe aqui para analisarmos?

Boa tarde, segue as minhas classes job e service:

Singleton
public class Scheduler {

    @Inject
    private EmailSchedulerService service;

    @Inject
    @JMSConnectionFactory("java:jboss/DefaultJMSConnectionFactory")
    private JMSContext context;

    @Resource(mappedName = "java:/jms/queue/EmailQueue")
    private Queue queue;

    @Schedule(hour = "*", minute = "*/1")
    public void send(Email email) {
        service.getUnsent().forEach(mail -> {
            context.createProducer().send(queue, mail);
            service.changeStatus(mail);
        });
    }
}
@Stateless
public class EmailSchedulerService {

    @Inject
    private EmailSchedulerDao dao;

    @Resource(mappedName = "java:/jboss/mail/gmail")
    private Session session;

    public List<Email> list() {
        return dao.list();
    }

    public void insert(Email email) {
        email.setStatus(false);
        dao.insert(email);
    }

    public List<Email> getUnsent() {
        return dao.getUnsent();
    }

    public void changeStatus(Email email) {
        email.setStatus(true);
        dao.changeStatus(email);
    }

    public void send(Email email) throws MessagingException {
        session.setDebug(true);

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("murilotegani@gmail.com"));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(email.getEmail()));
        message.setSubject(email.getSubject());
        message.setContent(email.getMessage(), "text/html");

        Transport.send(message);
    }
}