工作,我有以下情况:EJB @Asynchronous不在同一类
祝“的methodB”已执行10次平行。但只有在从另一个bean调用“methodB”时才会发生。
为什么从同一个类中的另一个方法调用该方法时,注释“@Asynchronous”不起作用?
谢谢。
工作,我有以下情况:EJB @Asynchronous不在同一类
祝“的methodB”已执行10次平行。但只有在从另一个bean调用“methodB”时才会发生。
为什么从同一个类中的另一个方法调用该方法时,注释“@Asynchronous”不起作用?
谢谢。
它只适用于通过客户端代理调用的方法,例如@Local
或@Remote
接口。这在EJB 3.1中描述的规格(第4.5节 - 4.5.1):
会话bean可以露出与异步客户调用语义
方法...
的@Asynchronous注释用于指定哪些业务方法是异步的。
...
异步方法调用的语义只适用于无界面,本地业务,远程业务客户意见。
了解了这一点,我解决了这个问题,如下所示:@EJB FooLocal bean; bean.methodB();非常感谢你。 –
你的回答不完全正确。您引用的部分**不会**通过远程或本地界面强制呼叫。相反,它表示调用需要通过'view'来完成,这是代理的EJB术语。如果您从同一个EJB中调用该方法,它将通过隐含的'this'参数进行调用,该参数不能被截取,因此它将无法工作。 –
@RafaelOrágio你不需要界面。 '@EJB Foo豆; bean.methodB();'也可以。见http://www.adam-bien.com/roller/abien/entry/how_to_self_invoke_ejb –
为什么屏幕截图代码而不是代码? – Betlista