非同期型の実装方針
S2Axis2としては、コールバック形式の非同期通信に対応しようと考えています。が、そのコールバックオブジェクトをどのように扱うかで悩んでます。
- Axis2の場合
OMElement payload; Callback callback; ・・・・ ServiceClient serviceClient = new ServiceClient(); serviceClient.sendReceiveNonblocking(payload, callback);
Echo port; ・・・・ EchoCallbackHandler callbackHandler = new EchoCallbackHandler(); Future response = port.echo("hello!", callbackHandler);
こんな感じで、Axis2/JAX-WS 2.0 とも、引数にコールバックオブジェクトを渡しているのだけれど、S2Axis2 でこれをやろうとすると、サービスのインタフェースがコールバックオブジェクトに依存することになってしまう。同期/非同期は、クライアント側で決定することなので、サービス側は依存させたくないなぁ。
サービスを呼び出すクラスに、コールバックオブジェクトをインジェクションするようにして、AxisConnectorで、そのコールバックオブジェクトを呼び出すようにしようか?