6 シン・クライアント・アプリケーションの作成

通常、シン・クライアント・アプリケーションは、ジョブの発行、ステータスの問合せに使用され、オプションでEJBジョブ実装のホストに使用されます。シン・クライアント・アプリケーションでは、Oracle Enterprise Scheduler APIにOracle Enterprise Schedulerシン・クライアント・ライブラリが使用されます。この章では、シン・クライアント・ライブラリおよびOracle JDeveloperを使用したシン・クライアント・アプリケーションの開発方法について説明します。

この章の構成は、次のとおりです。

6.1 概要

クライアント・アプリケーションは、Oracle Enterprise Schedulerと同じWebLogicドメインで実行されるJ2EEアプリケーションです。

クライアント・アプリケーションは、Oracle Enterprise Scheduler APIを使用して次の処理を実行できます。

  • ジョブの発行

  • ジョブ・ステータスの問合せ

  • ジョブ出力およびログの参照

  • オプションで、Oracle Enterprise Schedulerメタデータの更新の実行

  • Oracle Enterprise Schedulerがリモートで起動するEJBジョブ実装のホスト

Oracle Enterprise Schedulerシン・クライアント・ライブラリは、Oracle Enterprise Scheduler API(メタデータ・サービスAPIまたはランタイム・サービスAPIなど)にアクセスするためにクライアント・アプリケーションによって使用されます。シン・クライアント・ライブラリは、リモートでOracle Enterprise Schedulerホスティング・アプリケーションを起動し、すべての操作を実行するシン・レイヤーです。オプションで、シン・クライアント・アプリケーションには、Oracle JDeveloperを使用して開発されたOracle Enterprise Schedulerメタデータを含むOracle Enterprise SchedulerメタデータMARアーカイブが含まれる場合があります。このメタデータは、アプリケーションのデプロイ時、Oracle Enterprise Scheduler MDSに自動的にロードされます。または、アプリケーションは、APIを使用してメタデータを動的に作成できます。

シン・クライアント共有ライブラリは、クライアント共有ライブラリと次の点で異なります。

  • クライアント共有ライブラリには、MDSおよびランタイム・データベースに直接アクセスすることで、すべてのOracle Enterprise Schedulerの作業を実行するローカルEJBが含まれます。シン・クライアント・ライブラリには、データ・ソースおよびEJBは含まれませんが、EJBをホストしデータベースにアクセスするホスティング・アプリケーションにリモートでアクセスします。

  • シン・クライアント・ライブラリは、Oracle Enterprise Schedulerの内部機能をアプリケーションに対してより巧みに非表示にします。

  • データベースに直接アクセスするため、Oracle Enterprise Schedulerサーバーまたはクラスタが停止している場合でもクライアント共有ライブラリは機能します。

  • シン・クライアント・ライブラリは、Oracle Enterprise Schedulerのデプロイメントが埋込み製品のオプションの場合も便利です。

  • クライアント共有ライブラリによって公開されているすべてのドキュメント化済APIは、シン・クライアント・ライブラリで使用可能です。したがって、シン・クライアント・アプリケーションは次の処理を行えます。

    • ランタイム・サービスAPIを使用したリクエストの発行

    • ランタイム・サービスAPIを使用したリクエストの操作

    • メタデータ・サービスAPIを使用したメタデータ・アーティファクトの更新

    • 非同期リクエストのリモートでの完了

  • シン・クライアント・ライブラリは、リモートでOracle Enterprise Schedulerホスティング・アプリケーションを起動し、すべての操作を実行するため、ローカルBeanではなく、リモートOracle Enterprise Scheduler Beanを参照する必要があります。リモートOracle Enterprise SchedulerサーバーのInitialContextの取得にはオーバーヘッドがあります。RemoteConnector APIは、Oracle Enterprise Scheduler Beanのコールバックに対して次のような支援を提供します。

    • ヘルパー・クラスは、RemoteConnectorsを使用してOracle Enterprise Scheduler Bean (RuntimeServiceMetadataServiceなど)に簡単に接続し返します。

    • ログおよび出力は、リモート実装から処理できます。

    • 非同期リクエストを簡単に完了できます。

    • 起動およびコールバックを保護できます。

