この付録では、PDK-Javaプロバイダの実装を、Oracle Application Serverやその他のJ2EEアプリケーション・サーバー上にデプロイするのに適した、移植可能なフォーマットに、手動でパッケージ化する方法を説明します。また、パッケージ化した結果のEARファイルをOracle Application Server環境にデプロイし、その後1つ以上のOracleAS Portalインスタンスに登録する方法も説明します。
注意: 通常は、Oracle JDeveloperに用意されているツールを使用してプロバイダをパッケージ化およびデプロイすることをお薦めします。ただし、なんらかの理由でプロバイダを手動でパッケージ化およびデプロイする必要がある場合に備えて、参照できる情報をこの付録で提供しておきます。 |
注意: この章全体にわたって、ORACLE_HOMEへの参照が記載されています。ORACLE_HOMEはOracleホームのフルパスを表し、どのOracleホームが参照されているかが自明な場合に使用されます。プロシージャで中間層、OracleAS Infrastructure、またはOracle Application Server Metadata Repositoryの各Oracleホームを区別する必要がある場合は、次の表記規則が使用されます。
|
プロバイダのパッケージ化およびデプロイに進む前に、次の基本的な概念を理解する必要があります。
WARファイルとEARファイルは、Oracle Application ServerのようなJ2EEアプリケーション・サーバーにアプリケーションをデプロイするのに使用します。WARファイルとEARファイルは、アプリケーションを実行するのに必要なコンポーネントのすべてを1つのファイルにカプセル化したものです。これらのファイルにより、アプリケーションのデプロイが非常に簡単で整合性がとれたものとなり、アプリケーションを開発からテストへ、テストから製品へと移行するときにエラーが発生する可能性が削減されます。
WARファイルは、Webアプリケーションを表し、Webアプリケーションのすべてのコンポーネントを含みます(Javaのライブラリやクラス、サーブレットの定義やパラメータ設定、JSPファイル、静的HTMLファイルおよびその他の必要なリソースを含む)。
EARファイルは、エンタープライズ・アプリケーションを表します。
PDK-Javaでは、1つのアダプタ・サーブレットの下に複数のプロバイダをデプロイできます。これらのプロバイダは、サービス識別子によって識別されます。新しいプロバイダをデプロイする場合は、プロバイダにサービス識別子を割り当て、プロバイダWARファイルの作成時にそのサービス識別子を使用する必要があります。サービスのこの名前は、ファイルservice_id
.properties
を検索するのに使用されます。このファイルは、テスト・ページの表示の有無など、プロバイダの特性を定義したものです。
たとえば、次のURLとurn:sample
というサービス識別子を使用して、PDK-Javaサンプル・プロバイダを登録できます。
http://mycompany.com/jpdk/providers
あるいは、次の形式のURLを使用することもできます。
http://mycompany.com/jpdk/providers/sample
すなわち、プロバイダ名(sample)をPDK-Javaサンプル・プロバイダのURLに追加します。この場合、プロバイダの登録時には「サービスID」フィールドは空白のままにします。
複数のポータルが同じプロバイダを共有している場合は、サービス識別子を個別に指定できます。各ポータルを異なるサービス識別子に登録することによって、コンシューマごとに個別にプロバイダのプロパティを指定できます。
プロバイダをデプロイしたら、正しいサービス識別子を使用してプロバイダをOracleAS Portalに登録する必要があります。これにより、リクエストが正しいプロバイダにルーティングされます。アダプタ・サーブレットがサービス識別子のないリクエストを受信した場合、そのリクエストはデフォルトのプロバイダに渡されます。
注意: サービス識別子が既知でない場合は、プロバイダのテスト・ページをチェックするか、プロバイダの管理者に問い合せてください。連携されたPortalアダプタを使用している場合、URLはプロバイダではなくアダプタを指すので、このフィールドに値を入力する必要があります。この場合、サービス識別子はurn: の後にデータベース・プロバイダの名前が続く形式となります。 |
次の項に、手動でプロバイダをパッケージ化およびデプロイする際に実行する必要がある手順を示します。
この項の手順では、手動でWARファイルをパッケージ化する方法を説明します。WARファイルをアセンブルするユーティリティの中に使い慣れているものがある場合は、それを使用してWARファイルをアセンブルしてください。
WARファイルを作成する前に、次の手順を実行する必要があります。
必要なファイルを収集できる作業ディレクトリを作成します。
/pdk/jpdk/v2/template.war
にあるtemplate.war
ファイルを作業ディレクトリに抽出します。ファイル・パスも抽出してください。
プロバイダで追加のJARファイルが必要な場合は、それをWEB-INF/lib
ディレクトリに追加します。
JARファイルに含まれていない追加のJavaクラスがプロバイダで必要とされる場合は、そのJavaクラスをWEB-INF/classes
ディレクトリに追加します。クラス・ファイルは、JavaクラスのJavaパッケージ名に対応するディレクトリ構造に保存してください。
作業ディレクトリに静的HTMLファイル、JSPおよびイメージを追加します。これらのファイルの編成に必要であれば、サブディレクトリを作成します。サブディレクトリは、HTMLファイルまたはJSPファイルにアクセスするのに必要なパスの一部となります。
providersディレクトリの下に自分のプロバイダ用のサブディレクトリを作成します。
_default.properties
ファイルをservice_name
.properties
にコピーし、プロバイダの構成を反映するように編集します。
WEB-INF/deployment
フォルダにあるprovider_name
.properties
ファイルで、definition
値を次のように設定します。
definition=providers/provider_dir_you_created/provider.xml
作成したばかりのサブディレクトリにプロバイダ定義ファイルを配置します。
_default.properties
を、デフォルト・プロバイダの構成設定を反映するように編集します。デフォルト・プロバイダへのアクセスは、リクエストにサービス識別子が指定されていない場合に行われます。この手順の詳細は、D.2.1.2「デフォルト・サービスの指定」を参照してください。
コンテンツのレンダリングにサーブレットを使用する場合は、WEB-INF/web.xml
を編集して、サーブレットを事前定義済のサーブレットの一覧に追加します。PDK-Javaが必要とするサーブレットのエントリを削除しないように注意してください。
デフォルト・サービスは、サービス名を含まない任意のリクエストを受信するプロバイダです。デフォルト・プロバイダは、WARファイルのデプロイ・ディレクトリ内の_default.properties
ファイルを編集することによって指定します。
定義エントリを編集して、デフォルト・プロバイダを表すプロバイダ定義ファイルを指すようにします。パスは、ファイル・システム内でのファイルの物理的な位置ではなく、WARファイル内のWEB-INFディレクトリからの相対パスとします。
_default.properties
ファイルは、たとえば次のようになります。
serviceClass=oracle.webdb.provider.v2.adapter.soapV1.ProviderAdapter
loaderClass=oracle.portal.provider.v2.http.DefaultProviderLoader
showTestPage=true
definition=providers/sample/provider.xml
autoReload=true
WARファイルの内容を指定したら、次に、WARファイル自体を作成できます。WARファイルを作成する手順は、次のとおりです。
D.2.1.1項「ディレクトリの準備」で作成した作業ディレクトリの内容を圧縮します(このとき、サブディレクトリのパスは含めますが作業ディレクトリのパス自体は含めません)。
圧縮後のファイル名をわかりやすい名前に変更し、拡張子を.war
に変更します。
EARファイルを作成するために、別の作業ディレクトリを作成します。
/pdk/jpdk/v2/template.ear
にあるtemplate.ear
ファイルを作業ディレクトリに抽出します。ファイル・パスも抽出してください。
テンプレートEARファイルに含まれていたMETA-INF/application.xml
ファイルを開きます。このファイルは次のようになっているはずです。
<?xml version "1.0"> <!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc. //DTD J2EE Application 1.3//EN" "http://java.sun.com/j2ee/dtds/application_1_3.dtd"> <application> <display-name>Display Name of the Application</display-name> <description>Description of the application</description> <module> <web> <web-uri>yourwarfile.war</web-uri> <context-root>/</context-root> </web> </module> </application>
表D-1に、application.xml
の要素を示して、説明します。
ファイルapplication.xml
を、名前変更せずに、同じ位置に上書き保存します。
前に作成したWARファイルを自分の作業ディレクトリにコピーします。これはサブディレクトリ内ではなく、作業ディレクトリの直下に配置します。
作業ディレクトリの内容を圧縮します(このとき、サブディレクトリのパスは含めますが、作業ディレクトリのパス自体は含めません)。
圧縮後のファイル名をわかりやすい名前に変更し、拡張子を.ear
に変更します。
EARファイルは、要件に応じて、次のいずれかの方法でデプロイできます。
Grid Controlコンソールを使用してEARファイルをデプロイするには、ターゲットOC4JにPDK-Javaをインストールしておく必要があります。この方法を使用してEARファイルをデプロイする手順は、次のとおりです。
Grid Controlコンソールを起動し、PDK-Javaを構成したOC4Jインスタンス(たとえば、OC4J_Portal
)のホーム・ページにナビゲートします。
「アプリケーション」タブで、「EARファイルのデプロイ」をクリックします。
表D-2に示す情報を入力します。
「続行」をクリックします。WebモジュールのURLマッピングが表示されます。URLは、デフォルトではapplication.xml
に指定されているコンテキスト・ルート(たとえば、/myapp
)にマッピングされますが、デプロイされている他のアプリケーションのコンテキスト・ルートとの衝突を避けるために変更できます。
「終了」をクリックします。入力した情報のすべてを含むサマリーが表示されます。
「デプロイ」をクリックします。
「OK」をクリックします。
これで、プロバイダ・アプリケーションがOracle Application Serverインスタンスにデプロイされます。選択したOC4Jインスタンス用のアプリケーションのリストに、新しくデプロイしたアプリケーションが表示されます。EARファイルが正常にデプロイできたので、次は、デプロイをテストする必要があります。D.2.3項「デプロイのテスト」を参照してください。
dcmctl
を使用してEARファイルをデプロイするには、ターゲットOC4JにPDK-Javaをインストールしておく必要があります。
注意: dcmctl を使用してOracle Application Serverインスタンスを管理する前に、Grid Controlコンソール・プロセスのいずれにも同じインスタンスを管理させていないことを確認してください。複数のプロセスが同一インスタンスを管理すると、インスタンスの管理に使用されるデータが不整合になったり破損する危険があります。 |
EARファイルは、次に示すコマンドライン・デプロイ・ユーティリティdcmctl
を使用してデプロイします(大カッコ内の引数はオプションです)。
cd MID_TIER_ORACLE_HOME/dcm/bin/ ./dcmctl deployApplication -f file -a app_name [-co comp_name] [-enableIIOP] [-rc rootcontext] [-pa parent_name]
これらの意味は、次のとおりです。
file
は、デプロイするEARファイルまたはWARファイルの名前です。
app_name
は、最初のデプロイでユーザーが指定したアプリケーションの名前です。
comp_name
は、アプリケーションをデプロイするOC4Jインスタンスの名前です。デフォルトは、ホーム・インスタンスです。(オプション)
enable IIOP
は、Internet Inter-ORB Protocolを有効にします。(オプション)
rootcontext
は、WebモジュールにアクセスするためにURLで使用される基準パスです(たとえば、http://hostname:port/context root
)。このオプションは、WARファイルのデプロイの場合のみ適用されます。(オプション)
parent_name
は、親アプリケーションの名前です。親アプリケーションには、子アプリケーションによって使用される共通クラスが含まれています。(オプション)
これで、プロバイダ・アプリケーションがOracle Application Serverインスタンスにデプロイされます。EARファイルが正常にデプロイできたので、次は、デプロイをテストする必要があります。D.2.3項「デプロイのテスト」を参照してください。
EARファイルをOC4Jのスタンドアロン・インスタンスにデプロイするには、OC4Jが互換性のあるバージョンでありそれにPDK-Javaがインストールされていることが必要です。この方法でEARファイルをデプロイする手順は、次のとおりです。
OC4Jがまだ実行されていない場合は、次のコマンドを使用して、バックグラウンド・プロセスとしてOC4Jを起動します。
Microsoft Windowsの場合:
cd OC4j_HOME\j2ee\home start java -server -Xmx256m -jar oc4j.jar
UNIX/Linux(Bourneシェル)の場合:
cd OC4J_HOME/j2ee/home java -server -Xmx256m -jar oc4j.jar &
これらの意味は、次のとおりです。
OC4J_HOME
は、OC4Jのインストール・ルート・ディレクトリです(たとえば、D:\oc4j904
)。
注意: -Xmx256m オプションは、OC4Jプロセスの最大ヒープ・サイズとして256MBを指定しています。これは推奨設定です。この設定は、アプリケーションにあわせて増減できます。java.lang.OutOfMemoryError 例外が発生した場合は、この設定を大きくする必要があります。 |
次のコマンドを使用して、EARファイルをデプロイします。
java -jar admin.jar ormi://localhost admin admin_password -deploy -deploymentName application_name -file ear_file_path
これらの意味は、次のとおりです。
admin_password
は、インストール時に設定したOC4J管理パスワードです。
application_name
は、管理目的でアプリケーションに付けた一意の名前です。
ear_file_path
は、ファイル・システム上でのEARファイルへのフル・パスです。
EARファイル内の各WARファイル(OC4J_HOME/j2ee/home/applications/
application_name
/application.xml
にリストされるもの)について次のコマンドを使用して、対応するWebアプリケーションをWebサイト上のURIパスにバインドします。
java -jar admin.jar ormi://localhost admin admin_password
-bindWebApp application_name web_app_name
file:OC4J_HOME/j2ee/home/config/default-web-site.xml context_root
これらの意味は、次のとおりです。
web_app_name
は、.war
拡張子なしのWARファイル名です(たとえば、jpdk
)。
context_root
は、WebアプリケーションにマップするためのURIパスの接頭辞です(たとえば、/myapp
)。
これで、プロバイダ・アプリケーションがOracle Application Serverインスタンスにデプロイされます。EARファイルが正常にデプロイできたので、次は、デプロイをテストする必要があります。D.2.3項「デプロイのテスト」を参照してください。
プロバイダのデプロイをテストするには、URLが次の形式であるプロバイダ・テスト・ページにアクセスします。
http://host:port/context_root/providers
これらの意味は、次のとおりです。
host
およびport
は、ターゲットOC4JインスタンスのHTTPリスナーのホスト名とポート番号です。OracleAS Web CacheがインストールされたOracle Application Serverのインストールでは、port
はOracleAS Web Cacheリスナー・ポート(たとえば、7777)である必要があります。スタンドアロンOC4Jのインストールでは、デフォルトのHTTPポート番号は8888です。
context_root
は、デプロイ時にプロバイダWebアプリケーションにマップしたURIパスの接頭辞(たとえば、/myapp
)です。dcmctl
を使用した手動によるデプロイの場合は、application.xml
に指定したデフォルトのURIパスの接頭辞です。
次に例を示します。
http://my.host.com:7777/newProvider/providers
.properties
ファイルにshowTestPage=true
が指定されている場合は、デフォルト・プロバイダ用の見慣れたテスト・ページが表示されます。特定のプロバイダ・サービス用のテスト・ページを表示するには、URLにサービス名を追加します。次に例を示します。
http://my.host.com:7777/newProvider/providers/myService
PDK-Javaでは、JNDI変数を使用して多くのデプロイ・プロパティを指定できます。表D-3に、これらの変数をリストして、説明します。
表D-3 プロバイダのデプロイ用JNDI変数
変数 | 説明 |
---|---|
oracle/portal/provider/global/log/logLevel |
PDK-Javaによって使用され、すべてのプロバイダに適用されるロギング・レベル(0-8)です。 |
oracle/portal/service_name/showTestPage
|
プロバイダのテスト・ページにアクセスできるかどうかを指定するブール・フラグです。デフォルト値はtrueです。 |
oracle/portal/service_name/maxTimeDifference
|
プロバイダのHMAC時間差です。 |
oracle/portal/service_name/definition
|
プロバイダの定義ファイル( |
oracle/portal/service_name/autoReload
|
ブール型の自動リロード・フラグです。デフォルト値はtrueです。 |
oracle/portal/service_name/sharedKey
|
HMAC共有キーです。デフォルト値はありません。 |
oracle/portal/service_name/rootDirectory
|
プロバイダのカスタマイズの場所です。デフォルト値はありません。 |
変数の設定
表D-3にリストした変数の値は、他のJNDI変数と同じように設定できます。JNDI変数の設定方法は、7.2.4.2項「JNDI変数値の設定」を参照してください。
本番環境でPDK-Javaフレームワークを使用するときは、プロバイダを保護する必要があります。プロバイダの保護方法は、7.2.7項「ポートレットのセキュリティの実装」および『Oracle Application Server Portal構成ガイド』を参照してください。
プロバイダは、デプロイと検証が終了したら、他のプロバイダと同じように登録できます。プロバイダの登録方法は、6.6.2.5項「ポートレットの登録と表示」を参照してください。