ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Enterprise Scheduler開発者ガイド
11g リリース1 (11.1.1.7)
B66615-04
  目次へ移動
目次

前
 
次
 

3 ホスティング・アプリケーションを生成するためのAntの使用

この章では、Oracle Enterprise Schedulerに含まれているbuild.xmlファイルのAntターゲットを使用して、Javaジョブで使用するホスティング・アプリケーションを作成する方法について説明します。

これらのターゲットを使用して、Oracle JDeveloperワークスペースでアプリケーション・アーティファクトを作成したり、Javaジョブ実装用のテンプレートを作成したり、アプリケーションとJavaジョブの両方を(共有ライブラリとして)パッケージ化およびデプロイできます。

ここで説明するAntターゲットでは、ユーザーがジョブを操作できるクライアント・ユーザー・インタフェースを作成しません。クライアント・タスクを実行する場合は、Fusion Middleware Controlを使用するか、またはOracle JDeveloperでクライアント・ユーザー・インタフェースを開発できます。

アプリケーションおよび共有ライブラリを作成およびデプロイすると、JDeveloperまたはEnterprise Managerを使用して、デプロイされた出力にメタデータを関連付けることができます。

この章では、次の項目について説明します。

3.1 Antを使用したホスティング・アプリケーションの生成の概要

Oracle Enterprise Schedulerには、ホスティング・アプリケーションの実行に必要な基本アーティファクトの生成に使用できるAntビルド・ファイル、およびデプロイしてアプリケーションで実行できるJavaジョブが含まれています。

組込みAntビルド・ファイルを使用して、ホスティング・アプリケーションを生成します。実行時に、Javaジョブ用のアーティファクトの生成や、生成したコンポーネントのビルドおよびデプロイに使用できるターゲットが含まれた、別のAntビルド・ファイルも生成します。

アプリケーションおよび共有ライブラリを作成およびデプロイすると、JDeveloperまたはEnterprise Managerを使用して、デプロイされた出力にメタデータを関連付けることができます。

また、生成されたbuild.propertiesファイルを使用すると、ターゲットが実行時に使用する変数の値を設定してAntが行う作業をカスタマイズすることもできます。

この章で説明している手順には、Antで実行できる次のことが含まれています。

  1. ジョブを実行できるホスティング・アプリケーションを作成します。組込みbuild.xmlファイル内のcreate-user-homeを使用します。

  2. IDEでのアプリケーション・アーティファクトの編集に使用できるJDeveloperプロジェクト・ワークスペースを作成します。これは、ホスティング・アプリケーションの作成時に行われます。

  3. アプリケーションの一部をビルドおよびデプロイするためのターゲットが含まれたAntビルド・ファイルを作成します。

  4. ビジネス・ロジックを追加できるJavaジョブ・テンプレートを作成します。生成されたbuild.xmlファイル内のcreate-new-job-defターゲットを使用します。

  5. 実装されたJavaジョブを共有ライブラリとしてパッケージ化します。生成されたbuild.xmlファイル内のpackage_essjob_libraryターゲットを使用します。

  6. 共有ライブラリをホスティング・アプリケーションにデプロイします。生成されたbuild.xmlファイル内のdeploy_essjob_libraryターゲットを使用します。

  7. ホスティング・アプリケーションをパッケージ化します。生成されたbuild.xmlファイル内のpackage_hosting_appターゲットを使用します。

  8. ホスティング・アプリケーションをデプロイします。生成されたbuild.xmlファイル内のdeploy_hosting_appターゲットを使用します。

3.1.1 Antビルド・ファイルを使用するための前提条件

提供されたビルド・ファイルまたは生成されたビルド・ファイルを使用する前に、次の前提条件を満たしていることを確認してください。

  • Antがインストール済であり、ANT_HOME変数が適切に設定されており、PATHがantのbinディレクトリを指すように設定してある必要があります。

  • Oracle JDeveloperをインストールおよび設定する必要があります。PATH変数には、jdevコマンドをコマンド・プロンプトから実行できるようにOracle JDeveloper binディレクトリが含まれている必要があります。

3.2 ホスティング・アプリケーションの作成およびデプロイ用のAntターゲット

Oracle Enterprise Schedulerには、ジョブを実行できるホスティング・アプリケーションをデプロイするのに役立つ、Antビルド・ファイルが含まれています。ただし、実際にはこのジョブを完了するには、2つのビルド・ファイルを使用します。その1つはOracle Enterprise Schedulerに含まれており、もう1つは組込みビルド・ファイル内のターゲットにより生成されます。次の表では、これら2つのファイルにデフォルトで含まれているターゲットをリストして説明します。

