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) [...]