6.2 実装

このトピックでは、シン・クライアント・ライブラリを使用してリモートEJBジョブを実装する際に注意する必要のある考慮事項をいくつか示します。

シン・クライアント・ライブラリを使用してリモートEJBジョブを実装する際は、次のことを考慮します。

  • Beanが、実行のみのRemoteExecutableインタフェース、または実行と取消しの両方の操作のRemoteCancellableExecutableインタフェースを実装していることを確認します。

  • SOA_BEAN_NAMEなどの固有のプロパティを定義するのではなく、EJB_OPERATION_NAMEなどの事前定義済システム・プロパティを使用します。

  • ejb-jar.xmlファイルは、oracle.security.jps.ee.ejb.JpsInterceptorインターセプタを定義する必要があります。インターセプタを使用して、Oracle Enterprise Schedulerレイヤーから伝播されたサブジェクトを取得し、他の操作で使用します。

  • ジョブ・ロジックが変更されたときにEJBが再デプロイされないようにするために、ジョブ実装をejb-jar.xmlファイルから移動させておくことが最善の方法です。

ヒント:

JNDIコンテキストが渡された値で作成できない場合、アプリケーションはjavax.naming.NamingException例外をスローします。または、資格証明キーストアを含む参照で問題が発生した場合、ScehdulerException例外がスローされる場合もあります。

6.2.1 保護された起動

リモートEJBの保護された起動は、そのサーバーのJNDIツリーが認証されている場合に必須です。これは、リモートEJBが保護された参照を使用してOracle Enterprise Scheduler EJBをコールバックする場合も同様です。次の各項で、ガイドラインを示します。

6.2.1.1 転送起動

次の内容が転送起動に適用されます。

  • Oracle Enterprise SchedulerがリモートEJBを起動する場合、実行ジョブのサブジェクトは常に伝播されます。

  • Oracle Enterprise Schedulerがジョブを実行する際、現在のOracle Enterprise Scheduler ServerのJndiProviderUrlRequestParametersを介してリモートEJBに常に提供されます。

  • リモート・サーバーのJNDIツリーが認証されている場合、JNDI_CSF_KEYプロパティをリクエスト・パラメータまたはホスティング・アプリケーションのEssConfigurationで指定する必要があります。

  • Oracle Enterprise Schedulerは、CsfKeyのキーストアを参照してPasswordCredentialを取得し、リモート・サーバーに接続します。

6.2.1.2 コールバック起動

次の内容がコールバック起動に適用されます。

  • リモートEJBがOracle Enterprise SchedulerのBeanにコールバックする必要がある場合、次のプロパティを指定できます。

    • HostingAppで公開されているOracle Enterprise SchedulerのRuntimeMetadataおよびAsyncRequest BeanのJNDI名は、リクエスト・パラメータまたはホスティング・アプリケーションのEssConfigurationで指定する必要があります。EssNativeHostingAppが使用されている場合、これらのエントリは必要がありません。

    • Oracle Enterprise SchedulerサーバーのJNDIツリーが認証されている場合、ESS_JNDI_CSF_KEY_NAMEプロパティをリクエスト・パラメータまたはホスティング・アプリケーションのEssConfigurationで指定する必要があります。Oracle Enterprise Schedulerにより、このプロパティがRequestParametersを介してリモートEJBで使用可能になります。

  • リモートEJBは、RemoteConnector APIを使用して、 Oracle Enterprise Scheduler Beanのリモート・インスタンスを取得できます。これは、次を渡すことで実行できます。

    • RequestParameters

    • BeanのRequestParametersおよびJndiMappedName (ネイティブ・ホスティング・アプリケーション以外のホスティング・アプリケーション用)

    • RequestParameters、ユーザー名およびパスワード(Oracle Enterprise Schedulerサーバーが認証されている場合)

    • InitialContext (主にEssNativeHostingAppを伴うJava SEクライアント用)

    • InitialContextおよびjndiMappedName (主にその他のホスティング・アプリケーションを伴うJava SEクライアント用)

6.2.2 RemoteConnector APIおよびサーバー・アフィニティ・プロパティ

