この章では、Javaポートレット仕様(JSR 168)、またはOracle JDeveloper用ポータル拡張機能を使用するOracle Application Server Portal Developer Kit-Java(PDK-Java)に基づいてJavaポートレットを作成する方法について説明します。この章の内容は、次のとおりです。
この章で参照される多数の例のソース・コードは、PDK-Javaの一部として利用できます。PDK-Javaは、Oracle Technology Network(OTN)の「Oracle Application Server Portal Developer Kit(PDK)」ページからダウンロードできます。URLは次のとおりです。
http://www.oracle.com/technology/products/ias/portal/pdk.html
注意: OTNのこのページから、Oracle Application Server 10g(10.1.3.1.0)で動作保証されているOracleAS PDKリリース10.1.2.0.2をダウンロードできます。 |
PDK-Javaを解凍すると、例がzip形式ファイルで次の場所にあります。
../pdk/jpdk/v2/src.zip
PDK-Java用の参照JavaDocにアクセスするには、次の中からjpdk.war
を抽出します。
../pdk/jpdk/v2/jpdk.ear
次に、jpdk.war
を解凍します。JavaDocは、apidoc
フォルダにあります。
注意: この章全体にわたって、ORACLE_HOMEへの参照が記載されています。ORACLE_HOMEはOracleホームのフルパスを表し、どのOracleホームが参照されているかが自明な場合に使用されます。プロシージャで中間層、OracleAS Infrastructure、またはOracle Application Server Metadata Repositoryの各Oracleホームを区別する必要がある場合は、次の表記規則が使用されます。
|
Javaポートレット仕様(JPS)またはPDK-Javaのいずれかに基づいてJavaでポートレットを作成する場合は、この項の次のガイドラインに従ってください。
表示モードは、ポートレットの実行時機能をユーザーが確認できるようにするものです。JPSおよびOracleAS Portalは、それぞれ独自のモードを提供しています。ポートレットをJPSにコーディングする場合は、OracleAS Portalが提供するオプションのモードにマップするカスタム・ポートレット・モードを宣言できます。
OracleAS Portalポートレットの表示モードは次のとおりで、表示方法と動作がそれぞれ異なります。JPSポートレットの場合は、portlet.xml
にカスタム・ポートレット・モードを定義できます。カスタム・モードの定義は、特に、ポートレットを他のベンダーのポータル実装と相互運用する場合に役立ちます。
ポートレットは共有画面モード(JPSでは表示モードと呼ばれます)を使用して、他のポートレットと同じページに表示されます。ポートレットといえば、ほとんどの人がこのモードを思い浮かべます。共有画面モードでは、ポートレットはHTMLの表のセル内にレンダリングされます。つまり、ポートレットには、HTML、プラグイン、Javaアプレットなどの他のテクノロジも含めて、表のセル内にレンダリング可能なコンテンツを表示できます。表のセルの実際のサイズは、ユーザー設定、ブラウザの幅、およびポートレットに表示されるコンテンツの量とスタイルによって異なります。ポートレットを開発する場合は、そのポートレットが他のポートレットとページを共有すること、およびポートレットのサイズや配置を完全には制御できないことに注意してください。
プレーン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の表のセルに正しくレンダリングできる要素のみを使用する。一部の構造体は、表のセルに正しく表示されないという理由で使用できません。たとえば、フレームは表に挿入されると表示されません。
ポートレットのコンテンツは簡潔にする。全画面のコンテンツを取得して、小さなポートレットから公開しないでください。ポートレットのコンテンツが小さくなりすぎて、小さなモニターではポートレットが使用不能になるのみです。全画面のコンテンツは、OracleAS Portalの全画面モードで最適に表示されます。
ポートレット内に固定幅のHTMLの表を作成しない。ユーザーのページに表示されるポートレットの列幅を事前に知る方法はありません。与えられた空間よりも広い空間がポートレットに必要な場合、特定のブラウザでは、他のポートレットとオーバーラップする可能性があります。
折り曲がらない長いテキスト行を避ける。固定幅の表を使用した場合と同様の結果になります。特定のブラウザでは、他のポートレットとオーバーラップする可能性があります。
ページ・サイズ変更時の動作をチェックする。ブラウザ・ウィンドウをサイズ変更した際のポートレットの動作をテストし、ポートレットがブラウザ・ウィンドウの様々なサイズで動作することを確認してください。
ブラウザのデフォルトのフォントが変更された場合の動作をチェックする。ブラウザのフォント・サイズはいつでも変更できることが必要です。ポートレットは、その変更に対応する必要があります。
また、使用するHTMLは、サイトのパフォーマンスに直接影響を与えます。ユーザーは、リクエストしたページの表示にかかる時間に基づいてパフォーマンスを判断します。ブラウザには、HTMLを解釈して表示するための時間が必要です。このため、次の点を考慮してください。
深くネストした表を避ける。深くネストした表は、古いバージョンのブラウザのパフォーマンスを大きく低下させます。OracleAS Portalは、複数のレベルの表を描画してポートレットをレンダリングします。ポートレットが表の中で表を使用している場合、そのページのレンダリングには、かなり長い待機時間が必要な場合があります。
長く複雑なHTMLを避ける。ポートレットはページを他のポートレットと共有します。したがって、ポートレットの生成時間はページのパフォーマンス全体に大きく影響します。ポートレットが複雑なHTMLをレンダリングしたり、サード・パーティのアプリケーションなど外部リソースを待機する場合は、ページのレンダリングが大幅に遅くなることがあります。
ページ上のそれぞれのポートレットのフォントと色は、ユーザーが選択したスタイル設定に一致する必要があります。このために、これらのスタイル選択は、各OracleAS PortalページのCascading Style Sheet(CSS)を使用して自動的に埋め込まれます。その後、ポートレットは直接またはAPIを使用して、フォントと色の設定にアクセスします。
ブラウザによってCSS仕様の実装レベルが異なりますが、OracleAS Portalは、この仕様の非常に基本的なサブセットを使用して、整合性のあるフォントと色を実現します。CSSの実装レベルによってブラウザ間でのページの一貫性が影響されることはありません。CSS使用に関するガイドラインは、次のとおりです。
ハードコーディングではなくCSSを使用する。フォントと色のハードコーディングは非常に危険です。フォントと色をハードコーディングすると、ユーザーがページ・スタイルの設定を変更した場合に、ポートレットが不釣合いに見えることがあります。開発者はユーザーが設定するフォントや色を予測できないため、ユーザーが選択した背景色と同じフォント色でハードコーディングする可能性があります。この場合、ユーザーはポートレットを識別できなくなります。
テキストの書式設定にはCSS APIを使用する。スタイルシートの定義はOracleAS Portalページの最上部にありますが、直接コールしないでください。かわりに、テキストの適切な書式設定のために用意されているAPIを使用してください。これによって、後でスタイルシートが変更された場合でもポートレットは正しく動作します。
CSSを使用した絶対位置の設定は避ける。ユーザーは各自のポータル・ページをパーソナライズできるため、ポートレットが特定の位置に表示される保証はありません。
アクセシビリティの標準に従う。必ず既存のアクセシビリティの標準に従って、スタイル・シートを記述してください(詳細はhttp://www.w3.org/TR/WCAG10-CSS-TECHS/
を参照)。
ポートレットは編集モードを備えており、これによってユーザーはポートレットの動作をパーソナライズできます。編集モードには設定のリストがあり、ユーザーはその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、およびポートレットの外観や内容に影響するあらゆる要素が含まれます。
通常、ポータル・ユーザーは、ポートレット・バナーの「パーソナライズ」をクリックしてポートレットの編集モードにアクセスします。「パーソナライズ」をクリックすると、同じブラウザ・ウィンドウに新しいページが表示されます。このポートレットは、通常、ポートレットの設定を選択するダイアログ・ボックスを表すWebページを作成します。設定を適用すると、自動的に元のページに戻ります。
次のガイドラインに従って、編集モードでユーザーに公開する内容を管理してください。
ユーザーがポートレットのタイトルをパーソナライズできるようにする。同じポートレットが同じポータル・ページに複数回追加されることがあります。ユーザーがタイトルをパーソナライズできると混乱を避けることができます。
キャッシュを使用する場合はコンテンツを無効化する。パーソナライズによってポートレットの表示やコンテンツに変更が生じた場合は、ポートレットのコンテンツが再生成され、キャッシュから戻されないことを確認する必要があります。確認しないと、誤ったコンテンツが表示されることがあります。
編集モードを管理ツールとして使用しない。編集モードは、ユーザーがポートレットの動作を変更するために使用します。プロバイダ設定の変更などの管理作業が必要な場合は、その作業専用の安全なポートレットを作成してください。
モバイル・オプションのみが表示される(該当する場合)。ポートレットは、OracleAS Portalインスタンスがモバイル機器に対して有効かどうかを問合せできます。インスタンスがモバイルに対応していない場合は、モバイル固有オプションを表示する必要はありません。さらに、ページをモバイル・ユーザーとデスクトップ・ユーザーの両方で使用できるようにする場合は、モバイル・オプションとデスクトップ・オプションの間での線引きを検討する必要があります。その他のヒントは、6.1.3.6項「パーソナライズ・ページの調整」を参照してください。
整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序で編集モードに実装してください。
OK: ユーザーのパーソナライズを保存し、コール元のポータル・ページにブラウザをリダイレクトします。
適用: ユーザーのパーソナライズを保存し、現在のページをリロードします。
取消: 変更内容を保存せずに、コール元のポータル・ページにブラウザをリダイレクトします。「取消」は、現行の設定のままにする「デフォルトに戻す」とは異なります。
パーソナライズ設定を変更するフォームを表示する場合は、デフォルトの値を表示し、ユーザーが設定を毎回再入力しないで済むようにしてください。動作の整合性を維持するために、パーソナライズ値のレンダリングは次の順序で行います。
ユーザー設定項目: このユーザーのパーソナライズが使用可能な場合は、問い合せて表示します。
インスタンス・デフォルト: ユーザーのパーソナライズがない場合は、ポートレット・インスタンスのシステム・デフォルトを問い合せて表示します。これらのデフォルトは編集モードで設定され、このポートレット・インスタンスに対してのみ適用されます。
ポートレット・デフォルト: システム・デフォルトのパーソナライズがない場合は、一般的なポートレットのデフォルトを表示しますが、空白の場合があります。一般的なポートレットのデフォルトはポートレットにハードコーディングされている場合がありますが、前述の2つの条件のいずれかが該当する場合は上書きしてください。
このロジックによって、ポータル内の他のポートレットとの整合性がとれた予測可能な方法でパーソナライズを表すことができます。PDK-Javaでは、このようなロジックを簡単に実装できます。
ポートレットはデフォルト編集モードを備えており、ページ設計者はこのモードを使用して、特定のポートレット・インスタンスのデフォルト動作をパーソナライズできます。デフォルト編集モードには設定のリストがあり、ページ設計者はその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、およびポートレットの外観や内容に影響するあらゆる要素が含まれます。
これらのデフォルトのパーソナライズ設定によって、個々のポートレットの外観とコンテンツをすべてのユーザーに対して変更できます。デフォルト編集モードは、ポートレットの表示内容と表示形式に対してシステム・レベルのデフォルトを定義するためのモードであるため、このモードを管理ツールとして使用したり、他のポートレットの管理に使用することは避けてください。
ページ設計者は、ページ編集の際、ポートレット・バナーの真上の「デフォルトの編集」アイコンをクリックしてデフォルト編集モードにアクセスします。
ユーザーが「デフォルトの編集」アイコンをクリックすると、同じブラウザ・ウィンドウに新しいページが表示されます。このポートレットは、通常、ポートレット・インスタンスの設定をパーソナライズするダイアログ・ボックスを表すWebページを作成します。設定を適用すると、ユーザーは自動的に元のページに戻されます。
次のガイドラインに従って、デフォルト編集モードでページ設計者に公開する内容を管理してください。
キャッシュを使用する場合はキャッシュを無効化する。パーソナライズによってポートレットの表示やコンテンツに変更が生じた場合は、ポートレットのコンテンツが再生成され、キャッシュから戻されないことを確認する必要があります。確認しないと、誤ったコンテンツが表示されることがあります。
デフォルト編集モードを管理ツールとして使用しない。デフォルト編集モードは、ユーザーがポートレットの動作を変更するために使用します。プロバイダ設定の変更などの管理作業が必要な場合は、その作業専用の安全なポートレットを作成してください。
モバイル・オプションのみが表示される(該当する場合)。ポートレットは、OracleAS Portalインスタンスがモバイル機器に対して有効かどうかを問合せできます。インスタンスがモバイルに対応していない場合は、モバイル固有オプションを表示する必要はありません。さらに、ページをモバイル・ユーザーとデスクトップ・ユーザーの両方で使用できるようにする場合は、モバイル・オプションとデスクトップ・オプションの間での線引きを検討する必要があります。その他のヒントは、6.1.3.6項「パーソナライズ・ページの調整」を参照してください。
整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序でデフォルト編集モードに実装してください。
OK: ユーザーのパーソナライズを保存し、コール元のポータル・ページにブラウザをリダイレクトします。
適用: ユーザーのパーソナライズを保存し、現在のページをリロードします。
取消: 変更内容を保存せずに、コール元のポータル・ページにブラウザをリダイレクトします。「取消」は、現行の設定のままにする「デフォルトに戻す」とは異なります。
パーソナライズ設定を変更するフォームを表示する場合は、デフォルトの値を表示し、ページ設計者が設定を毎回再入力しないで済むようにしてください。動作の整合性を維持するために、パーソナライズ値のレンダリングは次の順序で行います。
インスタンス設定: ポートレット・インスタンスのシステム・デフォルトを問い合せて表示します。
ポートレット・デフォルト: システム・デフォルトのパーソナライズがない場合は、一般的なポートレットのデフォルトを表示しますが、空白の場合があります。一般的なポートレットのデフォルトはポートレットにハードコーディングされている場合がありますが、システム・デフォルトで上書きしてください。
このロジックによって、ポータル内の他のポートレットとの整合性がとれた予測可能な方法でパーソナライズを表すことができます。
ポートレットはプレビュー・モードを備えており、ポートレットをページに追加する前に、それがどのように表示されるかをユーザーに示します。プレビュー・モードは、ポートレットの機能を視覚的に表現したものです。
通常、ポータル・ユーザーは、「ポートレットの追加」ページで「プレビュー」アイコンをクリックして、ポートレットのプレビュー・モードにアクセスします。選択したポートレットのプレビューがウィンドウに表示されます。ユーザーは、そのポートレットをページに追加できます。ポータル管理者は、ポートレット・リポジトリからプレビュー・モードにアクセスできます。
プレビュー・モードに関するガイドライン
次のガイドラインに従って、プレビュー・モードでユーザーに公開する内容を管理してください。
ポートレットの機能に関する情報を提供する。プレビュー・モードでは、ユーザーがポートレットの実際のコンテンツや機能に関する情報を得られるように、十分なコンテンツを生成する必要があります。
ポートレットのプレビューは大きくしない。このモードで生成されるデータの量は、数行以内のHTMLまたは1つの画面ショットにとどめてください。プレビュー・モードは小さい領域に表示されるため、ウィンドウのサイズより大きくなると見栄えが悪くなり、ユーザーによるスクロールが必要になります。
ライブ・ハイパーリンクを使用しない。「ポートレットの追加」ページまたはポートレット・リポジトリでレンダリングしたリンクは、予想どおりの動作をしないことがあります。ハイパーリンクは、下線付きのフォントでシミュレートできます。
アクティブ・フォーム・ボタンを使用しない。「ポートレットの追加」ページまたはポートレット・リポジトリでレンダリングしたフォームは、予想どおりの動作をしないことがあります。フォーム要素をレンダリングする場合、そのフォーム要素はどこにもリンクしないでください。
ポートレットは全画面モードを使用して、さらに詳細な表示を行える、より大きなバージョンのポートレットを実現します。全画面モードによって、ポートレットは画面全体を使用できます。
たとえば、ポートレットで経費情報を表示する場合、共有画面モードでは経費の多い上位10人のサマリーを表示し、全画面モードでは各人の経費合計を表示できます。また、ポートレットは、Webアプリケーションへのショートカットも提供できます。ポートレットの共有画面モードに経費領収書発行へのインタフェースがある場合は、全画面モードから経費アプリケーション全体にリンクすることも可能です。
ポータル・ユーザーは、ポートレットのタイトルをクリックして、ポートレットの全画面モードにアクセスします。
厳密には、JPSポートレットに全画面モードはありません。ただし、表示モード(共有画面モード)とウィンドウの最大化を使用して、JPSポートレット用に全画面モードと同等の機能を実装できます。
ポートレットは、ヘルプ・モードを使用して、そのポートレットの機能と使用方法に関する情報を表示します。ユーザーはこのモードで、ポートレットおよびそのコンテンツと機能に関する有用な情報を検索できます。
ポータル・ユーザーは、ポートレット・ヘッダーの「ヘルプ」をクリックしてポートレットのヘルプ・モードにアクセスします。
ヘルプ・モードに関するガイドライン
次のガイドラインに従って、ヘルプ・モードでユーザーに公開する内容を管理してください。
ポートレットの使用方法を説明する。ポートレットのインタフェースのみでは、ポートレットのすべての機能がユーザーに理解されない可能性があります。ポートレットの機能とその活用方法を説明してください。
ユーザーは、実行中のポートレットのバージョン、発行と著作権の情報、および作者への連絡方法を参照できる必要があります。登録が必要なポートレットは、このモードからWebベースのアプリケーションまたは連絡先情報にリンクできます。
ポータル・ユーザーは、ポートレット・ヘッダーの「情報」をクリックしてポートレットの情報モードにアクセスします。同じブラウザ・ウィンドウに新しいページが表示されます。この新しいページにコンテンツを生成するか、またはユーザーを既存のページやアプリケーションに移動させることができます。
情報モードに関するガイドライン
次のガイドラインに従って、情報モードでユーザーに公開する内容を管理してください。
関連の著作権、バージョンおよび作成者の情報を表示する。ユーザーは、使用しているポートレットの内容と詳細情報の入手先を参照できる必要があります。この情報ページは、ポートレットのサポート時に重要になることがあります。
ポートレットはリンク・モードを使用して、モバイル・ページに表示されるそのポートレット自体へのリンクをレンダリングします。ユーザーがリンクをクリックすると、ポートレットは表示モードでコールされます。これにより、ポートレットが表示モードまたは共有画面モードでレンダリングされます。
Oracle Mobile XMLコンテンツ・タイプのサポートを宣言するJPSポートレットの場合、OracleAS Portalは次のいずれかの方法でリンクをレンダリングします。
ポートレットがサポートを宣言している場合は、ウィンドウを最小化した状態でポートレットの表示モードをコールします。
それ以外の場合は、ポートレットのタイトルを使用してリンクをレンダリングします。
リンク・モードに関するガイドライン
次のガイドラインに従って、リンク・モードでユーザーに公開する内容を管理してください。
コンテンツを制限する。 リンク・モードの目的は、余分な素材なしでリンクをレンダリングすることです。リンク・モードは、ただ、短いタイトルや、場合によっては関連サマリー情報を(通常わずか1、2語)レンダリングするのみです。
いろいろな点で、1つのポートレットの異なるセクションまたはページ間のナビゲーションは、標準のWebページ間のナビゲーションと似ています。ユーザーはフォームを実行してリンクをクリックできます。通常の標準的なWebページの場合、これらの操作により、新しいコンテンツをレンダリングするサーバーにメッセージが直接送信され、次に、このメッセージがクライアントに戻されます。ポートレットの場合は、ページの一部分のみを構成するため、そのポートレット内でのフォーム実行またはリンクのレンダリングでは、情報は直接ポートレットに渡されません。これらの操作では、情報はポータルを介してポートレットに渡されます。ポートレット内でのリンクまたはフォームの実行がポータルを参照しない場合は、そのリンクをたどるとユーザーをポータルから離れさせることになり、通常好ましくない動作です。
ポートレットの開発者は、フォームまたはリンクのパラメータがユーザー、ポータルおよびポートレット間を受け渡しされる詳細な機構を知る必要はありません。しかし、通常の標準的なWebページの場合と同じ方法でポートレット内にリンクを作成できないことは理解しておく必要があります。
ポートレットは、次の4つのクラスのリンクをレンダリングできます。
ポートレット内リンク: ポートレットはOracleAS Portalのアドレスを認識できるようにしておきます。実際になんらかの方法で参照するためです。
ポータル・リンク: ポートレット内リンクと同じ理由で、OracleAS Portalのアドレスを認識できるようにしておきます。
外部リンク: OracleAS Portalを参照せず、標準のWebページの場合と同様にポートレット内で動作します。
内部/リソース・リンク: 外部リンクと同様にOracleAS Portalを参照しません。
図6-1に、これらのリンク・タイプの概要を示します。矢印は、リンクがどのように論理的な参照先であるリソースを参照するかを示します。
ポートレット内リンクは、所定のポートレット内の様々なセクションまたはページに移動します。厳密に言えば、ポートレットが含まれているOracleAS Portalページが参照されます。が、このリンクには、ユーザーによってリクエストされたときに、ポートレットにOracleAS Portalページ内の様々なセクションまたはページをレンダリングさせるパラメータが含まれています。
この直接の結果として、ポートレットは、独自のサーバー・コンテキストに基づく相対リンクまたは絶対リンクを使用して、自身の様々なセクションまたはページへのリンクのレンダリングをリクエストすることはできません。ポートレット内リンクは、リンクまたはフォーム実行ターゲットとしてポートレット内のナビゲーションには便利です。
外部リンクは、ポートレット(OracleAS Portalページ経由)もポータルの一部も参照しません。選択した場合、ユーザーがOracleAS Portal(たとえばwww.oracle.com)に戻ることはありません。
内部/リソース・リンクは、(ポートレットの)内部リソースを参照します。このリンクは、ポートレットのレンダリング中に内部で排他的に、たとえばサーバー側インクルードとして、使用されることがあります。また、外部的に、イメージなどのポートレット・リソースの参照に使用されることもあります。外部的に使用される場合は、PDK-JavaのUrlUtils
クラスのconstructResourceURL
メソッドを使用し、リソース・プロキシを使用してファイアウォールの内部からイメージを取得します。たとえば、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> <% }
これらのコールにより、Parallel Page Engineはリソースをリクエストし、ブラウザに戻します。セッション・ベースのプロバイダの場合、元のinitSession
コールからプロバイダに戻されるCookieは、リクエストとともに戻され、正しいセッション・コンテキストを維持します。
OracleAS Portalのページは、HTMLデバイスおよび非HTMLデバイス(モバイル機器)の両方に対してレンダリングできます。モバイル機器用にレンダリングする場合、OracleAS Portalでは、ポートレットはOracleAS Wireless XMLと呼ばれる汎用マークアップ言語でコンテンツを生成する必要があります。
大部分のポートレットは、デスクトップ・ポートレットとも呼ばれ、HTMLのレスポンスのみを生成するので、標準のHTMLブラウザでしかレンダリングできません。この他に、ポートレットにはモバイル・ポートレットがあり、OracleAS Wireless XMLレスポンスのみを生成します。モバイル・ポートレットは、標準のHTMLブラウザを含む任意のデバイスでレンダリングできます。しかし、多くのポートレットは、環境に応じてHTMLまたはOracleAS Wireless XMLのどちらでもレンダリングできるハイブリッド手法をとっています。このようなハイブリッド・ポートレットは任意のデバイスでレンダリングできますが、標準のHTMLブラウザで最もよくレンダリングできます。OracleAS Wireless XMLは十分にHTMLでのレスポンス用に使用できますが、HTMLほど表現が豊かではありません。デスクトップおよびモバイルの両環境で実行されるポートレットは、通常デスクトップを使用してアクセスされるので、開発者は一般に、デスクトップ環境で最適にレンダリングできるハイブリッド・ポートレットの方を開発対象として選択します。
モバイル・ポートレットの構築の際は、次のガイドラインに準拠する必要があります。
モバイル対応ポートレットの構築方法については、7.2.10項「ポートレットのモバイル機器用拡張」を参照してください。
ポートレットを適切に管理するため、ポートレットによって生成されるすべてのコンテンツ・タイプをOracleAS Portalに認識させる必要があります。この情報は、OracleAS Portalによって次のように使用されます。
「ポートレットの追加」ダイアログでの「ポートレット・リポジトリ」ビューを制限するのに使用されます。ターゲットのページにレンダリング可能なポートレットのみが「ポートレットの追加」ダイアログに表示されます。たとえば、ユーザーがモバイル設計ページから「ポートレットの追加」ダイアログを起動すると、OracleAS Wireless XMLレスポンスを生成できるポートレットのみが表示されます。
多くのデバイスでレンダリング可能なポートレットを表示する「ポートレットの追加」ダイアログの「ポートレット・リポジトリ」ビューでのアイコンを表示するのに使用されます。たとえば、ユーザーが標準の設計ページから「ポートレットの追加」ダイアログを起動すると、モバイル対応のポートレットが、モバイル機器上でもレンダリングされることを示す図6-2のアイコンとともにリストされます。
モバイル機器での標準ページのレンダリングの際、OracleAS Wireless XMLを生成する機能ありとして登録されたポートレットのみを表示するのに使用されます。
既存の標準ページに基づく新しいモバイル・ページの作成の際、OracleAS Wireless XMLを生成する機能ありとして登録されたポートレットのみを組み入れるのに使用されます。
通常、モバイル機器は画面サイズが小さいので、1つの行にスクロールなしで表示できる文字数が制限されます。ポートレットのタイトルは、OracleAS Portalがモバイル・ページをメニュー構成としてレンダリングする際にメニュー・アイテム・ラベルとして表示されますが、モバイル表示としては長すぎることがよくあります。そのため、ポートレットには短いタイトルを定義できます。表示スペースが制限されている場合は、短いタイトルが標準タイトルに取ってかわります。
標準のポートレット・タイトルは、標準ページのポートレットのヘッダーにレンダリングされる際の、デフォルトのポートレット・インスタンス名になります。ポートレットの短いタイトルは、モバイル・ページのメニュー・アイテムとしてレンダリングされる際の、デフォルトのポートレット・インスタンス名になります。ポートレットで標準タイトルをパーソナライズできるようにすることをお薦めしましたが、これと同様に、ポートレットで短いタイトルをパーソナライズできるようにすることもお薦めします。この機能により、ページ設計者またはエンド・ユーザーは、読みやすい名前をインスタンスに付けられます。
OracleAS Portalはデスクトップに標準ページをレンダリングする際、ページ設計者によって定義された表形式でポートレットをページ上にアセンブルします。OracleAS Portalは、したがって、1つのページに多くのポートレットのコンテンツを集約します。ディスプレイが小さいため、モバイル機器は1つのページに複数のポートレットのコンテンツを効果的に表示できません。かわりに、ページのポートレットがリンク(メニュー・アイテム)として表示されます。ユーザーは、一度に1つのポートレットずつメニューをナビゲートしてポートレットのコンテンツを参照します。メニュー・アイテムのリンクは通常、ポートレットの短い名前を使用します。使用しやすいポートレットとは、短い名前をパーソナライズでき、そのパーソナライズ・データを管理できるものである必要があるため、ポートレットではメニュー・アイテム・リンクのレンダリングに関与する必要があります。この機能を有効にするには、ポートレットのリンク・モードを実装します。リンク・モードでのレンダリングのリクエストに応答して、ポートレットは、適切なコンテンツ・タイプで自身へのリンクを生成します。たとえば、レンダリングでHTMLがリクエストされた場合、ポートレットはアンカー・タグを戻します。レンダリングでOracleAS Wireless XMLがリクエストされた場合、ポートレットはSimpleHref
タグを戻します。
モバイル機器からであれデスクトップからであれ、すべてのリクエストは一般的なデバイス情報を渡します。たとえば、受け渡しされるある属性は、pcbrowser
、pdabrowser
、microbrowser
(携帯電話)などのデバイス・クラスを識別します。ポートレット開発者は、この属性を使用してレスポンスのレイアウトやデータ量を調整できます。
1つのポートレット・インスタンスは、モバイルおよびデスクトップのすべてのデバイスにわたるユーザー・パーソナライズのセットを一括して管理する必要があります。したがって、標準ページとモバイル・ページとの間でインスタンスが共有され、一部のフィールドがデスクトップかモバイルの1つの環境にのみ適用される場合でも、同じパーソナライズ・ページが表示されます。このような場合、ポートレットは、1つの環境にのみ関連するこのようなフィールドを識別する必要があります。たとえば、ポートレットがそのパーソナライズ・ページにモバイル専用セクションを表示することがあります。ところが、モバイル機能が構成可能なため無効になっていることをポートレットが検出したときには、パーソナライズ・ページからモバイル専用セクションが削除されるようにもできます。
企業ポータル・プロジェクトに従事する組織では、アプリケーションの統合が主要な課題でした。これまでユーザーは、単一のポータル・プラットフォーム専用のAPIを使用してポートレットを開発してきましたが、多くの場合、特定のポータル・ベンダーによるポートレットでは不十分でした。このような状況は、次の標準を導入することで大きく変わります。
Web Services for Remote Portlets(WSRP)
JSR 168に基づくJavaポートレット仕様(JPS)脚注1
この2つの標準によって、異なる複数のポータル製品を相互運用できるポートレットを開発できるため、組織におけるポートレットの可用性が拡大します。この可用性の拡大によって、企業ポータルの構築時には、組織の生産性を大幅に向上させることができます。
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標準ではコンシューマ(ポータル)はpost メソッドのみを使用することが要求されます。get メソッドのサポートは、WSRP標準に則ってオプション扱いになっています。ポータルのコンシューマはget メソッドをサポートする必要がないので、ポートレット開発の際はpost メソッドを使用することをお薦めします。 |
WSRPとJPSの関連
WSRPはポータル・サーバーとポートレット・コンテナ間の通信プロトコルです。一方、JPSにはポートレットを構築するためのJavaポートレットAPIが記述されています。これらの標準を組み合せることで、開発者は、内部または外部のソースからのアプリケーションをポートレットとしてWSRPポータルに統合できます。これによって、OracleAS Portalリポジトリからポートレットを選択するだけで簡単にポータル・ページを構築できるようになります。図6-3に、WSRP仕様のアーキテクチャを示します。
OracleAS Portalの既存のアーキテクチャはWSRP委員会で指定されたアーキテクチャと似ているため、OracleAS Portalでは、Oracleのポータルと既存のAPI(PDK-Java)間の通信、および新しいJavaポートレットAPIとの間の通信もサポートできます。図6-4に、WSRPポータルのアーキテクチャを示します。JPS準拠のポートレット・コンテナはWSRPプロトコルを使用して通信を行い、PDK-Javaポートレット・コンテナはOracleの専用SOAPプロトコルを使用して通信を行うことに注意してください。
JPSポートレットは、それぞれが独自の要件セットを持つ任意の数の構成で実行できます。この項では、JPSポートレットの一般的なシナリオのうち、次の2つの構成手順について説明します。
この項の手順を開始する前に、OTNから最新のJavaポートレット・コンテナをダウンロードして、WSRPデプロイ用として構成する予定のシステム内ローカル・ディレクトリにそのコンテンツを解凍する必要があります。Javaポートレット・コンテナ、および最新パッチに関する情報は、OTNの「PDK Download」ページ(次のURL)を参照してください。
http://www.oracle.com/technology/products/ias/portal/pdk.html
Oracle JDeveloper IDEのコンパイラの設定で、JDKのバージョンが正しいことを確認する必要もあります。コードのコンパイルに使用されるデフォルトのJDKのバージョンは、Oracle JDeveloperで使用されるJDKバージョンによって異なります。
ポートレットがデプロイされるOC4Jのバージョン、およびOC4Jの起動に使用されるJDKのバージョンを識別します。OC4Jと、ポートレットの作成およびコンパイル用のJDKの互換性のあるバージョンを表6-1に示します。
表6-1 OC4JとJDKのバージョンの互換性
OC4Jのバージョン | ポートレットを作成するためのJDKのバージョン | ポートレットをコンパイルするためのJDKのバージョン |
---|---|---|
スタンドアロンOC4Jリリース10.1.2 |
2.3 |
1.4 |
Application Server 10gのOC4J |
2.3 |
1.4 |
スタンドアロンOC4Jリリース10.1.3(JDKバージョン1.4で起動される場合) |
2.3 |
1.4 |
スタンドアロンOC4Jリリース10.1.3(JDKバージョン1.5で起動される場合) |
2.4 |
デフォルト値 |
プロジェクト・コンパイラ設定を設定する手順は、次のとおりです。
Oracle JDeveloperで「アプリケーション・ナビゲータ」タブにあるプロジェクトを右クリックし、ポップアップ・メニューの「プロジェクト・プロパティ」を選択します。
「プロジェクト・プロパティ」ダイアログ・ボックスの左側のペインで、「コンパイラ」をクリックします。
「ソース」リストで適切なバージョンを選択し、「OK」をクリックします。
Oracle Application Serverの一部であるOC4JにJPSポートレットをデプロイする手順は、次のとおりです。
JPSポートレットをデプロイするOC4Jインスタンスを新規に作成します。
cd MID_TIER_ORACLE_HOME/bin createinstance –instanceName wsrp
ポートレット・コンテナ・ディレクトリ内のwsrp-install.jar
を、OC4Jインスタンス用に名前を付けた場所にコピーします。次に例を示します。
MID_TIER_ORACLE_HOME/j2ee/wsrp
この例では、OC4Jインスタンスはwsrp
という名前です。
次のコマンドを使用して、自動インストーラを実行します。
cd MID_TIER_ORACLE_HOME/j2ee/wsrp MID_TIER_ORACLE_HOME/jdk/bin/java -jar wsrp-install.jar
このインストール・ユーティリティは、ポートレット・コンテナをインストールして、コンテナを実行するために必要な構成変更を行います。
OC4Jインスタンスを起動します。
JPSポートレットは、登録およびプリファレンスの情報をデータベースに格納します。「Portal and Wireless」オプション以外でのインストールの場合は、データベース・スキーマと関連表を作成し、この情報を格納する必要があります。Oracle Application Serverインフラストラクチャ・データベースまたはその他のOracleデータベースを、この用途に使用できます。このストアを作成するには、最初にSYSDBA権限のあるユーザーとしてデータベースに接続する必要があります。
sqlplus "sys/<sys_password>@<service_name> AS SYSDBA"
プリファレンス・ストアを作成するには、次のコマンドを使用してptlwsrp_data.sql
スクリプトを実行します。ptlwsrp_data.sql
は、ポートレット・コンテナを解凍したルート・ディレクトリにあります。
注意: ptlwsrp_data.sql により、パスワードがportlet_prefs の、portlet_prefs という名前のデータベース・ユーザーが作成され、必要なデータベース・オブジェクトがスキーマに移入されます。 |
@ptlwsrp_data portlet_prefs portal
portlet_prefs
はデータを格納するユーザー・アカウントの名前であり、portal
はそのアカウントに使用するデフォルト表領域の名前です。
このデータベース・プリファレンス・ストアからファイル・プリファレンス・ストアに移行する場合は、「WSRPコンテナ・ファイル・プリファレンス・ストア移行ユーティリティの使用」の説明に従って、PersistenceMigrationTool
ユーティリティを使用してください。
データソースを作成する場合は、Application Server Controlコンソールに進みます。通常、Application Server ControlコンソールのURLは次のとおりです。
http://hostname:port/em/
ログインし、JPSポートレットをデプロイするOracle Application Serverインスタンスにナビゲートします。
コンポーネント(たとえばwsrp
)をクリックします。
「管理」タブをクリックします。
「サービス」で、JDBCリソースの「タスクに移動」アイコンをクリックします。
「接続プール」で、「作成」をクリックします。
「アプリケーション」リストからdefault
を選択します。
「続行」をクリックします。
表6-2に示すように、フィールドに入力します。
表6-2 「接続プールの作成」の設定
設定 | 値 |
---|---|
名前 |
この接続プールの名前を入力します( |
コネクション・ファクトリ・クラス |
デフォルト値、 |
JDBC URL |
アプリケーションを使用するために作成したスキーマを含むOracleデータベースのJDBC URLを入力します( |
ユーザー名 |
アプリケーション用にスキーマを作成したデータベース・ユーザー名を入力します。 |
クリアテキスト・パスワードの使用→パスワード |
前のフィールドに入力したデータベース・ユーザー名のパスワードを入力します。 |
「終了」をクリックします。「JDBCリソース」ページに戻ります。
新しく作成した接続プールをテストするには、「接続テスト」アイコンをクリックします。テストに失敗した場合は、接続プールが正しく設定されていることを確認します。
「データソース」で、「作成」をクリックします。
「アプリケーション」リストからdefault
を選択します。
「続行」をクリックします。
表6-3に示すように、フィールドに入力します。
「終了」をクリックします。
ここでWSRPの構成をテストして正常に動作するか確認します。この目的には、OracleAS PortalのサンプルWSRPプロデューサであるwsrp-samples.ear
を使用できます。WSRPの構成をテストする手順は、次のとおりです。
Application Server Controlコンソールに戻ります。
JPSポートレットをデプロイするOracle Application Server中間層インスタンスをクリックします。
前に作成したOC4Jコンテナのwsrp
をクリックします。
「アプリケーション」タブをクリックします。
「デプロイ」をクリックします。「デプロイ: アーカイブの選択」ページ(図6-5)が表示されます。
「アーカイブはローカル・ホストに存在します。アーカイブをApplication Server Controlが稼働しているサーバーにアップロードします。」を選択します。
「アーカイブの場所」に、wsrp-samples.ear
およびそのパスを入力します。
「新規デプロイ・プランを自動的に作成します。」を選択します。
「次へ」をクリックします。EARファイルがアップロードされるまで待ちます。ファイルがアップロードされると、「デプロイ: アプリケーション属性」ページ(図6-6)が表示されます。
「アプリケーション名」には、sampleportlets
と入力します。
「次へ」をクリックします。
「デプロイ: デプロイ設定」ページ(図6-7)が表示されます。このページで任意のデプロイ設定を変更することもできますが、ここでは「デプロイ」をクリックします。
「確認」ページ(図6-8)が表示されます。設定が正しいかどうか注意深くチェックします。
図6-8 「確認」ページ
「戻る」をクリックして「確認」ページを終了します。
サンプルEARファイルがデプロイし終わったので、ブラウザにそのWSDL URLを入力してテストする必要があります。WSDL URLの形式は次のとおりです。
http://host:port/sampleportlets/portlets/WSRPBaseService?WSDL
図6-15に示すようなページが表示されます。
WSDL URLを使用して、他のプロデューサと同様にサンプル・プロデューサを登録します。それには、6.4.2.4項「ポートレットの登録と表示」の手順に従います。さらに、サンプル・ポートレットのいくつかをページに追加し、そのページを表示して、構成をテストします。なんらかの理由で登録が失敗するか、ページにポートレットを追加できない場合は、B.2項「Javaポートレットの問題」のトラブルシューティング情報を参照してください。
サンプル・プロデューサが正常に登録されると、独自のポートレットを構築し始める準備が整います(6.4.2項「JPS準拠のポートレットの構築」を参照)。
WSRPコンテナ・ファイル・プリファレンス・ストア移行ユーティリティの使用
WSRPコンテナ・ファイル・プリファレンス・ストアは、コンシューマ登録およびポートレット・プリファレンス・データを永続化するためのメカニズムです。現在、プリファレンス・ストアの実装には、データベース・プリファレンス・ストアとファイル・プリファレンス・ストアの2つがあります。データベース・プリファレンス・ストアはリレーショナル・データベースを使用してデータを永続化し、ファイル・プリファレンス・ストアはファイル・システムを使用してデータを永続化します。
ファイル・プリファレンス・ストアにより、ユーザーはデータベースに依存せずに済みます。ファイル・プリファレンス・ストアは、デフォルトのプリファレンス・ストアとして使用されます。このため、既存のデータベース・プリファレンス・ストアからファイル・プリファレンス・ストアへの移行が必要な場合があります。WSRPコンテナ・プリファレンス・ストア移行ユーティリティPersistenceMigrationTool
を使用すると、異なるプリファレンス・ストア間で(たとえば、データベース・プリファレンス・ストアからファイル・プリファレンス・ストアへ)既存のデータを移行できます。また、このユーティリティを使用して、アップグレード中のユーザーは、既存のロケール固有のポートレット・プリファレンス・データが最新のJSPリリースと互換性のある名前形式を使用していることを確認できます。さらに、同じタイプのソース・ストアと宛先ストア間の移行に、このユーティリティを使用することもできます。これにより、あるデータベース・ストアから別のデータベース・ストアにデータを移動できます。
PersistenceMigrationTool
ユーティリティは、wsrp-install.jar
ファイルに含まれています。このユーティリティを実行するための構文は、次のとおりです。
java oracle.webdb.wsrp.server.PersistenceMigrationTool <source-args> <dest-args> [-debug]
<source-args>
および<dest-args>
は、それぞれソースおよび宛先のプリファレンス・ストアのパラメータを定義します。
-debug
オプションを使用すると、標準出力を使用してフル・ロギングがオンになり、ユーザーはツールの実行時に発生する問題を調べることができます。
ファイル・プリファレンス・ストアの場合は、file
という値を指定した-[
source
|
dest
]Type
パラメータを、ルート・ディレクトリを指定する-[
source
|
dest
]Path
パラメータとともに使用します。
データベース・プリファレンス・ストアの場合は、db
という値を指定した-[
source
|
dest
]Type
パラメータを、データベース接続を定義する-[
source
|
dest
]Username
、-[
source
|
dest
]Password
および-[
source
|
dest
]Database
パラメータとともに使用します。
PersistenceMigrationTool
ユーティリティの実行例を次に示します。この例では、プリファレンスがデータベース・ストアからファイル・ストアにコピーされます。
java oracle.webdb.wsrp.server.PersistenceMigrationTool -sourceType db -sourceUsername scott -sourcePassword tiger -sourceDatabase abc.mycompany.com:1521:e10gdev3 -destType file -destRoot /data/prefs
データを永続化するために使用するデータ・ストアを指定するには、persistentStore
JNDI環境変数をMID_TIER_ORACLE_HOME
\j2ee\OC4J_Portal\applications\portal\portal\WEB-INF\web.xml
ファイルに追加する必要があります。この変数のデフォルト値はFile
です。デフォルト値のままにする場合は、ファイル・ストアのファイル・システム位置を指定するために、fileStoreRoot変数も追加する必要があります。この変数のデフォルト値はportletdata
で、この値はORACLE_HOME
/portal
ディレクトリからの相対パスです。つまり、ファイル・ストアのデフォルト位置はORACLE_HOME
/portal
/portletdata
です。
サンプルのWSRPプロデューサをデプロイした場合、またはアプリケーションがこのサンプル・プロデューサに基づいている場合、これらのJNDI環境変数はすでにweb.xml
ファイルに指定されている場合があります。次のコードを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>
注意: プリファレンス・ストアのタイプまたはストアの位置を明示的に選択する必要がない場合は、ファイルでデフォルト値のままにすることができます。 |
OC4JスタンドアロンにJPSポートレットをデプロイするには、最初に次の手順を実行する必要があります。
OC4Jスタンドアロンがまだない場合は、OTNからダウンロードしてインストールしてください。次のURLからダウンロードできます。
http://www.oracle.com/technology/software/products/ias/htdocs/utilsoft.html
OC4Jスタンドアロン・インスタンスがすでに実行中の場合は、この手順をスキップしてもかまいません。
OC4Jスタンドアロン・インスタンスを停止するには、次のコマンドラインを使用します。
java -jar admin.jar ormi://localhost admin $admin_password -shutdown
ポートレット・コンテナ・ディレクトリから次のディレクトリにwsrp-install.jar
をコピーします。
OC4J_HOME/j2ee/home
次のコマンドを使用して、自動インストーラを実行します。
cd OC4J_HOME/j2ee/home
java -jar wsrp-install.jar
このインストール・ユーティリティは、ポートレット・コンテナをインストールして、コンテナを実行するために必要な構成変更を行います。
JPSポートレットは、登録およびプリファレンスの情報をデータベースに格納します。OC4Jスタンドアロン・インストール用に、データベース・スキーマと関連表を作成し、この情報を格納する必要があります。Oracle Application Serverインフラストラクチャ・データベースまたはその他のOracleデータベースを、この用途に使用できます。このストアを作成するには、最初にSYSDBA権限のあるユーザーとしてデータベースに接続する必要があります。
sqlplus "sys/<sys_password>@<service_name> AS SYSDBA"
プリファレンス・ストアを作成するには、次のコマンドを使用してptlwsrp_data.sql
スクリプトを実行します。ptlwsrp_data.sql
は、ポートレット・コンテナを解凍したルート・ディレクトリにあります。
注意: ptlwsrp_data.sql により、パスワードがportlet_prefs の、portlet_prefs という名前のデータベース・ユーザーが作成され、必要なデータベース・オブジェクトがスキーマに移入されます。 |
@ptlwsrp_data portlet_prefs portal
portlet_prefs
はデータを格納するユーザー・アカウントの名前であり、portal
はそのアカウントに使用するデフォルト表領域の名前です。
このデータベース・プリファレンス・ストアからファイル・プリファレンス・ストアに移行する場合は、「WSRPコンテナ・ファイル・プリファレンス・ストア移行ユーティリティの使用」の説明に従って、PersistenceMigrationTool
ユーティリティを使用してください。
プリファレンス・ストア・スキーマの接続詳細をJDBCデータソースにマッピングする、新しいデータソース・エントリを追加します。そのための手順は、次のとおりです。
Application Server Controlコンソールにログインします。通常は、Application Server ControlコンソールのURLは次の形式です。
http://hostname:port/em/
「管理」タブをクリックします。
「サービス」で、JDBCリソースの「タスクに移動」アイコンをクリックします(図6-9)。
「JDBCリソース」ページ(図6-10)の「接続プール」で、「作成」をクリックします。「接続プールの作成 - アプリケーション」ページが表示されます。
図6-11に示すように、「アプリケーション」リストから「デフォルト」を選択します。
図6-11 「接続プールの作成 - アプリケーション」ページ
「続行」をクリックします。図6-12に示すような「接続プールの作成」ページが表示されます。
図6-12 「接続プールの作成」ページ
表6-4に示すように、フィールドに適切な入力します。
表6-4 「接続プールの作成」の設定
設定 | 値 |
---|---|
名前 |
この接続プールの名前を入力します(WSRP_DS_Poolなど)。 |
コネクション・ファクトリ・クラス |
デフォルト値、 |
JDBC URL |
アプリケーションを使用するために作成したスキーマを含むOracleデータベースのJDBC URLを入力します( |
ユーザー名 |
アプリケーション用にスキーマを作成したデータベース・ユーザー名を入力します。 |
クリアテキスト・パスワードの使用→パスワード |
前のフィールドに入力したデータベース・ユーザー名のパスワードを入力します。 |
「終了」をクリックします。「JDBCリソース」ページに戻ります。
新しく作成した接続プールをテストするには、「接続テスト」アイコンをクリックします。テストに失敗した場合は、接続プールが正しく設定されていることを確認します。
「データソース」で、「作成」をクリックします。「データ・ソースの作成 - アプリケーションとタイプ」ページが表示されます。
図6-13に示すように、「アプリケーション」リストから「デフォルト」を選択します。
図6-13 「データ・ソースの作成 - アプリケーションとタイプ」ページ
「続行」をクリックします。図6-14に示すような「データ・ソースの作成 - 管理データ・ソース」ページが表示されます。
図6-14 「データ・ソースの作成 - 管理データ・ソース」ページ
表6-5に示すように、フィールドに適切な入力します。
「終了」をクリックします。
次のいずれかのコマンドラインでOC4Jインスタンスを起動して、正常に動作していることを確認します。
Windowsの場合:
start java -jar oc4j.jar
UNIXの場合:
java -jar oc4j.jar &
ここで、WSRPの構成をテストして正常に動作するか確認します。この目的には、OracleAS PortalのサンプルWSRPプロデューサであるwsrp-samples.ear
を使用できます。その前に、EARファイル、sampleportlets
をデプロイする必要があります。sampleportlets
をWebアプリケーションのコンテキスト・ルートとして使用します。次に例を示します。
java -jar admin.jar ormi://localhost oc4jadmin welcome -deploy -deploymentName wsrp-samples -file E:\oc4j1013_051207.1424\j2ee\home\applications\wsrp-samples.ear java -jar admin.jar ormi://stport56.idc.oracle.com oc4jadmin welcome -bindWebApp wsrp-samples wsrp-samples file:E:\oc4j1013_051207.1424\j2ee\home\config\default-web-site.xml /sampleportlets
EARファイルのデプロイ方法の詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。
サンプルEARファイルをデプロイしたら、ブラウザにそのWSDL URLを入力してテストする必要があります。WSDL URLの形式は次のとおりです。
http://host:port/sampleportlets/portlets/WSRPBaseService?WSDL
図6-15に示すようなページが表示されます。
WSDL URLを使用して、他のプロデューサと同様にサンプル・プロデューサを登録します。それには、6.4.2.4項「ポートレットの登録と表示」の手順に従います。さらに、サンプル・ポートレットのいくつかをページに追加し、そのページを表示して、構成をテストします。なんらかの理由で登録が失敗するか、ページにポートレットを追加できない場合は、B.2項「Javaポートレットの問題」のトラブルシューティング情報を参照してください。
サンプル・プロデューサが正常に登録されると、独自のポートレットを構築し始める準備が整います(6.4.2項「JPS準拠のポートレットの構築」を参照)。
ポートレットを構築する際は、OTNから拡張機能をダウンロードしてOracle JDeveloperに追加できます。この拡張機能を使用するには、次の手順を実行します。
この項では、次のことを前提にしています。
ポートレットの表示モードなど、ポートレットに関する用語の知識があること。第1章「ポートレットの概要」および6.1項「Javaポートレット作成のガイドライン」を参照してください。
Oracle Application Serverは、6.3項「JPS準拠ポートレット実行のためのアプリケーション・サーバーの構成」に記載されているいずれかの構成でJPSポートレットを実行するように構成してあること。
Oracle JDeveloperに関する知識があり、それを使用したJavaコンポーネントを構築およびデプロイする方法を習得していること。Oracle JDeveloperはOTNからダウンロードできます。次のURLでOTNの「Oracle JDeveloper」ページにアクセスします。
http://www.oracle.com/technology/products/jdev/index.html
OracleAS Portal Developer Kitには、Oracle JDeveloper用の拡張機能をインストールするために必要なライブラリが用意されています。このライブラリを使用すると、ポートレットを開発する際の柔軟性や生産性が大幅に向上します。この拡張機能には、PDK-Javaポートレットを構築するウィザードと、JPS準拠のポートレットを構築するウィザードが含まれています。いずれのウィザードも、ポートレット・スケルトンの作成手順をガイドするため、開発者に必要なのは、独自のビジネス・ロジックを実装するのみです。
拡張機能を入手するための手順は、次のとおりです。
次のURLでOTNの「PDK Download」ページにアクセスします。
http://www.oracle.com/technology/products/ias/portal/pdk.html
「Portal Extension for JDeveloper」で、「Portal Extension for Oracle JDeveloper」をクリックして拡張機能をダウンロードします。
インストールの手順は、「Portal Extension for Oracle JDeveloper Installation Guide」をクリックしてください。
Javaのポートレット・ウィザードを正常にインストールした後は、Oracle JDeveloperを使用して、相互運用可能なポートレットを迅速かつ簡単に開発できます。そのためには、次のタスクを実行します。
ポートレットの作成: ウィザードを使用して、基本的なポートレット・コードとフレームワークに必要な構成ファイルを作成します。
ポートレット・ロジックの追加: 独自のビジネス・ロジックを使用してサンプル・コードを拡張します。
アプリケーション・サーバーへのポートレットのデプロイ: Oracle JDeveloperを使用して、作成したアプリケーションをアプリケーション・サーバーにデプロイします。
ポートレットの登録と表示: ポートレットをOracleAS Portalに登録して表示します。
この項では、ポートレット・ウィザードの手順を説明します。最初に、実装するポートレットの表示モード、および実装メソッド(JSP、HTTPサーブレット、JavaクラスまたはHTML)を選択できます。次に、ウィザードによって、選択したモードごとに簡単なサンプル実装が作成されます。
注意: この項の図は、Oracle JDeveloperで「ルック・アンド・フィール」の設定を「Windows」にしています。「ルック・アンド・フィール」を「Oracle」に設定した場合は、表示される画面が少し異なりますが、内容および機能は同じです。「ルック・アンド・フィール」設定を変更するには、「ツール」→「設定」を選択し、「環境」をクリックします。 |
ポートレット・ウィザードを使用してポートレットを作成する手順は、次のとおりです。
Oracle JDeveloperを開き、ポートレットを作成するアプリケーションおよびプロジェクトを開きます。そのようなプロジェクトがまだない場合は、次の2つのうちいずれかの方法で作成できます。
「アプリケーション - ナビゲータ」で既存のアプリケーションを右クリックし、「新規プロジェクト」を選択します。「プロジェクトの作成」ダイアログ・ボックスに入力し、「OK」をクリックします。
「アプリケーション」ノードを右クリックし、「新規アプリケーション」を選択します。「アプリケーションの作成」ダイアログ・ボックスに入力し、「OK」をクリックします。「プロジェクトの作成」ダイアログ・ボックスが表示されたら、「OK」をクリックします。
プロジェクトを右クリックし、「新規」を選択します。
「カテゴリ」リストで「Web Tier」カテゴリを開き、「Portlets」をクリックします。
注意: 「Portlets」が表示されていない場合は、6.4.1項「Oracle JDeveloper用ポータル拡張機能のインストール」を参照して、拡張機能が正しくインストールされていることを確認してください。 |
「項目」リストで、図6-16に示すように「Javaポートレット」をクリックします。
注意: 「Javaポートレット」をクリックすると、JPS準拠のポートレットを作成するためのポートレット・ウィザードが開きます。「Oracle PDK Javaポートレット」をクリックすると、PDK-Javaポートレットを作成するためのポートレット・ウィザードが開きます。 |
ウィザードの「ようこそ」ページが表示されたら、「次へ」をクリックします(図6-17)。
「General Portlet Properties」ページで、表6-6および図6-18に示す値を入力します。
表6-6 「General Portlet Properties」の値
プロパティ | 値 |
---|---|
Class |
ウィザードで作成するクラスの名前を入力します。このフィールドにはデフォルトのクラス名が表示されます。そのまま使用するか、または変更できます。 |
Package |
プロジェクトのパッケージを参照し、クラスが存在するパッケージを選択します。パッケージを選択しない場合、ウィザードではプロジェクトのデフォルト・パッケージが使用されます。 |
Default Language |
ポートレットがサポートするデフォルト言語を選択します。ウィザードでは、デフォルトで英語が使用されます。 |
Customizable |
エンド・ユーザーにポートレットのパーソナライズを許可するかどうかを選択します。ウィザードでは、デフォルトでパーソナライズ可能です。この例では、デフォルトをそのまま使用します。 |
「次へ」をクリックします。
注意: 「終了」は、ウィザードのステップ2が完了するまで使用できません。 |
「Name and Attributes」ページで、表6-7および図6-19に示す値を入力します。
表6-7 「Name and Attributes」の値
プロパティ | 値 |
---|---|
Display Name(必須) |
OracleAS Portalのカタログまたはリポジトリに表示する名前を入力します。この例では、 |
Portlet Title(必須) |
ポータル・ページのポートレット・ヘッダーに表示するタイトルを入力します。この例では、 |
Short Title |
モバイル機器用のポートレット・ヘッダーに表示するタイトルを入力します。この例では、 |
Description |
ポートレットの説明を入力します。この例では、 |
Keywords |
ユーザーがポータル内でポートレットを検索するのに役立つキーワードを入力します。この例では、 |
「次へ」(ポートレットのプロパティ指定を続行する場合)または「終了」をクリックします。ここで「終了」をクリックすると、ウィザードでは、残りのすべての設定についてデフォルト値が選択されます。
図6-20に示す「Content Types and Portlet Modes」ページで、ポートレットのコンテンツ・タイプを選択し、ポートレット・モードを実装にマップします。デフォルトでは、コンテンツ・タイプはtext/htmlで、ポートレット・モードは「view」でポートレットが表示されます。「General Portlet Properties」ページで「Customizable」を選択した場合は、text/html
のポートレット・モードとして「edit」も表示されます。
このページで、次の手順を実行します。
text/html
以外のコンテンツ・タイプを追加する必要がある場合は、text/html
をクリックし、「Add」をクリックします。この例では、他のコンテンツ・タイプを追加する必要はありません。
他のポートレット・モードを追加する必要がある場合は、既存のポートレット・モード(たとえば、「view」)をクリックし、「Add」をクリックします。図6-21に示すように、使用可能なポートレット・モードのリストが表示されます。ポートレット・モードを追加する場合は、任意のポートレット・モードを「使用可能」リストから「選択」リストに移動します。この例では、他のポートレット・モードを選択する必要はありません。「Portlet Modes」ダイアログ・ボックスで作業を終了した後は、「OK」をクリックします。
必要なポートレット・モードをすべて追加した後は、各モードについて実行する機能を選択する必要があります。ポートレット・モードごとに、それをクリックして右側のラジオ・ボタンを選択します。この例では、「edit」と「view」の両方のポートレット・モードに対して「Generate JSP」を選択し、生成されたJSPのデフォルト・パスとファイル名をそのまま使用します。ポートレット・モードの詳細は、6.1項「Javaポートレット作成のガイドライン」を参照してください。
注意: 「Generate JSP」または「Custom Code」実装メソッドを選択すると、指定した場所にコードが生成されます。「Map to Path」実装メソッドを選択すると、個別に作成するリクエストは既存のWebリソースにルーティングされます。 |
「次へ」をクリックします。
ウィザードの前のステップで、「General Portlet Properties」ページの「Customizable」を選択したので、図6-22に示すように「Customization Preferences」ページが表示され、ポートレットの設定を宣言できます。ウィザードの前のステップで「Customizable」を選択しなかった場合、このページは表示されません。
「Customization Preferences」ページで次の手順を実行して、設定名、デフォルト値および設定値を翻訳するかどうかを指定します。
設定を追加するには、「Add」をクリックし、図6-23に示すように「Add New Preference」ダイアログ・ボックスで名前、デフォルト値、および翻訳するかどうかを指定します。この例では、他の設定を追加する必要はありません。
注意: 名前は常に翻訳されますが、デフォルト値は必ずしも翻訳する必要はありません。たとえば、値が整数の場合、翻訳は不要です。 |
設定を削除する場合は、削除する設定を「Portlet Preferences」リストから選択し、「削除」をクリックします。この例では、他の設定を削除する必要はありません。
「次へ」をクリックします。
図6-24に示す「Security Roles」ページで、ポートレットにセキュリティ・ロールを追加できます。ウィザードには、事前定義されたセキュリティ・ロールはありません。ウィザードは、セキュリティ・ロールについてweb.xml
を解析し、ポートレットで参照できるようにします。ここでは新規プロジェクトにセキュリティ・ロールを定義しないため、このステップでの作業はありません。セキュリティ・ロールは、後でJPSに従って手動で作成できます。
「次へ」をクリックします。
「Caching」ページで、ポートレットのキャッシュをデフォルトで有効にするかどうかを指定します。ポートレット自体で、指定のレスポンスのコンテンツをキャッシュすることもできます。このページで指定する設定は、レスポンスに対するキャッシュ条件がポートレットで指定されていない場合にのみ適用されます。この例では、図6-25に示すように、次のように指定してください。
「Cache Portlet」をクリックします。
「Cache Content Expires After」をクリックします。
キャッシュされたコピーのデフォルトの有効期限(60
秒)をそのまま使用します。
注意: ポートレットについてデフォルトでキャッシュしない場合は、「Do Not Cache By Default」を選択します。この場合、ウィザードではキャッシュ有効期限が0秒に設定されます。前述したとおり、このキャッシュ設定が有効となるのは、レスポンスに対するキャッシュ条件がポートレットで指定されていない場合のみです。ここでキャッシュしないように設定し、後で、ポートレットについてデフォルトでキャッシュする必要が生じた場合は、簡単に変更できます。変更するには、ウィザードで生成した |
「次へ」をクリックします。
図6-26に示す「Initialization Parameters」ページでは、ポートレットに必要な初期化パラメータを追加できます。初期化パラメータによって、.war
ファイルの内容を決定するWebアプリケーション開発者が指定されます。このファイルは、JNDI変数のかわりに、Webアプリケーション(サーブレットやポートレット)のすべてのコンポーネントの動作を互換性のある方法で構成するために使用します。この例では、初期化パラメータは必要ありません。
「次へ」をクリックします。
「終了」をクリックすると、ポートレット用のファイルが生成されます。この例では、「アプリケーション - ナビゲータ」のプロジェクト・ノードに対して次のファイルが生成されます(図6-27を参照)。
「Content Types and Portlet Modes」ページで「Generate JSP」を選択した場合は、各表示モードのコードが生成されます。「Custom Code」を選択した場合、そのコードはポートレットのJavaクラスに属すことになります。
2つのJavaクラス
portlet.xml
web.xml
デフォルト実装を作成した後は、独自のビジネス・ロジックを追加してサンプル・コードを拡張し、必要な機能を実装できます。機能の追加方法は、JavaDocまたはJPSを参照してください。この例では、この手順を実行する必要はありません。次のデプロイ手順に進んでください。
ウィザードを終了してポートレットを生成した後は、そのポートレットをアプリケーション・サーバーにデプロイできます。JPS準拠のポートレットを作成した場合は、そのポートレットを、ウィザードを使用してベンダーのJPS準拠のコンテナにデプロイできます。次の項で、JPS準拠のポートレットを、Oracle Containers for J2EEで実行されているOracleのWSRPコンテナにデプロイする手順を説明します。
WARファイルをデプロイする前に、使用している任意のアプリケーション・サーバーへの接続を確立する必要があります。OC4Jのインストール・タイプに応じて、次の手順のいずれかを実行します。
Oracle Application ServerでのOC4Jへの接続
Oracle Application ServerでOC4Jへの接続を確立する手順は、次のとおりです。
ナビゲータで「接続」タブをクリックします。
「接続」ノードを右クリックし、「アプリケーション・サーバー接続の作成」を選択します。次の手順に従って表示されているウィザードを終了します。
「ようこそ」ページが表示されている場合は、「次へ」をクリックします。今後、「ようこそ」ページを表示しない場合は、「次回にこのページを表示しない」を選択してください。
接続に、わかりやすい名前(PDKStandardsOC4JAS
など)を入力します。
接続先のインスタンスに対する適切な「接続タイプ」 (Oracle Application Server 10g 10.1.3など)を選択します。
「次へ」をクリックします。
関連中間層について、Application Server Controlコンソール管理者のユーザー名(oc4jadmin
など)とパスワードを入力します。
「次へ」をクリックします。
表6-8に示す情報を入力します。
表6-8 OC4J Oracleアプリケーション・サーバー接続の作成時の設定
設定 | 値 |
---|---|
ホスト名 |
Oracle Application Server 10g 10.1.3がインストールされているコンピュータの名前を入力します。 |
OPMNポート |
Oracle Process Manager and Notification Server(OPMN)がOC4Jサーバーにバインドするためのポート番号を入力します。デフォルト値は6003です。インストールされたOracle Application Server 10g 10.1.3のホストおよびOPMNポートはサーバー管理者が指示する場合があります。 |
OC4Jインスタンス名 |
対象のOC4Jインスタンスのインスタンス名を入力します。デフォルト値は |
「次へ」をクリックします。
「接続のテスト」をクリックして、接続詳細を確認します。接続が正常な場合は、成功メッセージが表示されます。テストに失敗した場合は、接続情報の修正が必要になる場合があります。
「終了」をクリックします。
OC4Jスタンドアロンへの接続
OC4Jスタンドアロンへの接続を確立する手順は、次のとおりです。
ナビゲータで「接続」タブをクリックします。
「接続」ノードを右クリックし、「アプリケーション・サーバー接続の作成」を選択します。次の手順に従って表示されているウィザードを終了します。
「ようこそ」ページが表示されている場合は、「次へ」をクリックします。今後、「ようこそ」ページを表示しない場合は、「次回にこのページを表示しない」を選択してください。
接続に、わかりやすい名前(PDKStandardsOC4J
など)を入力します。
接続先のインスタンスに対する適切な「接続タイプ」(スタンドアロンOC4J 10g 10.1.3など)を選択します。
「次へ」をクリックします。
管理者のユーザー名とパスワードを入力します。このパスワードは、PDK標準OC4Jのインストール時に設定したものです。
「次へ」をクリックします。
表6-9に示す情報を入力します。
「次へ」をクリックします。
「接続のテスト」をクリックして、接続詳細を確認します。接続が正常な場合は、成功メッセージが表示されます。テストに失敗した場合は、接続情報の修正が必要になる場合があります。
「終了」をクリックします。
WARファイルを作成してデプロイする手順は、次のとおりです。
「アプリケーション - ナビゲータ」に移動します。
現在のプロジェクトで、web.xml
を右クリックし、「WARデプロイメント・プロファイルの作成」を選択します。
「デプロイメント・プロファイルの作成」ダイアログ・ボックスで、名前をわかりやすい名前(jsrportlet1.deploy
など)に変更します。
「OK」をクリックします。
デプロイメント・プロファイルのプロパティ・ダイアログ・ボックスで、次の手順を実行します。
「J2EE Webコンテキスト・ルートを指定」をクリックし、隣接するフィールドにmy-portlet
と入力します。
「OK」をクリックします。
「リソース」ノードを開き、デプロイメント・プロファイル(jsrportlet1.deploy
など)を右クリックし、「配布先」→アプリケーション・サーバー接続(PDKStandardsOC4J
など)を選択します。
「アプリケーションの構成」ダイアログでは、コンテナ構成ファイル(orion-web.xml
など)に固有の設定を入力できます。通常は、「OK」をクリックしてデフォルト値をそのまま使用します。
Oracle JDeveloperの下部にあるデプロイ・ログに「---- デプロイが終了 ----」メッセージが表示されたときは、エラーが発生していないことを確認します。
JSP準拠のポートレットのWSDL URLを次のように作成します。
http://host:port/context-root/portlets/WSRPBaseService?WSDL
host
は、プロデューザがデプロイされているサーバーです。
port
は、Application Server Controlコンソールのメイン・ページの「ポート」タブにあるOracleAS Web Cache HTTP Listenerポートです。
context-root
は、Webアプリケーションのコンテキスト・ルートで、「一般」の「WARデプロイメント・プロファイルのプロパティ」にあります。
Webブラウザで、前述の手順で指定したWSDL URLを入力し、正しく動作することを確認します。WSDL定義がブラウザに表示されない場合は、WARファイルのデプロイに失敗しています。付録B「Javaポートレットの問題」を参照してください。
SSL(HTTPS)を使用している場合は、OracleAS Portalにプロデューサを登録する前にWSDL URLを変更する必要があります。SSLを使用していない場合は、次の手順をスキップできます。
注意: HTTPSをプロデューサで動作させるには、『Oracle Application Server Portal構成ガイド』で説明しているように、インフラストラクチャ・サーバー証明書ストアでサーバー証明書を事前構成する必要があります。 |
WSDL URLを変更する手順は、次のとおりです。
Webブラウザで、HTTPS WSDL URLを入力します。次に例を示します。
http://host:port/context-root/portlets/WSRPBaseService?WSDL
宛先の各ポートが、HTTPSロケーションに表示されます。たとえば、次のようになります。
<wsdl:port binding="bind:WSRP_v1_Markup_Binding_SOAP" name="WSRPBaseService"> <soap:address location="https://host:port/context-root/portlets/WSRPBaseService"/> </wsdl:port>
ポートがHTTPSロケーションにリストされない場合は、次に進む前に手動でこれらを変更する必要があります。これは、ブラウザからXMLをファイルに保存し、テキスト・エディタで開いて行います。
WSDL定義のコピーを、HTTPによる外部アクセスが可能なアプリケーション・サーバー上のファイルに保存します。たとえば、Apacheインストールのhtdocsディレクトリを使用します。OracleAS Portalにプロデューサを登録するとき、登録の「接続の定義」ページでWSDL URLにこのWSDLロケーションを使用します。
ここでプロデューサを登録し、ポートレットを表示する必要があります。6.4.2.4項「ポートレットの登録と表示」を参照してください。
ポートレット・コンテナにポートレットを再度デプロイすると、プロデューサとそのすべてのコンシューマの間で持たれている既存のセッションがすべて失われます。コンシューマが既存のプロデューサ・セッションを再利用しようとする場合、コンシューマが再デプロイ後初めてプロデューサに接続しようとすると、エラー・メッセージが表示されることがあります。
Error: Could not get markup. The cookie or session is invalid or there is a runtime exception.
プロデューサのセッションを再確立するには、ポータル・ページをリフレッシュします。新しいブラウザ・セッションからポートレットに再アクセスする場合は、このエラー・メッセージは表示されません。自動的に新しいプロデューサ・セッションが確立されるためです。
注意: Oracle Application Server 10gリリース3(10.1.3)にはOracleAS Portalが付属していません。ただし、リリース3(10.1.3)で構築およびデプロイしたポートレットを、OracleAS Portal 10gリリース2(10.1.4)またはOracleAS Portal 10gリリース2(10.1.2)のリモート・インスタンスに登録できます(該当する中間層パッチを適用)。OracleAS Portal 10gリリース2(10.1.2)に必要なパッチの更新情報は、次のOracle MetaLinkを参照してください。
|
プロバイダとそのポートレットを作成してデプロイした後は、そのプロバイダをOracleAS Portalに登録する必要があります。プロバイダを登録すると、そのプロバイダを検索して通信するために必要な情報がOracleAS Portalに提供されます。プロバイダを登録した後は、プロバイダとそのポートレットがポートレット・リポジトリで使用可能になります。また、OracleAS Portalのナビゲータにもプロバイダとそのポートレットのリストが表示されます。
注意: ポートレット・ビルダーなどの組込みツールを使用してポートレットやプロバイダを作成すると、OracleAS Portalによってそのプロバイダが自動的に登録されます。さらに、作成したポートレットは、ポートレット・リポジトリに自動的に表示されます。OracleAS Portalには組込みポートレットも用意されており、それらは事前構成済のプロバイダに含まれています。たとえば、複雑な設定が不要なポートレットのOmniPortletとWebクリッピングは、すでにOracleAS Portalに登録されています。これらのポートレットは「ポートレットの追加」リストで参照できます。ただし、ポートレットとプロバイダをプログラムで作成した場合、そのプロバイダは、ポータル・ユーザーが使用できるように登録する必要があります。 |
標準準拠のポートレット用にプロバイダを登録する手順は、次のとおりです。
OracleAS Portalを開いてログインします。プロバイダを登録するには、プロバイダに対する管理権限または編集権限が必要です。これらの権限がない場合は、管理者にリクエストする必要があります。
「Portalビルダー」ページで作業していない場合は、右上隅にある「ビルダー」をクリックします。
「管理」タブをクリックします。
「ポートレット」サブタブをクリックします。
「リモート・プロバイダ」ポートレットで、「プロバイダの登録」をクリックします。
図6-28に示す「プロバイダの登録」ページで、表6-10に示す値を入力します。
表6-10 「プロバイダの登録」ページの値
設定 | 値 |
---|---|
名前 |
|
表示名 |
|
タイムアウト |
|
タイムアウト・メッセージ |
|
実装スタイル |
|
注意: なんらかの理由でプロバイダが使用できない場合は、そのプロバイダからのポートレットを含むページのレンダリングが遅くなる可能性があります。デフォルトでは、OracleAS Portalは、ページ・アセンブリが完了する前にすべてのポートレットが戻されるまで待機します。遅延を回避するため、ページ・プロパティの「メイン」タブにある「ページ・アセンブリ・タイムアウト」を使用して時間制限を設定できます。OracleAS Portalが指定されたタイムアウト期間内にプロバイダからポートレットを取得できない場合は、ポートレットなしでページをレンダリングします。プロバイダが後で利用できるようになった場合、OracleAS Portalはページをリフレッシュし、取得できなかったポートレットを追加します。ページのレンダリングは、このように、特定のプロバイダが利用できないため停止するということはありません。「ページ・アセンブリ・タイムアウト」の詳細は、『Oracle Application Server Portalユーザーズ・ガイド』を参照してください。 |
「次へ」をクリックします。
図6-29に示す「接続の定義」ページで、「WSDL URL」フィールドにプロバイダのWSDL URLを入力します。このURLは、6.4.2.3.2項「WARファイルのデプロイ」の手順8で作成したURLです。次に例を示します。
http://myserver.com:8888/my-portlet/portlets/WSRPBaseService?WSDL
「次へ」をクリックします。
図6-30に示す「登録プロパティ値を入力」ページで、プロバイダに必要とされる登録プロパティを入力します。必要な登録プロパティがない場合は、次の手順に進みます。
「終了」をクリックします。図6-31に示すような「登録確認」ページが表示されます。
ポートレットの追加
これで、ポートレット・リポジトリ内のポートレットと同様に、ポートレットをページに追加できます。ポートレットをページに追加するには、『Oracle Application Server Portalユーザーズ・ガイド』の指示に従ってください。
PDK-Javaは、一般的に必要なユーティリティを提供することでJavaポートレットを簡単に開発できるフレームワークを提供し、これまでの開発スキルや、JSP、サーブレット、静的HTMLページなどの既存アプリケーション・コンポーネントを活用できるようにします。また、OracleAS Portalとプロバイダ間の通信の複雑性に直接対処する必要なしにポートレットを作成できます。
PDK-Javaのフレームワークは次の領域に分けられます。
プロバイダ・アダプタ: これにより、開発者は、Webプロバイダとの通信用にOracleAS Portalによって定義されたHTTP構文を使用しないで済むようになります。OracleAS PortalとJava Webプロバイダ間で受け渡しされる情報がトランスレートされます。プロバイダは、アダプタがないと、ポートレットを管理するのみでなく、必要な言語でこの情報を直接OracleAS Portalに伝達する必要があります。アダプタによって、Webプロバイダはポータル言語を理解する必要がなくなります。逆に、アダプタがない場合は、理解する必要が出てきます。
プロバイダ・インタフェース: プロバイダ・アダプタとの統合にJava実装で必要となるAPI(関数)を定義します。プロバイダ・アダプタは、ポータルからのメッセージを受信してプロバイダ・インタフェースへのコールに変換し、プロバイダのレスポンスをポータルが理解できるフォーマットにトランスレートします。プロバイダ・インタフェースには、プロバイダが実装する必要のあるメソッドを定義するための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に付属のレンダリング、パーソナライズおよびセキュリティのフレームワークを活用できるようにします。このようなクラスと関連フレームワークは、OracleAS Portalリクエストの共通関数を実装し、プロバイダを構成するための宣言メカニズムを提供することで、プロバイダの開発を簡略化します。プロバイダ・ランタイムを使用すると、ポータルとの通信に必要なインフラストラクチャではなく、ポートレット自体に開発労力を集中できます。プロバイダ・ランタイムの標準動作がニーズに一致しない場合に、特定の動作の拡張または変更を容易に行うことができます。主なクラスには次のものがあります。
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フォームをレンダリングするメソッドおよびポートレット・キャッシュをサポートするメソッドが含まれています。
ポートレットを構築する際は、OTNから拡張機能をダウンロードしてOracle JDeveloperに追加できます。この拡張機能を使用するには、次の手順を実行します。
この項では、次のことを前提にしています。
ポートレットの表示モードなど、ポートレットに関する用語の知識があること。第1章「ポートレットの概要」および6.1項「Javaポートレット作成のガイドライン」を参照してください。
Oracle JDeveloperに関する知識があり、それを使用したJavaコンポーネントを構築およびデプロイする方法を習得していること。Oracle JDeveloperはOTNからダウンロードできます。次のURLでOTNの「Oracle JDeveloper」ページにアクセスします。
http://www.oracle.com/technology/products/jdev/index.html
Oracle JDeveloper用ポータル拡張機能のインストール方法は、6.4.1項「Oracle JDeveloper用ポータル拡張機能のインストール」を参照してください。
Oracle JDeveloper用ポータル拡張機能を正常にインストールした後は、Oracle JDeveloperを使用して、ポートレットを迅速かつ簡単に開発できます。次のタスクを実行する必要があります。
ポートレットとプロバイダの作成: ポートレット・ウィザードを使用して、基本的なポートレット・コードとプロバイダ・フレームワークに必要な構成ファイルを作成します。
ポートレット・ロジックの追加: 独自のビジネス・ロジックを使用してサンプル・コードを拡張します。
ポートレットとプロバイダの検証: Oracle JDeveloperの組込みJ2EEサーバーを使用して、プロバイダとそのポートレットの構成を検証できます。
アプリケーション・サーバーへのデプロイ: Oracle JDeveloperを使用して、作成したアプリケーションをアプリケーション・サーバーにデプロイします。
ポートレットの登録と表示: ポートレットをローカルのOracleAS Portalインスタンスに登録して表示します。
この項では、ポートレット・ウィザードの手順を説明します。最初に、実装するポートレットの表示モード、および実装メソッド(JSP、HTTPサーブレット、JavaクラスまたはHTML)を選択できます。次に、ウィザードによって、選択したモードごとに簡単なサンプル実装が作成されます。
注意: この項の図は、Oracle JDeveloperで「ルック・アンド・フィール」の設定を「Windows」にしています。「ルック・アンド・フィール」を「Oracle」に設定した場合は、表示される画面が少し異なりますが、内容および機能は同じです。「ルック・アンド・フィール」設定を変更するには、「ツール」→「設定」を選択し、「環境」をクリックします。 |
ポートレットおよびプロバイダを作成する手順は、次のとおりです。
Oracle JDeveloperを開き、ポートレットを作成するアプリケーションおよびプロジェクトを開きます。そのようなプロジェクトがまだない場合は、次の2つのうちいずれかの方法で作成できます。
「アプリケーション - ナビゲータ」で既存のアプリケーションを右クリックし、「新規プロジェクト」を選択します。「プロジェクトの作成」ダイアログ・ボックスに入力し、「OK」をクリックします。
「アプリケーション」ノードを右クリックし、「新規アプリケーション」を選択します。「アプリケーションの作成」ダイアログ・ボックスに入力し、「OK」をクリックします。「プロジェクトの作成」ダイアログ・ボックスが表示されたら、「OK」をクリックします。
プロジェクトを右クリックし、「新規」を選択します。
「カテゴリ」リストで「Web Tier」カテゴリを開き、「Portlets」をクリックします。
注意: 「Portlets」が表示されていない場合は、6.4.1項「Oracle JDeveloper用ポータル拡張機能のインストール」を参照して、拡張機能が正しくインストールされていることを確認してください。 |
「項目」リストで「Oracle PDK Javaポートレット」をクリックします(図6-32)。
注意: 「Javaポートレット」をクリックすると、JPS準拠のポートレットを作成するためのポートレット・ウィザードが開きます。「Oracle PDK Javaポートレット」をクリックすると、PDK-Javaポートレットを作成するためのポートレット・ウィザードが開きます。 |
「OK」をクリックします。ポートレット・ウィザードが表示されます。
ウィザードの「ようこそ」ページが表示されたら、「次へ」をクリックします(図6-33)。
図6-34に示す「ポートレットの説明」ページで、名前、説明およびタイムアウト設定を入力します。この例では、このページのデフォルト値をそのまま使用します。
「次へ」をクリックします。
ウィザードの次の各ページでは、このポートレットのポートレット・モードを定義できます。図6-35に示す「表示モード」ページでは、「ページを表示」に対する実装スタイル、および「詳細ページを表示」を実装するかどうかを選択できます。このページで、次の設定をします。
デフォルトでは、「ページを表示」が選択されています。リストから「実装スタイル」を選択します。この例では、「JSP」を選択します。次に、ポートレット・ウィザードで生成するJSPの「ファイル名」を入力します。この例では、デフォルトのファイル名をそのまま使用します。
ポートレットに詳細ページが必要な場合は、「詳細ページを表示」を選択し、必要に応じて「実装スタイル」および「ファイル名」を入力します。この例では、「詳細ページを表示」は不要です。
「次へ」をクリックします。
図6-36に示す「カスタマイズ・モード」ページでは、「ページの編集」がすでに選択されています。この例では、「実装スタイル」で「JSP」を選択して、デフォルトの「ファイル名」をそのまま使用します。
この例では、「デフォルトの編集」ページを選択し、「実装スタイル」で「JSP」を選択して、デフォルトの「ファイル名」をそのまま使用します。
「次へ」をクリックします。
図6-37に示す「追加モード」ページでは、デフォルトで選択されている項目はありません。この例では、「ヘルプ・ページ」を選択し、「実装スタイル」で「JSP」を選択して、デフォルトの「ファイル名」をそのまま使用します。
「ページ情報」を選択し、「実装スタイル」で「JSP」を選択して、デフォルトの 「ファイル名」をそのまま使用します。
「次へ」をクリックします。
図6-38に示す「パブリック・ポートレット・パラメータ」ページで、「追加」をクリックします。
「次へ」をクリックします。
図6-39に示す「パブリック・ポートレット・イベント」ページで、パラメータをイベントにマップできます。この例では、このページを空のままにして「次へ」をクリックします。
図6-40に示す「プロバイダの説明」ページで、「プロバイダ名」にMyJPWProvider
と入力します。すべてのチェック・ボックスが選択されていることを確認します。
「終了」をクリックすると、ポートレット用のファイルが生成されます。この例では、「アプリケーション - ナビゲータ」のプロジェクト・ノードに対して次のファイルが生成されます(図6-41を参照)。
選択した各ポートレット・モード用のファイル
provider.xml
web.xml
index.jsp
_default.properties
myjpwprovider.properties
これらすべてのファイルは、ポートレットを正常にデプロイして実行するために必要です。ただし、index.jsp
はOracle JDeveloperでテスト用に使用されます。
デフォルト実装を作成した後は、ビジネス・ロジックを追加してサンプル・コードを拡張し、必要な機能を実装できます。この例では、この手順を実行する必要はありません。次のテストと登録の手順に進んでください。
ポートレットを作成した後は、構成をチェックして、ポートレットとそのプロバイダが正しく動作することを確認する必要があります。
注意: この手順は、テスト目的でのみ実行します。この手順を実行した後は、6.6.2.5項「ポートレットの登録と表示」で説明しているように、プロバイダを登録する必要があります。また、開発と本稼働では、6.6.2.4項「アプリケーション・サーバーへのデプロイ」で説明しているように、必ずポートレットをアプリケーション・サーバーにデプロイする必要があります。 |
ポートレットおよびプロバイダを検証する手順は、次のとおりです。
ウィザードを終了してポートレットを生成した後は、そのポートレットを、アプリケーション・サーバーであるOracle Containers for J2EEにデプロイできます。次の項で、ポートレットをOracle Containers for J2EEにデプロイする方法を説明します。
アプリケーション・サーバーへの接続を確立する手順は、次のとおりです。
注意: 次の各手順では、Oracle Containers for J2EEのスタンドアロン・インスタンスにデプロイする手順を説明します。完全なOracle Application Serverインスタンスへのデプロイ方法は、Oracle JDeveloperのオンライン・ヘルプ・システムを参照してください。 |
ナビゲータで、「接続」を右クリックし、「アプリケーション・サーバー接続の作成」を選択します。表示されるウィザードを次の手順に従って処理します。
「ようこそ」ページが表示されている場合は、「次へ」をクリックします。今後、「ようこそ」ページを表示しない場合は、「次回にこのページを表示しない」を選択してください。
わかりやすい接続名(たとえば、PDKJavaOC4J
)を入力し、接続タイプとして「スタンドアロンOC4J」を選択します。
「次へ」をクリックします。
管理者のユーザー名とパスワードを入力します。このパスワードは、Oracle Containers for J2EEのインストール時に設定されています。
「次へ」をクリックします。
表6-12に示す情報を入力します。
「次へ」をクリックします。
「接続のテスト」をクリックして、接続詳細を確認します。接続が正常な場合は、成功メッセージが表示されます。テストに失敗した場合は、接続情報の修正が必要になる場合があります。
「終了」をクリックします。
WARファイルを作成してデプロイする手順は、次のとおりです。
ポートレット・プロジェクトを右クリックし、「新規」を選択します。
「カテゴリ」リストで「一般」カテゴリを開き、「デプロイメント・プロファイル」をクリックします。
「項目」リストで「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
は、Application Server Controlコンソールのメイン・ページの「ポート」タブにあるOracleAS Web Cache HTTP Listenerポートです。
context-root
は、Webアプリケーションのコンテキスト・ルートで、「一般」の「WARデプロイメント・プロファイルのプロパティ」にあります。
前述の手順で作成したURLをブラウザに入力します。図6-44に示すようなページが表示されます。
注意: Oracle Application Server 10gリリース3(10.1.3)にはOracleAS Portalが付属していません。ただし、リリース3(10.1.3)で構築およびデプロイしたポートレットを、OracleAS Portal 10gリリース2(10.1.4)またはOracleAS Portal 10gリリース2(10.1.2)のリモート・インスタンスに登録できます(該当する中間層パッチを適用)。OracleAS Portal 10gリリース2(10.1.2)に必要なパッチの更新情報は、次のOracle MetaLinkを参照してください。
|
プロバイダとそのポートレットを作成してデプロイした後は、そのプロバイダをOracleAS Portalに登録する必要があります。プロバイダを登録すると、そのプロバイダを検索して通信するために必要な情報がOracleAS Portalに提供されます。プロバイダを登録した後は、プロバイダとそのポートレットがポートレット・リポジトリで使用可能になります。また、OracleAS Portalのナビゲータにもプロバイダとそのポートレットのリストが表示されます。
注意: ポートレット・ビルダーなどの組込みツールを使用してポートレットやプロバイダを作成すると、OracleAS Portalによってそのプロバイダが自動的に登録されます。さらに、作成したポートレットは、ポートレット・リポジトリに自動的に表示されます。OracleAS Portalには組込みポートレットも用意されており、それらは事前構成済のプロバイダに含まれています。たとえば、複雑な設定が不要なポートレットのOmniPortletとWebクリッピングは、すでにOracleAS Portalに登録されています。これらのポートレットは「ポートレットの追加」リストで参照できます。ただし、ポートレットとプロバイダをプログラムで作成した場合、そのプロバイダは、ポータル・ユーザーが使用できるように登録する必要があります。 |
次の手順では、プロバイダを登録し、ポートレットをページに追加する方法を説明します。
OracleAS Portalを開いてログインします。プロバイダを登録するには、プロバイダに対する管理権限または編集権限が必要です。これらの権限がない場合は、管理者にリクエストする必要があります。
「ビルダー」ページで作業していない場合は、右上隅にある「ビルダー」をクリックします。
「管理」タブをクリックします。
「ポートレット」サブタブをクリックします。
「リモート・プロバイダ」ポートレットで、「プロバイダの登録」をクリックします。
「次へ」をクリックします。
図6-46に示す「接続の定義」ページで、「URL」フィールドにプロバイダのURLを、「サービスID」フィールドにサービスIDを入力します。URLは、6.6.2.4.2項「WARファイルのデプロイ」の終わりで書き留めたURLです。
注意: PDK-Javaでは、1つのアダプタ・サーブレットの下に複数のプロバイダをデプロイできます。これらのプロバイダは、「サービスID」フィールドに表示されます。新しいプロバイダをデプロイする場合は、プロバイダにサービス識別子を割り当て、プロバイダWARファイルの作成時にそのサービス識別子を使用する必要があります。そのサービス識別子を使用してファイルservice_id .properties を検索します。このファイルは、テスト・ページの表示の有無など、プロバイダの特性を定義したものです。
サービス識別子の詳細は、D.1.2項「サービス識別子」を参照してください。 |
サンプルのプロバイダ・テスト・ページにアクセスするには、URLおよびサービスIDを指定する必要があります。サンプル・プロバイダのURLの例を次に示します。
http://myserver.com:8888/myj2eeportlet1/providers/sample
http://myserver.com:8888/myj2eeportlet1/providers
がURLの値、sample
がサービスIDです。
「終了」をクリックします。図6-47に示すような「登録確認」ページが表示されます。
これで、ポートレット・リポジトリ内のポートレットと同様に、ポートレットをページに追加できます。
ポートレットの追加
これで、ポートレット・リポジトリ内のポートレットと同様に、ポートレットをページに追加できます。ポートレットをページに追加するには、『Oracle Application Server Portalユーザーズ・ガイド』の指示に従ってください。
脚注
脚注1: Javaポートレット仕様1.0は、Java Specification Request 168およびJSR168専門家グループによって作成されました。