13 アセンブルおよびデプロイ

Oracle Stream Analyticsアプリケーションをデプロイして実行するには、アプリケーション・ファイルをOSGiバンドルにアセンブルして、そのOSGiバンドルをOracle Stream Analyticsサーバー上のドメインにデプロイします。デプロイされたアプリケーションは、デプロイ先のドメインでクライアント・リクエストを処理します。

アプリケーションのアセンブルおよびデプロイは、Oracle JDeveloperで、Oracle Stream Analytics Visualizerを使用して、手動で行うことができます。この章では、OSGiバンドルにラップされたアプリケーションを手動でアセンブルおよびデプロイする方法について説明します。

この章の内容は次のとおりです。

13.1 OSGiバンドル

OSGiバンドルには1つ以上のJARファイルが含まれ、そこにOracle Stream Analyticsアプリケーションとそのサービスおよびリソース(依存関係)を定義するJavaクラス、パッケージ、ライブラリが含まれています。

アプリケーションのサービスおよびリソースは、他のバンドルで使用可能にできます。他のバンドル・アプリケーションによって使用されるサービスおよびリソースのみを含むOSGiバンドルを作成することもできます。たとえば、OSGiバンドルには、同じドメインで実行される他のアプリケーションによってアクセスされるJDBCドライバを含めることができます。

アプリケーションとそのリソースを含むOSGiバンドルがアプリケーション・バンドル、リソースのみを含むOSGiバンドルがアプリケーション・ライブラリ・バンドルです。

OSGiアプリケーション・バンドルに含まれるファイルは、次のとおりです。

  • イベント・タイプやイベントBeanなど、アプリケーション・コンポーネントを実装したコンパイル済Javaクラス・ファイル。

  • コンポーネント構成を含む1つ以上のOracle Stream Analytics構成ファイル。

    構成ファイルは、デプロイするOSGiバンドルJARファイルのMETA-INF/wlevsディレクトリに置きます。例: /Oracle/Middleware/my_oep/user_projects/domains/<domain>/<server>/applications/<OSGi_Bundle_Symbolic_Name>

    アプリケーションがすでにドメイン・ディレクトリに存在する場合、構成ファイルはアプリケーション・ファイルと同じディレクトリに展開する必要があります。

  • アプリケーションのすべてのコンポーネントと、各コンポーネントが相互にどのように接続されているかを記述したアセンブリ・ファイル。

    OSGiバンドルJARファイルのMETA-INF/springディレクトリに、アセンブリ・ファイルを置きます。

  • JARのコンテンツを記述するMANIFEST.MFファイル。このファイルを使用して、アプリケーションのリソースを他のバンドルで使用可能にできます。

次のディレクトリ構造に、OSGiアプリケーション・バンドルの構造を示します。

図13-1 OSGiアプリケーション・バンドルの構造

図13-1の説明が続きます
「図13-1 OSGiアプリケーション・バンドルの構造」の説明

13.2 アプリケーションの依存関係

アプリケーションはインポートしたパッケージおよびライブラリに依存し、パッケージとライブラリは、同じドメインで実行されている他のアプリケーションと共有できます。

OSGiバンドルの依存関係は、MANIFEST-MFで次のように指定します。

  • Import-Package属性を使用して、インポートしたパッケージとライブラリをリストします。

  • Export-Package属性を使用して、他のOSGiバンドルからアクセスする必要のあるパッケージをリストします。これらのパッケージは、アプリケーションOSGiバンドルにはバンドルされず、またバンドルとともにデプロイもされませんが、Oracle Stream Analyticsサーバーのアプリケーション・ライブラリ・ディレクトリにデプロイされます。

13.3 アプリケーション・ライブラリ

アプリケーション・ライブラリは、同じドメインで実行されている他のアプリケーションでサービスとリソースを使用できるようにします。アプリケーション・ライブラリを使用すると、ドライバや外部ステージなどの機能をアプリケーションに追加できます。

外部ステージとは、別のOracle Stream Analyticsアプリケーションにあるステージです。

アプリケーション・ライブラリは、組込みJARファイルとしてプロジェクトに追加することもできますが、OSGIアプリケーション・ライブラリを使用すると次のような利点があります。

  • ライブラリの更新バージョンをデプロイするなど、アプリケーション・アセンブリとメンテナンス活動が容易になります。

  • アーティファクトを再利用できます。

  • サーバー・ディスク領域使用量を削減できます。

Oracle Stream Analyticsサーバーのアプリケーション・ライブラリは、ライブラリおよびライブラリ拡張ディレクトリにデプロイします。