コードの実装がOracle Enterprise Scheduler EJBへのアクセスに依存している場合、RemoteConnector APIクラスで公開されているメソッドを使用します。Oracle Enterprise Schedulerでは、JNDIルックアップを実行する前にサーバー・アフィニティ・プロパティをInitialContext環境で設定する必要があり、RemoteConnector APIクラスがこのプロパティを設定します。これは、マルチノード・クラスタ・シナリオで特に重要です。RemoteConnectorクラスは、Oracle Enterprise Schedulerクライアント・ライブラリでパッケージ化されています。

何らかの理由でRemoteConectorクラスを使用できない場合、次の例に示すように、Oracle Enterprise Scheduler EJBの参照を実行する前に環境マップ・プロパティをInitialContextに設定できます。

if(PlatformUtils.isWebLogic())
   envProps.put("weblogic.jndi.enableServerAffinity", "true");

マルチノード・クラスタ環境では、クラスタ・アルゴリズムをラウンドロビン・アフィニティに設定するのが最適です。

6.2.3

この項では、シン・クライアント・ライブラリの使用方法を表す例を示します。

6.2.3.1 RemoteConnectorを使用するJava EEアプリケーション

次のコードの例は、事前デプロイ済のネイティブ・ホスティング・アプリケーションを介してRemoteConnectorを使用するJava EEアプリケーションからのスニペットを示しています。

RemoteConnector essConnector = newRemoteConnector();
//RequestParameters contains the JndiProviderURL of Oracle Enterprise Scheduler 
//Server which is auto-populated from the Oracle Enterprise Scheduler end while 
//invoking an EJB. The CSF key is auto-populated in RequestParameters from the 
//Oracle Enterprise Scheduler end if configured for the 
//Oracle Enterprise Scheduler Server and specified in the EssConfig of HostingApp. 
//If CSF key is present, the CSF lookup is done from RemoteConnector to resolve 
//authentication.

RuntimeService rts = essConnector.getRuntimeServiceEJB(requestParameters);

//Sample invocation using RuntimeServiceBean.
RuntimeServiceHandle handle = rts.open();
RequestDetail reqDetail = rts.getRequestDetail(handle,
requestExecutionContext.getRequestId());
6.2.3.2 実装

次の例は、シン・クライアント・ライブラリを使用するEJBジョブのスケルトン実装を示しています。EJBジョブ実装の詳細は、「EJBジョブの作成と使用」を参照してください。

@Stateless(name = "JMXAdapter")
public class JMXAdapterBean implements RemoteCancellableExecutable
{
@Resource
private SessionContext sctx;
public JMXAdapterBean() {
}

public void execute(RequestExecutionContext requestExecutionContext,
RequestParameters requestParameters) throws
ExecutionErrorException,
ExecutionWarningException,
ExecutionPausedException,
ExecutionCancelledException
{
//"ESS RequestId:" + requestExecutionContext.getRequestId();
//"EJB Operation:" + requestParameters.getValue(SystemProperty.EJB_OPERATION_NAME);
//"Invoke Message:" + requestParameters.getValue(SystemProperty.INVOKE_MESSAGE);
}
public void cancel(RequestExecutionContext requestExecutionContext,
RequestParameters requestParameters)
{
//"ESS RequestId:" + requestExecutionContext.getRequestId();
//"EJB Operation:" + requestParameters.getValue(SystemProperty.EJB_OPERATION_NAME);
//"Invoke Message:" + requestParameters.getValue(SystemProperty.INVOKE_MESSAGE);
}
}
6.2.3.3 サブジェクトの伝播

Oracle Enterprise SchedulerがEJBジョブを起動する場合、ホスティング・アプリケーションに関連付けられているサブジェクトはジョブに常に伝播されます。これにより、ジョブを実行するサブジェクトがBeanのビジネス操作で使用可能になります。次のコードをejb-jar.xmlファイルに追加して、Bean内からサブジェクトを取得します。