デフォルトでは、組込みbuild.xmlファイルはOracle Enterprise Schedulerのextensibility_scriptsディレクトリにあります。たとえば、Oracle JDeveloperインストールでは、MW_HOME/jdeveloper/extensibility_scripts/build.xmlにあり、Oracle Enterprise Schedulerなどの製品のインストールでは、ORACLE_HOME/extensibility_scriptsディレクトリにあります。

表3-1 組込みビルド・ファイル内のAntターゲット

Antターゲット 説明

create-user-home

ユーザー・ホームを作成するためのデフォルト・ターゲットです。

help-create-user-home

ユーザー・ホームの作成に関するヘルプです。


組込みbuild.xmlファイルのcreate-user-homeターゲットを実行した場合、ターゲットのアクションの1つとして、別のbuild.xmlファイルが作成されます。そのファイルには、アプリケーション用のアーティファクトを作成、ビルドおよびデプロイするために使用できる次のターゲットが含まれています。

表3-2 生成されたビルド・ファイル内のAntターゲット

Antターゲット 説明

build_ears

ジョブ共有ライブラリおよびホスティング・アプリケーションをパッケージ化します。

create-new-job-def

Javaジョブを共有ライブラリとして作成します。

deploy

ジョブ・ライブラリおよびホスティング・アプリケーションをパッケージ化およびデプロイします。

deploy_essjob_library

Javaジョブ共有ライブラリをデプロイします。

deploy_hosting_app

ホスティング・アプリケーションをデプロイします。

deploy_job_logic

ジョブ共有ライブラリをパッケージ化およびデプロイします。

package_essjob_library

Javaジョブを共有ライブラリとしてパッケージ化します。

package_hosting_app

ホスティング・アプリケーションをパッケージ化します。


3.3 Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成

Oracle Enterprise Schedulerに含まれているbuild.xmlファイル内のcreate-user-home Antターゲットを実行して、ホスティング・アプリケーションを作成できます。

スクリプトが正常に完了すると、パッケージ化およびデプロイ可能なホスティング・アプリケーション用アーティファクトが作成されます。これらのアーティファクトは、指定したターゲット・ディレクトリのJDeveloper互換ワークスペース内に生成されます。作成されたワークスペースにはbuild.xmlが含まれており、これを使用して、ホスティング・アプリケーションおよび生成されたJavaジョブを共有ライブラリとしてビルド、パッケージ化およびデプロイできます。

ターゲットが実行されるとき、ターゲットの作業のガイドとなる詳細を入力することを要求されます。これらの詳細には、ターゲットの作業について意図されている環境(特定のアプリケーションで実行するなど)、新しいアプリケーションの名前、ターゲット・ディレクトリなどが含まれます。

開始する前に、Antターゲットによって要求される次の情報を用意しておきます。

表3-3 Antターゲットで必要な情報

入力プロンプト 説明

使用するテンプレート

可能な値はFusionおよびStandaloneです。Oracle Fusion Applicationsで使用するために開発している場合は、ここでFusionと入力します。

Oracle Fusion Applicationsで使用するための開発でない場合は、Standaloneと入力します。

Oracle Fusion Applicationsコンテキストとスタンドアロン・コンテキストとの間には重要な相違があります。たとえば、Oracle Fusion Applicationsコンテキストでは、ターゲットはわずかに異なるホスティング・アプリケーションおよびクライアント・アプリケーションを生成します。

ミドルウェア・ホーム・ディレクトリ・パス

Oracle Enterprise Schedulerが(多くの場合、埋め込まれている別の製品により)インストールされたときに作成されたミドルウェア・ホーム・ディレクトリです。サポート・ライブラリの場所は、このディレクトリに対して相対的に検索されます。

ホスティング・アプリケーション名

新しいホスティング・アプリケーションに付ける名前です。

ホスティング・アプリケーションJPSストライプID

ストライプは、アプリケーションで使用するポリシー・ストア内の値のサブセットを定義するセキュリティ構成です。実行時に、アプリケーションに適用可能なポリシーのセットを決定します。多くの場合、アプリケーション名が使用されます。

ジョブ・ビジネス・ロジックの共有ライブラリ名

生成されたJavaジョブ・ソース・コードを配置する共有ライブラリの名前です。

アプリケーションが作成される空のディレクトリ

生成されたファイルの移動先となるディレクトリです。これは、後で使用するアーティファクト(build.xmlファイルなど)が作成されるJDeveloperワークスペースの場所となります。