13.3.1 ライブラリ・ディレクトリ

デフォルトでは、Oracle Stream Analyticsサーバー・ライブラリのディレクトリはDOMAIN_DIR/servername/modulesです。例:

/Oracle/Middleware/my_oep/user_projects/domains/mydomain/myserver/modules

Oracle Stream Analyticsがライブラリ・ディレクトリのライブラリをロードするのは、ライブラリ拡張ディレクトリのコンポーネントより後、Oracle Stream Analyticsアプリケーションより前です。ライブラリがJDBCドライバなどのドライバである場合、正しい順序でアクティブ化されるようにライブラリ拡張ディレクトリに格納する必要があります。

13.3.2 ライブラリ拡張ディレクトリ

デフォルトでは、Oracle Stream Analyticsサーバーのライブラリ拡張ディレクトリはDOMAIN_DIR/servername/modules/extです。次に例を示します。

/Oracle/Middleware/my_oep/user_projects/domains/mydomain/myserver/modules/ext

Oracle Stream Analyticsでは、Oracle Stream Analyticsサーバーのコア・モジュールと同時に、最初にライブラリ拡張ディレクトリのライブラリをロードします。ドライバをアクティブ化して先に古いドライバをオーバーライドする、または別のドライバにアクセスするには、ライブラリ拡張ライブラリにドライバを置きます。ライブラリがドライバでない場合は、ライブラリ・ディレクトリに置きます。

13.4 デプロイメント順序

Oracle Stream Analyticsサーバーでは、Oracle Stream Analyticsサーバーの起動時に、次の順序でコンポーネントをロードします。

  1. ライブラリ拡張ディレクトリのライブラリをロード。

  2. ライブラリ・ディレクトリのライブラリをロード。

  3. Oracle Stream Analyticsアプリケーションをロード。

Oracle Stream Analyticsサーバーでは、ライブラリ名の字句順序に基づいて、ライブラリ拡張ディレクトリとライブラリ・ディレクトリの両方からライブラリをロードします。字句順序には、相対ディレクトリ名に加えてJARファイル名も含まれます。次に例を示します。

  • modules/a.jarmodules/b.jarの前に開始されます。

  • 字句順序で0/my.jarmy.jarの前になるため、modules/0/my.jarmodule/my.jarの前に開始されます。

このルールに従って、単にライブラリ拡張ディレクトリまたはライブラリ・ディレクトリのいずれかの適切に名付けられたサブディレクトリにJARファイルを整理することで、Oracle Stream AnalyticsサーバーがJARファイルをデプロイする順序を制御できます。

アプリケーションをデプロイするとすぐに、Oracle Stream Analyticsサーバーはアプリケーション構成履歴を作成し、構成されたアダプタがイベントのリスニングを開始します。

13.5 構成履歴

Oracle CQLルールまたはOracle Stream Analytics高可用性アダプタ構成に対して行った構成の変更は、履歴に記録されます。

Oracle Stream Analytics Visualizerまたはwlevs.Adminコマンド行ツールを使用して、これらの変更を表示し、ロールバックする(変更を元に戻す)ことができます。

変更履歴をファイルにエクスポートし、そのファイルを使用すると、実行時に行った変更でアプリケーション・ソースを更新できます。

13.6 appCによるOSGiバンドルのアセンブル

appCユーティリティは、アプリケーションを作成、検証、コンパイルできるコマンド行ツールです。

Oracle Stream Analyticsプロジェクトを構成する各種のファイルを作成し、変更できます。appCツールはspring-wlevs-v12_1_3_0.xsdspring-beans.xsdspring-osgi.xsdの各スキーマ・バージョンを基準にして検証を行います。このコマンドが機能するようにするには、JDKをインストールする必要があります(Javaコンパイラに依存するため)。

注意:

appCツールは、複数のコンポーネント構成ファイルや複数のアセンブリ・ファイルに対応していません。その場合は、bundle.shスクリプトまたはOracle JDeveloperを使用してください。

appCツールは、構成ファイル、アセンブリ・ファイル、および作成されたOSGiバンドルを検証し、Oracle CQL検証と、OSGiバンドルが正常にデプロイされたことを確認します。

注意:

現在、appCはスキーマ検証しか実行せず、詳細なセマンティック検証は実行しません。カスタム・アダプタ・プロバイダは検証されません。

appC.jarファイルは、/Oracle/Middleware/my_oep/binにあります。

構文

java -jar appC.jar -cmd [cmd option] -basedir <path to workspace> [arguments]

cmdオプション

