この章では、Javaポートレット仕様(JSR 168)、またはOracle JDeveloperのJSR 168 Javaポートレット・ウィザードおよびJavaポートレット・ウィザードを使用するOracle Application Server Portal Developer Kit-Java(PDK-Java)に基づいて、Javaポートレットを作成する方法について説明します。この章の内容は、次のとおりです。
この章で参照される多数の例のソース・コードは、Portlet Developer's Kit(PDK)の一部として使用できます。PDKは、次のURLにあるOracle Technology Network(OTN)のPDKのページからダウンロードできます。
http://www.oracle.com/technology/products/ias/portal/pdk.html
PDK-Javaを解凍すると、例がzip形式ファイルで次の場所にあります。
../pdk/jpdk/v2/src.zip
PDK-Java用の参照JavaDocにアクセスするには、次の中からjpdk.war
を抽出します。
../pdk/jpdk/v2/jpdk.ear
次に、jpdk.war
を解凍します。JavaDocは、apidoc
フォルダにあります。
Javaポートレット仕様(JPS)またはPDK-Javaのいずれかに基づいてJavaでポートレットを作成する場合は、この項の次のガイドラインに従ってください。
ポートレット・モードは、ランタイム・ポートレットの機能をユーザーが確認できるようにするものです。JPSではPDK-Javaで提供されていないモードをいくつか提供しており、またその逆の場合も同じです。ポートレットをJPSに従ってコーディングする場合は、portlet.xml
で、カスタム・ポートレット・モードをPDK-Javaが提供する追加のモードにマップすると宣言することも、カスタム・ポートレット・モードに提供するその他の機能を含めると宣言することもできます。たとえば、JPSポートレット用のJSR 168 Javaポートレット・ウィザードには、「印刷」というカスタム・モードがあり、これを使用してポートレットの印刷用のバージョンを提供できます。カスタム・モードの定義は、特に、ポートレットを他のベンダーのポータル実装と相互運用する場合に役立ちます。
ポートレットには次のポートレット・モードがあり、表示方法と動作がそれぞれ異なります。
ポートレットは共有画面モード(JPSでは表示モードと呼ばれます)を使用して、他のポートレットと同じページに表示されます。ポートレットといえば、ほとんどの人がこのモードを思い浮かべます。ポートレットの開発時には、ページ上でポートレットの外観に影響を与える可能性のあるすべての要素(ポートレットのコンテナ・オブジェクトや、開発したポートレットがページを共有する他のポートレットなど)について検討する必要があります。たとえば、ポートレットをHTML表のセル内に配置するとします。これでは、ポートレットが表のセル内でレンダリングできるコンテンツしか表示できなくなる可能性があります。さらに、表のセルの実際のサイズは、ユーザー設定、ブラウザの幅、およびポートレットに表示されるコンテンツの量とスタイルによって変わります。
プレーンHTMLは最も基本的なポートレットのレンダリング方法であり、ポートレットの開発者に大きな柔軟性を提供します。リンク、フォーム、イメージ、表など、HTMLの表のセル内に表示できるほとんどの標準的なHTMLパラダイムを使用できます。HTMLが適切に作成されていない場合は、異なる複数のブラウザで表示したときに表示の一貫性がなくなり、ページの一部が表示されないこともあります。次のルールに従ってください。
標準HTMLを使用する。HTMLの正式な仕様は、W3Cにあります(詳細はhttp://www.w3.org/MarkUp/
を参照)。
閉じていないタグや不要なタグがないように注意する。ページはブラウザの動作の影響を受けるため、タグが正しく閉じていないとページの動作は予測不可能になります。weblint(http://www.weblint.org/
)やHTML Tidy(http://www.w3.org/People/Raggett/tidy/
)などのツールは、閉じていないタグや不要なタグの検出および修正に役立ちます。
コンテナ・オブジェクトによる制限を検討する。 ポートレットをHTML要素(表のセルなど)に格納する場合、ポートレットをそのコンテナ内で確実にレンダリングできるようにする必要があります。たとえば、ポートレットを表のセル内に配置する場合、ポートレット内でフレームを使用できません。これは表内に挿入されると、フレームが表示されないためです。
ポートレットのコンテンツは簡潔にする。全画面のコンテンツを取得して、小さなポートレットから公開しないでください。ポートレットのコンテンツが小さくなりすぎて、小さなモニターではポートレットが使用不能になるのみです。全画面のコンテンツは、PDK-Javaの全画面モードで最適に表示されます。
ポートレット内に固定幅のHTMLの表を作成しない。ユーザーのページに表示されるポートレットの列幅を事前に知る方法はありません。与えられた空間よりも広い空間がポートレットに必要な場合、特定のブラウザでは、他のポートレットとオーバーラップする可能性があります。
折り返しのない長いテキスト行を避ける。固定幅の表を使用した場合と同様の結果になります。特定のブラウザでは、他のポートレットとオーバーラップする可能性があります。
ページ・サイズ変更時の動作をチェックする。ブラウザ・ウィンドウをサイズ変更した際のポートレットの動作をテストし、ポートレットがブラウザ・ウィンドウの様々なサイズで動作することを確認してください。
ブラウザのデフォルトのフォントが変更された場合の動作をチェックする。ユーザーは希望するフォント・サイズを選択でき、いつでも変更できます。ポートレットは、その変更に対応する必要があります。
使用するHTMLも、サイトの知覚されるパフォーマンスに直接影響を与えます。ユーザーは、リクエストしたページの表示にかかる時間に基づいてパフォーマンスを判断します。ブラウザには、HTMLを解釈して表示するための時間が必要です。このため、次の点を考慮してください。
長く複雑なHTMLを避ける。ポートレットはページを他のポートレットと共有します。したがって、ポートレットの生成時間はページのパフォーマンス全体に大きく影響します。ポートレットが複雑なHTMLをレンダリングしたり、サード・パーティのアプリケーションなど外部リソースを待ったりする場合は、ページのレンダリングが大幅に遅くなることがあります。
ページ上のそれぞれのポートレットのフォントと色は、ユーザーが選択したスタイル設定に一致する必要があります。このために、これらのスタイル選択は、各ページのCascading Style Sheet(CSS)を使用して自動的に埋め込まれます。その後、ポートレットは直接またはApplication Programming Interfac(API)を使用して、フォントと色の設定にアクセスします。
ブラウザによってCSS仕様の実装レベルが異なりますが、Oracle WebCenter Frameworkは、この仕様の非常に基本的なサブセットを使用して、整合性のあるフォントと色を実現します。CSSの実装レベルによってブラウザ間でのページの一貫性が影響されることはありません。CSS使用に関するガイドラインは、次のとおりです。
ハードコーディングではなくCSSを使用する。フォントと色のハードコーディングは非常に危険です。フォントと色をハードコーディングすると、ユーザーがページ・スタイルの設定を変更した場合に、ポートレットが不釣合いに見えることがあります。開発者はユーザーが設定するフォントや色を予測できないため、ユーザーが選択した背景色と同じフォント色でハードコーディングする可能性があります。この場合、ユーザーはポートレットを識別できなくなります。
テキストの書式設定にはCSS APIを使用する。スタイルシートの定義はページの最上部にありますが、直接コールしないでください。かわりに、テキストの適切な書式設定のために用意されているAPIを使用してください。これによって、後でスタイルシートが変更された場合でもポートレットは正しく動作します。
CSSを使用した絶対位置の設定は避ける。ユーザーは各自のページをパーソナライズできるため、ポートレットが特定の位置に表示される保証はありません。
アクセシビリティの標準に従う。必ず既存のアクセシビリティの標準に従って、スタイルシートを記述してください(詳細はhttp://www.w3.org/TR/WCAG10-CSS-TECHS/
を参照)。
ポートレットは編集モードを備えており、これによってユーザーはポートレットの動作をパーソナライズできます。編集モードには設定のリストがあり、ユーザーはその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、およびポートレットの外観や内容に影響するあらゆる要素が含まれます。
ユーザーは通常、ポートレットのオプションのドロップダウン・リストから「パーソナライズ」を選択して、ポートレットの編集モードにアクセスします。「パーソナライズ」を選択すると、同じブラウザ・ウィンドウに新しいページが表示されます。このポートレットは、通常、ポートレットの設定を選択するダイアログ・ボックスを表すWebページを作成します。設定を適用すると、自動的に元のページに戻ります。
次のガイドラインに従って、編集モードでユーザーに公開する内容を管理してください。
ユーザーがポートレットのタイトルをパーソナライズできるようにする。同じポートレットが同じページに複数回追加されることがあります。ユーザーがタイトルをパーソナライズできると混乱を避けることができます。
キャッシュを使用する場合はコンテンツを無効化する。パーソナライズによってポートレットの表示やコンテンツに変更が生じた場合は、ポートレットのコンテンツが再生成され、キャッシュから戻されないことを確認する必要があります。確認しないと、誤ったコンテンツが表示されることがあります。
編集モードを管理ツールとして使用しない。編集モードは、ユーザーがポートレットの動作を変更するために使用します。プロデューサ設定の変更などの管理タスクが必要な場合は、そのタスク専用の安全なポートレットを作成してください。
整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序で編集モードに実装してください。
OK: ユーザーのパーソナライズを保存し、ポートレットを表示モードに戻します。
適用: ユーザーのパーソナライズを保存し、現在のページをリロードします。
取消: 変更を保存せずに、ポートレットを表示モードに戻します。
パーソナライズ設定を変更するフォームを表示する場合は、デフォルトの値を表示し、ユーザーが設定を毎回再入力しないで済むようにしてください。動作の整合性を維持するために、パーソナライズ値のレンダリングは次の順序で行います。
ユーザー設定項目: このユーザーのパーソナライズが使用可能な場合は、問い合せて表示します。
インスタンス・デフォルト: ユーザーのパーソナライズがない場合は、ポートレット・インスタンスのシステム・デフォルトを問い合せて表示します。これらのデフォルトは編集モードで設定され、このポートレット・インスタンスに対してのみ適用されます。
ポートレット・デフォルト: システム・デフォルトのパーソナライズがない場合は、一般的なポートレットのデフォルトを表示しますが、空白の場合があります。一般的なポートレットのデフォルトはポートレットにハードコーディングされている場合がありますが、前述の2つの条件のいずれかが該当する場合は上書きしてください。
このロジックによって、WebCenterアプリケーション内の他のポートレットとの整合性がとれた予測可能な方法でパーソナライズを表すことができます。PDK-Javaでは、このようなロジックを簡単に実装できます。
ポートレットはデフォルト編集モードを備えており、管理者はこのモードを使用して、特定のポートレット・インスタンスのデフォルト動作をカスタマイズできます。デフォルト編集モードには設定のリストがあり、アプリケーション開発者はその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、およびポートレットの外観や内容に影響するあらゆる要素が含まれます。
これらのデフォルトのパーソナライズ設定によって、個々のポートレットの外観とコンテンツをすべてのユーザーに対して変更できます。デフォルト編集モードは、ポートレットの表示内容と表示形式に対してシステム・レベルのデフォルトを定義するためのモードであるため、このモードを管理ツールとして使用したり、他のポートレットの管理に使用したりすることは避けてください。
管理者は、ページの編集時に、ポートレットのドロップダウン・リストから「カスタマイズ」を選択して、デフォルト編集モードにアクセスします。
ユーザーが「カスタマイズ」アイコンをクリックすると、同じブラウザ・ウィンドウにポートレットが表示されます。このポートレットは、通常、ポートレット・インスタンスの設定をパーソナライズするダイアログ・ボックスを表すWebページを作成します。設定を適用すると、ユーザーは自動的に元のページに戻されます。
次のガイドラインに従って、デフォルト編集モードでページ設計者に公開する内容を管理してください。
デフォルト編集モードを管理ツールとして使用しない。デフォルト編集モードは、ユーザーがポートレットの動作を変更するために使用します。プロデューサ設定の変更などの管理タスクが必要な場合は、そのタスク専用の安全なポートレットを作成してください。
整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序でデフォルト編集モードに実装してください。
OK: ユーザーのパーソナライズを保存し、ポートレットを表示モードに戻します。
適用: ユーザーのパーソナライズを保存し、現在のページをリロードします。
取消: 変更を保存せずに、ポートレットを表示モードに戻します。
パーソナライズ設定を変更するフォームを表示する場合は、デフォルトの値を表示し、アプリケーション開発者が設定を毎回再入力しないで済むようにしてください。動作の整合性を維持するために、パーソナライズ値のレンダリングは次の順序で行います。
インスタンス設定: ポートレット・インスタンスのシステム・デフォルトを問い合せて表示します。
ポートレット・デフォルト: システム・デフォルトのパーソナライズがない場合は、一般的なポートレットのデフォルトを表示しますが、空白の場合があります。一般的なポートレットのデフォルトはポートレットにハードコーディングされている場合がありますが、システム・デフォルトで上書きしてください。
このロジックによって、WebCenterアプリケーション内の他のポートレットとの整合性がとれた予測可能な方法でパーソナライズを表すことができます。
ポートレットはプレビュー・モードを備えており、ポートレットをページに追加する前に、それがどのように表示されるかをユーザーに示します。プレビュー・モードは、ポートレットの機能を視覚的に表現したものです。すべてのポートレット・コンシューマが、このモードをコールするわけではありません。たとえば、Application Server Portal(OracleAS Portal)ではこのモードを使用しますが、Oracle WebCenter Frameworkでは使用しません。
OracleAS Portalでは、ユーザーが「ポートレットの追加」ページから「プレビュー」アイコンをクリックしたときにこのモードがコールされます。選択したポートレットのプレビューがウィンドウに表示されます。ユーザーは、そのポートレットをページに追加できます。
注意: このモードには、WebCenterアプリケーションで特定のアプリケーションはありませんが、OracleAS Portalのポートレット・リポジトリでは使用され、虫めがねのアイコンとしてレンダリングされて、ユーザーはポートレットをプレビューするためにこれをクリックします。 |
プレビュー・モードに関するガイドライン
次のガイドラインに従って、プレビュー・モードでユーザーに公開する内容を管理してください。
ポートレットの機能に関する情報を提供する。プレビュー・モードでは、ユーザーがポートレットの実際のコンテンツや機能に関する情報を得られるように、十分なコンテンツを生成する必要があります。
ポートレットのプレビューは大きくしない。このモードで生成されるデータの量は、数行以内のHTMLまたは1つの画面ショットにとどめてください。プレビュー・モードは小さい領域に表示されるため、ウィンドウのサイズより大きくなると見栄えが悪くなり、ユーザーによるスクロールが必要になります。
ライブ・ハイパーリンクを使用しない。 プレビュー・モードでレンダリングしたリンクは、予想どおりに機能しないことがあります。ハイパーリンクは、下線付きのフォントでシミュレートできます。
アクティブ・フォーム・ボタンを使用しない。 プレビュー・モードでレンダリングしたフォームは、予想どおりに機能しないことがあります。フォーム要素をレンダリングする場合、そのフォーム要素はどこにもリンクしないでください。
ポートレットは全画面モードを使用して、さらに詳細な表示を行える、より大きなバージョンのポートレットを実現します。全画面モードによって、ポートレットは画面全体を使用できます。すべてのポートレット・コンシューマがこのモードをコールするわけではありません。たとえば、OracleAS Portalではこのモードを使用しますが、Oracle WebCenter Frameworkでは使用しません。OracleAS Portalでは、ユーザーは、ポートレットのタイトルをクリックして、ポートレットの全画面モードにアクセスします。
たとえば、ポートレットで経費情報を表示する場合、共有画面モードでは経費の多い上位10人のサマリーを表示し、全画面モードでは各人の経費合計を表示できます。また、ポートレットは、Webアプリケーションへのショートカットも提供できます。ポートレットの共有画面モードに経費領収書発行へのインタフェースがある場合は、全画面モードから経費アプリケーション全体にリンクすることも可能です。
厳密には、JPSポートレットに全画面モードはありません。ただし、表示モード(共有画面モード)とウィンドウの最大化を使用して、JPSポートレット用に全画面モードと同等の機能を実装できます。
ポートレットは、ヘルプ・モードを使用して、そのポートレットの機能と使用方法に関する情報を表示します。ユーザーはこのモードで、ポートレットおよびそのコンテンツと機能に関する有用な情報を検索できます。
ユーザーは、ポートレットで「ヘルプ」アクションを選択することで、ポートレットのヘルプ・モードにアクセスします。
ヘルプ・モードに関するガイドライン
次のガイドラインに従って、ヘルプ・モードでユーザーに公開する内容を管理してください。
ポートレットの使用方法を説明する。ポートレットのインタフェースのみでは、ポートレットのすべての機能がユーザーに理解されない可能性があります。ポートレットの機能とその活用方法を説明してください。
ユーザーは、実行中のポートレットのバージョン、発行と著作権の情報、および作者への連絡方法を参照できる必要があります。登録が必要なポートレットは、このモードからWebベースのアプリケーションまたは連絡先情報にリンクできます。
ユーザーは、ポートレットのクロムのドロップダウン・リストから「情報」を選択して、ポートレットの情報モードにアクセスします。同じブラウザ・ウィンドウに新しいページが表示されます。この新しいページにコンテンツを生成するか、またはユーザーを既存のページやアプリケーションに移動させることができます。
情報モードに関するガイドライン
次のガイドラインに従って、情報モードでユーザーに公開する内容を管理してください。
関連の著作権、バージョンおよび作成者の情報を表示する。ユーザーは、使用しているポートレットの内容と詳細情報の入手先を参照できる必要があります。この情報ページは、ポートレットのサポート時に重要になることがあります。
リンク・モードに関するガイドライン
次のガイドラインに従って、リンク・モードでユーザーに公開する内容を管理してください。
コンテンツを制限する。 リンク・モードの目的は、外部のデータなしでリンクをレンダリングすることです。リンク・モードでは、短いタイトルと、対応するサマリー情報(通常は1〜2語のみ)がレンダリングされます。
いろいろな点で、1つのポートレットの異なるセクションまたはページ間のナビゲーションは、標準のWebページ間のナビゲーションと似ています。ユーザーはフォームを実行してリンクをクリックできます。通常の標準的なWebページの場合、これらの操作により、新しいコンテンツをレンダリングするサーバーにメッセージが直接送信され、次に、このメッセージがクライアントに戻されます。ポートレットの場合は、ページの一部分のみを構成するため、そのポートレット内でのフォーム実行またはリンクのレンダリングでは、情報は直接ポートレットに渡されません。これらの操作では、情報はWebCenterアプリケーションを介してポートレットに渡されます。ポートレット内でのリンクまたはフォームの実行がアプリケーションを参照しない場合は、そのリンクをたどるとユーザーをアプリケーションから離れさせることになり、通常好ましくない動作です。
コンポーネントの開発者は、フォームまたはリンクのパラメータがユーザー、アプリケーションおよびポートレット間を受け渡しされる詳細な機構を知る必要はありません。しかし、通常の標準的なWebページの場合と同じ方法でポートレット内にリンクを作成できないことは理解しておく必要があります。
ポートレット用のリンクのタイプ
ポートレットは、次の4つのクラスのリンクをレンダリングできます。
ポートレット内リンク: ポートレットはWebCenterアプリケーションのアドレスを認識できるようにしておきます。実際になんらかの方法で参照するためです。
アプリケーション・リンク: ポートレット内リンクと同じ理由で、WebCenterアプリケーションのアドレスを認識できるようにしておきます。
外部リンク: WebCenterアプリケーションを参照せず、標準のWebページの場合と同様にポートレット内で機能します。
内部/リソース・リンク: 外部リンクと同様にWebCenterアプリケーションを参照しません。
図18-1に、これらのリンク・タイプの概要を示します。矢印は、リンクがどのように論理的な参照先であるリソースを参照するかを示します。
ポートレット内リンクは、所定のポートレット内の様々なセクションまたはページに移動します。厳密に言えば、ポートレットが含まれているページが参照されますが、このリンクには、ユーザーによってリクエストされたときに、ポートレットにページ内の様々なセクションまたはページをレンダリングさせるパラメータが含まれています。
この直接の結果として、ポートレットは、独自のサーバー・コンテキストに基づく相対リンクまたは絶対リンクを使用して、自身の様々なセクションまたはページへのリンクのレンダリングをリクエストすることはできません。ポートレット内リンクは、リンクまたはフォーム実行ターゲットとしてポートレット内のナビゲーションには便利です。
外部リンクは、ポートレット(ページを介して)も、WebCenterアプリケーションのどの部分も参照しません。これらのリンクを選択した場合、ユーザーはアプリケーション(たとえばwww.oracle.com)から離れることになります。
内部/リソース・リンクは、(ポートレットの)内部リソースを参照します。このリンクは、ポートレットのレンダリング中に内部で排他的に、たとえばサーバー側インクルードとして、使用されることがあります。また、外部的に、イメージなどのポートレット・リソースの参照に使用されることもあります。外部的に使用される場合は、PDK-JavaのUrlUtils
クラスのconstructResourceURL
メソッドを使用し、リソース・プロキシを使用してファイアウォールの内部からイメージを取得します。リソース・プロキシが機能するようにするには、まずプロデューサに対して、JNDI変数oracle/portal/provider/sample/resourceUrlKey
を設定する必要があります。JNDI変数設定の詳細は、19.2.3.2項「JNDI変数値の設定」を参照してください。
たとえば、PDK-Javaに含まれている宝くじのサンプルjspであるlottery.jsp
には、イメージに対するリソース・プロキシ・リクエストが含まれています。
<%@ page contentType="text/html;charset=UTF-8" %> <%@ page session="false" import="oracle.portal.provider.v2.render.*" %> <%@ page import="oracle.portal.provider.v2.render.http.HttpPortletRendererUtil" %> <%@ page import="oracle.portal.provider.v2.url.UrlUtils" %> <%@ page import="oracle.portal.sample.v2.devguide.lottery.*" %> <% LottoPicker picker = new LottoPicker(); picker.setIdentity(request.getRemoteAddr() ); %> <% PortletRenderRequest portletRequest = (PortletRenderRequest) request.getAttribute("oracle.portal.PortletRenderRequest"); %> <% String name = portletRequest.getUser().getName(); %> <P class="PortletHeading1" ALIGN="CENTER">Hi <%= name %>, Your Specially Picked</P><P ALIGN="CENTER"><IMG SRC="<%= UrlUtils.constructResourceURL(portletRequest, HttpPortletRendererUtil.absoluteLink(request, "images/winningnumbers.gif")) %>" WIDTH="450" HEIGHT="69" ALIGN="BOTTOM" BORDER="0"></P> <P> <P ALIGN="CENTER"> <TABLE ALIGN="CENTER" BORDER="0" CELLPADDING="0" CELLSPACING="0"> <TR> <% int [] picks = picker.getPicks(); for (int i = 0; i < picks.length; i++) { %> <TD> <IMG SRC="<%= UrlUtils.constructResourceURL(portletRequest, HttpPortletRendererUtil.absoluteLink(request, "images/ball" + picks[i])) %> .gif" WIDTH="68" HEIGHT="76" ALIGN="BOTTOM" BORDER="0"> </TD> <% }
セッション・ベースのプロデューサの場合、元のinitSession
コールからプロデューサに戻されるCookieは、リクエストとともに戻され、正しいセッション・コンテキストを維持します。
JavaScriptは、多くの場合ポートレット内で役に立ちますが、使用するポートレット内では次のガイドラインを念頭に置いてください。
JavaScriptを持つポートレットは、インライン・フレーム(IFrame)でレンダリングする必要があります。これは、RenderPortletInFrame
をtrueに設定することで実行できます。RenderPortletInFrame
属性とその設定方法の詳細は、 4.3.3項「adfp:portletタグの属性値の設定」を参照してください。
ポートレットがレンダリングされるページをリダイレクトするのに、JavaScriptを絶対に使用しないでください。ユーザーを他の場所にダイレクトする必要がある場合、コードを処理するポートレット・アクションで行うか、ブラウザで新しいウィンドウを開く必要があります。
JavaScript内の識別子が修飾されていることを確認します。識別子を修飾することにより、識別子が一意であり、ページ上のどのJavaScriptとも競合しないようにします。
モバイル・デバイスからでもデスクトップからでも、すべてのリクエストで一般的なデバイス情報が渡されます。たとえば、属性を渡すリクエストでは、pcbrowser
、pdabrowser
、microbrowser
(携帯電話)などのデバイス・クラスが指定されます。コンポーネント開発者は、レスポンスのレイアウトまたはデータ量を調整するために、この属性を使用できます。
1つのポートレット・インスタンスは、すべてのデバイス、モバイルおよびデスクトップに対応するユーザー・パーソナライズのセットを1つ含む必要があります。このため、インスタンスが標準ページとモバイル・ページで共有される場合でも、同一のパーソナライズ・ページが表示されます。また、フィールドによっては、1つの環境(デスクトップまたはモバイル)にしか適用されません。このような場合、1つの環境のみに関係するフィールドをポートレットで示す必要があります。たとえば、ポートレットによって、パーソナライズ・ページにモバイル専用セクションを表示することができます。また、モバイル対応は構成できるため、モバイル機能が無効であることをポートレットが検出したときに、モバイル専用の参照をパーソナライズ・ページから削除できます。
WebCenterアプリケーション・プロジェクトに従事する組織では、アプリケーションの統合が主要な課題でした。これまでユーザーは、単一のポータル・プラットフォーム専用のAPIを使用してポートレットを開発してきましたが、多くの場合、特定のポータル・ベンダーによるポートレットでは不十分でした。このような状況は、次の標準を導入することで大きく変わります。
Web Services for Remote Portlets(WSRP)
JSR 168に基づくJavaポートレット仕様(JPS)脚注1
この2つの標準によって、異なる複数のポータル製品を相互運用できるポートレットを開発できるため、組織におけるポートレットの可用性が拡大します。この可用性の拡大によって、WebCenterアプリケーションの構築時には、組織の生産性を大幅に向上させることができます。
WSRPはWebサービスの標準です。この標準によって、ポータルまたは他の中間Webアプリケーションを使用する、ユーザー対象で視覚的なWebサービスのプラグ・アンド・プレイが可能になります。1つの標準であるWSRPによって、標準対応のコンテナとWSRPポータル間の相互運用が実現します。WSRPでは、次のものを定義します。
WSRPサービスを起動するためのWeb Services Definition Language(WSDL)インタフェース
WSRPサービスで発生するマークアップのためのマークアップ・フラグメント・ルール
WSRPサービスとメタデータを公開、検索およびバインドするためのメソッド
JPSは、ポートレットとポータルの間の相互運用を可能にし、集約、パーソナライズ、表示形式およびセキュリティの各領域に対処する一連のAPIを定義する仕様です。JPSでは、次の機能を提供するコンテナ・サービスを定義します。
ポートレット機能をコーディングするためのポートレットAPI
ポートレット・コンテナ内でユーザー相互作用を作成するためのURLリライティング・メカニズム
ポートレットのセキュリティとパーソナライズ
Oracleは、WSRP委員会に積極的に参加しており、JPSの専門家グループのメンバーでもあります。
注意: HTMLフォームはget またはpost メソッドを使用して実行できますが、WSRP標準ではコンシューマ(WebCenterアプリケーション)はpost メソッドのみの使用を要求されます。get メソッドのサポートは、WSRP標準に則ってオプション扱いになっています。アプリケーション・コンシューマはget メソッドをサポートする必要がないので、ポートレット開発の際はpost メソッドを使用することをお薦めします。 |
WSRPとJPSの関連
WSRPはWebCenterアプリケーション・サーバーとポートレット・コンテナ間の通信プロトコルです。一方、JPSにはポートレットを構築するためのJavaポートレットAPIが記述されています。これらの標準を組み合せることで、開発者は、内部または外部のソースからのアプリケーションをポートレットとしてWSRPポータルに統合できます。Oracle JDeveloperコンポーネント・パレットからポートレットを選択するだけで簡単にページを作成できるようになります。図18-2に、WSRP仕様のアーキテクチャを示します。
Oracle WebCenter Frameworkでは、WebCenterアプリケーションと、新規Java Portlet APIおよび既存のAPI(PDK-Java)の両方との通信をサポートできます。図18-3に、WSRPサポートのアーキテクチャを示します。JPS準拠のポートレット・コンテナはWSRPプロトコルを使用して通信を行い、PDK-Javaポートレット・コンテナはOracleの専用SOAPプロトコルを使用して通信を行うことに注意してください。
JSR 168セキュリティ概念をWSRPを介して公開する方法については、10.10項「WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護」を参照してください。
ポートレットは、それぞれが独自の要件セットを持つ任意の数の構成で実行できます。この項では、一般的なシナリオのうち2つ(Oracle Application ServerでのOracle Containers for J2EE(OC4J)の構成およびスタンドアロンOC4Jの構成)の構成要件について説明します。Oracle Application Server 10.1.3.2.0を使用している場合は、ポートレット・プロデューサ(OC4J_WebCenter)を実行するように事前に構成されているOC4Jがすでにあります。OC4J_WebCenterを使用しない場合、またはスタンドアロンOC4Jを使用してポートレット・プロデューサを実行する場合は、次の項の手順に従います。
注意: Oracle JDeveloperには、最初からPDK-JavaおよびWSRPポートレットをサポートしている構成済OC4Jが備わっています。構成済のOC4Jについては、第3章「開発環境の準備」を参照してください。 |
ポートレットを実行するためにアプリケーション・サーバーOC4JインスタンスまたはスタンドアロンOC4Jを構成する手順は、次のとおりです。
Oracle Application Serverの一部であるOC4Jの場合、ポートレットをデプロイできる新しいOC4Jインスタンスを作成します。
次のURLにあるApplication Server Controlコンソールにoc4jadmin
としてログインします。
http://
host_name
:
port_number
/em
次に例を示します。
http://localhost:8888/em
「クラスタ・トポロジ」ページで、アプリケーション・サーバーへのリンクをクリックします。
「システム・コンポーネント」で、「OC4Jインスタンスの作成」ボタンをクリックします。
「OC4Jインスタンスの作成」ページで、OC4Jインスタンスの名前を指定します。
たとえば、WSRPプロデューサに別のインスタンスを作成する場合、そのインスタンスにwsrp
という名前を指定します。好きな名前を使用できます。
「作成後にこのOC4Jインスタンスを起動します。」チェック・ボックスが選択されていることを確認します。
「作成」をクリックします。
スタンドアロンOC4Jの場合、Application Server ControlコンソールでスタンドアロンOC4Jを停止します。
次のURLにあるApplication Server Controlにoc4jadmin
としてログインします。
http://
host_name
:
port_number
/em
次に例を示します。
http://localhost:8888/em
OC4Jホームページで、「停止」をクリックします。
必要に応じて、プリファレンス・ストアを設定します。
ほとんどのポートレット・プロデューサでは、デフォルトでファイル・プリファレンス・ストアを使用します(Webクリッピング・ポートレットは例外です。詳細は、18.4.3項「Webクリッピング・ポートレットおよびプリファレンス・ストアについて必要な知識」を参照してください)。ファイル・プリファレンス・ストアは、すぐに使用できるように構成されています。可用性を高めるには、かわりにデータベースを使用するようにプリファレンス・ストアを構成します。データベース・プリファレンス・ストアを使用するには、追加の構成が必要です。詳細は、18.4項「プリファレンス・ストアの設定」を参照してください。
ポートレット・ランタイムとサンプル・ポートレット・プロデューサをダウンロードしてインストールします。
次のURLに関連のダウンロードがあります。
http://www.oracle.com/technology/products/webcenter/pdk.html
インストールの詳細な手順は、ダウンロードに含まれているreadmeファイルに記載されています。
ORACLE_HOME
\bin
(ORACLE_HOME
は、使用しているOC4Jのソースの場所)にナビゲートし、次のコマンドを実行することでOC4Jを起動します。
oc4j -start
構成をテストして、正常に機能することを確認します。
このためには、サンプルWSRPプロデューサであるwsrp-samples.ear
を使用できます。wsrp-samples.ear
はポートレット・コンテナ・ディレクトリにあります。
スタンドアロンOC4Jの場合、このファイルは手順3でダウンロードしたファイル内にあります。Application Server OC4Jの場合、このファイルはORACLE_HOME
\adfp\lib
にあります。
先に進む前に、EARファイル、sampleportletsをデプロイする必要があります。
サンプル・ポートレットEARファイルをデプロイする手順は、次のとおりです。
Application Server Controlコンソールに戻ります。
次のURLにあるApplication Server Controlにoc4jadmin
としてログインします。
http://host_name
:
port_number
/em
次に例を示します。
http://localhost:8888/em
Oracle Application Serverで、ポートレットをデプロイするOracle Application Server中間層インスタンスをクリックします。
Oracle Application Serverで、先に作成したOC4Jインスタンスwsrp
をクリックします。
「アプリケーション」タブをクリックします。
「デプロイ」をクリックします。
「デプロイ: アーカイブの選択」ページが表示されます。
「アーカイブはローカル・ホストに存在します。アーカイブをApplication Server Controlが稼働しているサーバーにアップロードします。」を選択します。
「アーカイブの場所」に、wsrp-samples.ear
のファイル名とそのパスを入力します。
「新規デプロイ・プランを自動的に作成します。」を選択します。
「次へ」をクリックします。
EARファイルがアップロードされるまで待ちます。ファイルがアップロードされると、「デプロイ: アプリケーション属性」ページが表示されます。
「アプリケーション名」にsampleportlets
と入力します。
「コンテキスト・ルート」には、次のように入力します。
スタンドアロンOC4Jの場合、portletapp
と入力します。
Application Serverインスタンスの場合、すでに使用されている以外の名前を入力します。
「次へ」をクリックします。
「デプロイ: デプロイ設定」ページが表示されます。
「デプロイ」をクリックします。
このページでデプロイ設定を変更することもできますが、ここでは「デプロイ」をクリックします。
デプロイメントの確認ページが表示されます。
設定が正しいかどうか注意深くチェックします。
「戻る」をクリックして「確認」ページを終了します。
EARファイルのデプロイ方法の詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。
サンプルEARファイルをデプロイしたら、ブラウザにそのWSDL URLを入力してテストします。
WSDL URL構文には、次の構造を使用します。
http://<host>:<port>/portletapp/info
Webページには、図18-4に示すようなコンテンツが表示されます。
「WSDL URLS」の下にあるポートレット・プロデューサの1つのリンクの場所をコピーし、18.10項「ポートレットの登録と表示」の手順に従ってこのポートレット・プロデューサを登録します。
さらに、新しく登録したポートレット・プロデューサからサンプル・ポートレットのいくつかをページに追加し、そのページを表示して、構成をテストします。なんらかの理由で登録に失敗するか、ページにポートレットを追加できない場合は、付録G「WebCenterアプリケーションのトラブルシューティング」を参照してください。
ポートレット・プリファレンス・ストアは、コンシューマ登録ハンドルおよびポートレット・プリファレンス・データを永続化するために使用されます。ポートレット・プロデューサでは、ファイルおよびデータベースの2タイプのプリファレンス・ストアの1つを使用できます。大部分のポートレット・プロデューサの場合、ファイル・プリファレンス・ストアがデフォルトで指定されており、そのまますぐに使用できます。データベース・プリファレンス・ストアには、追加の構成が必要です。
クラスタ環境では、データベース・プリファレンス・ストアの使用をお薦めします。ファイルベースのプリファレンス・ストアを使用する場合は、共有ファイル・システムも使用する必要があります。
この項では、データベース・プリファレンス・ストアとファイルベースのプリファレンス・ストアの設定方法について説明します。この項の内容は、次のとおりです。
データベース・プリファレンス・ストアは、高可用性が重要な環境に適しています。ポートレット・プロデューサにデータベース・プリファレンス・ストアを設定するには、デフォルトのファイル・プリファレンス・ストアに必要なものに加えて多少の構成が必要です。次に例を示します。
プリファレンスを格納するためのスキーマは、データベースに作成する必要があります。
接続の詳細は、データソースにマップする必要があります。
プリファレンス・ストア・タイプは、persistentStore
JNDI環境変数(WSRP)またはpreferenceStore
タグ(PDK-Java)を使用して指定する必要があります。
この項では、WSRPプロデューサおよびPDK-Javaプロデューサのデータベース・プリファレンス・ストアとファイルベースのプリファレンス・ストアの設定方法について説明します。この項の内容は、次のとおりです。
データベース・プリファレンス・ストアを使用する場合、WSRPおよびPDK-Javaの両方のプロデューサでデータベース・スキーマの作成が必要です。Oracle Application Serverインフラストラクチャ・データベースまたはその他のOracleデータベースに、このためのスキーマを作成できます。
ポートレット・プロデューサ・データベース・プリファレンス・ストア用のデータベース・スキーマを作成するには、スクリプトdbprefstore.sql
を使用できます。1つの操作で、スクリプトによりWSRPプロデューサおよびPDK-Javaプロデューサ用のデータベース・スキーマが作成されます。
スクリプトの名前はdbprefstore.sql
で、次の場所にあります。
ORACLE_HOME/j2ee/home/database/wsrp/
注意: このスクリプトのディレクトリ・パスにはwsrp が含まれていますが、スクリプトは、WSRPとPDK-Javaの両方のプリファレンス・ストア用データベース・オブジェクトを作成します。 |
WSRPプロデューサおよびPDK-Javaプロデューサのプリファレンス・ストア用データベース・スキーマを作成する手順は、次のとおりです。
SYS
アカウントおよびSYSDBA
データベース管理者ロールを使用して、SQL*Plusに接続します。
プロンプトで次のように入力します。
Enter user-name: SYS AS SYSDBA
Enter password:
SYS_password
SQLプロンプトで、次のように入力します。
SQL> @ORACLE_HOME\j2ee\home\database\wsrp\dbprefstore.sql
要求されたら、WSRPおよびPDK-Javaプリファレンス・ストア・データベース・スキーマのユーザー名およびパスワードを入力します。
たとえば、ユーザー名はportlet_prefs
のようになります。
コマンドが実行されると、データベース・プリファレンス・ストアが作成され、スキーマに必要なデータベース・オブジェクトが移入されます。
注意: データベース・プリファレンス・ストアから別のデータベース・プリファレンス・ストアへ、またはデータベース・プリファレンス・ストアからファイル・プリファレンス・ストアへのポートレット・プリファレンスの移行については、付録B「その他のポートレット構成」を参照してください。 |
ポートレット・プリファレンス・スキーマが作成されると、プロデューサにポートレット・プリファレンス・ストアのある場所を指示する必要があります。これは、WSRPに1回、PDK-Javaに1回、計2回行う必要があります。
Application Server Controlコンソールを使用して、接続の詳細をJDBCデータソースにマップすることにより、ポートレット・プリファレンスのある場所をプロデューサに指示します。これらの詳細は、data-sources.xml
ファイルに格納されています。
この項では、WSRPおよびPDK-Javaの両方のポートレット・プロデューサにこのマッピングを行う方法を、わずかな違いがある点に注意しながら説明します。
接続の詳細をWSRPポートレット・プロデューサおよびPDK-Javaポートレット・プロデューサのJDBCデータソースにマップする手順は、次のとおりです。
Application Server Controlコンソールにログインします。
通常は、Application Server ControlコンソールのURLは次の形式です。
http://hostname:port/em/
構成するOC4Jのホームページにナビゲートします。
「管理」タブをクリックします。
「管理タスク」リストが表示されます。
「サービス」タスクで、JDBCリソースの「タスクに移動」アイコンをクリックします。
「JDBCリソース」ページが表示されます。
「接続プール」セクションで、「作成」をクリックします。
「接続プールの作成 - アプリケーション」ページが表示されます。このページで、新規接続プールを追加するアプリケーションを指定できます。さらに、接続プールを作成するか、既存のものを使用するかを指定できます。
「アプリケーション」リストから、「デフォルト」を選択します。
「続行」をクリックします。
「接続プールの作成」ページが表示されます。このページを使用して、接続プールの作成に必要な詳細を指定します。
表18-1で説明しているように値を入力します。
表18-1 「接続プールの作成」の設定(データベース・ポートレット・プリファレンス・ストア)
設定 | 値 |
---|---|
この接続プールの名前を入力します。 たとえば、WSRPプロデューサには、次のように入力します。 OracleWSRPPool たとえば、PDK-Javaプロデューサには、次のように入力します。 OraclePDKPool |
|
次のデフォルト値を受け入れます。 oracle.jdbc.pool.OracleDataSource |
|
プリファレンス・ストア用に作成したスキーマを含むOracleデータベースのJDBC URLを、次の構文を使用して入力します。 jdbc:oracle:thin:@//dbhost:dbport/service_name 次に例を示します。 jdbc:oracle:thin:@//shobeen:1521/sales_us |
|
プリファレンス・ストア用のスキーマを作成したデータベースのユーザー名を入力します。 |
|
「ユーザー名」フィールドで指定したユーザーに対して、プリファレンス・ストア・スキーマを含むデータベースの間接パスワードを入力します。次に例を示します。 role/username 次に例を示します。 users/Scott |
「終了」をクリックします。
「JDBCリソース」ページが表示されます。
新規に作成した接続に対して、「接続テスト」アイコンをクリックします。
テストに失敗した場合は、接続プールが正しく設定されていることを確認します。
「データソース」セクションで、「作成」をクリックします。
「データ・ソースの作成 - アプリケーションとタイプ」ページが表示されます。このページを使用して、新規データソースを追加するアプリケーションとデータソースのタイプを指定します。
「アプリケーション」リストから、「デフォルト」を選択します。
「続行」をクリックします。
「データ・ソースの作成 - 管理データ・ソース」ページが表示されます。このページを使用して、管理データソース作成のための詳細を指定します。
表18-2で説明しているように値を入力します。
表18-2 「データ・ソースの作成」の設定(WSRPプロデューサ・プリファレンス・ストア)
設定 | 値 |
---|---|
データソースの名前を指定します。 たとえば、WSRPプロデューサ・プリファレンス・ストアには、次のように入力します。 WSRP_PREF_DS たとえば、PDK-Javaプリファレンス・ストアには、次のように入力します。 PDK_PREF_DS |
|
JNDIパスを次のように入力します。 jdbc/portletPrefs |
|
次のデフォルト値を受け入れます。 Global & Local Transactions |
|
先に作成した接続プールを選択します。 たとえば、WSRPプロデューサ・プリファレンス・ストアには、次のように入力します。 OracleWSRPPool PDK-Javaプロデューサ・プリファレンス・ストアには、次のように入力します。 OraclePDKPool |
|
デフォルト値( |
「終了」をクリックします。
スクリプトを実行してデータベース・プリファレンス・ストア用のデータベース・オブジェクトを設定し、接続の詳細をJDBCデータソースにマップした後、両方のポートレット・プロデューサのタイプには、構成ファイル(WSRPプロデューサのweb.xml
とPDK-Javaプロデューサのprovider.xml
)で多少の追加調整が必要です。これらのファイルで、プリファレンス・ストアのタイプと、場合によっては、プリファレンス・ストアの場所を指定する必要があります。
この項では、次のようなタスクの実行方法について説明します。この項の内容は、次のとおりです。
プリファレンス・ストア・データベース・オブジェクトが作成され、ポートレット・プロデューサでオブジェクトの場所が認識されていれば、データベース・プリファレンス・ストアでデフォルトのファイル・プリファレンス・ストアのかわりにデータベース・プリファレンス・ストアが使用されることを、ポートレット・プロデューサに指示する必要があります。これには、JNDI変数persistentStore
をDatabase
の値に設定します。
すべてのWSRPプロデューサについて、関連のweb.xml
ファイルで、JNDIプリファレンス・ストア変数を設定します。
例18-1は、各種WSRPプロデューサのweb.xml
ファイルのサンプル・ファイルの場所を示しています。
例18-1 web.xmlファイルのサンプル・ファイルの場所
Rich Text Portlet Producer:ORACLE_HOME
\j2ee\OC4J_WebCenter\applications\richtextportlet\richtextportlet\WEB-INF WSRP Samples Producer:ORACLE_HOME
\j2ee\OC4J_WebCenter\applications\portletapp\wsrp-samples\WEB-INF
表18-3では、データベース・プリファレンス・ストア関連のJNDI変数とその説明を示しています。
表18-3 WSRPプロデューサ・データベース・プリファレンス・ストア関連のJNDI変数
変数名 | 変数値 | 説明 |
---|---|---|
|
ポートレット・アプリケーションのコンシューマ登録ハンドルおよびポートレット・プリファレンスを永続化するために使用する、データ・ストア(ファイルまたはデータベース)を指定します。 指定可能な値: { |
例18-2は、プロデューサのweb.xml
ファイルで設定されるデータベース・プリファレンス・ストアを示しています。ファイルベースのプリファレンス・ストアからデータベース・プリファレンス・ストアに移動する場合は、設定したプリファレンス・ストアから必ずfileStoreRoot
タグを削除してください(fileStoreRoot
タグの例は例18-5を参照)。
注意: プリファレンス・ストア関連の変数は、WSRPプロデューサweb.xml ファイルにある場合も、ない場合もあります。変数を入力する前に、それらを探してください。変数がある場合は、それを希望どおりに変更します。変数がない場合は、例18-2に示したように変数を入力してください。 |
例18-2 データベース・プリファレンス・ストアを使用するためのweb.xmlの構成
<env-entry> <env-entry-name>oracle/portal/wsrp/server/persistentStore</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>Database</env-entry-value> </env-entry>
すべての関連web.xml
ファイルを変更したら、OC4Jインスタンスを再起動します。
プリファレンス・ストア・データベース・オブジェクトが作成され、PDK-Javaプロデューサでオブジェクトの場所が認識されていれば、データベース・プリファレンス・ストアでデフォルトのファイル・プリファレンス・ストアのかわりにデータベース・プリファレンス・ストアが使用されることを、PDK-Javaプロデューサに指示する必要があります。これには、各PDK-Javaプロデューサのprovider.xml
ファイル内のpreferenceStore
タグの値を設定します。
例18-3は、各種PDK-Javaプロデューサのprovider.xml
ファイルのサンプル・ファイルの場所を示しています。
例18-3 provider.xmlファイルのサンプル・ファイルの場所
Omniportlet:ORACLE_HOME
\j2ee\OC4J_WebCenter\applications\portalTools\omniPortlet\WEB-INF\providers\omniPortlet JPDK samples:ORACLE_HOME
\j2ee\OC4J_WebCenter\applications\jpdk\jpdk\WEB-INF\providers\providername
preferenceStore
タグを変更して、データベース・プリファレンス・ストアを使用します(例18-4)。
例18-4 データベース・プリファレンス・ストアを使用するためのprovider.xmlの構成
<preferenceStore class="oracle.portal.provider.v2.preference.DBPreferenceStore">
<name>producer_name</name>
<connection>jdbc/PooledConnection</connection>
</preferenceStore>
例18-4で、producer_nameを実際のプロデューサ名に置き換えます(ここで入力する名前は任意です)。それ以外の場合は、例をそのまま使用します。
注意: preferenceStore タグのデータベース関連の属性およびパラメータとその説明は、18.4.1.4項「preferenceStoreタグのデータベース関連の属性およびパラメータ」を参照してください。 |
すべての関連provider.xml
ファイルを変更したら、OC4Jインスタンスを再起動します。
表18-4は、データベース・プリファレンス・ストアが指定された場合に、preferenceStore
タグで使用される属性およびパラメータとその説明を示しています。
表18-4 preferenceStoreタグのデータベース関連の属性およびパラメータ
ファイルベース・プリファレンス・ストアは、ポートレット・プロデューサ用のデフォルトのプリファレンス・ストア・タイプで、最初から構成されています。
注意: クラスタ環境でファイルベースのプリファレンス・ストアを使用する場合、クラスタ内の各ノードは同じ場所を使用する必要があります。 |
データベース・プリファレンス・ストアからファイルベースのプリファレンス・ストアに移動する場合、またはファイルベースのプリファレンス・ストアの場所を変更する場合のために、この項では、WSRPおよびPDK-Javaの両方のポートレット・プロデューサ用にファイルベースのプリファレンス・ストアを設定する方法について説明します。この項の内容は、次のとおりです。
WSRPプロデューサの場合、ファイルベースのプリファレンス・ストアに必要な構成はすべて、プロデューサのweb.xml
ファイルで生じたものです。複数のプロデューサの場合は、複数のweb.xml
ファイルになります。そのような環境では、必ずすべての関連web.xml
ファイルを構成します。
2つのJNDI変数(persistentStore
およびfileStoreRoot
)が、WSRPプロデューサ用のプリファレンス・ストアの機能を制御します。データベースとファイルのプリファレンス・ストアにはどちらにもpersistentStore
変数が必要です。fileStoreRoot
変数は、ファイル・プリファレンス・ストアがある場合にのみ使用されます。
表18-5では、WSRPプロデューサ・プリファレンス・ストア関連のJNDI変数で、ファイルベースのプリファレンス・ストア関連の変数とその説明を示しています。
表18-5 WSRPプロデューサ・ファイル・プリファレンス・ストア関連のJNDI変数
変数名 | デフォルト変数値 | 説明 |
---|---|---|
|
ポートレット・アプリケーションのコンシューマ登録ハンドルおよびポートレット・プリファレンスを永続化するために使用する、データ・ストア(ファイルまたはデータベース)を指定します。 指定可能な値: { |
|
|
ファイル・プリファレンス・ストアで使用されるルート・ディレクトリのパスを定義します。絶対パスは、ファイル・システム・ルートを基準として解釈されます。相対パスは、 同じOC4Jインスタンス内で実行されているプロデューサはすべて、この変数について同じパスを使用する必要があります。そうしないと、一部のポートレットに対して |
例18-5は、WSRPプロデューサのweb.xml
ファイルでのデフォルトのプロデューサ・プリファレンス・ストア設定を示しています。関連の設定は、太字で示されています。
注意: プリファレンス・ストア関連の変数は、WSRPプロデューサweb.xml ファイルにある場合も、ない場合もあります。変数を入力する前に、それらを探してください。変数がある場合は、それを希望どおりに変更します。変数がない場合は、例18-5に示したように変数を入力してください。 |
例18-5 ファイルベースのプリファレンス・ストアを使用するためのweb.xmlの構成
<env-entry> <env-entry-name>oracle/portal/wsrp/server/persistentStore</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>File</env-entry-value> </env-entry> <env-entry> <env-entry-name>oracle/portal/wsrp/server/fileStoreRoot</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>portletdata</env-entry-value> </env-entry>
すべての関連web.xml
ファイルを変更したら、OC4Jインスタンスを再起動します。
PDK-Javaプロデューサでは、provider.xml
構成ファイルでpreferenceStore
タグを使用して、使用するプロデューサ・プリファレンス・ストアのタイプを指定します。複数のプロデューサの場合は、複数のprovider.xml
ファイルになります。そのような環境では、必ずすべての関連provider.xml
ファイルを構成します。
ファイルベースのプリファレンス・ストアを使用するために、preferenceStore
タグを変更します。必要に応じて、タグを追加します。例18-6で、producer_nameを実際のプロデューサ名に置き換えます(ここで入力する名前は任意です)。それ以外の場合は、OmniPortlet以外のすべてのPDK-Javaポートレット用に書かれた例をそのまま使用します(例18-7を参照)。
例18-6 ファイルベースのプリファレンス・ストアを使用するためのprovider.xmlの構成
<preferenceStore class="oracle.portal.provider.v2.preference.FilePreferenceStore">
<name>producer_name</name>
<useHashing>true</useHashing>
</preferenceStore>
OmniPortletでは、他のすべてのPDK-Javaポートレット・プロデューサで使用される標準クラスとは異なるpreferenceStore
クラスを使用します。OmniPortlet preferenceStore
クラスは、デフォルトのクラスをOmniPortlet固有の機能で拡張します。さらに、rootDirectory
パラメータを使用し、ポートレット・プリファレンスの格納場所を指定します。
注意: rootDirectory パラメータは、OmniPortlet専用ではありません。他のポートレットも同様に使用できます。次に例を示します。
<rootDirectory>
ORACLE_HOME/portal/portletdata/tools/providerBuilder
</rootDirectory>
|
例18-7では、ファイルベース・プリファレンス・ストア用のOmniPortlet preferenceStore
クラスの指定を示しています。OmniPortletにファイルベースのプリファレンス・ストアを指定する際には、例18-7で指定したパラメータとパラメータ値を使用します。
例18-7 ファイルベースのプリファレンス・ストアを使用するためのOmniPortletのprovider.xmlファイルの構成
<preferenceStore class="oracle.webdb.reformlet.ReformletFilePreferenceStore"> <name>omniPortletprefStore</name> <useHashing>true</useHashing> <rootDirectory> ${oracle.home}/portal/portletdata/tools/omniPortlet </rootDirectory> </preferenceStore>
すべての関連provider.xml
ファイルを変更したら、OC4Jインスタンスを再起動します。
表18-6は、ファイルベース・プリファレンス・ストアが指定された場合に、preferenceStore
タグで使用される属性およびパラメータとその説明を示しています。
表18-6 preferenceStoreタグのファイル関連の属性およびパラメータ
この必須属性は、ポートレット・プリファレンスの場所およびその他の詳細を定義するJavaクラスを指定します。たとえば、大部分のPDK-Javaポートレット・プロデューサでは、ファイルベース・プリファレンス・ストアに次のクラスを使用します。
<preferenceStore class="oracle.portal.provider.v2.preference.FilePreferenceStore">
OmniPortletでは、独自のクラスを使用します。次に例を示します。
<preferenceStore class="oracle.webdb.reformlet.ReformletFilePreferenceStore">
詳細は、18.4.2.2項「ファイルベースのプリファレンス・ストアを使用するためのPDK-Javaプロデューサの構成」を参照してください。 |
|
この必須パラメータは、プリファレンス・ストアの名前を指定します。選択する任意の値を使用します。次に例を示します。
<preferenceStore class="oracle.portal.provider.v2.preference.DBPreferenceStore">
<name>MyPDKProducerPreferenceStore</name>
</preferenceStore>
|
|
このオプション・パラメータは、ファイルベース・プリファレンス・ストアのプリファレンスが格納される場所を指定します。 <preferenceStore class="oracle.webdb.reformlet.ReformletFilePreferenceStore"> <name>PDKProducerPreferenceStore</name> <useHashing>true</useHashing> <rootDirectory> ORACLE_HOME/portal/portletdata/tools/providerBuilder </rootDirectory> </preferenceStore> OmniPortletには、このパラメータに独自の値があります。次に例を示します。 <rootDirectory> ${oracle.home}/portal/portletdata/tools/omniPortlet </rootDirectory> 詳細は、18.4.2.2項「ファイルベースのプリファレンス・ストアを使用するためのPDK-Javaプロデューサの構成」を参照してください。 このパラメータが |
|
このオプション・パラメータには、 次に例を示します。
<preferenceStore class="oracle.portal.provider.v2.preference.FilePreferenceStore">
<name>PDKProducerPreferenceStore</name>
<useHashing>true</useHashing>
</preferenceStore>
|
Webクリッピング・ポートレットには、プリファレンス・ストアの使用に関して、独特の場合があります。Webクリッピング・ポートレットでは、プリファレンス・ストアを使用しません。かわりに、Webクリッピングの定義およびクリッピングをリポジトリに置きます。これはOracle MetaData Services(MDS)リポジトリ(ファイル・システムにあるデフォルトで、そのまま使用できる構成)またはデータベース・リポジトリ(高可用性には最適)のどちらかです。
この項では、Webクリッピングの定義およびクリッピング用に、データベース・リポジトリまたはMDSリポジトリを使用するように、Webクリッピング・ポートレット・プロデューサを構成する方法について説明します。この項の内容は、次のとおりです。
Webクリッピングの定義およびクリッピングの格納のためにデータベース・リポジトリを使用するには、2つのタスクを完了する必要があります。
Webクリッピングの定義およびクリッピング用のデータベース・スキーマを作成するには、例18-8のJavaコマンドを実行します。
例18-8 Webクリッピング・ポートレットの定義およびクリッピング用のスキーマを作成するためのJavaコマンド
ORACLE_HOME/jdk/bin/java -classpath ORACLE_HOME/lib/xmlparserv2.jar: ORACLE_HOME/jdbc/lib/ojdbc14.jar:ORACLE_HOME/portal/jlib/wce.jar oracle.portal.wcs.Installer -installSchema -username dbuser -password dbpassword -dburl jdbc:oracle:thin:@//host:port/dbid
注意: 例18-8のクラスパスでは、UNIXとWindowsで異なるセパレータを使用しています。UNIXシステムでは、classpath にコロン(:)セパレータを使用します。Windowsシステムでは、classpath にセミコロン(;)セパレータを使用します。 |
これらの意味は、次のとおりです。
ORACLE_HOME
は、使用するOracleホーム・ディレクトリのパスです。
dbuser
は、スキーマのデータベース・ユーザーです。
WSRPおよびPDK-Javaのプリファレンス・ストア・データベース・スキーマの作成で使用したものと同じデータベースを使用することを検討してください。18.4.1.1項「データベース・プリファレンス・ストア用スキーマの作成」を参照してください。同じユーザーを使用しない場合は、新規のユーザーを作成し、接続権限とリソース権限を付与する必要があります。
dbpassword
は、指定したユーザーのパスワードです。
dburl
は、データベースのURLです。
これは、次の構文を使用してWebクリッピング・ポートレットの定義およびクリッピング用に作成したスキーマを含むデータベースです。
jdbc:oracle:thin:@//dbhost:dbport/service_name
次に例を示します。
jdbc:oracle:thin:@//shobeen:1521/sales_us
Webクリッピング・プロデューサ・データベース・リポジトリを、次の場所にあるプロデューサのprovider.xml
ファイルで設定します。
ORACLE_HOME\j2ee\OC4J_WebCenter\applications\portalTools\webClipping\WEB-INF\providers\webClipping
データベース・リポジトリを使用するには、例18-9で示すように、repositoryInfo
タグを更新して、DatabaseInformation
クラスを使用するようにします。タグ・パラメータについては、18.4.3.3項「repositoryInfoタグの属性および子タグ」で説明しています。
例18-9 Webクリッピングの定義およびクリッピング用にデータベース・リポジトリを使用するためのWebクリッピングprovider.xmlファイルの構成
<repositoryInfo class="oracle.portal.wcs.provider.info.DatabaseInformation"> <useRAA>false</useRAA> <databaseHost>infradbhost</databaseHost> <databasePort>1521</databasePort> <databaseSid>iasdb</databaseSid> <databaseUsername>webclip_user</databaseUsername> <databasePassword>!AX3tR</databasePassword> <useASO>false</useASO> </repositoryInfo>
provider.xml
ファイルに変更を加えた後、OC4Jを再起動します。
Webクリッピング・プロデューサMDSリポジトリを、次の場所にあるプロデューサのprovider.xml
ファイルで設定します。
ORACLE_HOME\j2ee\OC4J_WebCenter\applications\portalTools\webClipping\WEB-INF\providers\webClipping
MDSリポジトリを使用するには、例18-10で示すように、repositoryInfo
タグを更新して、MdsInformation
クラスを使用するようにします。タグ・パラメータについては、18.4.3.3項「repositoryInfoタグの属性および子タグ」で説明しています。
例18-10 Webクリッピングの定義およびクリッピング用にOracle Metadata Servicesリポジトリを使用するためのWebクリッピングprovider.xmlファイルの構成
<repositoryInfo class="oracle.portal.wcs.provider.info.MdsInformation"> <mdsConfigLocation>mds-config.xml</mdsConfigLocation> </repositoryInfo>
この構成は、実際のMDSの場所を指定するmds-config.xml
ファイルを指しています。デフォルトでは、mds-config.xml
ファイルは、次の場所にあります。
ORACLE_HOME\j2ee\OC4J_WebCenter\applications\portalTools\webClipping\WEB-INF
mds-config.xml
ファイルは、プロパティ・タグ内でリポジトリの場所を指定しています(例18-11)。
例18-11 mds-config.xmlファイルでのMDSリポジトリの場所の指定
<property name="metadata-path" value="portletdata/tools/webClipping"/>
注意: mds-config.xml でmetadata-path の値を手動で構成する場合、そのディレクトリは、プロデューサの再起動時に存在しているはずです。 |
value
に指定される場所は、ORACLE_HOME
\portal
を基準としています。指定される相対パスは、ORACLE_HOME
\portal
を基準としているものと解釈されます。別の場所(たとえば、Oracleホーム外の場所)を使用する場合は、絶対パス(c:\mds
など)を指定します。
この項で説明した変更を行ったら、OC4Jインスタンスを再起動します。
表18-7では、repositoryInfo
タグの属性および子タグとその説明を示しています。
注意: repositoryInfo タグの属性および子タグは、Webクリッピングのprovider.xml ファイルのコメントでも説明されています。
|
表18-7 repositoryInfoタグの属性および子タグ
属性/パラメータ | MDS/データベース | 説明 |
---|---|---|
両方 |
oracle.portal.wcs.provider.info.MdsInformation この値は、Webクリッピングの定義の格納にMDSが使用され、MDS構成が oracle.portal.wcs.provider.info.DatabaseInformation この値は、Webクリッピングの定義の格納にはOracle9iデータベース以上が使用され、データベースの接続の詳細は |
|
MDS |
この構成は、実際のMDSの場所を指定する
ORACLE_HOME\j2ee\OC4J_WebCenter\applications\portalTools\webClipping\WEB-INF
詳細は、例18-11を参照してください。 |
|
データベース |
|
|
データベース |
|
|
データベース |
Oracleデータベースのホスト名を指定します。バージョン9i以上のみを使用します。次に例を示します。 mycompany.dbhost.com |
|
データベース |
Oracleデータベース・リスナーのポート番号を指定します。これは通常 |
|
データベース |
Webクリッピング・リポジトリをホスティングするデータベースのOracle SIDを指定します。 |
|
データベース |
データベースへのログインに使用するユーザー名を入力します。 |
|
データベース |
指定したデータベース・ユーザー名のプレーン・テキストのパスワードを入力します。パスワードの前に感嘆符(!)を付け、Webクリッピング・プロデューサが起動と同時にパスワードを暗号化できるようにします。 次に例を示します。 !AX3tR |
Oracle JDeveloperでJSR 168 Javaポートレット・ウィザードを使用すると、ポートレットをWSRP 2.0で迅速かつ容易に公開できます。ウィザードではWSRP 1.0とWSRP 2.0の両方がサポートされています。WSRP 2.0ポートレットを作成する場合は、WSRP 2.0の拡張機能のために、ウィザードに追加のページが表示されます。
この項では、次のことを前提にしています。
ポートレット・モードなど、ポートレットに関する用語の知識があること。第14章「ポートレットの概要」および18.1項「Javaポートレット作成のガイドライン」を参照してください。
OTNで提供されている構成済のOC4Jをインストールしていること。3.2項「Preconfigured OC4Jの使用」を参照してください。
Oracle JDeveloperに関する知識があり、それを使用したJavaコンポーネントを構築およびデプロイする方法を習得していること。
この項では、JSR 168 Javaポートレット・ウィザードの手順を説明します。最初に、実装するポートレットのモード、および実装メソッド(JSP、HTTPサーブレット、JavaクラスまたはHTML)を選択できます。次に、ウィザードによって、選択したモードごとに簡単なサンプル実装が作成されます。
注意: この項の図は、Oracle JDeveloperで「ルック・アンド・フィール」の設定を「Windows」にしています。「ルック・アンド・フィール」を「Oracle」に設定した場合は、表示される画面が少し異なりますが、内容および機能は同じです。「ルック・アンド・フィール」設定を変更するには、「ツール」メニューから「プリファレンス」を選択し、次に「環境」を選択します。 |
JSR 168 Javaポートレット・ウィザードを使用してポートレットを作成する手順は、次のとおりです。
Oracle JDeveloperを起動します。
アプリケーション・ナビゲータで、ポートレットの作成先であるアプリケーションを開きます。
ポートレットの作成先であるプロジェクトを右クリックし、「新規」を選択します。
注意: アプリケーションの作成時にWebCenterアプリケーション・テンプレートを選択した場合、ポートレット・プロジェクトでそのポートレットを作成します。そのようなアプリケーションまたはプロジェクトがまだない場合は、3.1項「WebCenterアプリケーションの作成」を参照してください。 |
「新規ギャラリ」で、「Web Tier」カテゴリを開き、「Portlets」を選択します。
「項目」リストで、図18-5に示すように、「規格に基づいたJavaポートレット(JSR 168)」を選択します。
注意: 「Javaポートレット」を選択すると、JPS準拠のポートレットを作成するためのポートレット・ウィザードが開きます。「Oracle PDK Javaポートレット」をクリックすると、PDK-Javaポートレットを作成するためのポートレット・ウィザードが開きます。 |
ウィザードの「ようこそ」ページが表示されたら、「次へ」をクリックして、「Webアプリケーション」ページ(図18-6)を表示します。
プロジェクトの「Webアプリケーション・バージョン」オプションを選択します。Servlet 2.4は、Oracle Application Serverリリース10.1.3以上でのみサポートされています。
注意: プロジェクトにすでにJSPまたはJSF JSPが含まれている場合、「Webアプリケーション・バージョン」はすでに設定されています。その場合は、このページは表示されず、かわりに直接「一般ポートレット・プロパティ」ページに進みます。 |
「次へ」をクリックして、「一般ポートレット・プロパティ」ページ(図18-7)を表示します。
「クラス」フィールドに、ウィザードでポートレットに対して作成するクラスの名前を入力します。表示されているデフォルト名を受け入れることも、独自の名前を指定することもできます。
「パッケージ」リストで、クラスを格納するパッケージを選択します。「参照」ボタンをクリックして、プロジェクト内でパッケージを見つけます。特定のパッケージを選択しない場合、ウィザードではプロジェクトのデフォルト・パッケージが使用されます。
「言語」リストで、ポートレットでサポートするデフォルトの言語を選択します。ウィザードでは、デフォルトで英語が使用されます。
「編集可能」を選択して、編集モードを追加します。ウィザードでは、このオプションがデフォルトで選択されています。
「Oracle拡張機能を使用してWSRP V2のポートレット間通信を可能にします。」を選択して、このポートレットがOracle WSRP 2拡張機能をサポートすることを指定します。このオプションを選択するとoracle-portlet.xml
ファイルが作成され、WSRP 2.0の機能(ナビゲーション・パラメータなど)のために使用されます。WSRP 2.0標準は、ポートレット間の通信(ナビゲーション・パラメータを介す)とポートレット・カスタマイズのエクスポートまたはインポートのサポートを含めることで、WSRP 1.0を拡張します。
注意: Oracleの拡張機能で構築されたJSR 168ポートレットは、WSRP 2.0をサポートするすべてのコンシューマで使用できます。WSRP 2.0を活用するには、ポートレットをOracle Application Serverリリース10.1.3.2にデプロイする必要があります。 |
「次へ」をクリックして、「名前と属性」ページ(図18-8)を表示します。
「表示名」フィールドに、ポートレットの名前を入力します。このポートレット属性は、WebCenterアプリケーションでは使用されませんが、その他のアプリケーションで使用されるポートレットでは役に立つ場合があります。たとえば、OracleAS Portalでは、そのポートレット選択リストで(つまり、ポートレット・リポジトリで)この値を使用します。
「ポートレット・タイトル」フィールドに、ポートレットのタイトルを入力します。このタイトルは、ポートレットがページ上に現れるときに、ポートレット・ヘッダーに表示されます。
「短いタイトル」フィールドに、ポートレットのより短いタイトルを入力します。このポートレット属性は、WebCenterアプリケーションでは実装されませんが、その他のアプリケーションで使用されるポートレットでは役に立つ場合があります。たとえば、このポートレットをOracleAS Portalで使用し、ユーザーにモバイル・オプションを提供する場合、ポートレットの短いタイトルを入力して、ポートレットのヘッダーに長いポートレット・タイトルのかわりに表示されるようにします。
「説明」フィールドに、ポートレットの説明を入力します。このポートレット属性は、WebCenterアプリケーションでは使用されませんが、その他のアプリケーションで使用されるポートレットでは役に立つ場合があります。たとえば、このポートレットをOracleAS Portalで使用する場合、説明はポートレット・リポジトリ内でポートレットの下に表示されます。
「キーワード」フィールドに、ユーザーが検索でポートレットを見つけやすくするための追加のキーワードを入力します。このポートレット属性は、WebCenterアプリケーションでは実装されませんが、その他のアプリケーションで使用されるポートレットでは役に立つ場合があります。
「次へ」をクリックして、「コンテンツ・タイプとポートレット・モード」ページ(図18-9)を表示します。
または、「終了」をクリックし、残りのすべての設定にデフォルト値を使用することで、ポートレットをただちに作成できます。
デフォルトでは、ポートレットにコンテンツ・タイプとして「text/html」が表示されます。他のコンテンツ・タイプを追加する場合は、「text/html」を選択し、「追加」をクリックします。
使用可能なコンテンツ・タイプのリストが表示されます(図18-10)。「使用可能」リストから希望するコンテンツ・タイプを選択し、矢印ボタンを使用して、それらを「選択済」リストへ移動します。終了したら、「OK」をクリックします。
デフォルトでは、ポートレットに「view」モードが含まれています。「一般ポートレット・プロパティ」ページで「カスタマイズ可能」を選択した場合は、ポートレットに「edit」モードも含まれます。他のポートレット・モードを追加する必要がある場合は、既存のポートレット・モード(たとえば、「view」)をクリックし、「追加」の矢印をクリックします。
使用可能なポートレット・モードのリストが表示されます(図18-11)。希望するモードを「使用可能」リストから「選択済」リストに移動することで追加できます。終了したら、「OK」をクリックします。ポートレット・モードの詳細は、18.1項「Javaポートレット作成のガイドライン」を参照してください。
必要なポートレット・モードをすべて追加した後は、各モードについて実行する機能を選択します。ポートレット・モードごとに、そのポートレット・モードをクリックし、右側のオプションを次のように選択します。
JSPの生成: Oracle JDeveloperでそのポートレット・モードに対してJSPを生成する場合に選択します。対応するフィールドにJSPの名前を入力するか、デフォルトを受け入れます。
ウィザードでの作業を完了すると、生成されたJSPがアプリケーション・ナビゲータに表示され、開発をさらに進めるために選択できます。これは、すべてのポートレット表示モードでのデフォルトの選択です。この選択により、生成されたポートレットJavaクラスにコードが入力され、指定したモードのリクエストが生成されたJSPにルーティングされます。
パスへのマップ: ポートレット・モードを既存のWebリソース(ページなど)にマップする場合に選択します。対応するフィールドにパスを入力します。これを選択すると、ターゲットのリソースまたはファイルを自身で書き込む必要があります。ターゲットとしては、たとえば、JSP、サーブレットあるいはHTMLファイルを指定できます。この選択により、生成されたポートレットJavaクラスにコードが入力され、指定したモードのリクエストが指定したターゲットにルーティングされます。
カスタム・コード: カスタム・コード・オブジェクトを介して、ポートレット・モードを実装する場合に選択します。このオブジェクトは後から作成します。これを選択するとスケルトン・メソッドが生成され、生成されたポートレットJavaクラス内にコンテンツ(private void do<MODE_NAME><CONTENT_TYPE>
)がレンダリングされます。役に立つコンテンツをレンダリングするには、このコードを更新する必要があります。
「次へ」をクリックします。
ウィザードの前のステップで「一般プロパティ」ページの「編集可能」を選択した場合、「カスタマイズ・プリファレンス」ページが表示されます(図18-12)。手順26に進んでください。
このオプションを選択しなかった場合は、「セキュリティ・ロール」ページが表示されます(図18-14)。手順34に進んでください。
他のカスタマイズ・プリファレンスを追加する場合は、「追加」をクリックします。「新規プリファレンスの追加」ダイアログ・ボックスが表示されます(図18-13)。
「名前」フィールドに、新規カスタマイズ・プリファレンスの名前を入力します。名前は、そのポートレット内で一意のものを指定する必要があります。文字、数字およびアンダースコアのみを使用します。
「デフォルト値」フィールドに、新規カスタマイズ・プリファレンス用の1つ以上のデフォルト値を入力します。複数の値はカンマで区切ります。
カスタマイズ・プリファレンス値を翻訳する必要がある場合は、「翻訳」チェック・ボックスを選択します。このオプションを選択すると、Oracle JDeveloperでは、翻訳できる文字列でリソース・バンドル・クラスが生成されます。実行時に、ポートレットはリソース・バンドルのエントリを参照します。
注意: 名前は常に翻訳されますが、デフォルト値は必ずしも翻訳する必要はありません。たとえば、値が整数の場合、翻訳は不要です。 |
「OK」をクリックします。さらにカスタマイズ・プリファレンスを追加する場合は、これまでの手順を繰り返してください。
既存のカスタマイズ・プリファレンスの詳細を編集するには、「ポートレット・プリファレンス」リストでプリファレンスを選択し、「プリファレンス詳細」セクションでフィールドを編集します。
既存のカスタマイズ・プリファレンスを削除するには、「ポートレット・プリファレンス」リストでプリファレンスを選択し、「削除」をクリックします。
「次へ」をクリックして、「セキュリティ・ロール」ページ(図18-14)を表示します。
JSR 168ポートレットでは、web.xml
で定義され、portlet.xml
で参照されるJ2EEセキュリティ・ロールを使用できます。「使用可能」リストには、ポートレット・アプリケーションのWebデプロイ・ファイル(web.xml
)で定義されているセキュリティ・ロールが表示されます。セキュリティ・ロールを「使用可能」リストから「選択済」リストに移動すると、アプリケーションのポートレット・デプロイ・ファイル(portlet.xml
)にそのセキュリティ・ロールの参照が作成され、これがweb.xml
内のセキュリティ・ロールを参照します。
新規のセキュリティ・ロールを定義する場合、「新規セキュリティ・ロール」をクリックします。「新規セキュリティ・ロールの作成」ダイアログ・ボックスが表示されます(図18-15)。
「名前」フィールドに、セキュリティ・ロールの一意の名前を入力します。
「説明」フィールドに、このセキュリティ・ロールがポートレットに対して持つアクセスの権限や制限について説明する、セキュリティ・ロールの説明を入力します。
「OK」をクリックします。
新しいセキュリティ・ロールが「使用可能」リストに追加されます。セキュリティ・ロールは、10.2項「アプリケーションのセキュリティの設定」で説明しているように、手動で作成することもできます。
「次へ」をクリックして、「キャッシュ」ページ(図18-16)を表示します。
ポートレット用のキャッシュを有効にする場合、「キャッシュ・ポートレット」を選択します。
このオプションを選択することにより、ポートレット・キャッシュがポートレット・コンテナによって管理されることを指定します。ポートレット自体で、指定のレスポンスのコンテンツをキャッシュすることもできます。このページで指定する設定は、レスポンスに対するキャッシュ条件がポートレットで指定されていない場合にのみ適用されます。
「デフォルト失効条件」セクションで、次のいずれかのオプションを選択します。
キャッシュ・コンテンツ有効期限(秒): キャッシュされたポートレット・コンテンツを、一定の時間が経つと期限切れになるようにする場合。期限は隣のフィールドで指定します。
キャッシュ・コンテンツ無期限: キャッシュされたポートレット・コンテンツが期限切れにならないようにする場合。ポートレットに変更する見込みのない静的コンテンツが含まれている場合、このオプションを選択できます。
注意: ポートレットについてデフォルトでキャッシュしない場合は、「デフォルトでキャッシュしない」を選択します。この場合、ウィザードではキャッシュ有効期限が0秒に設定されます。前述したとおり、このキャッシュ設定が有効となるのは、レスポンスに対するキャッシュ条件がポートレットで指定されていない場合のみです。ここでキャッシュしないように設定し、後で、ポートレットについてデフォルトでキャッシュする必要が生じた場合は、簡単に変更できます。変更するには、ウィザードで生成した |
「次へ」をクリックして、「初期化パラメータ」ページ(図18-17)を表示します。
初期化パラメータによって、.war
ファイルの内容を決定するWebアプリケーション開発者が指定されます。このファイルは、JNDI変数のかわりに、Webアプリケーション(サーブレットやポートレット)のすべてのコンポーネントの動作を互換性のある方法で構成するために使用します。これらの初期化パラメータは、portlet.xml
ファイルに追加されます。
初期化パラメータを追加する場合は、「新」をクリックします。これにより、パラメータの表に新しい行が追加されます。その行をダブルクリックすれば、詳細を編集できます。
「名前」フィールドに、初期化パラメータの一意の名前を入力します。文字、数字およびアンダースコアのみを使用します。
「値」フィールドに、パラメータのデフォルト値を入力します。
「説明」フィールドに、パラメータの説明を入力します。
初期化パラメータを削除するには、パラメータの表でそのパラメータを選択し、「削除」をクリックします。
「次へ」をクリックして、「ポートレット・ナビゲーション・パラメータ」ページ(図18-18)を表示します。
ポートレット・ナビゲーション・パラメータについては、19.1.2項「ナビゲーション・パラメータの実装(WSRP 2.0)」を参照してください。
「次へ」をクリックして、「終了」を表示します。
「終了」をクリックすると、ポートレット用のファイルが生成されます。アプリケーション・ナビゲータでプロジェクト・ノードに対して、次のファイルが生成されます(図18-19を参照)。
ポートレット・モードに「JSPの生成」を選択した場合、モードごとにコードが生成されます。
「カスタム・コード」を選択した場合、そのコードはポートレットのJavaクラスに属すことになります。
2つのJavaクラス
<packagename>.<portletname>.java
は、ポートレット・コンテナによって起動され、ポートレット標準で必要なメソッドがすべて含まれています。
<packagename>.<portletname>Bundle.java
には、ポートレット用の翻訳文字列がすべて含まれています。
portlet.xml
oracle-portlet.xml
web.xml
次のステップでは、独自のポートレット・ロジックをポートレットに追加して、希望する機能を一層します。18.8項「ポートレット・ロジックの追加」を参照してください。
PDK-Javaは、一般的に必要なユーティリティを提供することでJavaポートレットを簡単に開発できるフレームワークを提供し、これまでの開発スキルや、JSP、サーブレット、静的HTMLページなどの既存アプリケーション・コンポーネントを活用できるようにします。また、Oracle WebCenter Frameworkとプロデューサ間の通信の複雑さに直接対処する必要なしにポートレットを作成できます。
PDK-Javaのフレームワークは次の領域に分けられます。
プロデューサ・アダプタ: これにより、開発者は、Webプロデューサとの通信用にOracle WebCenter Frameworkによって定義されたHTTP構文を使用しないで済むようになります。Oracle WebCenter FrameworkとJava Webプロデューサ間で受け渡しされる情報が翻訳されます。プロデューサは、アダプタがないと、ポートレットを管理するのみでなく、所定の言語でこの情報を直接Oracle WebCenter Frameworkに伝達する必要があります。アダプタによって、Webプロデューサはポータル言語を理解する必要がなくなり、逆も同様です。
プロバイダ・インタフェース: プロバイダ・アダプタとの統合にJava実装で必要となるAPI(関数)を定義します。プロデューサ・アダプタは、WebCenterアプリケーションからのメッセージを受信して、プロデューサ・インタフェースへのコールに変換し、プロデューサのレスポンスをアプリケーションが理解できる書式に翻訳します。プロデューサ・インタフェースには、プロデューサが実装する必要のあるメソッドを定義するためのJavaクラスのセットが含まれ、多くの場合、標準実装が用意されています。主なクラスには次のものがあります。
ProviderDefinition
(oracle.portal.provider.v2.ProviderDefinition
)
ProviderInstance
(oracle.portal.provider.v2.ProviderInstance
)
PortletDefinition
(oracle.portal.provider.v2.PortletDefinition
)
PortletInstance
(oracle.portal.provider.v2.PortletInstance
)
ParameterDefinition
(oracle.portal.provider.v2.ParameterDefinition
)
EventDefinition
(oracle.portal.provider.v2.EventDefinition
)
プロデューサ・ランタイム: プロデューサ・インタフェースの仕様に準拠する基本実装です。プロデューサ・ランタイムには、個々のプロデューサ・インタフェースを実装するためのデフォルト・クラスのセットが含まれ、PDK-Javaに付属のレンダリング、パーソナライズおよびセキュリティのフレームワークを活用できるようにします。このようなクラスと関連フレームワークは、Oracle WebCenter Frameworkリクエストの共通関数を実装し、プロデューサを構成するための宣言メカニズムを提供することで、プロデューサの開発を簡略化します。プロデューサ・ランタイムを使用すると、WebCenterアプリケーションとの通信に必要なインフラストラクチャではなく、ポートレット自体に開発労力を集中できます。プロデューサ・ランタイムの標準動作が要件を満たさない場合に、特定の動作の拡張または変更を容易に行うことができます。主なクラスには次のものがあります。
DefaultProviderDefinition
(oracle.portal.provider.v2.DefaultProviderDefinition
)
DefaultProviderInstance
(oracle.portal.provider.v2.DefaultProviderInstance
)
DefaultPortletDefinition
(oracle.portal.provider.v2.DefaultPortletDefinition
)
DefaultPortletInstance
(oracle.portal.provider.v2.DefaultPortletInstance
)
PortletRenderer
(oracle.portal.provider.v2.render.PortletRenderer
)
PortletPersonalizationManager
(oracle.portal.provider.v2.personalize.PortletPersonalizationManager
)
PortletSecurityManager
(oracle.portal.provider.v1.http.DefaultSecurityManager
)
プロデューサ・ユーティリティ: ポートレットのレンダリングを簡略化するメソッドを提供します。このユーティリティには、有効なリンク(hrefs
)を構築するメソッド、ポートレットのコンテナ(ヘッダーを含む)をレンダリングするメソッド、ページ内で動作するHTMLフォームをレンダリングするメソッドおよびポートレット・キャッシュをサポートするメソッドが含まれています。
PDK-Javaポートレットのガイドライン
Oracle WebCenter Frameworkでは、PDK-Javaポートレットは、OracleAS Portalの場合とはいくぶん異なる働きをします。そのため、Oracle WebCenter FrameworkでPDK-Javaポートレットを作成する際、次の新しい設計上の検討事項を認識しておく必要があります。
ポートレットには、リクエストでポートレットによって明示的に追加されなかったURLの書式またはパラメータに依存するコードを含めないでください。
ポートレットのモードに関係なく、作成したポートレットがページ上で唯一のポートレットであると想定しないでください。たとえば、作成したポートレットが編集モードであっても、自分のポートレットがページ上の唯一のポートレットであるとは考えないでください。
簡単にリダイレクトするポートレット・モードを記述しないでください。リダイレクトは、ポートレットに対するポストの処理中、またはポートレットによって生成されたリンクをたどる間にのみ発行できます。
Oracle JDeveloperでJavaポートレット・ウィザードを使用することで、ポートレットの開発を迅速かつ容易に開始できます。
この項では、次のことを前提にしています。
ポートレット・モードなど、ポートレットに関する用語の知識があること。第14章「ポートレットの概要」および18.1項「Javaポートレット作成のガイドライン」を参照してください。
Oracle JDeveloperに関する知識があり、それを使用したJavaコンポーネントを構築およびデプロイする方法を習得していること。Oracle JDeveloperはOTNからダウンロードできます。次のURLでOTNの「Oracle JDeveloper」ページにアクセスします。
http://www.oracle.com/technology/products/jdev/index.html
この項では、Javaポートレット・ウィザードの手順を説明します。最初に、実装するポートレットのモード、および実装メソッド(JSP、HTTPサーブレット、JavaクラスまたはHTML)を選択できます。次に、ウィザードによって、選択したモードごとに簡単なサンプル実装が作成されます。
注意: この項の図は、Oracle JDeveloperで「ルック・アンド・フィール」の設定を「Windows」にしています。「ルック・アンド・フィール」を「Oracle」に設定した場合は、表示される画面が少し異なりますが、内容および機能は同じです。「ルック・アンド・フィール」設定を変更するには、「ツール」メニューから「プリファレンス」を選択し、次に「環境」を選択します。 |
ポートレットおよびプロデューサを作成する手順は、次のとおりです。
Oracle JDeveloperを起動します。
アプリケーション・ナビゲータで、ポートレットの作成先であるアプリケーションを開きます。
ポートレットの作成先であるプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」で、「Web Tier」カテゴリを開き、「Portlets」を選択します。
「項目」リストで、図18-20に示すように、「Oracle PDK Javaポートレット」をクリックします。
注意: 「Javaポートレット」を選択すると、JPS準拠のポートレットを作成するためのポートレット・ウィザードが開きます。「Oracle PDK Javaポートレット」を選択すると、PDK-Javaポートレットを作成するためのポートレット・ウィザードが開きます。 |
図18-20 Oracle PDK Javaポートレットの「新規ギャラリ」ダイアログ・ボックス
「OK」をクリックします。Javaポートレット・ウィザードが表示されます。
ウィザードの「ようこそ」ページが表示されたら、「次へ」をクリックして、「Webアプリケーション」ページ(図18-6)を表示します。
プロジェクトの「Webアプリケーション・バージョン」オプションを選択します。
注意: プロジェクトにすでにJSPまたはJSF JSPが含まれている場合、「Webアプリケーション・バージョン」はすでに設定されています。その場合は、このページは表示されず、かわりに直接「一般ポートレット・プロパティ」ページに進みます。 |
「次へ」をクリックして、「ポートレットの説明」ページ(図18-21)を表示します。
「ポートレット名」フィールドに、ポートレットの意味のある名前を入力します。この名前は内部的に使用されるため。ユーザーには見えません。
「表示名」フィールドに、ポートレットの表示名を入力します。この名前は、ポートレットの選択リスト(コンポーネント・パレットなど)に表示され、ユーザーはページに追加するポートレットを選択します。
「説明」フィールドに、ポートレットの説明を入力します。
注意: このポートレット属性は、WebCenterアプリケーションでは実装されませんが、その他のアプリケーションで使用されるポートレットでは役に立つ場合があります。たとえば、このポートレットをOracleAS Portalで使用する場合、説明はポートレット・リポジトリ内でポートレットの下に表示されます。 |
「タイムアウト」フィールドに、ポートレットのレンダリングに与えられる秒数を入力します。
「タイムアウト・メッセージ」フィールドに、ポートレットのレンダリングが指定したタイムアウト値を超えてしまった場合に表示されるメッセージを入力します。
「次へ」をクリックして、ポートレット・モードのページ(図18-22)を表示します。
「ページを表示」の下で、「実装スタイル」リストから共有画面のための実装スタイルを選択します。
ファイル名: ポートレットの共有画面モードをJavaServer Pageとして実装する場合に選択します。「ファイル名」フィールドに、ウィザードによって生成されるファイルの名前を入力します。
HTTPサーブレット: ポートレットの共有画面モードをHTTPサーブレットとして実装する場合に選択します。「パッケージ名」フィールドに、HTTPサーブレットを格納するパッケージの名前を入力します。「クラス名」フィールドに、ポートレットの共有画面モードとともに参照されるJavaクラスを入力します。
HTMLファイル: ポートレットの共有画面モードをHTMLファイルとして実装する場合に選択します。「ファイル名」フィールドに、ウィザードによって生成されるファイルの名前を入力します。「HTMLファイル」を選択すると、provider.xml
ファイルの<renderer>
要素内に、次の行が追加されます。
<showPage class="oracle.portal.provider.v2.render.http.ResourceRenderer"> <resourcePath>/hub_inside/index.html</resourcePath> <contentType>text/html</contentType> <charSet>UTF-8</charSet> </showPage>
<charSet>
は、HTMLページのエンコードに使用するキャラクタ・セットをプロデューサに指示します。ウィザードによって指定されているデフォルトのキャラクタ・セットはUTF-8です。UTF-8以外のキャラクタ・セット・エンコーディングが必要な場合は、provider.xml
のこの要素を適宜更新する必要があります。
Javaクラス: ポートレットの共有画面モードをJavaクラスとして実装する場合に選択します。「パッケージ名」フィールドに、Javaクラスを格納するパッケージの名前を入力します。「クラス名」フィールドに、Javaクラスの名前を入力します。
共有画面の詳細は、18.1.1.1項「共有画面モード(JSPの場合は表示モード)」を参照してください。
ポートレットに全画面モードを実装する場合は、「詳細を表示」ページを選択し、「ページを表示」で説明した実装スタイルを選択します。
全画面モードの詳細は、18.1.1.5項「全画面モード(PDK-Java)」を参照してください。
「次へ」をクリックして、「カスタマイズ・モード」ページを表示します(図18-23)を表示します。
デフォルトでは「編集」ページが選択されています。ポートレットに編集モードを実装する場合は、「ページを表示」で説明したように実装スタイルを選択します。編集モードを実装しない場合は、「編集」ページのチェック・ボックスの選択を解除します。
編集モードの詳細は、18.1.1.2項「編集モード(JPSおよびPDK-Java)」を参照してください。
ポートレットに編集モードを実装する場合は、「デフォルトの編集」ページを選択し、「ページを表示」で説明したように実装スタイルを選択します。
デフォルトの編集モードの詳細は、18.1.1.3項「デフォルトの編集モード(JPSおよびPDK-Java)」を参照してください。
「次へ」をクリックして、「追加モード」ページを表示します(図18-24)を表示します。
ポートレットにヘルプ・モードを実装する場合は、「ヘルプ」ページを選択し、「ページを表示」で説明したように実装スタイルを選択します。
ヘルプ・モードの詳細は、18.1.1.6項「ヘルプ・モード(JPSおよびPDK-Java)」を参照してください。
ポートレットに情報モードを実装する場合は、「情報」ページを選択し、「ページを表示」で説明したように実装スタイルを選択します。
情報モードの詳細は、18.1.1.7項「情報モード(JPSおよびPDK-Java)」を参照してください。
「次へ」をクリックして、「パブリック・ポートレット・パラメータ」ページ(図18-25)を表示します。
ポートレットにパブリック・パラメータを追加する場合は、「追加」をクリックして、パラメータの詳細を入力するための空の行を作成します。パラメータの使用方法の詳細は、19.2.2項「パラメータの引渡しとイベントの送信」を参照してください。
「名前」フィールドに、パラメータの内部名(たとえば、MyParam
)を入力します。
「表示名」フィールドに、ユーザーに表示される名前(たとえば、My Portlet Parameter
)を入力します。
「説明」フィールドに、パラメータの説明情報を入力します。
「次へ」をクリックして、「パブリック・ポートレット・イベント」ページ(図18-26)を表示します。
イベントの使用方法の詳細は、19.2.2項「パラメータの引渡しとイベントの送信」を参照してください。
「次へ」をクリックして、「プロデューサの説明」ページ(図18-27)を表示します。
「プロデューサ名」フィールドに、プロデューサの名前を入力します。
「デプロイ・プロパティ・ファイルの生成」を選択し、次の2つの.properties
ファイルを生成します。
<
serviceID
>.properties
は、そのサービスIDを持つプロデューサのプロパティを定義します。サービスIDは、プロデューサ名と同じ値です。
_default.properties
は、デフォルトのプロパティ・ファイルです。プロデューサWebアプリケーションは複数のプロデューサを持つ場合があり、それぞれに独自のサービスIDがあります。登録時に、サービスIDが定義されていない場合は、デフォルトのプロパティ・ファイルが使用されます。
プロデューサのprovider.xml
ファイルを自動的に生成するには、「XMLエントリの生成」を選択します。これはプロデューサ定義ファイルで、そのプロデューサに属するポートレット(ウィザードによって生成されたポートレットも含む)の詳細が含まれています。
index.jspファイルを自動的に生成するには、「索引JSPの生成」を選択します。このファイルには、Webアプリケーションに存在するすべてのプロデューサがハイパー・リンクとともに記載されており、簡単にプロデューサ・テスト・ページにアクセスできるようになっています。
「終了」をクリックすると、ポートレット用のファイルが生成されます。アプリケーション・ナビゲータでプロジェクトに対して次のファイルが生成されます(図18-28を参照)。
選択した各ポートレット・モード用のファイル
provider.xml
web.xml
index.jsp
_default.properties
<
serviceID
>.properties
これらすべてのファイルは、ポートレットを正常にデプロイして実行するために必要です。ただし、index.jsp
はOracle JDeveloperでテスト用に使用されます。
ポートレットのデフォルト実装を作成した後は、独自のビジネス・ロジックを追加してサンプル・コードを拡張し、必要な機能を実装できます。機能の追加方法の詳細は、JPSまたはJavaDocを参照してください。具体的な例は、『Oracle WebCenter Frameworkチュートリアル』の「最初のポートレットの構築およびテスト」の「手順7: ポートレットへの簡単なロジックの追加」を参照してください。
ウィザードを終了してポートレットを生成した後は、そのポートレットをアプリケーション・サーバーにデプロイできます。
JPS準拠のポートレットを作成した場合は、そのポートレットを、ウィザードを使用してベンダーのJPS準拠のコンテナにデプロイできます。18.9.1項「JPS準拠WebCenterアプリケーション・ポートレットのデプロイ」の手順は、JPS準拠のポートレットをOC4J上で実行されているOracleのWSRPコンテナにデプロイする方法を示しています。PDK-Javaポートレットを作成した場合は、それをOC4Jにデプロイできます。
注意: WSRPポートレットは、ホーム・インスタンスへではなく、Oracle Application Server内のOC4J_Webcenterインスタンスにデプロイする必要があります。 |
この項の内容は、次のとおりです。
この項では、Oracle JDeveloperを使用して作成したJPS準拠のWebCenterアプリケーション・ポートレットをデプロイする手順について説明します。WARデプロイメント・プロファイルを作成し、OC4Jにデプロイする必要があります。
WARファイルを作成してデプロイする手順は、次のとおりです。
構成済OC4Jインスタンスに対する接続が存在することを確認します。構成済OC4Jを起動するには、「ツール」に移動し、「WebCenter Preconfigured OC4Jの起動」を選択します。
構成済OC4Jインスタンスを停止するには、「ツール」に移動し、「WebCenter Preconfigured OC4Jの停止」を選択します。
構成済OC4Jにreadme
ファイルで説明されているように接続します。このファイルを開くには、「ヘルプ」に移動し、「WebCenter Preconfigured OC4J READMEを開く」を選択します。
アプリケーション・ナビゲータで、ポートレットを含むプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」で、「General」カテゴリを開き、「Deployment Profiles」を選択します。
「項目」リストで「WARファイル」を選択します。
「OK」をクリックして、「デプロイメント・プロファイルの作成」ダイアログ・ボックスを表示します。
「デプロイメント・プロファイル名」フィールドに、デプロイメント・プロファイルの意味のある名前を入力します。
「ディレクトリ名」フィールドに、デプロイメント・プロファイルの場所を入力します。デフォルトの場所を受け入れることも、独自の場所を指定することもできます。
「OK」をクリックします。これでデプロイメント・プロファイルが作成されました。
アプリケーション・ナビゲータで、「リソース」ノードを開き、.deploy
ファイルをダブルクリックして、「WARデプロイメント・プロファイルのプロパティ」ダイアログ・ボックスを表示します。
「Webアプリケーションのコンテキスト・ルート」の下で、「J2EE Webコンテキスト・ルートを指定」を選択し、対応するフィールドにJ2EEコンテキスト・ルートを入力します。
「OK」をクリックします。
新規に作成されたデプロイメント・プロファイルを右クリックし、「配布先」を選択して、ポートレットのデプロイ先のアプリケーション・サーバー接続を選択します。
デプロイメント・タイプの選択ダイアログ・ボックスが表示されます(図18-29)。
注意: デプロイメント・タイプの選択ダイアログ・ボックスは、先にEARファイルにデプロイ・オプションを選択した場合にのみ表示されます。Oracle Application Server 10.1.3.2.0インスタンスにデプロイする場合は「はい」を選択し、Oracle Application Server 10.1.2.0.2インスタンスにデプロイする場合は「いいえ」を選択します。 |
Oracleポートレット・コンテナで、WSRPプロトコルを介してJSR 168ポートレットを公開します。ポートレットをWebサービスとしてアクセス可能にするには、ポートレット・アプリケーションにWebサービス・ディスクリプタ・ドキュメント、つまりWSDLドキュメントが含まれている必要があります。このダイアログ・ボックスは、Webサービス・ディスクリプタ・ドキュメント(WSDLドキュメント)が、EARファイルとしてアプリケーションがパッケージ化されるときに、ポートレット・アプリケーションに挿入されることを指定するために使用します。
ポートレット・コンテナのタイプおよびバージョンに応じて、次のように「はい」または「いいえ」を選択します。
Oracleポートレット・コンテナ(Oracle Application ServerまたはOC4J)のリリース10.1.3.1、10.1.3.2: 「はい」を選択して、WSDLドキュメントをポートレット・アプリケーションに挿入します。
Oracleポートレット・コンテナのリリース10.1.2、10.1.2.0.2: 「いいえ」を選択して、ポートレット・アプリケーションにWSDLドキュメントを挿入しません。Oracle Application Serverリリース10.1.3で提供されるポートレット・コンテナには、デプロイされたアプリケーションにWSDLドキュメントを自動的に挿入するデプロイメント・サーブレットが含まれています。
サード・パーティのポートレット・コンテナ: 「いいえ」を選択して、ポートレット・アプリケーションにWSDLドキュメントを挿入しません。
「次回このダイアログは表示せずに、今後のデプロイにはここで選択したオプションを使用してください」オプションを選択し、今後デプロイメント・タイプの選択ダイアログ・ボックスが表示されないようにします。前のオプション(「はい」または「いいえ」)が、このアプリケーションからのJSR 168ポートレットの今後のデプロイで使用されます。この設定を変更するには、デプロイメント・プロファイルを削除し、再作成します。デプロイメント・タイプの選択ダイアログ・ボックスが開いたら、希望する設定を選択します。
WSDLドキュメントをポートレット・アプリケーションに挿入するには、「はい」オプションを選択し、ポートレット・アプリケーションがまだ選択されていない場合は、「OK」をクリックします。デプロイ - ログ・ウィンドウに、アプリケーションのパッケージ化およびデプロイ・ステータスが表示されます(図18-30)。
「アプリケーションの構成」ダイアログでは、コンテナ構成ファイル(orion-web.xml
など)に固有の設定を入力できます。通常は、「OK」をクリックしてデフォルト値をそのまま使用します。
Oracle JDeveloperの下部にある「デプロイ - ログ」に「---- デプロイが終了 ----」メッセージが表示されたときは、エラーが発生していないことを確認します。ただし、次のエラー・メッセージを安全に無視することができます。
006-11-30 08:14:25.627 WARNING J2EE DEP-00002 There are multiple mappings for servlet name: WSRPServiceDescriptionService, but only the first one (/portlets/WSRPServiceDescriptionService) will be considered for webservice endpoint.
ポートレット・コンテナにポートレットを再度デプロイすると、プロデューサとそのすべてのコンシューマの間で持たれている既存のセッションがすべて失われます。コンシューマが既存のプロデューサ・セッションを再利用しようとする場合、コンシューマが再デプロイ後初めてプロデューサに接続しようとすると、エラー・メッセージが表示されることがあります。
Error: Could not get markup. The cookie or session is invalid or there is a runtime exception.
プロデューサのセッションを再確立するには、ページをリフレッシュします。新しいブラウザ・セッションからポートレットに再アクセスする場合は、このエラー・メッセージは表示されません。自動的に新しいプロデューサ・セッションが確立されるためです。
この項では、Oracle JDeveloperを使用して作成したPDK-Javaポートレットをデプロイする手順について説明します。WARデプロイメント・プロファイルを作成し、OC4Jにデプロイする必要があります。
WARファイルを作成してデプロイする手順は、次のとおりです。
構成済OC4Jインスタンスに対する接続が存在することを確認します。構成済OC4Jを起動するには、「ツール」に移動し、「WebCenter Preconfigured OC4Jの起動」を選択します。
構成済OC4Jインスタンスを停止するには、「ツール」に移動し、「WebCenter Preconfigured OC4Jの停止」を選択します。
構成済OC4Jにreadme
ファイルで説明されているように接続します。このファイルを開くには、「ヘルプ」に移動し、「WebCenter Preconfigured OC4J READMEを開く」を選択します。
アプリケーション・ナビゲータで、ポートレットを含むプロジェクトを右クリックし、「新規」を選択します。
「カテゴリ」リストで、「General」カテゴリを開き、「Deployment Profiles」をクリックします。
「項目」リストで「WARファイル」をクリックします。
「OK」をクリックします。
「デプロイメント・プロファイルの作成」ダイアログ・ボックスで、名前を意味のわかるものに変更します(たとえばmyj2eeportlet1.deploy
)。
「OK」をクリックします。
「WARデプロイメント・プロファイルのプロパティ」ダイアログ・ボックスで次の手順を実行します。
「J2EE Webコンテキスト・ルートを指定」をクリックし、myj2eeportlet1
を入力します。
左側のペインで、「コントリビュータ」を選択します。
ポートレット開発を選択します。
「OK」をクリックします。
「ファイル」を選択し、「すべて保存」を選択します。
「リソース」ノードを開き、デプロイ・プロファイル(たとえばmyj2eeportlet1.deploy
)を右クリックして、「配布先」を選択し、アプリケーション・サーバー接続(たとえばPDKJavaOC4J
)を選択します。
「アプリケーションの構成」ダイアログ・ボックスでは、コンテナ構成ファイル(orion-web.xml
など)に固有の設定を入力できます。通常は、「OK」をクリックしてデフォルト値をそのまま使用します。
Oracle JDeveloperの下部にある「デプロイ - ログ」に「---- デプロイが終了 ----」メッセージが表示されたときは、エラーが発生していないことを確認します。
次のようにテストに必要なURLを構成し、ポートレットを登録します。
http://host:port/context-root
/providers
host
は、プロバイダがデプロイされているサーバーです。
port
は、OracleAS Web Cache HTTPリスナーのポートです。Application Server Controlコンソールのメイン・ページの「ポート」タブにあります。
context-root
は、Webアプリケーションのコンテキスト・ルートです。「WARデプロイメント・プロファイルのプロパティ」の「一般」にあります。
これまでの手順で構成したURLをブラウザに入力して、ポートレットが正常にデプロイされたことを確認します。
注意: ポートレットをスタンドアロンOC4Jまたはサード・パーティ・コンテナにデプロイしている場合、共有ライブラリについて、次のいずれかの方法を使用してJARをコピーする必要があります。
構成済OC4JをApplication Server 10.1.3.2インストールのWebCenterインスタンスで使用する場合、共有ライブラリはすでに使用可能になっています。 |
この項では、サード・パーティのJPS準拠ポートレットをOC4Jにデプロイする手順について説明します。
サード・パーティのポートレットをデプロイする手順は、次のとおりです。
サード・パーティのJSR 168ポートレット・プロデューサEARファイルを取得します。
JSR 168ポートレット・プロデューサEARファイルをWSRP EARファイルに変換します。変換の手順は、「JSR 168ポートレット・プロデューサEARファイルのWSRP EARファイルへの変換」で説明しています。
WSRP EARファイルをデプロイします。WSRP EARファイルをデプロイする手順は、12.2.3項「Application Server Controlコンソールを使用したWebCenterアプリケーションのデプロイ」で説明している手順と似ています。
JSR 168ポートレット・プロデューサEARファイルのWSRP EARファイルへの変換
JSR-168ポートレットをWSRP Oracleポートレット・コンテナにデプロイする場合、ポートレット・アプリケーションEARファイルは、必要なWSDLドキュメントを含むWSRPアプリケーションに変換する必要があります。JSR 168ポートレット・プロデューサEARファイルをWSRP EARファイルに変換するには、JDEV_HOME
/adfp/lib
ディレクトリにあるWSRPプロデューサ・デプロイ前ツールを実行します。
java -jar wsrp-predeploy.jar
<source EAR
> <targeted EAR
>
wsrp-predeploy.jar
も、ORACLE_HOME
/j2ee/OC4J_WebCenter/shared-lib/oracle.wsrp/1.0
にあります。
サーブレット・バージョン2.3で開発されたJPS準拠ポートレットの場合、次のコマンドを使用してWebプロキシを指定する必要があります。
java -Dhttp.proxyHost=<proxy host
> -Dhttp.proxyPort=<proxy port
> -jar wsrp-predeploy.jar <Source EAR file
> <Targeted EAR file
>
これらの意味は、次のとおりです。
proxy host
は、プロデューザがデプロイされているサーバーです。
proxy port
は、HTTPリスナー・ポートです。
wsrp-predeploy.jar
は、JDEV_HOME
/adfp/lib
ディレクトリまたはORACLE_HOME
/j2ee/OC4J_Webcenter/shared-lib/oracle.wsrp/1.0
ディレクトリにあります。
source EAR
ファイルは、JSR 168 EARファイルの名前です。
targeted EAR
ファイルは、作成する新しいEARファイルの名前です。ターゲットのEARファイルのファイル名が指定されていない場合、WSRP-<
source EAR
>
という新しいEARファイルが作成されます。
次の例では、Webプロキシが指定されています。
java -Dhttp.proxyHost=myhttpproxy.com -Dhttp.proxyPort=80 -jar wsrp-predeploy.jar wsrp-samples.ear
この例では、WSRP-wsrp-samples.ear
が作成されます。
作成したJPS準拠ポートレットおよびプロデューサをテストすることで、構成をチェックし、ポートレットとそのプロデューサが正しく動作することを確認できます。WSRPポートレットおよびプロデューサをテストするには、ブラウザで次の構文のプロデューサURLを実行します。
http://<
host
>:<
port
>/<
context-root
>/info
これらの意味は、次のとおりです。
host
は、プロデューザがデプロイされているサーバーです。
port
は、HTTPリスナー・ポートです(インスタンス用に作成されたdefault-web-site.xml
Webサイト構成ファイルで設定)。
context-root
は、Webアプリケーションのコンテキスト・ルートです。
図18-31に似たテスト・ページが表示されます。
テスト・ページを無効にするには、「WSRPテスト・ページの無効化」の手順を参照してください。
ポートレットをデプロイした後は、構成をチェックして、ポートレットとそのプロデューサが正しく動作することを確認する必要があります。
ポートレットおよびプロデューサを検証する手順は、次のとおりです。
アプリケーション・ナビゲータで、ポートレットを含むプロジェクトの下にあるindex.jsp
を右クリックし、「実行」を選択します。
ブラウザが開き、図18-32に示すようなページが表示されます。
「サービス名」の下にあるリンクをクリックします。ブラウザが開き、図18-33に示すようなページが表示されます。プロデューサを登録する次のタスクでは、このページに表示されるURLが必要になることに注意してください。
または、ポートレットのURLを入力して、ポートレットが機能していることをチェックします。URは、次のような構成です。
http://host:port/context-root/providers/producer_name
これらの意味は、次のとおりです。
host
は、プロデューザがデプロイされているサーバーです。
port
は、HTTPリスナー・ポートです(インスタンス用に作成されたdefault-web-site.xml
Webサイト構成ファイルで設定)。
context-root
は、先に指定したWebアプリケーションのコンテキスト・ルートで、「WARデプロイメント・プロファイルのプロパティ」の「一般」にあります。
producer_name
は、ポートレット・プロデューサの名前です。WARファイルには、複数のプロデューサが含まれている場合があるので、明確にするために、必ずプロデューサの名前を含める必要があります。そうしないと、単に最後に作成されたプロデューサであるデフォルト・プロデューサを取得することになります。
図18-33に示すようなページが表示されます。
プロデューサおよびそのポートレットを作成し、デプロイしたら、プロデューサをアプリケーションに登録し、ページに追加して、それが正しく動作するかをチェックする必要があります。プロデューサを登録することにより、そのプロデューサを探し、通信するために必要な情報をアプリケーションに提供します。プロデューサを登録すると、プロデューサとそのポートレットがコンポーネント・パレットで使用可能になります。
規格に基づいたポートレット用のプロデューサを登録するには、4.3.1.1項「WSRPポートレット・プロデューサの登録」の手順に従います。
PDK-Javaポートレット用のプロデューサを登録するには、4.3.1.2項「PDK-Javaポートレット・プロデューサの登録」の手順に従います。
ポートレットをページに追加するには、4.3.2項「ページへのポートレットの追加」の手順に従います。
脚注
脚注1: Javaポートレット仕様1.0は、Java Specification Request 168およびJSR168専門家グループによって作成されました。