Antを使用したホスティング・アプリケーションの作成手順

  1. 開始するには、コンソール・ウィンドウを開き、組込みbuild.xmlがある場所にディレクトリを変更します。デフォルトでは、これはOracle Enterprise Schedulerのextensibility_scriptsディレクトリです。たとえば、MW_HOME/jdeveloper/extensibility_scripts/build.xmlです。

    次のようなコマンドでターゲットを実行します。このターゲット名は、ビルド・ファイルのデフォルト・ターゲットであるため、省略できます。

    ant
    

    ターゲット名を使用する場合は、次のようなコマンドになります。

    ant create-user-home
    

    Antコンソール出力の次の例では、プロンプトが[input]という語で始まることに注意してください。各プロンプトで、使用する値を入力し、[Enter]を押します。

    必要な情報を入力すると、ターゲットは要求したディレクトリおよびファイルを作成し、必要なファイルを新しいワークスペースにコピーし、新しいホスティング・アプリケーション用の一部の構成を設定します。

    例3-1 create-user-homeターゲットのコンソール出力

    [extensibility_scripts]$ ant
     
    Buildfile: build.xml
     
    -init:
     
    create-user-home:
    [input] Enter which template should be used (source_template) (default=Fusion)
        [input]      ([Fusion], Standalone)
    Standalone
        [input] Enter Middleware Home Directory path (fmw_home_dir) (default=) []
    /scratch/fmwtools/mw_home
        [input] Enter hosting application name (hosting_application_name) (default=MyAppEss) [MyAppEss]
    NewDemoApp
        [input] Enter hosting application JPS stripe id (hosting_application_stripe_id) (default=MyAppEss) [MyAppEss]
    NewDemoApp
        [input] Enter the shared library name for the job business logic (jobdef_library_name) (default=MyJobsLibrary) [MyJobsLibrary]
    NewDemoAppJobsLib
        [input] Enter an empty directory where the applications will be created (user_home)
    /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp
         [echo]
         [echo]
        [mkdir] Created dir: /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp
    [propertyfile] Creating new property file: /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp/template.properties
         [copy] Copying 12 files to /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp
         [copy] Copied 25 empty directories to 8 empty directories under /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp
         [copy] Copying 1 file to /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp/ant/config
         [copy] Copying 1 file to /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp
         [copy] Copying 15 files to /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp
         [move] Moving 1 file to /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp/Template_Hosting
         [echo]
         [echo] ========================================
         [echo]
         [echo] A new workspace has been created at: /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp
         [echo] This workspace can be opened and modified using JDeveloper
         [echo] To deploy the applications, run the following command:
         [echo]     ant -f /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp/ant/build-ess.xml deploy
         [echo] To create new jobs from predefined templates, run the following command:
         [echo]     ant -f /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp/build.xml create-new-job-def
     
    BUILD SUCCESSFUL
    Total time: 1 minute 27 seconds
    

3.4 Antを使用した共有ライブラリとしてのJavaジョブの作成

新しいホスティング・アプリケーションを作成したときに生成されたビルド・ファイル内のcreate-new-job-def Antターゲットを実行して、Javaジョブ・クラス・テンプレートを作成できます。(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。)

ここで作成するJavaクラスは、Javaジョブを実装するロジックを追加できるテンプレートとなります。JavaジョブではJavaコードを実行します。実装されるJavaジョブに対しては、そのジョブの仕様の一部から構成されるメタデータを追加できます。


注意:

現在、このAntターゲットでは同期Javaジョブ・テンプレートのみを作成できます。


ターゲットが実行されるとき、ターゲットの作業のガイドとなる詳細を入力することを要求されます。開始する前に、Antターゲットによって要求される次の情報を用意しておきます。

表3-4 Antターゲットで必要な情報

入力プロンプト 説明

作成するジョブ定義テンプレートの数

作成するJavaジョブ実装のタイプに対応する数です。現在、この方法で作成できるのは同期Javaジョブのみであるため、サポートされている値は1のみとなります。

ジョブ定義のJavaパッケージ名

作成するJavaジョブのパッケージ名です。

ジョブ定義のJavaクラス名

作成するJavaジョブのクラス名です。


