SHOEISHA iD

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

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

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

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

第1回

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

サンプルコード説明~CurlからJavaのメソッドを呼ぶ~(2)

 次にCurl側のコードを見ていきたいと思います。

 curl/SAMPLEディレクトリ配下にFoo.scurl、Hoge.scurl、Person.scurl、SampleException.scurl、load.scurlがありますが、これらはCurl ORBのコード生成ツールから自動的に生成されたコードです。

 例えばサービスクラスHogeを一部見てみますと以下のようなコードが生成されています。

|||
||| 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:48.499000
|||

{import * from COM.CURLAP.ORB} 

{define-class public Hoge {inherits ApplicationContextClient}
 

  {constructor public {default server-url:#Url = null} 
    {construct-super.ApplicationContextClient "hoge", server-url = server-url} 
  } 

  {method public {async-hello v0:String, ...:EventHandler}:AsyncWorker 
    {return {self.async-invoke "hello", arguments = {FastArray v0}, {splice ...}} asa AsyncWorker} 
  } 

  {method public {hello v0:String}:#String 
    {return {self.invoke "hello", arguments = {FastArray v0}} asa #String} 
  } 

  {method public {async-get-person ...:EventHandler}:AsyncWorker 
    {return {self.async-invoke "getPerson", {splice ...}} asa AsyncWorker} 
  } 

  {method public {get-person}:#Person 
    {return {self.invoke "getPerson"} asa #Person} 
  }
...

 JavaのコードからCurlのコードを生成する場合、以下のルールに従い、生成されます。

  • パッケージ名は大文字となります(Curlの一般的なネーミングルール)。
  • メソッド名は、すべて小文字で単語の区切りはハイフンとなります(java:getPerson -> Curl:get-person)。
  • クラス名は同様です。
  • 同期通信用メソッドは、そのままで、非同期通信用メソッドは"async-"という名前が付与されます。

 次にデータクラスであるPersonを見ます。

{define-class public serializable Person 
 
  field private _name:#String 
  field private _age:int 
  field private _sex:bool 

  {getter public {age}:int 
    {return self._age asa int} 
  } 

  {getter public {sex}:bool 
    {return self._sex asa bool} 
  } 

  {getter public {name}:#String 
    {return self._name asa #String} 
  } 

  {setter public {age v:int}:void 
    set self._age = v 
  } 

  {setter public {sex v:bool}:void 
    set self._sex = v 
  } 

  {setter public {name v:String}:void 
    set self._name = v 
  } 
 
}

 こちらは、以下のルールに従い、生成されます。

  • パッケージ名は大文字となります(Curlの一般的なネーミングルール)。
  • メソッド名は、すべて小文字で単語の区切りはハイフン(-)となります(java:getPerson -> Curl:get-person)。
  • クラス名は同様です。
  • ゲッター・セッターが存在する場合、フィールド名は、アンダーバー(_)付きになります。
  • ゲッター・セッターはフィールド名となります。

 では上記の生成されたクラスを利用する方法を説明していきます。

 と言っても、Curlのメソッド・コールと同様ですので、Curl ORBやJavaを意識することなく、利用することが可能です。以下がサンプルに含まれるソースコード(sample1.curl)の一部です。

|| インスタンス生成
def foo = {Foo}
|| メソッド呼び出し
def person = {foo.get-person}
def hello = {foo.hello {non-null person.name}}
def result = {foo.add {t1.value.to-int}, {t2.value.to-int}}

 {hoge.get-person}で、Java側のSpringで管理されているHogeインスタンス(idが"hoge")のgetPersonメソッドを呼び出し、結果(Personオブジェクト)を取得し、personという変数にセットしています。また、{hoge.add 数字, 数字}を実行すると、Java側のaddメソッドが呼び出され、足し算の結果が戻り値として返ります。上記の例ですとresult変数に足し算の結果がセットされます。

 ちなみに、Curl ORBが動いているサーバ(ここではApache Tomcatサーバ)がlocalhost:8080以外で動いている場合は、サーバURLを変更する必要があります。これにはset-default-server-urlプロシージャを利用し、変更します。この行は他の処理よりも前に一行のみ記述してください(例えば、アプレットが呼び出された直後に挿入)。

例) ホスト名:hogehoge、ポート:8888 (注意:COM.CURLAP.ORBパッケージをインポートする必要があります)
{set-default-server-url {url "http://hogehoge:8888/test-server"}}

 詳細はこちら(サーバURLを指定)を参照ください。

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

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

  • このエントリーをはてなブックマークに追加
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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング