我有一个单例 bean,该@PostConstruct
方法需要在其@Asynchronous
内部调用一个方法。它不能直接使用这样做,this
因为这会使调用同步。我@Inject
不能自己,因为它是圆形的。
问问题
1659 次
2 回答
5
您可以使用这种类型的包装器:
@Singleton
public class SingletonBean {
@Stateless
public static class AsynchronousMethodLauncher{
@EJB
private SingletonBean singletonBean;
public void launch(){
singletonBean.asynchronousMethod();
}
}
@EJB
AsynchronousMethodLauncher launcher;
@Asynchronous
public void asynchronousMethod(){
//Place your code here
}
public void yourMethod(){
launcher.launch();
}
}
于 2013-05-12T05:15:32.323 回答
3
我建议使用自然的 Java EE 方式:
@Singleton
public class AsyncSingletonBeanBean {
@Resource
private SessionContext sessionContext;
@PostConstruct
public void init() {
AsyncSingletonBeanBean myBean = sessionContext.getBusinessObject(this.getClass());
myBean.foo();
}
@Asynchronous
public Future<String> foo() {
return new AsyncResult<String>("Hello");
}
}
于 2013-06-15T22:03:20.540 回答