-cmd引数を使用して実行するコマンド・オプションを次の中から選択します。

buildAll: テンプレートを作成してマニフェストを生成し、コンポーネント構成ファイルとアセンブリ・ファイルを検証します。

createTemplate: 入力XMLファイルまたはテンプレートXMLファイルを使用してワークスペース・ファイル構造を作成します。

generateManifest: 入力ソース・ファイルをコンパイルし、生成されたクラス・ファイルに基づいてOSGiマニフェスト・ファイルを生成します。

validate: コンポーネント構成ファイルとアセンブリ・ファイルを、そのスキーマに照らして検証します。

arguments

-cmd: コマンド・オプションのいずれかを実行します。-basedirでルート・ディレクトリを指定し、プロジェクト・ワークスペースのルートを指定します。

-help: コマンド行のコマンド・オプションと引数について、ヘルプ情報を出力します。

-basedir: appCユーティリティを使用する前に設定するプロジェクト・ワークスペースのルート。

-cp: バンドル・クラスのコンパイルに使用するクラス・パス。

-config: コンポーネント構成ファイルのフル・パス。

-context: アセンブリ・ファイルのフル・パス。

-manifest: オプションの入力マニフェスト・ファイル。マニフェスト・ファイルを指定しない場合は、appCユーティリティによって生成されます。

注意:

マニフェストを生成するためにOracle Stream Analyticsで使用される基礎となるBNDパッケージは、リフレクション用法を検索できません。

-name: プロジェクトの名前(OSGiバンドル名)。

-destdir: 出力JARファイルのディレクトリのフル・パス。デフォルトはbasedirです。

-srcdir: ソース・ルート・ディレクトリのフル・パス。

-excludedirs: ソース・ツリーから除外するディレクトリの名前のカンマ区切りリスト。これらのディレクトリは、ソース・ディレクトリ・ルート(srcdir)のサブディレクトリです。

入力ソース・ファイルをコンパイルし、OSGi MANIFEST.MFファイルを生成します。

java -jar appC.jar -cmd generateManifest -basedir

テンプレートを作成してMANIFEST.MFファイルを生成し、コンポーネント構成ファイルとアセンブリ・ファイルを検証します。

java -jar appC.jar -cmd buildALL -basedir

13.7 bundle.shによるOSGiバンドルのアセンブル

Oracle Stream Analyticsにはbundler.sh UNIXシェル・スクリプトが用意されており、これを使用するとサービスとパッケージを他のバンドルに提供するOSGiバンドルを手動でアセンブルできます。

たとえば、JDBCドライバをOSGiバンドルJARファイルでデプロイすると、他のOSGiアプリケーションで使用できるようになります。

注意:

Windowsサポートはありません(bundler.cmdはありません)。

bundle.shシェル・スクリプトは、ソースJARファイルを読み取り、ターゲットJARファイルを作成します。ターゲットJARファイルには、ソースJARの内容と、適切なバンドル関連エントリを指定したMANIFEST.MFファイルが含まれています。ソース・アーカイブで検出されたすべてのJavaパッケージは、ターゲット・バンドルにエクスポートされます。

bundler.shを使用すると、バンドル・アクティベータも生成できます。バンドル・アクティベータは、JARファイル内の1つ以上のクラスをインスタンス化し、インスタンス化された各オブジェクトをOSGiサービスとして登録します。この機能を利用して、コンポーネント・バンドルは実行時に特定のファクトリ・クラスの複数バージョンにアクセスし、これを操作できます。

OSGiバンドルを手動でアセンブルするには、次の手順に従います。

注意:

次に記述したステップの多くを実行できるbuild.xml Antファイルについては、HelloWorldサンプル・ソース・ディレクトリを参照してください。

build.xmlファイルは、Oracle/Middleware/my_oep/ oep/examples/source/applications/helloworldにあります。

13.7.1 ファイルの準備と編成

