5 ホスティング・アプリケーションを生成するためのAntの使用
この章では、Oracle Enterprise Schedulerに含まれているbuild.xmlファイルのAntターゲットを使用して、Javaジョブで使用するホスティング・アプリケーションを作成する方法について説明します。
これらのターゲットを使用して、Oracle JDeveloperワークスペースでアプリケーション・アーティファクトを作成したり、Javaジョブ実装用のテンプレートを作成したり、アプリケーションとJavaジョブの両方を(共有ライブラリとして)パッケージ化およびデプロイできます。
ここで説明するAntターゲットでは、ユーザーがジョブを操作できるクライアント・ユーザー・インタフェースを作成しません。クライアント・タスクを実行する場合は、Fusion Middleware Controlを使用するか、またはOracle JDeveloperでクライアント・ユーザー・インタフェースを開発できます。また、一般的にカスタム・ホスティング・アプリケーションには、アプリケーションのデプロイ時にパッケージ化されメタデータ・リポジトリにデプロイされるメタデータがシードされています。カスタム・ホスティング・アプリケーションを生成するAntベースのスクリプトは、メタデータ・アーティファクトを作成する手段を提供しません。このため、ホスティング・アプリケーションを生成した後、このアプリケーションをサーバーにデプロイする前にOracle JDeveloperでワークスペース(.jws
)を開き、必要なメタデータを追加する必要があります。
アプリケーションおよび共有ライブラリを作成およびデプロイすると、JDeveloperまたはEnterprise Managerを使用して、デプロイされた出力にメタデータを関連付けることができます。
ノート:
サード・パーティ・ライセンス制限のため、12c Enterprise Scheduling Serviceコンポーネントに次の.jar
ファイルは付属していません: jdom.jar
、saxon9.jar
、ant-contrib.jar
およびant-groovy.jar
。これらの.jar
ファイルがMW_HOME/oracle_common/ess/extensibility_scripts/ant/lib
にコピーされていることを確認してください。
この章の内容は次のとおりです。
5.1 Antを使用したホスティング・アプリケーションの生成の概要
Oracle Enterprise Schedulerには、ホスティング・アプリケーションの実行に必要な基本アーティファクトの生成に使用できるAntビルド・ファイル、およびデプロイしてアプリケーションで実行できるJavaジョブが含まれています。
組込みAntビルド・ファイルを使用して、ホスティング・アプリケーションを生成します。実行時に、Javaジョブ用のアーティファクトの生成や、生成したコンポーネントのビルドおよびデプロイに使用できるターゲットが含まれた、別のAntビルド・ファイルも生成します。
アプリケーションおよび共有ライブラリを作成およびデプロイすると、JDeveloperまたはEnterprise Managerを使用して、デプロイされた出力にメタデータを関連付けることができます。
また、生成されたbuild.propertiesファイルを使用すると、ターゲットが実行時に使用する変数の値を設定してAntが行う作業をカスタマイズすることもできます。
この章で説明しているステップには、Antで実行できる次のことが含まれています。
-
ジョブを実行できるホスティング・アプリケーションを作成します。組込み
build.xml
ファイル内のcreate-user-homeを使用します。 -
IDEでのアプリケーション・アーティファクトの編集に使用できるJDeveloperプロジェクト・ワークスペースを作成します。これは、ホスティング・アプリケーションの作成時に行われます。
-
アプリケーションの一部をビルドおよびデプロイするためのターゲットが含まれたAntビルド・ファイルを作成します。
-
ビジネス・ロジックを追加できるJavaジョブ・テンプレートを作成します。生成された
build.xml
ファイル内のcreate-new-job-def
ターゲットを使用します。 -
実装されたJavaジョブを共有ライブラリとしてパッケージ化します。生成された
build.xml
ファイル内のpackage_essjob_library
ターゲットを使用します。 -
共有ライブラリをホスティング・アプリケーションにデプロイします。生成された
build.xml
ファイル内のdeploy_essjob_library
ターゲットを使用します。 -
ホスティング・アプリケーションをパッケージ化します。生成された
build.xml
ファイル内のpackage_hosting_app
ターゲットを使用します。 -
ホスティング・アプリケーションをデプロイします。生成された
build.xml
ファイル内のdeploy_hosting_app
ターゲットを使用します。
5.2 ホスティング・アプリケーションの作成およびデプロイ用のAntターゲット
Oracle Enterprise Schedulerには、ジョブを実行できるホスティング・アプリケーションをデプロイするのに役立つ、Antビルド・ファイルが含まれています。
ただし、実際にはこのジョブを完了するには、2つのビルド・ファイルを使用します。その1つはOracle Enterprise Schedulerに含まれており、もう1つは組込みビルド・ファイル内のターゲットにより生成されます。次の表では、これら2つのファイルにデフォルトで含まれているターゲットをリストして説明します。
デフォルトでは、組込みbuild.xmlファイルはOracle Enterprise Schedulerのextensibility_scripts
ディレクトリにあります。たとえば、Oracle JDeveloperインストールでは、MW_HOME/oracle_common/ess/extensibility_scripts/build.xml
にあり、Oracle Enterprise Schedulerなどの製品のインストールでは、ORACLE_HOME/extensibility_scripts
ディレクトリにあります。
表5-1 組込みビルド・ファイル内のAntターゲット
Antターゲット | 説明 |
---|---|
create-user-home |
ユーザー・ホームを作成するためのデフォルト・ターゲットです。 |
help-create-user-home |
ユーザー・ホームの作成に関するヘルプです。 |
組込みbuild.xml
ファイルのcreate-user-home
ターゲットを実行した場合、ターゲットのアクションの1つとして、別のbuild.xml
ファイルが作成されます。そのファイルには、アプリケーション用のアーティファクトを作成、ビルドおよびデプロイするために使用できる次のターゲットが含まれています。
表5-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 |
ホスティング・アプリケーションをパッケージ化します。 |
5.3 Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成
Oracle Enterprise Schedulerに含まれているbuild.xml
ファイル内のcreate-user-home
Antターゲットを実行して、ホスティング・アプリケーションを作成できます。
スクリプトが正常に完了すると、パッケージ化およびデプロイ可能なホスティング・アプリケーション用アーティファクトが作成されます。これらのアーティファクトは、指定したターゲット・ディレクトリのJDeveloper互換ワークスペース内に生成されます。作成されたワークスペースにはbuild.xml
が含まれており、これを使用して、ホスティング・アプリケーションおよび生成されたJavaジョブを共有ライブラリとしてビルド、パッケージ化およびデプロイできます。
ターゲットが実行されるとき、ターゲットの作業のガイドとなる詳細を入力することを要求されます。これらの詳細には、ターゲットの作業について意図されている環境(特定のアプリケーションで実行するなど)、新しいアプリケーションの名前、ターゲット・ディレクトリなどが含まれます。
開始する前に、Antターゲットによって要求される次の情報を用意しておきます。
表5-3 Antターゲットで必要な情報
入力プロンプト | 説明 |
---|---|
使用するテンプレート |
可能な値はFusionおよびStandaloneです。Oracle Fusion Applicationsで使用するために開発している場合は、ここでFusionと入力します。 Oracle Fusion Applicationsで使用するための開発でない場合は、Standaloneと入力します。 Oracle Fusion Applicationsコンテキストとスタンドアロン・コンテキストとの間には重要な相違があります。たとえば、Oracle Fusion Applicationsコンテキストでは、ターゲットはわずかに異なるホスティング・アプリケーションおよびクライアント・アプリケーションを生成します。 |
ミドルウェア・ホーム・ディレクトリ・パス |
Oracle Enterprise Schedulerが(多くの場合、埋め込まれている別の製品により)インストールされたときに作成されたミドルウェア・ホーム・ディレクトリです。サポート・ライブラリの場所は、このディレクトリに対して相対的な場所にあります。 この機能は、 |
ホスティング・アプリケーション名 |
新しいホスティング・アプリケーションに付ける名前です。 |
ホスティング・アプリケーションJPSストライプID |
ストライプは、アプリケーションで使用するポリシー・ストア内の値のサブセットを定義するセキュリティ構成です。実行時に、アプリケーションに適用可能なポリシーのセットを決定します。多くの場合、アプリケーション名が使用されます。 |
ジョブ・ビジネス・ロジックの共有ライブラリ名 |
生成されたJavaジョブ・ソース・コードを配置する共有ライブラリの名前です。 |
アプリケーションが作成される空のディレクトリ |
生成されたファイルの移動先となるディレクトリです。これは、後で使用するアーティファクト( |
Antを使用したホスティング・アプリケーションの作成手順
5.4 Antを使用した共有ライブラリとしてのJavaジョブの作成
新しいホスティング・アプリケーションを作成したときに生成されたビルド・ファイル内のcreate-new-job-def
Antターゲットを実行して、Javaジョブ・クラス・テンプレートを作成できます。
詳細は、「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照してください。
ここで作成するJavaクラスは、Javaジョブを実装するロジックを追加できるテンプレートとなります。JavaジョブではJavaコードを実行します。実装されるJavaジョブに対しては、そのジョブの仕様の一部から構成されるメタデータを追加できます。
ノート:
現在、このAntターゲットでは同期Javaジョブ・テンプレートのみを作成できます。
ターゲットが実行されるとき、ターゲットの作業のガイドとなる詳細を入力することを要求されます。開始する前に、Antターゲットによって要求される次の情報を用意しておきます。
表5-4 Antターゲットで必要な情報
入力プロンプト | 説明 |
---|---|
作成するジョブ定義テンプレートの数 |
作成するJavaジョブ実装のタイプに対応する数です。現在、この方法で作成できるのは同期Javaジョブのみであるため、サポートされている値は1のみとなります。 |
ジョブ定義のJavaパッケージ名 |
作成するJavaジョブのパッケージ名です。 |
ジョブ定義のJavaクラス名 |
作成するJavaジョブのクラス名です。 |
Antを使用してJavaジョブ・クラス・テンプレートを作成するには:
例5-1 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); } }
5.5 Antを使用したJavaジョブの共有ライブラリとしてのパッケージ化
package_essjob_library
Antターゲットを実行して、Javaジョブ実装をパッケージ化できます。
ノート:
新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。)
package_essjob_library
ターゲットによって、ジョブ・コードのコンパイルおよびJARが実行されます。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。
Antを使用してJavaジョブ・クラス実装をパッケージ化するには:
-
コンソール・ウィンドウで、ディレクトリを、ホスティング・アプリケーションを作成する場所として指定したディレクトリに変更します。次のコマンドを使用して、ターゲットを実行します。
ant package_essjob_library
5.6 Antを使用した共有ライブラリのデプロイ
deploy_essjob_library
Antターゲットを実行して、Javaジョブ共有ライブラリをデプロイできます。
ノート:
新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。)
deploy_essjob_library
ターゲットは、ジョブ・ライブラリをデプロイします。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。
Antを使用してJavaジョブ共有ライブラリをデプロイするには:
-
コンソール・ウィンドウで、ディレクトリを、ホスティング・アプリケーションを作成する場所として指定したディレクトリに変更します。次のコマンドを使用して、ターゲットを実行します。
ant deploy_essjob_library
5.7 Antを使用したホスティング・アプリケーションのパッケージ化
package_hosting_app
Antターゲットを実行して、ホスティング・アプリケーションをパッケージ化できます。
ノート:
新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。)
package_hosting_app
ターゲットは、create-user-home
ターゲットで作成されたホスティング・アプリケーションをパッケージ化します(詳細は、「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照)。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。
Antを使用してホスティング・アプリケーションをパッケージ化するには:
-
コンソール・ウィンドウで、ディレクトリを、ホスティング・アプリケーションを作成する場所として指定したディレクトリに変更します。次のコマンドを使用して、ターゲットを実行します。
ant package_hosting_app
5.8 Antを使用したホスティング・アプリケーションのデプロイ
deploy_hosting_app
Antターゲットを実行して、ホスティング・アプリケーションをデプロイできます。
ノート:
新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。)
deploy_hosting_app
ターゲットは、create-user-home
ターゲットで作成されたホスティング・アプリケーションをデプロイします(詳細は、「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照)。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。
Antを使用してホスティング・アプリケーションをデプロイするには:
-
コンソール・ウィンドウで、ディレクトリを、ホスティング・アプリケーションを作成する場所として指定したディレクトリに変更します。次のコマンドを使用して、ターゲットを実行します。
ant deploy_hosting_app
5.9 生成されたAntターゲットの構成
ファイルuser_home/ant/config/ess-build.properties
には、ビルド、パッケージ化およびデプロイメント時にAntスクリプトによって使用される情報を指定するための様々なパラメータが含まれています。user_home
は、アプリケーション・ワークスペースを格納するよう指定したディレクトリです。
アーカイブのデプロイメントの前に、WebLogic Serverに基づく詳細をユーザーの環境に合わせて変更する必要があります。
表5-5で説明しているビルド・プロパティを使用して、Antターゲットを独自の構成値でカスタマイズします。
表5-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 |
[-] |
ess.server.name |
Oracle Enterprise Schedulerジョブ・ライブラリおよびホスティング・アプリケーションがデプロイされるOracle Enterprise Schedulerの管理/管理対象サーバーのカンマで区切られた名前。 |
weblogic.admin.user |
WebLogic Serverの管理ユーザー名。 |
weblogic.server.host |
[-] |
weblogic.server.port |
[-] |
weblogic.server.ssl.port |
[-] |
weblogic.t3.url |
[-] |
# 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.t3.url=t3://${weblogic.server.host}:${weblogic.server.port} # Comma separated names of ess admin/managed servers to which essjob library and hosting app is deployed ess.server.name=AdminServer