0
我有一个单身豆,其中@PostConstruct
方法需要在其自身内部调用@Asynchronous
方法。它不能直接使用this
,因为这会使呼叫同步。我不能@Inject
本身,因为它是圆形的。单身Java EE bean如何获得对自身的引用?
我有一个单身豆,其中@PostConstruct
方法需要在其自身内部调用@Asynchronous
方法。它不能直接使用this
,因为这会使呼叫同步。我不能@Inject
本身,因为它是圆形的。单身Java EE bean如何获得对自身的引用?
您可以使用这种类型的包装:
@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();
}
}
我会建议自然的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");
}
}
很好的建议! (如果发布更好的答案,我会接受它) – necromancer 2013-05-12 08:03:48
其他答案是更好的,你应该接受它;) – 2015-05-19 14:37:23