SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Spring FrameworkとCurl ORBを用いたアプリケーション開発(AD)

Spring FrameworkとCurl ORBを用いたアプリケーション開発
サンプルアプリケーションを動かしてみよう

第1回

  • このエントリーをはてなブックマークに追加

サンプルコード説明(その他)

 サンプルコードを元に、単純にCurlからJavaのメソッドを呼び出す以外の機能も見ていこうと思います。

1)非同期通信

 非同期通信を行うためには、まず"async-"で始まるメソッドを実行します。例えば以下のサンプル(sample2.curl)ですとechoというJavaもメソッドを非同期で呼ぶため、async-echoというメソッドを呼び出しています。

{hoge.async-echo
    100,
    || 引数にAsyncCallbackEventハンドラーを記述します。
    {on e:AsyncCallbackEvent do
        {if-non-null ex = e.exception then
            || Exceptionが発生した際の処理を記述
            {popup-message ex.message}
        else
            || 成功した際の処理を記述
            || 結果はAsyncCallbackEventのobjプロパティで取得できます。
            def result = e.obj asa int
            {disp.add result}
        }
    }
}

 非同期にメソッドを実行するためには、終了したときの処理を、AsyncCallbackEventハンドラー内に記述します。上記サンプルのように、例外が発生しているかチェックし、例外(AsyncCallbackEventのゲッターexceptionで取得)が発生していたら、メッセージ表示し、成功したら画面に結果(AsyncCallbackEventのゲッターobjで取得)を表示({disp.add result})しています。このハンドラーをasync-echoメソッドの最後の引数としてセットします。

2)例外ハンドリング

 Curl ORBでは、Java側で例外が発生しますと、デフォルトではすべてORBServerExceptionとしてcatchします。ただし、Javaで発生したExceptionの種類によって、クライアント側で他のExceptionを発生させたい場合や、JavaのExceptionをそのままCurlでcatchしたい場合が出てくると思います。そこで、bind-exceptionプロシージャを利用しますとこれが実現できます。以下はサンプル(SampleException.scurl)です。

|||
||| Curl ORB for java (version 0.6)
|||  This code was generated by the Curl code generator automatically.

|||  package name   : SAMPLE
|||  generated date : 2009-04-01 14:03:20.489000
|||

{import * from COM.CURLAP.ORB} 

{define-class public SampleException {inherits Exception}
 

  {constructor public {default message:String} 
    {construct-super message} 
  } 
 
}

|| JavaとCurlのExceptionをバインドする。
||   サーバサイドでsample.SampleExceptionが発生した場合、
||   クライアント側でもSampleExceptionが発生するようになる。
{bind-exception
    "sample.SampleException", || java Exception
    SampleException           || Curl Exception
}

 SampleExceptionはコード生成ツールで生成されたコードでbind-exceptionは手動で追加したコードです。このコードを追加することで、Java側でsample.SampleExceptionが発生した場合、Curl側ではORBServerExceptionではなく、SAMPLE.SampleExceptionが発生します。これを以下のようにtry - catchします。

{try
    || メソッド呼び出し
    {hoge.throw-exception}
catch e:SampleException do
    {disp.add "[exception] " & e.message}
}

 Hogeクラスのthrow-exceptionメソッドは、Java側でSampleExceptionを発生されるサンプルです。

 以上がサンプルコードの説明となり、Curl ORBの中心的な機能を説明しました。各機能詳細については、CurlORB6.0ページを参考にすることができます。次回以降は、コード生成方法、テストスタブ利用方法、Spring FrameworkとCurl ORBを組み合わせた簡単なアプリケーション(認証、サービス呼び出し)などを説明していきたいと思います。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Spring FrameworkとCurl ORBを用いたアプリケーション開発連載記事一覧
この記事の著者

岡田 一志(オカダ ヒトシ)

大企業向けSI開発、IT基盤設計/構築やiDC設立プロジェクトの企画/開発/運用など幅広く活躍し、2006年にCurlに参画する。米Curl社(マサチューセッツ)にてCurl Core RTEの設計・開発に従事した後、現在は株式会社カールにて、Innovation Centerのオペレーションおよび...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3842 2009/04/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング