EJB @Asynchronous在同一个类中不起作用

Raf*_*gio 6 java asynchronous ejb java-ee

我有以下情况:

在此输入图像描述

我希望"methodB"执行10次并行.但它只发生在从另一个bean调用"methodB"时.

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

谢谢.

dce*_*chi 10

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

会话bean可以使用异步客户端调用语义公开方法

...

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

...

异步方法调用语义仅适用于无接口,本地业务和远程业务客户端视图.

  • 你的答案并不完全正确.您引用的部分**不会强制要求通过远程或本地接口进行呼叫.相反,它说调用需要通过`view`,这是代理的EJB术语.如果从同一个EJB中调用该方法,它将通过隐式的`this`参数进行调用,该参数不能被拦截,因此不起作用. (7认同)
  • @RafaelOrágio你不需要界面.`@EJB Foo bean; bean.methodB();`也可以.见http://www.adam-bien.com/roller/abien/entry/how_to_self_invoke_ejb (2认同)