アプリケーションまたはライブラリをOSGiバンドルに手動でバンドルするには、まずバンドルするファイルの準備と編成が必要です。簡略化のために、この手順では必要なアーティファクトを含む一時ディレクトリを作成し、その後でこの一時ディレクトリのコンテンツをJARファイルに構築します。これが推奨されるアプローチですが、この方法でアプリケーションをアセンブルすることは必須ではありません。

  1. outputなどの空のディレクトリを作成します。
    prompt> mkdir output
    
  2. すべてのアプリケーションJavaファイルをoutputディレクトリにコンパイルします。
  3. output/META-INF/springディレクトリを作成します。
  4. アプリケーションのコンポーネントと各コンポーネントの接続が記述されたEPNアセンブリ・ファイルをoutput/META-INF/springディレクトリにコピーします。
  5. output/META-INF/wlevsディレクトリを作成します。
  6. プロセッサやアダプタなど、アプリケーションのコンポーネントを構成するXMLファイルをoutput/META-INF/wlevsディレクトリにコピーします。
  7. バンドルに関する情報を含むMANIFEST.MFファイルを作成します。

    MANIFEST.MFファイルの作成を参照してください。

  8. Oracle Stream AnalyticsアプリケーションからサードパーティJARファイルにアクセスする必要がある場合は、サードパーティJARファイルの追加を参照してください。
  9. outputディレクトリのコンテンツを含むJARファイルを作成します。

    デフォルト・マニフェスト・ファイルではなく、必ず前のステップで作成したMANIFEST.MFファイルを指定します。

    JARファイルには任意の名前を付けることができます。Oracle Stream Analyticsのサンプルでは、Javaパッケージの名前とバージョンを組み合せた次のようなJARファイル名を使用します。

    com.bea.wlevs.example.helloworld_1.0.0.0.jar
    

    サーバーにデプロイされているバンドルを明確にするため、同じようなネーミング・ルールを使用することを検討してください。

  10. アプリケーションが外部ステージに依存している場合は、外部ステージの参照を参照してください。

13.7.2 MANIFEST.MFファイルの作成

MANIFEST.MFファイルの構造およびコンテンツはOSGi Frameworkによって指定されます。ファイル内の多くのヘッダーの値はアプリケーションまたはビジネスに固有ですが、多くのヘッダーはOracle Stream Analyticsで必須です。

特に、MANIFEST.MFファイルでは次のものが定義されます。

  • アプリケーション名: Bundle-Nameヘッダーで指定されます。

  • シンボリック・アプリケーション名: Bundle-SymbolicNameヘッダーで指定されます。

    wlevs.AdminユーティリティやJMXサブシステムなど、多くのOracle Stream Analyticsツールは、アプリケーションを参照する場合にバンドルのシンボリック名を使用します。

  • アプリケーションのバージョン: Bundle-Versionヘッダーで指定されます。

  • インポートされたパッケージ: Import-Packageヘッダーで指定されます。

    Oracle Stream Analyticsでは、少なくとも次のパッケージをインポートする必要があります。

    Import-Package:  
     com.bea.wlevs.adapter.defaultprovider;version="11.1.1",
     com.bea.wlevs.ede;version="11.1.1",
     com.bea.wlevs.ede.api;version="11.1.1",
     com.bea.wlevs.ede.impl;version="11.1.1",
     org.osgi.framework;version="1.3.0",
     org.springframework.beans.factory;version="2.5.6",
     org.apache.commons.logging;version="1.1.0",
     com.bea.wlevs.spring;version="11.1.1",
     com.bea.wlevs.util;version="11.1.1",
     org.springframework.beans;version="2.5.6",
     org.springframework.util;version="2.0",
     org.springframework.core.annotation;version="2.5.6",
     org.springframework.beans.factory;version="2.5.6",
     org.springframework.beans.factory.config;version="2.5.6",
     org.springframework.osgi.context;version="1.2.0",
     org.springframework.osgi.service;version="1.2.0"
    
  • エクスポートされたパッケージ: Export-Packageヘッダーで指定されます。このヘッダーは、1つまたは複数のアプリケーション・クラスを、デプロイされている他のアプリケーションと共有する必要がある場合にのみ指定します。一般的な例には、イベントBeanの共有などがあります。

    可能な場合は、実装クラス自体のかわりにインタフェースのみが含まれるパッケージをエクスポートします。エクスポートされたクラスが他のアプリケーションで使用中である場合、クラスをエクスポートしているアプリケーションを完全にアンデプロイすることはできません。

    エクスポートされたパッケージはサーバー全体で利用されるため、必ずサーバー全体で一意の名前を使用します。

HelloWorldサンプル・アプリケーションのMANIFEST.MFファイルは、次のとおりです。

注意:

Oracle WebLogic ServerコンテナBundle-ManifestVersion 2にデプロイするには、Oracle Stream Analyticsで次のMANIFEST.MF設定が必要です。これは、Oracle Stream AnalyticsがOracle WebLogic ServerコンテナでFelixを使用しているためです。

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Version: 1.0.0
Bundle-Vendor: Oracle Corporation
Bundle-Copyright: Copyright (c) 2006-2009 by Oracle.
Export-Package: com.bea.wlevs.event.example.helloworld;version="12.1.2",
 com.bea.wlevs.example.helloworld;version="12.1.2"
