2013-05-11 50 views

回答

4

您可以使用这种类型的包装:

@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(); 
    } 
} 
+0

很好的建议! (如果发布更好的答案,我会接受它) – necromancer 2013-05-12 08:03:48

+1

其他答案是更好的,你应该接受它;) – 2015-05-19 14:37:23

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"); 
    } 
}