1 Reply Latest reply on Dec 20, 2011 8:02 AM by sven.loe

    Quartz bean fails at deployment on JBoss 5.1

    sven.loe

      Hello,

       

      I am trying to deploy a app on JBoss 5.1 Final. It has 2 MDBs that need to be called by quartz according to crontab. At deployment time I get the following error message:

       

      08:34:10,809 INFO  [EJBContainer] STARTED EJB: ch.mobi.evn.business.application.AttestationEventsTimerBean ejbName: AttestationEventsTimerBean

      08:34:10,872 ERROR [TimerImpl] Error invoking ejbTimeout

      javax.ejb.EJBException: No method has been annotated with @Timeout

          at org.jboss.ejb3.mdb.MessagingContainer.callTimeout(MessagingContainer.java:304)

          at org.jboss.as.ejb3.timerservice.TimedObjectInvokerBridge.callTimeout(TimedObjectInvokerBridge.java:44)

          at org.jboss.ejb.txtimer.TimerImpl$TimerTaskImpl.run(TimerImpl.java:561)

          at java.util.TimerThread.mainLoop(Timer.java:512)

          at java.util.TimerThread.run(Timer.java:462)

      08:34:10,872 ERROR [TimerImpl] Error invoking ejbTimeout

      javax.ejb.EJBException: No method has been annotated with @Timeout

          at org.jboss.ejb3.mdb.MessagingContainer.callTimeout(MessagingContainer.java:304)

          at org.jboss.as.ejb3.timerservice.TimedObjectInvokerBridge.callTimeout(TimedObjectInvokerBridge.java:44)

          at org.jboss.ejb.txtimer.TimerImpl$TimerTaskImpl.run(TimerImpl.java:561)

          at java.util.TimerThread.mainLoop(Timer.java:512)

          at java.util.TimerThread.run(Timer.java:462)

      08:34:10,872 ERROR [TimerImpl] Error invoking ejbTimeout

      javax.ejb.EJBException: No method has been annotated with @Timeout

          at org.jboss.ejb3.mdb.MessagingContainer.callTimeout(MessagingContainer.java:304)

          at org.jboss.as.ejb3.timerservice.TimedObjectInvokerBridge.callTimeout(TimedObjectInvokerBridge.java:44)

          at org.jboss.ejb.txtimer.TimerImpl$TimerTaskImpl.run(TimerImpl.java:561)

          at java.util.TimerThread.mainLoop(Timer.java:512)

          at java.util.TimerThread.run(Timer.java:462)

       

      The source of the Bean looks like that:

       

      @MessageDriven(activationConfig =

      {@ActivationConfigProperty(propertyName = "cronTrigger", propertyValue = "0 5 * ? * MON-FRI *")})

      @ResourceAdapter("quartz-ra.rar")

      public class AttestationEventsTimerBean implements Job {

       

        private static final Logger logger = Logger.getLogger(AttestationEventsTimerBean.class);

       

        @Override

        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

          SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");

          logger.info("Process attestations: "+formatter.format(new Date()));

            try {

              this.attestationService.processLocalAttestations();

            }

            catch (AttestationException e) {

              logger.error("AttestationTimeout failed.", e);

            }

        }

        private AttestationService attestationService;

       

        @EJB

        public void setAttesationService(AttestationService attestationService) {

          this.attestationService = attestationService;

        }

       

      }

       

      It is done like in the examples in the JBoss docs. If I delete the @ResourceAdapter annotation I get an exception that MDB the messagetype is unknown. An MDB has no @Timeout annotations so what is going on here? Has somebody an idea?