Import-Package: com.bea.wlevs.configuration;version="12.1.2"
  com.bea.wlevs.ede.api;version="12.1.2",
  com.bea.wlevs.ede.impl;version="12.1.2",
  com.bea.wlevs.ede.spi;version="12.1.2",
  com.bea.wlevs.ede;version="12.1.2",
  com.bea.wlevs.management.spi;version="12.1.2",
  com.bea.wlevs.spring.support;version="12.1.2",
  com.bea.wlevs.spring;version="12.1.2",
  com.bea.wlevs.util;version="12.1.2",
  org.apache.commons.logging;version="1.1.0",
  org.springframework.beans.factory.config;version="2.5.6",
  org.springframework.beans.factory;version="2.5.6",
  org.springframework.beans;version="2.5.6",
  org.springframework.core.annotation;version="2.5.6",
  org.springframework.osgi.context;version="1.2.0",
  org.springframework.osgi.extensions.annotation;version="1.2.0",
  org.springframework.osgi.service;version="1.2.0",
  org.springframework.util;version="2.5.6"
Bundle-Name: example.helloworld
Bundle-Description: OCEP example helloworld
Bundle-SymbolicName: helloworld

13.7.3 サードパーティJARファイルの追加

Oracle Stream Analyticsアプリケーションの作成時には、既存のサードパーティJARファイル内のレガシー・ライブラリにアクセスする必要がある場合があります。このレガシー・コードへのアクセスを保証するには、次の方法があります。

Bundle-Classpath

Oracle Stream AnalyticsアプリケーションJARファイルにサードパーティJARファイルをパッケージ化することをお薦めします。JARファイルは、任意の場所に保存できます。

注意:

このアプローチでは、JARファイルのロード順序をほとんど制御できず、依存関係の競合が発生する可能性があります。このため、Oracle Stream Analyticsサーバー・アプリケーション・ライブラリの使用をお薦めします。

MANIFEST.MFファイルにBundle-Classpathヘッダーを追加し、アプリケーション・クラス・パスを更新することにより、Oracle Stream AnalyticsアプリケーションによるサードパーティJARファイルでのクラスの検出を保証する必要があります。Bundle-Classpathをクラスおよびリソースの検索先となるJARファイル・パス名のカンマ区切りのリストに設定します。バンドル自身を指定するには、ピリオド(.)を使用します。次に例を示します。

Bundle-Classpath: ., commons-logging.jar, myExcitingJar.jar, myOtherExcitingJar.jar

ネイティブ・ライブラリにアクセスする必要がある場合は、ネイティブ・ライブラリもJARファイルにパッケージ化し、MANIFEST.MFファイルのBundle-NativeCodeヘッダーを使用してJARでのその場所を指定する必要があります。

オペレーティング・システム・パス

アプリケーション・ライブラリとしてパッケージすることを選択しないネイティブ・コード・ライブラリに依存するアプリケーション・ライブラリを作成できます。この場合、Oracle Stream Analyticsサーバーのオペレーティング・システム・パス(bootclasspath)にネイティブ・コード・ライブラリを配置できます。サーバーが起動すると、このネイティブ・コードを呼び出す必要があるライブラリ・バンドルがネイティブ・コードをロードします。

-Xbootclasspath

JDBCドライバなどのOracle Stream Analytics,にデプロイされているすべてのアプリケーションで使用されるライブラリがJARファイルに含まれている場合は、サーバー・インスタンスの起動に使用するスクリプト内のjavaコマンドに-Xbootclasspath/aオプションを指定することで、JARファイルをサーバーのブート・クラス・パスに追加できます。

注意:

このアプローチでは、JARファイルのロード順序をほとんど制御できず、依存関係の競合が発生する可能性があります。Oracle Stream Analyticsサーバー・アプリケーション・ライブラリの使用をお薦めします。詳細は、オペレーティング・システム・パスを参照してください。

サーバー起動スクリプト名はstartwlevs.cmd (Windows)またはstartwlevs.sh (UNIX)で、スクリプトはドメイン・ディレクトリ内のサーバー・ディレクトリにあります。即時利用可能なサンプル・ドメインはORACLE_CEP_HOME/ocep_11.1/samples/domainsにあり、ユーザー・ドメインはORACLE_CEP_HOME/user_projects/domainsにあります。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Stream Analyticsの主なインストール・ディレクトリです。

13.7.4 -Xbootclasspathを使用したサードパーティJARファイルへのアクセス

