Hello,
When migrating @Service POJOs from JBoss AS 4.2.3 to 5.1.0, I ran into a problem (bug?) with EJB timers (among others, more about those later in separate posts) . Simplified example:
DummyService.java:
package example; public interface DummyService { void start() throws Exception; }
package example; import java.util.Date; import javax.annotation.Resource; import javax.ejb.Timeout; import javax.ejb.Timer; import javax.ejb.TimerService; import org.jboss.ejb3.annotation.Management; import org.jboss.ejb3.annotation.Service; @Service @Management(DummyService.class) public class DummyServiceBean implements DummyService { @Resource protected TimerService timerService; public void start() throws Exception { timerService.createTimer(new Date(), 5000, "DUMMY"); } @Timeout public void timeout(Timer timer) { System.out.println("PING"); } }
Caused by: java.lang.IllegalStateException: Cannot obtain inMethodFlag for: TimerService.createTimer at org.jboss.ejb.AllowedOperationsAssociation.assertAllowedIn(AllowedOperationsAssociation.java:145) at org.jboss.as.ejb3.timerservice.TimerServiceFacade.assertAllowedIn(TimerServiceFacade.java:59) at org.jboss.as.ejb3.timerservice.TimerServiceFacade.createTimer(TimerServiceFacade.java:64) at example.DummyServiceBean.start(DummyServiceBean.java:24) [...]