この章では、Oracle Enterprise Schedulerに含まれているbuild.xmlファイルのAntターゲットを使用して、Javaジョブで使用するホスティング・アプリケーションを作成する方法について説明します。
これらのターゲットを使用して、Oracle JDeveloperワークスペースでアプリケーション・アーティファクトを作成したり、Javaジョブ実装用のテンプレートを作成したり、アプリケーションとJavaジョブの両方を(共有ライブラリとして)パッケージ化およびデプロイできます。
ここで説明するAntターゲットでは、ユーザーがジョブを操作できるクライアント・ユーザー・インタフェースを作成しません。クライアント・タスクを実行する場合は、Fusion Middleware Controlを使用するか、またはOracle JDeveloperでクライアント・ユーザー・インタフェースを開発できます。
アプリケーションおよび共有ライブラリを作成およびデプロイすると、JDeveloperまたはEnterprise Managerを使用して、デプロイされた出力にメタデータを関連付けることができます。
この章では、次の項目について説明します。
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ターゲットを使用します。
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 |
ホスティング・アプリケーションをパッケージ化します。 |
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を使用したホスティング・アプリケーションの作成手順
開始するには、コンソール・ウィンドウを開き、組込み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
新しいホスティング・アプリケーションを作成したときに生成されたビルド・ファイル内の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ジョブ・クラス・テンプレートを作成する手順は、次のとおりです。
開始するには、コンソール・ウィンドウで、ディレクトリを、アプリケーションを作成する場所として指定したディレクトリに変更します。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
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); } }
package_essjob_library Antターゲットを実行して、Javaジョブ実装をパッケージ化できます。
注意: 新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。) |
package_essjob_libraryターゲットによって、ジョブ・コードのコンパイルおよびJARが実行されます。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。
Antを使用してJavaジョブ・クラス実装をパッケージ化する手順は、次のとおりです。
コンソール・ウィンドウで、ディレクトリを、ホスティング・アプリケーションを作成する場所として指定したディレクトリに変更します。次のコマンドを使用して、ターゲットを実行します。
ant package_essjob_library
deploy_essjob_library Antターゲットを実行して、Javaジョブ共有ライブラリをデプロイできます。
注意: 新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。) |
deploy_essjob_libraryターゲットは、ジョブ・ライブラリをデプロイします。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。
Antを使用してJavaジョブ共有ライブラリをデプロイする手順は、次のとおりです。
コンソール・ウィンドウで、ディレクトリを、ホスティング・アプリケーションを作成する場所として指定したディレクトリに変更します。次のコマンドを使用して、ターゲットを実行します。
ant deploy_essjob_library
package_hosting_app Antターゲットを実行して、ホスティング・アプリケーションをパッケージ化できます。
注意: 新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。) |
package_hosting_appターゲットは、create-user-homeターゲットで作成されたホスティング・アプリケーションをパッケージ化します(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照)。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。
Antを使用してホスティング・アプリケーションをパッケージ化する手順は、次のとおりです。
コンソール・ウィンドウで、ディレクトリを、ホスティング・アプリケーションを作成する場所として指定したディレクトリに変更します。次のコマンドを使用して、ターゲットを実行します。
ant package_hosting_app
deploy_hosting_app Antターゲットを実行して、ホスティング・アプリケーションをデプロイできます。
注意: 新しいホスティング・アプリケーションを作成すると、このターゲットが含まれたビルド・ファイルが生成されます。(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照。) |
deploy_hosting_appターゲットは、create-user-homeターゲットで作成されたホスティング・アプリケーションをデプロイします(詳細は、第3.3項「Antを使用したホスティング・アプリケーションおよびプロジェクト・ワークスペースの作成」を参照)。このターゲットは、ユーザーによる入力は必要なく、単に実行されて完了します。
Antを使用してホスティング・アプリケーションをデプロイする手順は、次のとおりです。
コンソール・ウィンドウで、ディレクトリを、ホスティング・アプリケーションを作成する場所として指定したディレクトリに変更します。次のコマンドを使用して、ターゲットを実行します。
ant deploy_hosting_app
ファイル<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}