wlevs_2.0.jarファイルを実行するjavaコマンドに-Xbootclasspath/aオプションを追加して、起動スクリプトを更新します。システム全体でアクセスするサードパーティJARファイルのフル・パス名に-Xbootclasspath/aオプションを設定します。

たとえば、デプロイされているすべてのアプリケーションからe:\jars\myExcitingJAR.jarというJARファイルにアクセスできるようにする場合は、起動スクリプトのjavaコマンドを次のように更新します。更新箇所を太字で示します(実際には、コマンドは1行に1つにする必要があります)。

%JAVA_HOME%\bin\java -Dwlevs.home=%USER_INSTALL_DIR% -Dbea.home=%BEA_HOME%
    -Xbootclasspath/a:e:\jars\myExcitingJAR.jar 
    -jar "%USER_INSTALL_DIR%\bin\wlevs_2.0.jar" -disablesecurity %1 %2 %3 %4 %5 %6 

13.7.5 外部ステージの参照

別のOracle Stream Analyticsアプリケーション内にあるステージを参照できます。別のアプリケーションのステージは、外部ステージと呼ばれます。外部ステージに依存しているアプリケーションをアセンブルするとき、クラス・パス依存関係に注意してください。図13-2に示したアプリケーションの依存関係グラフを考慮してください。

図13-2 外部ステージ依存関係グラフ

図13-2の説明が続きます
「図13-2 外部ステージ依存関係グラフ」の説明

この例では、アプリケーションAはアプリケーションBに、アプリケーションBはアプリケーションCに、アプリケーションCはアプリケーションAに依存します。アプリケーションCは、MarketEventクラスを宣言してエクスポートします。アプリケーションAとBは、アプリケーションCによって提供されたMarketEventクラスをインポートします。この例では、OSGiバンドルAとBのMANIFEST.MFファイルにRequire-Bundle: Cが含まれている必要があります。

次の点に注意してください。

  • 外部ステージを再デプロイする場合、そのアプリケーションまたは外部ステージに依存するすべての外部ステージを再デプロイする必要があります。

    たとえば、アプリケーションBを再デプロイする場合、アプリケーションAを再デプロイする必要があります。

  • 1つの外部ステージと他のステージの間にクラス・パスの依存関係がある場合、共有クラスを宣言し、エクスポートする外部ステージをデプロイするときは、共有クラスをインポートするすべての外部ステージを再デプロイする必要があります。

    たとえば、アプリケーションCを再デプロイする場合、アプリケーションC (MarketEvent)とクラス・パスの依存関係がアプリケーションAとBも再デプロイする必要があります。

13.7.6 アクティブ化するOSGiバンドルのアセンブル

ファイルの準備と編成が済んだら、bundle.shシェル・スクリプトを使用してそのファイルをOSGiバンドルにアセンブルし、アクティベータ・クラスを定義できます。bundle.shスクリプトは、 /Oracle/Middleware/my_osa/binディレクトリにあります。

13.7.6.1 コマンドの場所、構文、引数

bundler.shスクリプトは、/Oracle/Middleware/my_oep/binディレクトリにあります。bundler.shコマンドの構文を次に示します。表13-1は、コマンド引数の説明です。

bundler -source JAR -name NAME -version VERSION
[-factory CLASS+] [-service INTERFACE+] [-fragmenthost HOST]
[-stagedir PATH] [-targetdir PATH]
[+import PACKAGE|REGEX+] [-imods REGEX;MODS+] [-import PACKAGE+]
[+export PACKAGE|REGEX+] [-emods REGEX;MODS+]
[-dimport PACKAGE+] [-explode] [-verbose]

表13-1 bundler.shのコマンド行オプション

引数 説明

-source JAR

バンドルするソースJARファイルのパス。

-name NAME

バンドルのシンボリック名。ターゲットJARファイル名のルートは名前の値から導出されています。

-version VERSION

バンドル・バージョン番号。すべてのエクスポートされたパッケージは、この値のバージョン属性で修飾されます。ターゲットJARファイル名には、バージョン番号が含まれています。

-factory CLASS+

OSGiサービスとしてインスタンス化および登録される1つ以上のファクトリ・クラスのスペース区切りリストを指定するオプションの引数。各サービスは、OSGiサービス・レジストリに名前(-name)とバージョン(-version)プロパティとともに登録されます。

この引数は-fragmenthost引数とは互換性がありません。

-service INTERFACE+