Antを使用してJavaジョブ・クラス・テンプレートを作成する手順は、次のとおりです。

  1. 開始するには、コンソール・ウィンドウで、ディレクトリを、アプリケーションを作成する場所として指定したディレクトリに変更します。build.xmlファイルがそこに存在する必要があります。次のコマンドを使用して、ターゲットを実行します。

    ant create-new-job-def
    

    Antコンソール出力の次の例で、プロンプトがどこで発生するかを確認できます。情報を入力すると、ターゲットは要求されたファイルを作成し、必要なファイルを新しいワークスペースにコピーし、新しいホスティング・アプリケーション用の一部の構成を設定します。

    例3-2 create-new-job-defターゲットのコンソール出力

    [extensibility_scripts]$ ant -f /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp/build.xml create-new-job-def
    
    Buildfile: /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp/build.xml
    
    -init:
    
    create-new-job-def:
         [echo] Available Job Definition Templates:
         [echo]     1) Simple Synchronous Java Job
        [input] Enter number of job definition template to create (job_template_to_create)
    1
         [echo] Calling default target on /scratch/miscFiles/ExtnDemo/extensibility_scripts/Standalone/Template_JobLibrary/simple_synchronous_job/build.xml
     
    -init:
     
    create-job-definition:
        [input] Enter Java package name for Job Definition (jobdef_package_name) (default=oracle.apps.ess.custom) [oracle.apps.ess.custom]
    oracle.apps.ess.custom
        [input] Enter Java class name for Job Definition (jobdef_class_name) (default=MySynchronousJavaJob) [MySynchronousJavaJob]
    NewDemoHelloWorld
         [copy] Copying 1 file to /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp/NewDemoApp/EssSharedLibrary/src
         [copy] Copying 1 file to /scratch/WLServers/MW_HOME/standalone_apps/NewDemoApp/NewDemoApp/EssSharedLibrary/src/oracle/apps/ess/custom
     
    BUILD SUCCESSFUL
    Total time: 34 seconds
    
  2. Javaジョブ用のクラス・テンプレートを作成すると、ジョブのロジックを実装するコードを追加できます。このテンプレートは、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」で、ホスティング・アプリケーションを作成したときに作成した、JDeveloperワークスペース内のプロジェクトにあります。ファイルのディレクトリ・パスは、Antコンソール出力に示されます。Javaコードを編集する場合、JDeveloperや単純なテキスト・エディタなど、希望のエディタを使用できます。

    Javaファイルを開き、コードを追加して、execute()メソッドを実装します。例3-3に、生成されたコードがどのようになるかを示します。oracle.as.scheduler.Executableインタフェースのexecute()メソッドの単純な実装を、Javaジョブの作業を実行するコードに置き換えます。

    例3-3 Oracle Enterprise SchedulerのHelloWorld Javaクラス

    package oracle.apps.ess.custom;
    
    import java.io.StringWriter;
    import java.security.AccessControlContext;
    import java.security.AccessController;
    import javax.security.auth.Subject;
    
    import oracle.as.scheduler.RequestParameters;
    import oracle.as.scheduler.job.BaseSynchronousJavaJob;
    import oracle.as.scheduler.request.ContentType;
    import oracle.security.jps.util.SubjectUtil;
    
    public class NewDemoHelloWorld extends BaseSynchronousJavaJob {
    
        public NewDemoHelloWorld() {
            super();
        }
    
        protected void execute() throws Exception 
        {
            long requestId = getRequestExecutionContext().getRequestId();
            RequestParameters params = getRequestParameters();
            AccessControlContext accContext = AccessController.getContext();
            Subject subject = Subject.getSubject(accContext);
            String username = SubjectUtil.getUserName(subject);          
           /*
            * Write contents to request log
            */
            StringWriter strWriter = new StringWriter();
            strWriter.write("Simple ESS Java job execution LOG");
            strWriter.write("ESS Job requestID: " + requestId);
            strWriter.write("Username: " + username);
            writeToRequestLog(requestId, strWriter.toString());
    
           /*
            * Write Text contents to request output 
            */
            strWriter = new StringWriter();
            strWriter.write("Simple ESS Java job execution Text Out");
            strWriter.write("ESS Job requestID: " + requestId);
            strWriter.write("Username: " + username);
            writeToRequestOutput(requestId, strWriter.toString(), ContentType.Text);
        }
    }
    

3.5 Antを使用したJavaジョブの共有ライブラリとしてのパッケージ化

package_essjob_library Antターゲットを実行して、Javaジョブ実装をパッケージ化できます。


注意:

新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。)


package_essjob_libraryターゲットによって、ジョブ・コードのコンパイルおよびJARが実行されます。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。

Antを使用してJavaジョブ・クラス実装をパッケージ化する手順は、次のとおりです。

3.6 Antを使用した共有ライブラリのデプロイ

