3.1.1概要
- このサンプルの目的
このアプリケーション作成例を通して、以下について知ることができます。
- サービスの作成方法
- 設定ファイルの作成方法
- ジョブの起動時に指定する起動パラメータを、サービスのプログラム内で参照する方法
- ジョブの起動方法
- サンプルアプリケーションの内容
標準出力に「Hello World!!」と出力するバッチアプリケーションです。
サンプルアプリケーションの概要を下図に示します。
CB3は起動用バッチファイルからジョブが起動されると、サービスを実行するための設定ファイルを読込みます。 CB3は設定ファイルの内容にしたがってサービスプロバイダがサービスの実行を行います。
ジョブの起動時に起動パラメータが設定されている場合、サービスに起動パラメータを渡します。 このサンプルのサービスでは、起動パラメータに設定された文字列を組み合わせて標準出力に「Hello World!!」と出力します。
このサンプルではサービスを定義したファイルのserviceContext.xmlと サービスを実行したときのトレースログを出力するための設定ファイルであるloggingContext.xmlを使用します。
applicationContext.xmlでは上記の2つのファイルをインポートします。 サービスプロバイダはapplicationContext.xmlを読込み、定義されたサービスを実行します。
このサンプルでは以下のファイルについて説明します。- Basis.java
サービスのプログラムです。上図内の赤枠の部分に相当します。 - applicationContext.xml
CB3がserviceContext.xmlなどのspringフレームワーク関連の設定ファイルを読み込むための起点となる コンテキストファイルです。 - serviceContext.xml
実行対象のサービスを定義します。 - 起動用バッチファイル - basis.bat
サービスを起動するためのバッチファイルです。
以下のファイルについては、CB3内部で使用される設定ファイルのため、このチュートリアルでは説明を割愛します。- loggingContext.xml
AOPを利用してサービスを実行したときのトレースログを出力するように定義された設定ファイルです。
- Basis.java
3.1.2サービスの作成
- Basis.java
01: public class Basis extends CB3Service { 02: /** 03: *「Hello World」と出力する。 04: */ 05: @Override 06: protected int doService(ServiceParameters arg0, RuntimeParameters arg1) 07: throws ServiceException { 08: String greeting1 = arg1.get("greeting1"); 09: String greeting2 = arg1.get("greeting2"); 10: 11: //Hello World!! 12: System.out.println(greeting1 + " " + greeting2); 13: 14: return ExitCodeConstant.SUCCESS; 15: } 16: }
1行目〜6行目:
サービスは「jp.co.cybec.cb3.container.service.CB3Service」クラスを継承して、doService()メソッドを実装します。CB3ServiceはCB3が提供するクラスです。
doService()メソッドはCB3Serviceクラスの抽象メソッドとして定義されており、 ビジネスロジックはこのメソッドから開始されます。
引数のRuntimeParametersはジョブ起動時に、[key=value]の形式で指定した起動パラメータが格納されています。
引数のServiceParametersはAdvancedパッケージを利用する際に使用するため、このチュートリアルでは使いません。
8行目〜9行目:
「RuntimeParameters」からジョブ起動時の起動パラメータを取得します。
起動パラメータには「greeting1=Hello」と「greeting2=World!!」を設定しています。
12行目:
起動パラメータの文字列を連結して、標準出力に「Hello World!!」と出力します。
14行目:
任意のint型のリターン値を返します。このサンプルでは定数クラスを使用し、値「0」を返しています。
この値はJavaプログラム終了時の終了のステータスとなります。
3.1.3設定ファイルの作成
- applicationContext.xml
この設定ファイルはserviceContext.xmlをCB3が読み込むためのコンテキストファイルです。
CB3はこのファイルを起点として、各設定ファイル(springフレームワーク関連の設定ファイル)の読込みを行います。
01:<?xml version="1.0" encoding="UTF-8"?> 02: <-- 途中省略 --> 03: <import resource="serviceContext.xml"/> 04: <import resource="classpath:loggingContext.xml"/> 05:</beans>
serviceContext.xmlとloggingContext.xmlをインポートします。
- serviceContext.xml
このサンプルの実行に必要となるサービスのコンテキストファイルです。
01:<?xml version="1.0" encoding="UTF-8"?> 02: <-- 途中省略 --> 03: <!-- ServiceProvider --> 04: <bean id="basis" class="jp.co.cybec.blumo.container.provider.ServiceProviderImpl"> 05: <property name="service"><ref bean="sample1"/></property> 06: </bean> 07: <!-- Service --> 08: <bean id="sample1" class="jp.co.cybec.blumo.sample.basis.Basis"/> 09:</beans>
4行目:
サービスプロバイダの定義を行います。
idに任意のサービスプロバイダ名を設定します。ジョブを起動するときには、この名前を使用して起動します。
classにサービスプロバイダのクラス名を設定します。CB3では必ずこのクラス名を設定します。
5行目:
サービスプロバイダが実行するサービスを設定します。
nameの「service」はサービスプロバイダのプロパティです。CB3では必ずこの名前を設定します。
beanの「sample1」はサービスのbean名を設定しています。この値には、この後のサービスの定義で設定した名前を設定します。
8行目:
サービスの定義を行います。
idに任意のサービス名を設定します。この値を5行目のbeanに設定しています。
classに3.1.2で作成したBasis.javaのクラス名を設定します。
3.1.4サービスの実行
- basis.bat
ジョブを起動するためのバッチファイルです。
01:@echo off 02: 03:setlocal 04: 05:call ./set_classpath_com.bat 06: 07:set CLASSPATH=%CB3_HOME%/resources/config/basis;%CLASSPATH% 08: 09:java jp.co.cybec.cb3.container.provider.ServiceProviderImpl -ServiceName basis -AppParams greeting1=Hello greeting2=World!! 10: 11:pause
9行目:
「java jp.co.cybec.cb3.container.provider.ServiceProviderImpl」はCB3でジョブを起動するときのmainクラスとなります。
「-ServiceName basis」は実行するサービスプロバイダ名を設定しています。 「basis」はserviceContext.xmlで定義したサービスプロバイダ名になります。
「-AppParams greeting1=Hello greeting2=World!!」は起動パラメータを設定しています。 Basis.javaの「RuntimeParameters」に値が設定されることになります。
※9行目は表示上改行していますが、実際は1行に記述します。
実行結果として下記のように表示されます。
Hello World!! 続行するには何かキーを押してください . . .