各ファクトリ・オブジェクト・サービス登録のオブジェクト・クラスとして使用する1つ以上のJavaインタフェースのスペース区切りリストを指定するオプションの引数。インタフェース名を指定していない場合、または指定したインタフェース数がファクトリ・クラス数と一致していない場合、各ファクトリ・オブジェクトはファクトリ・クラス名で登録されます。

-fragmenthost HOST

結果のバンドルがフラグメント・ハンドルであることを示し、ホスト・バンドルのシンボリック名を指定するオプションの引数。

この引数は-factory引数とは互換性がありません。

-stagedir PATH

ターゲットJARファイル作成時の一時ファイルの書込み先を指定するオプションの引数。

デフォルト: ./bundler.tmp

-targetdir PATH

生成されたバンドルJARファイルの場所を指定するオプションの引数。

デフォルト: 現在の作業ディレクトリ(.)

+import PACKAGE|REGEX+

1つ以上のパッケージ、またはマニフェストImport-Package属性から除外するパッケージを選択するための通常表現のスペース区切りリスト。

デフォルトでは、(java.*を除く)すべての依存パッケージがインポートされます。

-imods REGEX;MODS+

インポート修飾子は通常表現と一致するパッケージに適用されます。

-import PACKAGE

マニフェストImport-Package属性に含まれる追加パッケージ。

指定したインポート修飾子は適用されません。

+export PACKAGE|REGEX+

1つ以上のパッケージ、またはマニフェストExport-Package属性から除外するパッケージを選択するための通常表現のスペース区切りリスト。

デフォルトでは、すべてのバンドル・パッケージがエクスポートされます。

-emods REGEX;MODS+

エクスポート修飾子は通常表現と一致するパッケージに適用されます。

-dimport PACKAGE+

マニフェストDynamicImport-Package属性に含まれる追加パッケージ。

-explode

このオプションのフラグでは、ソースJARの内容のターゲットJARファイルへの移動を指定します。

デフォルトでは、ソースJARはターゲットJARファイル内にネストされ、生成されたバンドル・マニフェストに適切なBundle-Classpath属性に組み込まれます。

–verbose

詳細出力を有効にするオプション・フラグ。

13.7.6.2 OSGiバンドルのアセンブル
  1. bundler.shスクリプトを実行して、OSGiバンドルを作成します。コマンドの場所、構文、引数を参照してください。

    次のbundle.shコマンドは、bundler.shを使用してOracle JDBCドライバのOSGiバンドルを作成する方法を示しています。

    bundler.sh \
       -source C:\drivers\com.oracle.ojdbc14_11.2.0.jar \
       -name oracle12c \
       -version 12.1.3.0 \
       -factory oracle.jdbc.xa.client.OracleXADataSource oracle.jdbc.OracleDriver \
       -service javax.sql.XADataSource java.sql.Driver \
       -targetdir C:\stage
    

    -sourceオプションには、C:\driversディレクトリで見つかるOracleドライバであるJARファイルを指定します。生成されたバンドルJARの名前は、-name-version引数(oracle10g_11.2.0.jar)の連結で、C:\stageディレクトリに作成されます。バンドルJARに含まれるファイルは、次のとおりです。

      1465 Thu Jun 29 17:54:04 EDT 2006 META-INF/MANIFEST.MF
    1540457 Thu May 11 00:37:46 EDT 2006 com.oracle.ojdbc14_11.2.0.jar
       1700 Thu Jun 29 17:54:04 EDT 2006 com/bea/core/tools/bundler/Activator.class
    

    -factoryオプションには、バンドルがアクティブ化されるときにOSGiサービスとしてインスタンス化および登録される2つのファクトリ・クラスがあることを指定します。表13-2に示すように、各ファクトリ・クラスは別々のオブジェクト・クラスにあります。

    表13-2 ファクトリ・クラスおよびサービス・インタフェース

    ファクトリ・クラス サービス・インタフェース

    oracle.jdbc.xa.client.OracleXADataSource

    javax.sql.XADataSource

    oracle.jdbc.OracleDriver

    java.sql.Driver

    -serviceオプションでは、nameプロパティをoracle12cに設定し、versionプロパティの値を12.1.3.0に設定してサービスを登録します。次の例は、サービス登録時のOracle Stream Analyticsサーバーのログ・メッセージを示します。

    ...
    INFO: [Jun 29, 2006 5:54:18 PM] Service REGISTERED: { version=12.1.3.0, name=oracle12c, objectClass=[ javax.sql.XADataSource ], service.id=23 }
    INFO: [Jun 29, 2006 5:54:18 PM] Service REGISTERED: { version=12.1.3.0, name=oracle12c, objectClass=[ java.sql.Driver ], service.id=24 }
    INFO: [Jun 29, 2006 5:54:18 PM] Bundle oracle11g STARTED
    ...
  2. アプリケーション・ライブラリJARを該当するOracle Stream Analyticsサーバー・アプリケーション・ディレクトリにコピーします。

    1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置きます。

      ライブラリ拡張ディレクトリを参照してください。

    2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。

      「ライブラリ・ディレクトリ」を参照してください

  3. Oracle Stream Analyticsサーバーを停止し、起動します。