deploy_essjob_library Antターゲットを実行して、Javaジョブ共有ライブラリをデプロイできます。


注意:

新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。)


deploy_essjob_libraryターゲットは、ジョブ・ライブラリをデプロイします。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。

Antを使用してJavaジョブ共有ライブラリをデプロイする手順は、次のとおりです。

3.7 Antを使用したホスティング・アプリケーションのパッケージ化

package_hosting_app Antターゲットを実行して、ホスティング・アプリケーションをパッケージ化できます。


注意:

新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。)


package_hosting_appターゲットは、create-user-homeターゲットで作成されたホスティング・アプリケーションをパッケージ化します(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照)。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。

Antを使用してホスティング・アプリケーションをパッケージ化する手順は、次のとおりです。

3.8 Antを使用したホスティング・アプリケーションのデプロイ

deploy_hosting_app Antターゲットを実行して、ホスティング・アプリケーションをデプロイできます。


注意:

新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。)


deploy_hosting_appターゲットは、create-user-homeターゲットで作成されたホスティング・アプリケーションをデプロイします(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照)。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。

Antを使用してホスティング・アプリケーションをデプロイする手順は、次のとおりです。

3.9 生成されたAntターゲットの構成

ファイル<user_home>/ant/config/ess-build.propertiesには、ビルド、パッケージ化およびデプロイ時にAntスクリプトによって使用される情報を指定するための様々なパラメータが含まれています。<user_home>は、前述のステップ1でアプリケーション・ワークスペースを格納するよう指定したディレクトリです。

アーカイブのデプロイの前に、WebLogic Serverに基づく詳細をユーザーの環境に合わせて変更する必要があります。

<table>で説明しているビルド・プロパティを使用して、Antターゲットを独自の構成値でカスタマイズします。

表3-5 Antビルドをカスタマイズするためのビルド・プロパティ

ビルド・プロパティ 説明

customEss.hostapp.earprofile


customEss.hostapp.jarfile


customEss.hostapp.jarprofile


customEss.hostapp.jprproject


customEss.hostapp.jwsfile


customEss.hostapp.mds.jdbc


customEss.hostapp.mds.partition


customEss.hostapp.name

生成されたホスティング・アプリケーションに使用する名前です。

customEss.hostapp.workspace


customEss.project.dir

生成されたJDeveloperプロジェクトのディレクトリの場所です。

customEss.shared.library.name

生成された共有ライブラリに付けられた名前です。

ess.script.base.dir


fmw.home


jdev.home


oracle.common


weblogic.admin.password

WebLogic Serverの管理パスワードです。

weblogic.admin.user

WebLogic Serverの管理ユーザー名です。

weblogic.server.host


weblogic.server.port


weblogic.server.ssl.port


weblogic.t3.url



例3-4 Antビルドを構成するためのess-build.propertiesファイルのコンテンツ

# ESS build properties
ess.script.base.dir=${user_home}
 
fmw.home=${fmw_home}
jdev.home=${fmw.home}/jdeveloper
oracle.common=${fmw.home}/oracle_common
 
# ========== ESS JDev project details ===============
customEss.project.dir=${ess.script.base.dir}
 
customEss.hostapp.workspace=${hosting_application_name}
customEss.hostapp.jwsfile=${hosting_application_name}
customEss.hostapp.earprofile=${hosting_application_name}
customEss.hostapp.jprproject=EssSharedLibrary
customEss.hostapp.jarprofile=EssSharedLibrary
customEss.hostapp.jarfile=${jobdef_library_name}
 
customEss.shared.library.name=${jobdef_library_name}
 
customEss.hostapp.mds.partition=${hosting_application_name}
customEss.hostapp.mds.jdbc=mds-ESS_MDS_DS
customEss.hostapp.name=${hosting_application_name}
 
# ========== Weblogic Server details ===============
MW_HOME=${fmw.home}
ORACLE_HOME=${jdev.home}
MW_ORA_HOME=${jdev.home}
COMMON_COMPONENTS_HOME=${oracle.common}
WEBLOGIC_HOME=${fmw.home}/wlserver_10.3
weblogic.server.host=adc2170657.example.com
WEBLOGIC_HOME=${fmw.home}/wlserver_10.3
weblogic.server.host=adc2170657.example.com
weblogic.server.port=7001
weblogic.server.ssl.port=7002
weblogic.admin.user=weblogic
weblogic.admin.password=welcome1
weblogic.t3.url=t3://${weblogic.server.host}:${weblogic.server.port}