Hello,
I'm using the @Asynchronous annotation for a method on a stateless session bean and it is "blocking" as if the annotaion had not been applied. I have read the documentation and I think I am using it correctly.
Any suggestions on how to make this work?
Windows XP SP3
Java 1.6.0_20-b02
jboss-6.0.0.M3 running in "all" configuration
Actual Results:
runAysncTest 1
asyncMethod 1
runAysncTest 2
Expected Results:
runAysncTest 1
runAysncTest 2
asyncMethod 1
package test;
public interface AsyncTest {
public void asyncMethod();
}
package test;
import javax.ejb.Asynchronous;
import javax.ejb.Local;
import javax.ejb.Stateless;
@Local
@Stateless
public class AsyncTestBean implements AsyncTest {
@Asynchronous
@Override
public void asyncMethod() {
//Do something for 5 seconds
try {
for (int i = 0; i < 50; i++) {
Thread.sleep(100);
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("asyncMethod 1");
}
}
package test;
public interface Tester {
public void runAysncTest();
}
package test;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import javax.ejb.Startup;
@Startup
@Singleton
public class TesterBean implements Tester {
@EJB
private AsyncTest asyncTest;
@Override
@PostConstruct
public void runAysncTest() {
System.out.println("runAysncTest 1");
asyncTest.asyncMethod();
System.out.println("runAysncTest 2");
}
}
@Asynchronous support isn't available in M3 and is planned for the upcoming M4 http://lists.jboss.org/pipermail/jboss-development/2010-May/016218.html