アプリケーションの構築手順
CurlとJavaを連携するアプリケーションを構築するには以下の手順を実施します。
- サーバサイドのサービスクラス作成
- サーバサイドのサービスクラスからCurlコードを自動生成
- クライアントコードを記述
1.サーバサイドのサービスクラス作成
サーバサイドでcom.testパッケージと次のようなHelloクラスを作成します。
package com.test; public class Hello { // methods public String sayHello(String str) { return "Hello " + str; } }
作成しましたら、サーバを再起動します(下図ようにサーバを選択し、"右クリック-Restart"を実行します)。
2.サーバサイドのサービスクラス(POJO)からCurlコードを自動生成(コード・ジェネレータ)
次にダウンロードしたCurlORBモジュールの中のcurl-orb-clientディレクトリにある、code-generator.dcurl(コード生成ツール)を起動します。
上記画面にて"Service Class (Http Session)"を選択してNextボタン押下します。
上記画面にてcom.test.Hello(パッケージ名.クラス名)を入力してNextボタンを押下します。
上記画面にてClass Fileの"File"ボタンを押下し、出力先を決定した後、"Generator"ボタンを押下します。これによりHello.scurlとload.scurlが生成されます(以下が生成されたコード)。
||| ||| NOTE: *** This code was generated automatically *** ||| || PACKAGE COM.TEST || You might add this filename to load.scurl in this package. || e.g) {include "Hello.scurl"} {import * from COM.CURLAP.ORB.SERVLET} {define-class public Hello {inherits ORBClient} {constructor public {default} {construct-super.ORBClient "tests1.Hello"} } {method public {say-hello v0:String}:#String {return {self.invoke "sayHello", arguments = {FastArray v0}}} } }
{curl 6.0 package} {package COM.TEST} {include "Hello.scurl"}
コード生成ツールの詳細な利用方法についてはこちらを参照ください。
CurlのネーミングルールとJavaのネーミングルールの差を吸収するため、デフォルトではJavaのパッケージ名がCurl側では大文字に変換されます(例えば、com.test->COM.TEST)またメソッド名は大文字部分がハイフン+小文字となります(例えば、sayHello - say-hello)。
3.クライアントコードを記述
まず、Curl側で新規プロジェクトを作成("ファイル - 新規 - 新規プロジェクト - アプレットを含んだプロジェクト"を選択)します。次にCurl ORBクライアントを取り込むため、"プロジェクト - デリゲート先の追加"でダウンロードしたCurl ORBディレクトリのclient/COM/CURLAP/ORB/manifest.mcurlを選択します。
次に生成されたファイル(Hello.scurlとload.scurl)をプロジェクトに追加するため、"プロジェクト - パッケージの追加"を選択し、生成されたload.scurlを選択します。
上記準備が完了しましたら以下のようなテストアプレット(start.curl)を作成しますと、自動的にサーバサイドへリクエストを投げ、サーバサイドのHelloクラスのsay-helloメソッドを実行し、結果をクライアントで受け取ることができます。
{curl 6.0 applet} {curl-file-attributes character-encoding = "shift-jis"} {applet manifest = "manifest.mcurl"} {import * from COM.TEST} || import {value def h = {Hello} || new insntace {popup-message {h.say-hello "foo"}} || invoke method }
上記の結果は"Hello foo"というメッセージがポップアップで出力されます。このように簡単にCurlとサーバ通信を行うことができます。
利用できるデータ型
Curl ORBのデータ通信には以下のデータ型を利用できます(これは、サービスクラスのコンストラクタやメソッドの引数および戻り値、フィールドのデータクラスとして利用できる型です)。
Curl | Java |
---|---|
int | int |
int8 | byte |
int16 | short |
int32 | int |
int64 | long |
float | float |
double | double |
bool | boolean |
char | char |
String | java.lang.String |
DateTime | java.util.Date |
FastArray-of データ型 | 配列 |
Array (Array-of any) | List, ArrayList |
HashTable (HashTable-of any) | Map, HashMap |
ByteArray | com.curl.io.serialize.types.ByteArray |
COM.CURLAP.ORB.TYPE.SerializableRecordSet COM.CURLAP.ORB.TYPE.SerializableRecordField |
com.curlap.orb.type.SerializableRecordSet com.curlap.orb.type.SerializableRecordField |
ユーザ定義型(フィールドは上記のものに限る) | ユーザ定義型(フィールドは上記のものに限る) |
また、Curlのユーザ定義型(PersonとかFooとか)をJavaのクラスから生成する場合は、"Data Class"としてコード生成ツールから生成します。
おわりに
第1回目の今回は、Curl ORBの簡単なORBの利用方法を説明しました。次回は、Spring Frameworkとの連携方法について説明をしていく予定です。