2012-08-30 56 views
4

工作,我有以下情况:EJB @Asynchronous不在同一类

enter image description here

祝“的methodB”已执行10次平行。但只有在从另一个bean调用“methodB”时才会发生。

为什么从同一个类中的另一个方法调用该方法时,注释“@Asynchronous”不起作用?

谢谢。

+2

为什么屏幕截图代码而不是代码? – Betlista

回答

9

它只适用于通过客户端代理调用的方法,例如@Local@Remote接口。这在EJB 3.1中描述的规格(第4.5节 - 4.5.1):

会话bean可以露出与异步客户调用语义

方法...

的@Asynchronous注释用于指定哪些业务方法是异步的。

...

异步方法调用的语义只适用于无界面,本地业务,远程业务客户意见

+0

了解了这一点,我解决了这个问题,如下所示:@EJB FooLocal bean; bean.methodB();非常感谢你。 –

+6

你的回答不完全正确。您引用的部分**不会**通过远程或本地界面强制呼叫。相反,它表示调用需要通过'view'来完成,这是代理的EJB术语。如果您从同一个EJB中调用该方法,它将通过隐含的'this'参数进行调用,该参数不能被截取,因此它将无法工作。 –

+1

@RafaelOrágio你不需要界面。 '@EJB Foo豆; bean.methodB();'也可以。见http://www.adam-bien.com/roller/abien/entry/how_to_self_invoke_ejb –

相关问题