<interceptors>
<interceptor>
<interceptor-class>oracle.security.jps.ee.ejb.JpsInterceptor</interceptor-class>
<env-entry>
<env-entry-name>application.name</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>NAME_OF_ENTERPRISE_APPLICATION</env-entry-value>
<injection-target>
<injection-target-class>oracle.security.jps.ee.ejb.JpsInterceptor</injection-target-class>
<injection-target-name>application_name</injection-target-name>
</injection-target>
</env-entry>
</interceptor>
</interceptors>
<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>oracle.security.jps.ee.ejb.JpsInterceptor</interceptor-class>
</interceptor-binding>
</assembly-descriptor>

次のコードを使用すると、現在のサブジェクトの権限のあるコンテキスト内のEJB操作からMBeanを起動できます。

AccessControlContext accContext = AccessController.getContext();
Subject currentSubject = Subject.getSubject(accContext);
String currentUsername = SubjectUtil.getUserName(currentSubject);
Subject.doAs(currentSubject, new PrivilegedExceptionAction() {
public Object run() {
//logic to invoke MBean
}
});

6.3 JDeveloperを使用したMARデプロイメント用のシン・クライアント・アプリケーションのビルド

ジョブがOracle Enterprise Schedulerの事前デプロイ済ネイティブ・ホスティング・アプリケーションを使用している場合、メタデータの作成を支援し、事前デプロイ済ネイティブ・ホスティング・アプリケーションMDSパーティション(essUserMetadata)にこれをデプロイするクライアント・アプリケーションをビルドすることでカスタム・ジョブ・メタデータの作成を簡易化できます。

次の手順は、Oracle JDeveloperを使用して、次の処理を実行するシン・クライアント・アプリケーションを作成する方法を示しています。

  • ジョブ・メタデータの追加

  • エンタープライズ・アーカイブ(EAR)の作成

  • EAR内のメタデータ・アーカイブ(MAR)のパッケージ化

  • 事前デプロイ済のネイティブ・ホスティング・アプリケーションへのメタデータのデプロイ

「JDeveloperを使用したEJBおよびそのジョブ定義メタデータの作成および構成」の手順で、事前デプロイ済ネイティブ・ホスティング・アプリケーションに追加されるEJBジョブ定義によって起動できるEJBの作成方法を説明します。

アプリケーションのデプロイ時、ADFインフラストラクチャが使用されメタデータが特定のパーティションにデプロイされます。事前デプロイ済ネイティブ・ホスティング・アプリケーションのMDSパーティションは、essUserMetadataです。

JDeveloperには、スクリーン・リーダー、スクリーン拡大鏡、キーボード・ナビゲーション用の標準ショートカット・キーのサポートなどのアクセシビリティ・オプションが用意されています。フォントのサイズや色、オブジェクトの色や形などを変えて、判読性を高めるためにJDeveloperをカスタマイズすることもできます。JDeveloperでのアクセシビリティについて、およびこれを構成する手順は、『Oracle JDeveloperによるアプリケーションの開発』Oracle JDeveloperのアクセシビリティ情報に関する項を参照してください。

ノート:

JDeveloperを開始する前にMW_HOME環境変数を必ず設定してください。例: export MW_HOME=/scratch/prh/12c/jdevこの変数が設定されていない場合、ジョブ・タイプ・ドロップダウン・メニューには移入されません。

6.3.1 スタンドアロン環境用のシン・クライアント・アプリケーションの作成およびデプロイ

