Update on the @Asynchronous support for AS 6.0.0.M4:
Last week we made a design change in the asynchronous component of EJB3
to move to client-side interceptors instead of server-side. The reason was:
1) For the server to push the result to the client, we'd need
bidirectional communication (ie. R2 bisocket impl) of some type, which
is bound to not play nicely with firewalls
2) If the client were to poll the server for results, we'd be making a
result store (which is a memory leak by design unless we implemented
some serialization or expiry policy, added complexity).
The unit tests for the client-side async model have been working fine,
as have the integration tests in the AS testsuite.
I have, however, made an Embedded test to reliably ensure that
@Asynchronous invocations do indeed occur in a separate Thread. What
I've discovered is that for @Remote business interfaces, all is firing
as expected. In @Local business interfaces however, this is not the case.
I've discovered the root of this is because EJB local proxies do not
have client-side interceptors at all. I'm halfway through patching the
impl to support this notion.
For M4 launch we can:
1) Continue along and provide @Asynchronous support for remote business
interfaces only
2) Get the proper fixes into the EJB3 proxy mechanism to support
client-side interception
Aside from this issue, EJB3 team is go for M4 (Jaikiran's components
were integrated today).
I'm on #jboss-dev tomorrow to discuss.
S,
ALR