13.8 OSGiバンドルのデプロイ

Oracle Stream AnalyticsアプリケーションまたはライブラリをOSGiバンドルにアセンブルした後、Oracle Stream Analyticsサーバー・ドメインにデプロイします。アプリケーションのデプロイには、Oracle JDeveloper、Oracle Stream Analytics Visualizerおよびデプロイヤ・ユーティリティを使用できます。

この項では、デプロイヤ・ユーティリティの使用方法について説明します。

デプロイヤ・ユーティリティを使用して、スタンドアロンまたはマルチサーバー・ドメインのいずれかにアプリケーションをデプロイできます。グループへのデプロイが可能なのは、サーバーがマルチサーバー・ドメインの一部の場合(クラスタリングが有効の場合)のみです。サーバーがスタンドアロン・サーバー・ドメインの一部の場合(クラスタリングが無効の場合)、グループにはデプロイできません。

Oracle Stream Analyticsは、deployments.xmlファイルを使用して、デプロイ済のOSGiバンドルのリストを内部的に維持します。このファイルは、DOMAIN_DIR/servernameディレクトリにあります。DOMAIN_DIRは、メイン・ドメイン・ディレクトリであり、アプリケーションのデプロイ先となるサーバー・インスタンスに対応します。servernameは、実際のサーバーです。この情報はあくまでも参考として示しています。deployments.xmlファイルを手動で更新することはお薦めしません。

始める前に

アプリケーションをデプロイするOracle Stream AnalyticsインスタンスでJettyが構成されていることを確認してください。

コマンド・ウィンドウを開き、wlevsdeploy.jar JARファイルを含むようにCLASSPATH変数を更新します。このファイルは、次のディレクトリにあります。デプロイヤ・ユーティリティは、JARファイルの中にあります。

/Oracle/Middleware/my_osa/bin

デプロイヤ・ユーティリティを使用してOSGiバンドルをデプロイします。

OSGiバンドルが正常にインストールされ、初期化タスクが完了したら、Oracle Stream Analyticsでアプリケーションが起動され、アダプタ・コンポーネントで着信イベントがリスニングされます。

  1. bundle.shによるOSGiバンドルのアセンブルの説明に従って、OSGiバンドルをアセンブルします。

  2. コマンド・ウィンドウを開き、次のようにしてデプロイヤ・ユーティリティを実行します。すべて1行で記述してください。

    prompt> java -jar wlevsdeploy.jar -url http://host:port/wlevsdeployer 
        -user user -password password -install application_jar_file
    

    host: Oracle Stream Analyticsサーバーが実行中のコンピュータの名前。

    port: Oracle Stream Analyticsがリスニングするポート番号。デフォルト値は9002です。このポートは、Oracle Stream Analyticsドメインが記述されているDOMAIN_DIR/config/ファイルに指定されています。ポート番号は、ファイルの<Netio>要素の<Port>子要素の値です。

    <Netio>
      <Name>NetIO</Name>
      <Port>9002</Port>
    </Netio>
    

    user: Oracle Stream Analytics管理者のユーザー名。

    password: Oracle Stream Analytics管理者のパスワード。

    application_jar_file: OSGiバンドル。OSGiバンドルは、デプロイヤ・ユーティリティが実行される同じコンピュータに置かれている必要があります。たとえば、Oracle Stream Analyticsはホストariel上で実行中で、ポート9002でリスニングしており、管理者のユーザー名とパスワードがwlevs/wlevsであり、アプリケーションJARファイルmyapp_1.0.0.0.jar/applicationsディレクトリに置かれている場合、コマンドは次のようになります。すべて1行で記述してください。

    prompt> java -jar wlevsdeploy.jar -url http://ariel:9002/wlevsdeployer 
            -user wlevs -password wlevs -install /applications/myapp_1.0.0.0.jar
    

デプロイヤ・ユーティリティでは、OSGiバンドルの再開、中断、更新、アンインストールや、マルチサーバー・ドメインの指定されたグループへのOSGiバンドルのデプロイなどのためにここで記述する内容について、追加オプションが用意されています。