次のステップは、JDeveloperを使用してシン・クライアント・アプリケーションを作成およびデプロイする方法を説明しています。

  1. 「新規ギャラリ」ダイアログで、カスタム・アプリケーションおよびプロジェクトを作成します(図6-1を参照)。

    図6-1 「新規ギャラリ」ダイアログ

    図6-1の説明が続きます
    「図6-1 「新規ギャラリ」ダイアログ」の説明
  2. カスタム・アプリケーションの作成ダイアログで、アプリケーション名およびアプリケーション・パッケージ接頭辞を入力します(図6-2を参照)。

    図6-2 カスタム・アプリケーションの作成ダイアログ - ステップ1/3

    図6-2の説明が続きます
    「図6-2 「カスタム・アプリケーションの作成ダイアログ - ステップ1/3」の説明
  3. プロジェクト名を入力し、プロジェクト機能に、「ESSジョブ・サポート」「ESSクライアント・サポート」および「EJB」を追加します(図6-3を参照)。

    図6-3 カスタム・アプリケーションの作成ダイアログ - ステップ2/5

    図6-3の説明が続きます
    「図6-3 カスタム・アプリケーションの作成ダイアログ - ステップ2/5」の説明
  4. EJB設定を構成します(図6-4を参照)。

    図6-4 カスタム・アプリケーションの作成ダイアログ - ステップ4/5

    図6-4の説明が続きます
    「図6-4 カスタム・アプリケーションの作成ダイアログ - ステップ4/5」の説明
  5. アプリケーションIDの値を構成します(図6-5を参照)

    図6-5 ESSジョブ・サポート設定の構成

    図6-5の説明が続きます
    「図6-5 ESSジョブ・サポート設定の構成」の説明
  6. 「次」をクリックします。

  7. 「終了」をクリックして、新しいアプリケーションを作成するステップを完了します。

  8. 前のステップで生成されたMANIFEST.MFファイルを編集し、次の行を削除します。

    essclientapi-Specification-Version: 12
    Extension-List: essruntime, essclientapi
    Weblogic-Application-Version: 3.0
    essclientapi-Extension-Name: oracle.ess.client.api
    essruntime-Extension-Name: oracle.ess.runtime
    essruntime-Specification-Version: 12
    
  9. 左側のツリー・パネルでプロジェクト・ノードを右クリックし、プロジェクト・プロパティを選択して、「ライブラリとクラスパス」をクリックします(図6-6を参照)。「クラスパス・エントリ」ペインで「Java EE」および「エンタープライズ・スケジューラ」のみが選択されていることを確認します。

    図6-6 「プロジェクト・プロパティ」ダイアログ

    図6-6の説明が続きます
    「図6-6 「プロジェクト・プロパティ」ダイアログ」の説明
  10. 「新規ギャラリ」ダイアログで、「エンタープライズ・スケジューラ・メタデータ」および「ジョブ定義」を選択します(図6-7を参照)。

    図6-7 「新規ギャラリ」ダイアログ

    図6-7の説明が続きます
    「図6-7 「新規ギャラリ」ダイアログ」の説明
  11. 「ジョブ定義の作成」ダイアログで「ジョブ・タイプ」ドロップダウンから/oracle/as/ess/core/ProcessJobTypeを選択して、単純な生成済ジョブ定義メタデータを追加します(図6-8を参照)。

    図6-8 「ジョブ定義の作成」ダイアログ

    図6-8の説明が続きます
    「図6-8 「ジョブ定義の作成」ダイアログ」の説明
  12. 生成済ジョブ定義メタデータの追加を完了するには、「オーバーライド」チェック・ボックスを選択して「コマンド行」に値を入力します。SYS_effectiveApplicationという名前のシステム・プロパティに値EssNativeHostingAppを指定して追加します。

    図6-9 SimpleSpawnedJobDefn.xmlのタブ

    図6-9の説明が続きます
    「図6-9 「SimpleSpawnedJobDefn.xml」タブ」の説明
  13. EJBジョブ定義メタデータを追加します。「JDeveloperを使用したEJBおよびそのジョブ定義メタデータの作成および構成」のステップに従います。

  14. MARプロファイルを構成します。

    1. 「アプリケーションのプロパティ」を選択して、「デプロイメント・ノード」をクリックします。

    2. 右側のパネルで「MARモジュール」を選択し、「編集」をクリックします。

    3. MARデプロイメント・プロパティの編集ダイアログで「ユーザー・メタデータ」を選択します(図6-10を参照)。

    4. (前に作成済のプロジェクトのパスの下にある)essmetaディレクトリが使用可能であることを確認します。使用不可の場合、essmetaディレクトリに手動で移動してディレクトリを追加します。

    図6-10 「MARデプロイメント・プロファイルのプロパティの編集」ダイアログ

    図6-10の説明が続きます
    「図6-10 「MARデプロイメント・プロファイルのプロパティの編集」ダイアログ」の説明
  15. 適切なメタデータを選択して、MARでパッケージ化します。「ユーザー・メタデータ」の下にある「ディレクトリ」ノードをクリックして、新規追加されたジョブ定義が選択されていることを確認します(図6-11を参照)。

    図6-11 「MARデプロイメント・プロファイルのプロパティの編集」ダイアログ

    図6-11の説明が続きます
    「図6-11 「MARデプロイメント・プロファイルのプロパティの編集」ダイアログ」の説明
  16. エンタープライズ・アーカイブ(EAR)のデプロイメント・プロファイルを作成します。

    1. 「アプリケーションのプロパティ」を選択して、デプロイメント・ノードをクリックします。

    2. 右パネルで「新規」をクリックして、「デプロイメント・プロファイルの作成」ダイアログを起動します。「プロファイル・タイプ」ドロップダウンから「EARファイル」を選択します(図6-12を参照)。

      図6-12 「デプロイメント・プロファイルの作成」ダイアログ

      図6-12の説明が続きます
      「図6-12 「デプロイメント・プロファイルの作成」ダイアログ」の説明
  17. EARのアプリケーション・アセンブリを構成します。ダイアログで、次の2つのプロファイルが選択されていることを確認します。

    • 以前に作成したMARプロファイル

    • EJBプロファイル。このプロファイルは自動的に作成されます。自動的に作成されない場合、ステップ2の最初で前に説明したように、プロジェクトの新規EJB JARデプロイメント・プロファイルを作成します。

    EJB-JARデプロイメント・プロファイルを作成するには:

    1. 「アプリケーション・ナビゲータ」の「プロジェクト」パネルで、Applicationプロジェクトを右クリックし、「プロジェクト・プロパティ」をクリックします。

    2. 「プロジェクト・プロパティ」ウィンドウのナビゲータで、「デプロイメント」をクリックします。

    3. 「デプロイメント・プロファイル」で、ウィンドウに表示されているすべてのプロファイルを削除し、「新規」をクリックします。

    4. 「デプロイメント・プロファイルの作成」ダイアログで、「プロファイル・タイプ」ドロップダウン・リストから「EJB JARファイル」を選択します。

    5. 「名前」フィールドに、EJBの名前を入力します。この例では、MySampleThinClientEjbと入力します。

    6. 「OK」をクリックします。

      図6-13 EJB-JARデプロイメント・プロファイルの作成

      図6-13の説明が続きます
      「図6-13 EJB-JARデプロイメント・プロファイルの作成」の説明
    7. 左側にある「EJB JARデプロイメント・プロファイルのプロパティの編集」ダイアログ・ナビゲータで、「一般」をクリックします。

    8. 「一般」ウィンドウで、「エンタープライズ・アプリケーション名」フィールドにMySampleThinClientAppと入力します。

    9. ナビゲータで、「ファイル・グループ」「プロジェクトの出力」「コントリビュータ」の順に開きます。

    10. 「コントリビュータ」ウィンドウで、次のチェック・ボックスを選択します。

      • プロジェクトの出力ディレクトリ

      • プロジェクトのソースパス

      • プロジェクトの依存性

    11. ナビゲータで、「ファイル・グループ」「プロジェクトの出力」「フィルタ」の順に開きます。

      図6-14 「EARデプロイメント・プロファイルのプロパティの編集」ダイアログ

      図6-14の説明が続きます
      「図6-14 「EARデプロイメント・プロファイルのプロパティの編集」ダイアログ」の説明
    12. 「フィルタ」ウィンドウの「フィルタ」タブで、次のフォルダが選択されていることを確認します。

      • META-INF(およびそのコンテンツ)

      • oracle (およびそのコンテンツ)

    13. 「JARオプション」ウィンドウで、「Manifestファイルを含める」項目を選択解除します。

    14. 「OK」をクリックします。

    15. 「プロジェクト・プロパティ」ダイアログで、「OK」をクリックします。

  18. EARのライブラリ依存性を構成します。「デプロイ用に選択されたライブラリ」ペインで選択されている項目がないことを確認してください。

    図6-15 「EARデプロイメント・プロファイルのプロパティの編集」ダイアログ

    図6-15の説明が続きます
    「図6-15 「EARデプロイメント・プロファイルのプロパティの編集」ダイアログ」の説明
  19. adf-config.xmlファイルを構成します。ADFベースのアプリケーションをJDeveloperからデプロイする際、メタデータがデプロイされるMDSパーティションを選択するよう求めるダイアログがあります。このアプリケーションから生成されるEARファイルがWLSコンソールからデプロイされる場合、特定のMDSパーティション・エントリをadf-config.xmlファイルで指定する必要があります。この場合、adf-config.xmlファイルに、例6-1に示されるエントリが含まれていることを確認します。adf-config.xmlファイルは、「アプリケーション・リソース」→「ディスクリプタ」→左パネルの下部の「ADF META-INF」セクションにあります。

  20. weblogic-application.xmlファイルを構成します。weblogic-application.xmlファイルのコンテンツが例6-2に示されているとおりであることを確認します。

  21. アプリケーションをデプロイします。EARのデプロイメントを完了するには、「デプロイメント構成」ダイアログの「パーティション名」ドロップダウンでessUserMetadataを選択し、「デプロイ」をクリックします。

    図6-16 「Oracleデプロイメント構成」ダイアログ

    図6-16の説明が続きます
    「図6-16 「Oracleデプロイメント構成」ダイアログ」の説明

