CB3 - チュートリアル 第3章 - 3.1Hello World

 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を利用してサービスを実行したときのトレースログを出力するように定義された設定ファイルです。

 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!!
    続行するには何かキーを押してください . . .