Curl ORBでは、DIコンテナ上で管理されているオブジェクトのメソッドをコールすることができます。今回は、各種設定及びCurlからの呼び出し方法を紹介していきます。
Spring framework利用準備
まずは、Curl ORBとSpring frameworkを連携するため、ここからZipファイルをダウンロード及び解凍しますと、spring.jarというファイルが含まれますので、これをWEB-INF/lib配下へ保存します。
【前提】
Spring2.5
次にapplicationContext.xmlに以下のような<context:component-scan base-package=”samples”/>を設定し、ファイルを作成します。(この例ではsamplesパッケージの中にサービスクラスが存在する場合です。もしサービスクラスのパッケージ名として別の名前を利用する場合は、ここを変更してください。)このファイルをWEB-INF/applicationContext.xmlに保存します。
次にWEB-INF/web.xmlにSpring用のリスナーを追加します。
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> |
また、CurlORB内でSpringを利用するため、同様にWEB-INF/web.xmlに以下のように指定します。
<context-param> <param-name>com.curlap.orb.applicationContextClass</param-name> <param-value>com.curlap.orb.context.Spring2_5ApplicationContext</param-value> </context-param> |
これで、Curl ORBとspringを連携する事前設定は完了しましたので、実際にSpringで管理されているクラスの利用方法を以下に記載します。
サービスクラスの作成
サーバサイドのサービスクラスとして、HelloインターフェースとHelloImpl実装クラスを作成します。HelloImplクラスを作成する場合、サービスクラスとして定義するため、Serviceアノテーションを指定します。(これによりapplicationContext.xmlにbeanタグを記載する必要がなくなります。) ※RemoteServiceアノテーションについての詳細は、こちらを参照ください。
// インターフェース(Java) public interface Hello { |
// 実装クラス(Java) import com.curlap.orb.security.RemoteService; @RemoteService |
ここでAPサーバ(Tomcat等)を再起動します。
再起動後、コード生成ツールを利用して、以下のようなCurlのコードを生成します。ServiceClass(DI)を選択し、interface nameとしてHelloを選択して生成します。(コード生成ツールの詳細な利用方法はこちらです。)
{import * from COM.CURLAP.ORB} {define-class public Hello {inherits ApplicationContextClient} {constructor public {default} {method public {say-hello v0:String}:#String |
サービスクラスへのアクセス
生成されたコード(Helloサービスクラス)に対して、以下のようにアクセスいたします。(通常のCurlのクラスに対するアクセスと同様です。)
{import * from SAMPLES} {value |
これにより、Curl側のsay-helloメソッドをコールしますと、サーバサイドのDIコンテナ(spring)で管理されているHelloオブジェクトを呼び出し、sayHelloメソッドを実行し、戻り値をCurlへ返します。(このサンプルでは、”Hello Hitoshi Okada (Spring Framework)”と表示されます。)
このように、簡単にサーバサイドとの連携を行うことができます。
また、下記サイトにSpring Frameworkとの連携を詳細に記述した記事を掲載しております。
関連ページ