例6-1 adf-config.xmlファイルのコンテンツ

<?xml version="1.0" encoding="UTF-8" ?>
<adf-config xmlns="http://xmlns.oracle.com/adf/config">
    <adf-mds-config xmlns="http://xmlns.oracle.com/adf/mds/config">
        <mds-config xmlns="http://xmlns.oracle.com/mds/config"           version="11.1.1.000">
            <persistence-config>
                <metadata-namespaces>
                    <namespace path="/oracle/apps/ess/custom"                       metadata-store-usage="ess_custom_metadata"/>
                </metadata-namespaces>
                <metadata-store-usages>
                    <metadata-store-usage id="ess_custom_metadata"                       deploy-target="true" default-cust-store="true">
                        <ns3:metadata-store                      class-name="oracle.mds.persistence.stores.db.DBMetadataStore"                     xmlns:ns3="http://xmlns.oracle.com/mds/config">
                            <ns3:property name="repository-name"                               value="mds-ESS_MDS_DS" />
                            <ns3:property name="partition-name"                               value="essUserMetadata" />
                            <ns3:property name="jndi-datasource"                               value="jdbc/mds-ESS_MDS_DS" />
                        </ns3:metadata-store>
                    </metadata-store-usage>
                </metadata-store-usages>
            </persistence-config>
        </mds-config>
    </adf-mds-config>
