]
Carlo de Wolf updated WFLY-6528:
--------------------------------
Priority: Critical (was: Major)
Server is unable to invoke @Timeout method after 10 methods are
called on Asynchronous bean on IBM JDK
------------------------------------------------------------------------------------------------------
Key: WFLY-6528
URL:
https://issues.jboss.org/browse/WFLY-6528
Project: WildFly
Issue Type: Bug
Components: EJB
Reporter: Stuart Douglas
Assignee: Stuart Douglas
Priority: Critical
Labels: downstream_dependency
*Description of problem:*
Server is unable to invoke @Timeout method after 10 methods are called on Asynchronous
bean
Test:
{code:java}
for (int i = 0; i < 10; i++) {
AsyncBean bean = lookup(AsyncBean.class);
bean.asyncMethod();
}
InitialContext iniCtx = new InitialContext();
TimeoutBean bean = (TimeoutBean) iniCtx.lookup("java:module/" +
TimeoutBean.class.getSimpleName());
bean.createTimer();
{code}
Asynchronous bean:
{code:java}
@Stateless
@Asynchronous
@LocalBean
public class AsyncBean{
public void asyncMethod() {
System.out.println("asynch bean execution");
}
}
{code}
Timeout bean:
{code:java}
@Stateless
public class TimeoutBean {
@Resource
private TimerService timerService;
public void createTimer() {
timerService.createTimer(100, null);
}
@Timeout
private void timeout(Timer timer) {
System.out.println("in timeout method");
}
}
{code}
*How reproducible:*
Always on IBM JDK
*Steps to Reproduce: (use attached reproducer)*
# get fresh EAP
# mvn test -Djboss.home=$\{EAP_HOME\}
*Actual results:*
{noformat}
12:26:57,462 ERROR [org.jboss.as.ejb3] (EJB default - 9) WFLYEJB0164: Exception running
timer task for timer [id=03aa7a93-ee6f-483e-bf6b-caff56a13fc0
timedObjectId=test.test.TimeoutBean auto-timer?:false persistent?:true
timerService=org.jboss.as.ejb3.timerservice.TimerServiceImpl@f1cd0789
initialExpiration=Mon Apr 11 12:26:57 CEST 2016 intervalDuration(in milli sec)=0
nextExpiration=null timerState=IN_TIMEOUT info=null] on EJB test.test.TimeoutBean:
java.lang.RuntimeException: javax.xml.stream.FactoryConfigurationError: Provider
__redirected.__XMLOutputFactory not found
at
org.jboss.as.ejb3.timerservice.TimerServiceImpl.persistTimer(TimerServiceImpl.java:614)
at org.jboss.as.ejb3.timerservice.TimerTask.run(TimerTask.java:148)
at
org.jboss.as.ejb3.timerservice.TimerServiceImpl$Task$1.run(TimerServiceImpl.java:1214)
at
org.wildfly.extension.requestcontroller.RequestController$QueuedTask$1.run(RequestController.java:497)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.lang.Thread.run(Thread.java:785)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: javax.xml.stream.FactoryConfigurationError: Provider
__redirected.__XMLOutputFactory not found
at javax.xml.stream.XMLOutputFactory.newFactory(Unknown Source)
at javax.xml.stream.XMLOutputFactory.newInstance(Unknown Source)
at
org.jboss.as.ejb3.timerservice.persistence.filestore.FileTimerPersistence.writeFile(FileTimerPersistence.java:497)
at
org.jboss.as.ejb3.timerservice.persistence.filestore.FileTimerPersistence.persistTimer(FileTimerPersistence.java:225)
at
org.jboss.as.ejb3.timerservice.persistence.filestore.FileTimerPersistence.persistTimer(FileTimerPersistence.java:193)
at
org.jboss.as.ejb3.timerservice.TimerServiceImpl.persistTimer(TimerServiceImpl.java:609)
... 7 more
Caused by: java.lang.ClassNotFoundException: __redirected.__XMLOutputFactory
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:273)
at javax.xml.stream.FactoryFinder.newInstance(Unknown Source)
at javax.xml.stream.FactoryFinder.find(Unknown Source)
at javax.xml.stream.FactoryFinder.find(Unknown Source)
... 13 more
{noformat}
*Expected results:*
No exception on output
*Additional info:*
Number of EJB call depends on max-threads attribute of EJB3 subsystem. It can be
configured by this CLI command:
{noformat}
/subsystem=ejb3/thread-pool=default:write-attribute(name=max-threads,value=10)
{noformat}