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