</adf-config>

例6-2 weblogic-application.xmlファイルのコンテンツ

<?xml version = '1.0' encoding = 'UTF-8' ?>
<weblogic-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                                                                                                                               xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-application               http://xmlns.oracle.com"                                 xmlns="http://xmlns.oracle.com/weblogic/weblogic-application">
<listener>
   <listener-class>oracle.mds.lcm.weblogic.WLLifecycleListener</listener-class>
</listener>
<library-ref>  
   <library-name>oracle.ess.thin.client</library-name>
</library-ref>	
</weblogic-application>

6.4 JDeveloperを使用したEJBおよびそのジョブ定義メタデータの作成および構成

EJBおよびそのジョブ定義メタデータの作成および構成にJDeveloperを使用します。

次のステップは、各方法について説明しています。

  • Oracle Enterprise Schedulerのジョブ実装要件に準拠する単純な同期EJBの作成

  • EJBジョブ定義メタデータの作成およびエンタープライズ・アプリケーションの一部としてのデプロイ

  1. セッションBeanを作成します。「新規ギャラリ」ダイアログで、「セッションBean」を選択し新規EJBを作成します(図6-17を参照)。

    図6-17 「新規ギャラリ」ダイアログ

    図6-17の説明が続きます
    「図6-17 「新規ギャラリ」ダイアログ」の説明
  2. セッションBeanを構成します。「EJB名」フィールドにEJB名を入力し、「マップされた名前」フィールドにマップされた名前を入力します(図6-18を参照)「次へ」をクリックして続行します。

    図6-18 「セッションBean作成」ダイアログ - ステップ2/5

    図6-18の説明が続きます
    「図6-18 「セッションBean作成」ダイアログ - ステップ2/5」の説明
  3. セッションBeanビジネス・インタフェースを構成します。「リモート・インタフェースの実装」チェック・ボックスが選択されていること、およびoracle.as.scheduler.RemoteExecutable「リモート・インタフェース」フィールドのクラスとして設定されていることを確認します(図6-19を参照)。「次へ」をクリックして、「終了」ステップに進みます。

    図6-19 「セッションBean作成」ダイアログ - ステップ4/5

    図6-19の説明が続きます
    「図6-19 「セッションBean作成」ダイアログ - ステップ4/5」の説明
  4. 生成されたセッションBeanを構成します。生成されたセッションBeanが、RemoteExecutableインタフェースで定義されるexecuteメソッドを実装していることを確認します。

    図6-20 生成されたセッションBeanの構成

    図6-20の説明が続きます
    「図6-20 生成されたセッションBeanの構成」の説明
  5. セッションBeanの実装を完了します。executeメソッドを実装することで、Beanが完了していることを確認します。

    図6-21 セッションBeanの実装の完了

    図6-21の説明が続きます
    「図6-21 セッションBeanの実装の完了」の説明
  6. ejb-jar.xmlファイルに宣言が含まれていることを確認します(例6-3を参照)。
  7. weblogic-ejb-jar.xmlファイルに宣言が含まれていることを確認します(例6-4を参照)。

    これにより、EJBジョブ・タイプを使用してOracle Enterprise Schedulerによって起動できるEJBの作成に使用されるステップが完了します。

    次の2つのステップは、JDeveloperを使用してEJBジョブ定義を作成する方法を説明しています。

  8. EJBジョブ定義メタデータを作成します。「新規ギャラリ」ダイアログで、「エンタープライズ・スケジューラ・メタデータ」の下の「ジョブ定義」を選択し、入力します(図6-22を参照)。

    図6-22 「ジョブ定義の作成」ダイアログ

    図6-22の説明が続きます
    「図6-22 「ジョブ定義の作成」ダイアログ」の説明
  9. ジョブ定義のシステム・プロパティを構成します。システム・プロパティの追加ダイアログの「初期値」フィールドでEssNativeHostingAppを指定し、「名前」ドロップダウンからシステム・プロパティSYS_effectiveApplicationを選択します(図6-23を参照)。

    図6-23 「システム・プロパティの追加」ダイアログ

    図6-23の説明が続きます
    「図6-23 「システム・プロパティの追加」ダイアログ」の説明

    処理を繰り返し、SYS_EXT_jndiMappedNameプロパティがjndiNameの初期値で構成されていることを確認します。また、アプリケーションがESSAPP以外のサーバーにデプロイされている場合、SYS_EXT_jndiProviderUrlのようなプロパティを追加します。

    図6-24 「ジョブ定義」タブ

    図6-24の説明が続きます
    「図6-24 「ジョブ定義」タブ」の説明

