*Curl ORB for Java version 0.6 がリリースされました。リリースノートはこちら。
Curl ORBのコード生成ツールを利用して、非同期通信のメソッドを生成することができます。(通常は同期通信を行うメソッドがコード生成ツールから生成されます。)
非同期通信用メソッドの生成
コード生成ツールのクラス編集画面のMethods欄に”async?“というチェックボックスがあります。これをチェックしますと非同期通信用のメソッドとしてコードが生成されます。
以下が生成されたコードです。
{import * from COM.CURLAP.ORB.SERVLET} {define-class public Hello {inherits ORBClientForContext} {constructor public {default} {method public {say-hello v0:String, …:EventHandler}:AsyncWorker |
非同期での通信のため、処理を記述する際は結果を待つことなく次の処理に進んでしまいます。(例えば、以下の例ですとsay-helloメソッドを実行した後、終了結果を待たずに{output “xxx”}という行が実行されます。)そこで終了した際の処理を記述するため、生成されたコードの引数”…:EventHandler”に終了時のイベントハンドラーをセットします。この際、AsyncCallbackEvent (COM.CURLAP.ORB.SERVLETパッケージ内)というイベントを使用します。これによりsay-helloが終了しますと{on e:AsyncCallbackEvent do ….}の中の処理が実行されます。
{import * from COM.CURLAP.ORB.SERVLET} |
AsyncCallbackEventはexceptionプロパティとobjプロパティを持っております。
処理中にExceptionが発生した場合は、このexception:#Exceptionをチェックすることができます。
戻り値を受け取る際は、obj:anyプロパティを参照しますと結果が受け取れます。(通常は上記コードのようにキャストすることとなります。)