Mike Edwards wrote:
<snip>
I think that there are changes required in the following areas:
<snip>
b) treated in a special way by the invokers when we're trying to invoke
one of the methods on the interface
I think that a) needs to be done in the interface-java module
I suspect that b) must be handled in the code that sets up the invokers
and in the invokers themselves, such as implementation-java-runtime
<snip>
2)Part of the invocation process involves handling the ResponseDispatch
object that is passed to the async service. This object must correctly
reflect the response message type. It must also contain or reference
all the information that is needed to transmit the response message back
via the binding.
This will be new stuff that belongs somewhere general such as core -
core.invocation.impl may be the right place.
Folks,
Today I concentrated on the service-side invocation sequence for async server
operations.
This is based mostly around a new invoker:
JavaAsyncImplementationInvoker
...which is done as a subclass of JavaImplementationInvoker, all in
java-implementation-runtime
The new invoker concentrates on creating the correct set of input parameters for the async method
and in particular adds in a ResponseDispatch object as the final parameter.
The invoker now makes the invocation and then calls the ResponseDispatch.get() method to retrieve
the response message, which can involve waiting for the service processing to complete.
With this implemented, I am now able to run the JCA_7003_TestCase successfully, which has a client
invoke an async service operation.
I'll commit this code soon, once I've confirmed that it does not harm existing
modules and tests.
Now, this is only a first step, since clearly, we are still using synchronous versions of the
bindings. The next stage is to look at the bindings and to build response handling chains that can
be separated from the request chains and which can be invoked directly from the ResponseDispatch
object through a callback...
Yours, Mike.