例6-3 ejb-jar.xmlファイルのコンテンツ

<?xml version = '1.0' encoding = 'UTF-8' ?>
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0."
         version="3.0" xmlns="http://java.sun.com/xml/ns/javaee">
  <enterprise-beans>
     <session>
        <description>Simple Session Bean</description>
        <ejb-name>SimpleSession</ejb-name>                    <ejb-class>oracle.com.samples.ess.thinclient.SimpleSessionBean
        </ejb-class>
        <session-type>Stateless</session-type>
        <transaction-type>Container</transaction-type>
        <security-identity>
           <use-caller-identity/>
        </security-identity>	
     </session>  
   </enterprise-beans>	
</ejb-jar>

例6-4 weblogic-ejb-jar.xmlファイルのコンテンツ

<?xml version = "1.0" encoding = 'UTF-8' ?>
<weblogic-ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                                xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar               http://xmlns.oracle.com"
             xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar">
  <weblogic-enterprise-bean>				  
     <ejb-name>SimpleSession</ejb-name>
     <stateless-session-descriptor>
        <business-interface-jndi-name-map>
           <business-remote>oracle.as.scheduler.RemoteExecutable</business-remote>
           <jndi-name>ejb/simpleSessionBean</jndi-name>
        </business-interface-jndi-name-map>
      </stateless-session-descriptor>
   </weblogic-enterprise-bean>
</weblogic-ejb-jar>