この章では、Javaポートレット仕様(JSR 168)、またはOracle JDeveloperのJSR 168 Javaポートレット・ウィザードおよびJavaポートレット・ウィザードを使用するOracle Portal Developer Kit-Java(PDK-Java)に基づいてJavaポートレットを作成する方法について説明します。この章の内容は、次のとおりです。
この章で参照される多数の例のソース・コードは、PDK-Javaの一部として利用できます。PDK-Javaは、Oracle Technology Network(OTN)の「Oracle Portal Developer Kit(PDK)」ページからダウンロードできます。URLは次のとおりです。
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にコーディングする場合は、PDK-Javaが提供するオプションのモードにマップする、または提供する他の任意の機能に対応する、カスタム・ポートレット・モードをportlet.xml
で宣言できます。たとえば、JPSポートレット用のJSR 168 Javaポートレット・ウィザードには印刷をコールするカスタム・モードが含まれ、これを使用して印刷用バージョンのポートレットを提供できます。カスタム・モードの定義は、特に、ポートレットを他のベンダーのポータル実装と相互運用する場合に役立ちます。
ポートレットには異なる表示モードがあり、表示方法と動作がそれぞれ異なります。次の各項では、これらの表示モードについて説明します。
ポートレットは共有画面モード(JPSでは表示モードと呼ばれます)を使用して、他のポートレットと同じページに表示されます。ポートレットといえば、ほとんどの人がこのモードを思い浮かべます。JPSポートレットには表示モードは必須で、その他はオプションです。
ポートレットを開発するときは、ポートレットに含まれるオブジェクトやポートレットがページを共有する他のポートレットなど、ページ上のポートレットの外観に影響を与える可能性のあるすべての要素を考慮する必要があります。Oracle Portalでは、共有画面モードのときはポートレットは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の表のセルに正しくレンダリングできる要素のみを使用する。一部の構造体は、表のセルに正しく表示されないという理由で使用できません。たとえば、フレームは表に挿入されると表示されません。
ポートレットのコンテンツは簡潔にする。全画面のコンテンツを取得して、小さなポートレットから公開しないでください。ポートレットのコンテンツが小さくなりすぎて、小さなモニターではポートレットが使用不能になるのみです。全画面のコンテンツは、PDK-Javaの全画面モードで最適に表示されます。
ポートレット内に固定幅のHTMLの表を作成しない。ユーザーのページに表示されるポートレットの列幅を事前に知る方法はありません。与えられた空間よりも広い空間がポートレットに必要な場合、特定のブラウザでは、他のポートレットとオーバーラップする可能性があります。
折り曲がらない長いテキスト行を避ける。固定幅の表を使用した場合と同様の結果になります。特定のブラウザでは、他のポートレットとオーバーラップする可能性があります。
ページ・サイズ変更時の動作をチェックする。ブラウザ・ウィンドウをサイズ変更した際のポートレットの動作をテストし、ポートレットがブラウザ・ウィンドウの様々なサイズで動作することを確認してください。
ブラウザのデフォルトのフォントが変更された場合の動作をチェックする。ブラウザのフォント・サイズはいつでも変更できることが必要です。ポートレットは、その変更に対応する必要があります。
また、使用するHTMLは、サイトのパフォーマンスに直接影響を与えます。ユーザーは、リクエストしたページの表示にかかる時間に基づいてパフォーマンスを判断します。ブラウザには、HTMLを解釈して表示するための時間が必要です。このため、次の点を考慮してください。
深くネストした表を避ける。深くネストした表は、古いバージョンのブラウザのパフォーマンスを大きく低下させます。Oracle Portalは、複数のレベルの表を描画してポートレットをレンダリングします。ポートレットが表の中で表を使用している場合、そのページのレンダリングには、かなり長い待機時間が必要な場合があります。
長く複雑なHTMLを避ける。ポートレットはページを他のポートレットと共有します。したがって、ポートレットの生成時間はページのパフォーマンス全体に大きく影響します。ポートレットが複雑なHTMLをレンダリングしたり、サード・パーティのアプリケーションなど外部リソースを待機する場合は、ページのレンダリングが大幅に遅くなることがあります。
ページ上のそれぞれのポートレットのフォントと色は、ユーザーが選択したスタイル設定に一致する必要があります。このために、これらのスタイル選択は、各Oracle PortalページのCascading Style Sheet(CSS)を使用して自動的に埋め込まれます。その後、ポートレットは直接またはAPIを使用して、フォントと色の設定にアクセスします。
ブラウザによってCSS仕様の実装レベルが異なりますが、Oracle Portalは、この仕様の非常に基本的なサブセットを使用して、整合性のあるフォントと色を実現します。CSSの実装レベルによってブラウザ間でのページの一貫性が影響されることはありません。CSS使用に関するガイドラインは、次のとおりです。
ハードコーディングではなくCSSを使用する。フォントと色のハードコーディングは非常に危険です。フォントと色をハードコーディングすると、ユーザーがページ・スタイルの設定を変更した場合に、ポートレットが不釣合いに見えることがあります。開発者はユーザーが設定するフォントや色を予測できないため、ユーザーが選択した背景色と同じフォント色でハードコーディングする可能性があり、この場合、ユーザーはポートレットを識別できなくなります。
テキストの書式設定にはCSS APIを使用する。スタイルシートの定義はOracle Portalページの最上部にありますが、直接コールしないでください。かわりに、テキストの適切な書式設定のために用意されているAPIを使用してください。これによって、後でスタイルシートが変更された場合でもポートレットは正しく動作します。
CSSを使用した絶対位置の設定は避ける。ユーザーは各自のポータル・ページをパーソナライズできるため、ポートレットが特定の位置に表示される保証はありません。
アクセシビリティの標準に従う。必ず既存のアクセシビリティの標準に従って、スタイル・シートを記述してください(詳細はhttp://www.w3.org/TR/WCAG10-CSS-TECHS/
を参照)。
ポートレットは編集モードを備えており、これによってユーザーはポートレットの動作をパーソナライズできます。編集モードには設定のリストがあり、ユーザーはその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、およびポートレットの外観や内容に影響するあらゆる要素が含まれます。
通常、ポータル・ユーザーは、ポートレット・バナーの「パーソナライズ」をクリックしてポートレットの編集モードにアクセスします。ユーザーが「パーソナライズ」をクリックすると、同じブラウザ・ウィンドウに新しいページが表示されます。このポートレットは、通常、ポートレットの設定を選択するダイアログ・ボックスを表すWebページを作成します。設定を適用すると、自動的に元のページに戻ります。
次のガイドラインに従って、編集モードでユーザーに公開する内容を管理してください。
ユーザーがポートレットのタイトルをパーソナライズできるようにする。同じポートレットが同じポータル・ページに複数回追加されることがあります。ユーザーがタイトルをパーソナライズできると混乱を避けることができます。
キャッシュを使用する場合はコンテンツを無効化する。パーソナライズによってポートレットの表示やコンテンツに変更が生じた場合は、ポートレットのコンテンツが再生成され、キャッシュから戻されないことを確認する必要があります。確認しないと、誤ったコンテンツが表示されることがあります。
編集モードを管理ツールとして使用しない。編集モードは、ユーザーがポートレットの動作を変更するために使用します。プロバイダ設定の変更などの管理作業が必要な場合は、その作業専用の安全なポートレットを作成してください。
モバイル・オプションのみが表示される(該当する場合)。ポートレットは、Oracle Portalインスタンスがモバイル機器に対して有効かどうかを問合せできます。インスタンスがモバイルに対応していない場合は、モバイル固有オプションを表示する必要はありません。さらに、ページをモバイル・ユーザーとデスクトップ・ユーザーの両方で使用できるようにする場合は、モバイル・オプションとデスクトップ・オプションの間での線引きを検討する必要があります。その他のヒントは、6.1.4.6項「パーソナライズ・ページの調整」を参照してください。
整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序で編集モードに実装してください。
OK: ユーザーのパーソナライズを保存し、ポートレットを共有画面モードに戻します。
適用: ユーザーのパーソナライズを保存し、現在のページをリロードします。
取消: 変更内容を保存せずに、ポートレットを共有画面モードに戻します。
パーソナライズ設定を変更するフォームを表示する場合は、デフォルトの値を表示し、ユーザーが設定を毎回再入力しないで済むようにしてください。動作の整合性を維持するために、パーソナライズ値のレンダリングは次の順序で行います。
ユーザー設定項目: このユーザーのパーソナライズが使用可能な場合は、問い合せて表示します。
インスタンス・デフォルト: ユーザーのパーソナライズがない場合は、ポートレット・インスタンスのシステム・デフォルトを問い合せて表示します。これらのデフォルトは編集モードで設定され、このポートレット・インスタンスに対してのみ適用されます。
ポートレット・デフォルト: システム・デフォルトのパーソナライズがない場合は、一般的なポートレットのデフォルトを表示しますが、空白の場合があります。一般的なポートレットのデフォルトはポートレットにハードコーディングされている場合がありますが、前述の2つの条件のいずれかが該当する場合は上書きしてください。
このロジックによって、ポータル内の他のポートレットとの整合性がとれた予測可能な方法でパーソナライズを表すことができます。PDK-Javaでは、このようなロジックを簡単に実装できます。
ポートレットはデフォルト編集モードを備えており、ページ設計者はこのモードを使用して、特定のポートレット・インスタンスのデフォルト動作をカスタマイズできます。デフォルト編集モードには設定のリストがあり、ページ設計者はその設定を変更できます。設定には、タイトル、コンテンツの種類、書式、情報量、フォーム要素のデフォルト、およびポートレットの外観や内容に影響するあらゆる要素が含まれます。
これらのデフォルトのパーソナライズ設定によって、個々のポートレットの外観とコンテンツをすべてのユーザーに対して変更できます。デフォルト編集モードは、ポートレットの表示内容と表示形式に対してシステム・レベルのデフォルトを定義するためのモードであるため、このモードを管理ツールとして使用したり、他のポートレットの管理に使用することは避けてください。
ページ設計者は、ページ編集の際、ポートレット・バナーの真上の「デフォルトの編集」アイコンをクリックしてデフォルト編集モードにアクセスします。
ユーザーが「デフォルトの編集」アイコンをクリックすると、同じブラウザ・ウィンドウに新しいページが表示されます。このポートレットは、通常、ポートレット・インスタンスの設定をカスタマイズするダイアログ・ボックスを表すWebページを作成します。設定を適用すると、ユーザーは自動的に元のページに戻されます。
次のガイドラインに従って、デフォルト編集モードでページ設計者に公開する内容を管理してください。
キャッシュを使用する場合はキャッシュを無効化する。カスタマイズによってポートレットの表示やコンテンツに変更が生じた場合は、ポートレットのコンテンツが再生成され、キャッシュから戻されないことを確認する必要があります。確認しないと、誤ったコンテンツが表示されることがあります。
デフォルト編集モードを管理ツールとして使用しない。デフォルト編集モードは、ユーザーがポートレットの動作を変更するために使用します。プロバイダ設定の変更などの管理作業が必要な場合は、その作業専用の安全なポートレットを作成してください。
モバイル・オプションのみが表示される(該当する場合)。ポートレットは、Oracle Portalインスタンスがモバイル機器に対して有効かどうかを問合せできます。インスタンスがモバイルに対応していない場合は、モバイル固有オプションを表示する必要はありません。さらに、ページをモバイル・ユーザーとデスクトップ・ユーザーの両方で使用できるようにする場合は、モバイル・オプションとデスクトップ・オプションの間での線引きを検討する必要があります。その他のヒントは、6.1.4.6項「パーソナライズ・ページの調整」を参照してください。
整合性を維持し、ユーザーにとっても便利なように、次のボタンを次の順序でデフォルト編集モードに実装してください。
OK: ユーザーのカスタマイズを保存し、ポートレットを共有画面モードに戻します。
適用: ユーザーのカスタマイズを保存し、現在のページをリロードします。
取消: 変更内容を保存せずに、ポートレットを共有画面モードに戻します。
カスタマイズ設定を変更するフォームを表示する場合は、デフォルトの値を表示し、ページ設計者が設定を毎回再入力しないで済むようにしてください。動作の整合性を維持するために、カスタマイズ値のレンダリングは次の順序で行います。
インスタンス設定: ポートレット・インスタンスのシステム・デフォルトを問い合せて表示します。
ポートレット・デフォルト: システム・デフォルトのカスタマイズがない場合は、一般的なポートレットのデフォルトを表示しますが、空白の場合があります。一般的なポートレットのデフォルトはポートレットにハードコーディングされている場合がありますが、システム・デフォルトで上書きしてください。
このロジックによって、ポータル内の他のポートレットとの整合性がとれた予測可能な方法でカスタマイズを表すことができます。
ポートレットはプレビュー・モードを備えており、ポートレットをページに追加する前に、それがどのように表示されるかをユーザーに示します。プレビュー・モードは、ポートレットの機能を視覚的に表現したものです。
通常、ポータル・ユーザーは、「ポートレットの追加」ページで「プレビュー」アイコンをクリックして、ポートレットのプレビュー・モードにアクセスします。選択したポートレットのプレビューがウィンドウに表示されます。ユーザーは、そのポートレットをページに追加できます。ポータル管理者は、ポートレット・リポジトリからプレビュー・モードにアクセスできます。
プレビュー・モードに関するガイドライン
次のガイドラインに従って、プレビュー・モードでユーザーに公開する内容を管理してください。
ポートレットの機能に関する情報を提供する。プレビュー・モードでは、ユーザーがポートレットの実際のコンテンツや機能に関する情報を得られるように、十分なコンテンツを生成する必要があります。
ポートレットのプレビューは大きくしない。このモードで生成されるデータの量は、数行以内のHTMLまたは1つの画面ショットにとどめてください。プレビュー・モードは小さい領域に表示されるため、ウィンドウのサイズより大きくなると見栄えが悪くなり、ユーザーによるスクロールが必要になります。
ライブ・ハイパーリンクを使用しない。プレビュー・モードでレンダリングしたリンクは、予想した動作をしないことがあります。ハイパーリンクは、下線付きのフォントでシミュレートできます。
アクティブ・フォーム・ボタンを使用しない。プレビュー・モードでレンダリングしたフォームは、予想した動作をしないことがあります。フォーム要素をレンダリングする場合、そのフォーム要素はどこにもリンクしないでください。
ポートレットは全画面モードを使用して、さらに詳細な表示を行える、より大きなバージョンのポートレットを実現します。全画面モードによって、ポートレットは画面全体を使用できます。
たとえば、ポートレットで経費情報を表示する場合、共有画面モードでは経費の多い上位10人のサマリーを表示し、全画面モードでは各人の経費合計を表示できます。また、ポートレットは、Webアプリケーションへのショートカットも提供できます。ポートレットの共有画面モードに経費領収書発行へのインタフェースがある場合は、全画面モードから経費アプリケーション全体にリンクすることも可能です。
ポータル・ユーザーは、ポートレットのタイトルをクリックして、ポートレットの全画面モードにアクセスします。
厳密には、JPSポートレットに全画面モードはありません。ただし、表示モード(共有画面モード)とウィンドウの最大化を使用して、JPSポートレット用に全画面モードと同等の機能を実装できます。
ポートレットは、ヘルプ・モードを使用して、そのポートレットの機能と使用方法に関する情報を表示します。ユーザーはこのモードで、ポートレットおよびそのコンテンツと機能に関する有用な情報を検索できます。
ポータル・ユーザーは、ポートレット・ヘッダーの「ヘルプ」をクリックしてポートレットのヘルプ・モードにアクセスします。
ヘルプ・モードに関するガイドライン
次のガイドラインに従って、ヘルプ・モードでユーザーに公開する内容を管理してください。
ポートレットの使用方法を説明する。ポートレットのインタフェースのみでは、ポートレットのすべての機能がユーザーに理解されない可能性があります。ポートレットの機能とその活用方法を説明してください。
ユーザーは、実行中のポートレットのバージョン、発行と著作権の情報、および作者への連絡方法を参照できる必要があります。登録が必要なポートレットは、このモードからWebベースのアプリケーションまたは連絡先情報にリンクできます。
ポータル・ユーザーは、ポートレット・ヘッダーの「情報」をクリックしてポートレットの情報モードにアクセスします。同じブラウザ・ウィンドウに新しいページが表示されます。この新しいページにコンテンツを生成するか、またはユーザーを既存のページやアプリケーションに移動させることができます。
情報モードに関するガイドライン
次のガイドラインに従って、情報モードでユーザーに公開する内容を管理してください。
関連の著作権、バージョンおよび作成者の情報を表示する。ユーザーは、使用しているポートレットの内容と詳細情報の入手先を参照できる必要があります。この情報ページは、ポートレットのサポート時に重要になることがあります。
ポートレットはリンク・モードを使用して、モバイル・ページに表示されるそのポートレット自体へのリンクをレンダリングします。ユーザーがリンクをクリックすると、ポートレットは表示モードでコールされます。これにより、ポートレットが表示モードまたは共有画面モードでレンダリングされます。
Oracle Mobile XMLコンテンツ・タイプのサポートを宣言するJPSポートレットの場合、Oracle Portalは次のいずれかの方法でリンクをレンダリングします。
ポートレットがサポートを宣言している場合は、ウィンドウを最小化した状態でポートレットの表示モードをコールします。
それ以外の場合は、ポートレットのタイトルを使用してリンクをレンダリングします。
リンク・モードに関するガイドライン
次のガイドラインに従って、リンク・モードでユーザーに公開する内容を管理してください。
コンテンツを制限する。 リンク・モードの目的は、余分な素材なしでリンクをレンダリングすることです。リンク・モードは、ただ、短いタイトルや、場合によっては関連サマリー情報を(通常わずか1、2語)レンダリングするのみです。
いろいろな点で、1つのポートレットの異なるセクションまたはページ間のナビゲーションは、標準のWebページ間のナビゲーションと似ています。ユーザーはフォームを実行してリンクをクリックできます。通常の標準的なWebページの場合、これらの操作により、新しいコンテンツをレンダリングするサーバーにメッセージが直接送信され、次に、このメッセージがクライアントに戻されます。ポートレットの場合は、ページの一部分のみを構成するため、そのポートレット内でのフォーム実行またはリンクのレンダリングでは、情報は直接ポートレットに渡されません。情報はポータルを介してポートレットに渡されます。ポートレット内でのリンクまたはフォームの実行がポータルを参照しない場合は、そのリンクをたどるとユーザーをポータルから離れさせることになり、通常好ましくない動作です。
ポートレットの開発者は、フォームまたはリンクのパラメータがユーザー、ポータルおよびポートレット間を受け渡しされる詳細な機構を知る必要はありません。しかし、通常の標準的なWebページの場合と同じ方法でポートレット内にリンクを作成できないことは理解しておく必要があります。
ポートレットは、次の4つのクラスのリンクをレンダリングできます。
ポートレット内リンク: ポートレットはOracle Portalのアドレスを認識できるようにしておきます。実際になんらかの方法で参照するためです。
ポータル・リンク: ポートレット内リンクと同じ理由で、Oracle Portalのアドレスを認識できるようにしておきます。
外部リンク: Oracle Portalを参照せず、標準のWebページの場合と同様にポートレット内で動作します。
内部/リソース・リンク: 外部リンクと同様にOracle Portalを参照しません。
図6-1に、これらのリンク・タイプの概要を示します。矢印は、リンクがどのように論理的な参照先であるリソースを参照するかを示します。
ポートレット内リンクは、所定のポートレット内の様々なセクションまたはページに移動します。厳密に言えば、ポートレットが含まれているページが参照されます。が、このリンクには、ユーザーによってリクエストされたときに、ポートレットにページ内の様々なセクションまたはページをレンダリングさせるパラメータが含まれています。
この直接の結果として、ポートレットは、独自のサーバー・コンテキストに基づく相対リンクまたは絶対リンクを使用して、自身の様々なセクションまたはページへのリンクのレンダリングをリクエストすることはできません。ポートレット内リンクは、リンクまたはフォーム実行ターゲットとしてポートレット内のナビゲーションには便利です。
外部リンクは、ポートレット(ページ経由)もポータルの一部も参照しません。選択した場合、ユーザーがポータル(たとえば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は、リクエストとともに戻され、正しいセッション・コンテキストを維持します。
ポートレット内でJavaScriptを使用するのは便利な場合もありますが、ポートレット内では次のガイドラインに留意してください。
ポートレットが内部でレンダリングされるページを、JavaScriptを使用してリダイレクトしないでください。ユーザーを別の場所に送る必要がある場合は、ポートレット・アクション処理コードで行うか、ブラウザで新しいウィンドウを開く必要があります。
JavaScript内の識別子は必ず修飾してください。識別子を修飾することで、一意性が保証され、ページ上の他のJavaScriptとクラッシュしなくなります。
Oracle Portalのページは、HTMLデバイスおよび非HTMLデバイス(モバイル機器)の両方に対してレンダリングできます。モバイル機器用にレンダリングする場合、Oracle Portalでは、ポートレットはOracleAS Wireless XMLと呼ばれる汎用マークアップ言語でコンテンツを生成する必要があります。
大部分のポートレットは、デスクトップ・ポートレットとも呼ばれ、HTMLのレスポンスのみを生成するので、標準のHTMLブラウザでしかレンダリングできません。この他に、ポートレットにはモバイル・ポートレットがあり、OracleAS Wireless XMLレスポンスのみを生成します。モバイル・ポートレットは、標準のHTMLブラウザを含む任意のデバイスでレンダリングできます。しかし、多くのポートレットは、環境に応じてHTMLまたはOracleAS Wireless XMLのどちらでもレンダリングできるハイブリッド手法をとっています。このようなハイブリッド・ポートレットは任意のデバイスでレンダリングできますが、標準のHTMLブラウザで最もよくレンダリングできます。OracleAS Wireless XMLは十分にHTMLでのレスポンス用に使用できますが、HTMLほど表現が豊かではありません。デスクトップおよびモバイルの両環境で実行されるポートレットは、通常デスクトップを使用してアクセスされるので、開発者は一般に、デスクトップ環境で最適にレンダリングできるハイブリッド・ポートレットの方を開発対象として選択します。
モバイル・ポートレットの構築の際は、次のガイドラインに準拠する必要があります。
モバイル対応ポートレットの構築方法については、7.2.10項「ポートレットのモバイル機器用拡張」を参照してください。
ポートレットを適切に管理するため、ポートレットによって生成されるすべてのコンテンツ・タイプをOracle Portalに認識させる必要があります。この情報は、Oracle Portalによって次のように使用されます。
「ポートレットの追加」ダイアログでの「ポートレット・リポジトリ」ビューを制限するのに使用されます。ターゲットのページにレンダリング可能なポートレットのみが「ポートレットの追加」ダイアログに表示されます。たとえば、ユーザーがモバイル設計ページから「ポートレットの追加」ダイアログを起動すると、OracleAS Wireless XMLレスポンスを生成できるポートレットのみが表示されます。
多くのデバイスでレンダリング可能なポートレットを表示する「ポートレットの追加」ダイアログの「ポートレット・リポジトリ」ビューでのアイコンを表示するのに使用されます。たとえば、ユーザーが標準の設計ページから「ポートレットの追加」ダイアログを起動すると、モバイル対応のポートレットが、モバイル機器上でもレンダリングされることを示す図6-2のアイコンとともにリストされます。
モバイル機器での標準ページのレンダリングの際、OracleAS Wireless XMLを生成する機能ありとして登録されたポートレットのみを表示するのに使用されます。
既存の標準ページに基づく新しいモバイル・ページの作成の際、OracleAS Wireless XMLを生成する機能ありとして登録されたポートレットのみを組み入れるのに使用されます。
通常、モバイル機器は画面サイズが小さいので、1つの行にスクロールなしで表示できる文字数が制限されます。ポートレットのタイトルは、Oracle Portalがモバイル・ページをメニュー構成としてレンダリングする際にメニュー・アイテム・ラベルとして表示されますが、モバイル表示としては長すぎることがよくあります。そのため、ポートレットには短いタイトルを定義できます。表示スペースが制限されている場合は、短いタイトルが標準タイトルに取ってかわります。
標準のポートレット・タイトルは、標準ページのポートレットのヘッダーにレンダリングされる際の、デフォルトのポートレット・インスタンス名になります。ポートレットの短いタイトルは、モバイル・ページのメニュー・アイテムとしてレンダリングされる際の、デフォルトのポートレット・インスタンス名になります。ポートレットで標準タイトルをパーソナライズできるようにすることをお薦めしましたが、これと同様に、ポートレットで短いタイトルをパーソナライズできるようにすることもお薦めします。この機能により、ページ設計者またはエンド・ユーザーは、読みやすい名前をインスタンスに付けられます。
Oracle Portalはデスクトップに標準ページをレンダリングする際、ページ設計者によって定義された表形式でポートレットをページ上にアセンブルします。Oracle 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ポータルに統合できます。これによって、Oracle Portalリポジトリからポートレットを選択するだけで簡単にポータル・ページを構築できるようになります。図6-3に、WSRP仕様のアーキテクチャを示します。
Oracle Portalの既存のアーキテクチャはWSRP委員会で指定されたアーキテクチャと似ているため、Oracle Portalでは、Oracleのポータルと既存のAPI(PDK-Java)間の通信、および新しいJavaポートレットAPIとの間の通信もサポートできます。図6-4に、WSRPポータルのアーキテクチャを示します。JPS準拠のポートレット・コンテナはWSRPプロトコルを使用して通信を行い、PDK-Javaポートレット・コンテナはOracleの専用SOAPプロトコルを使用して通信を行うことに注意してください。
Oracle JDeveloperのJSR 168 Javaポートレット・ウィザードを使用すると、短時間で簡単にポートレットをWSRPで公開できます。
この項では、次のことを前提にしています。
ポートレットの表示モードなど、ポートレットに関する用語の知識があること。第1章「ポートレットの概要」および6.1項「Javaポートレット作成のガイドライン」を参照してください。
Oracle JDeveloperに関する知識があり、それを使用したJavaコンポーネントを構築およびデプロイする方法を習得していること。Oracle JDeveloperはOTNからダウンロードできます。次のURLでOTNの「Oracle JDeveloper」ページにアクセスします。
http://www.oracle.com/technology/products/jdev/index.html
この項には次のサブセクションがあります。
この項ではJSR 168 Javaポートレット・ウィザードの手順を説明します。最初に、実装するポートレットの表示モード、および実装メソッド(JSP、HTTPサーブレット、JavaクラスまたはHTML)を選択できます。次に、ウィザードによって、選択したモードごとに簡単なサンプル実装が作成されます。
JSR 168 Javaポートレット・ウィザードを使用してポートレットを作成する手順は、次のとおりです。
Oracle JDeveloperを起動します。
「アプリケーション・ナビゲータ」で、ポートレットを作成するアプリケーションを開きます。
ポートレットを作成するプロジェクトを右クリックし、「新規」を選択します。
注意: プロジェクトがまだない場合は、次の2つのうちいずれかの方法で作成できます。
|
「新規ギャラリ」で「Web層」を展開し、「ポートレット」、「規格に基づいたJavaポートレット(JSR 168)」(図6-5)の順に選択します。
注意: 「規格に基づいたJavaポートレット」を選択すると、JPS準拠のポートレット作成のためのポートレット・ウィザードが開きます。「Oracle PDK-Javaポートレット」を選択すると、PDK-Javaポートレット作成のためのポートレット・ウィザードが開きます。 |
「OK」をクリックすると、「一般ポートレット情報」ページ(図6-6)が表示されます。
「名前」フィールドに、ポートレットの名前を入力します。デフォルトの名前をそのまま使用しても、新しい名前を入力してもかまいません。
「クラス」フィールドに、ウィザードがポートレット用に作成するクラスの名前を入力します。デフォルトの名前をそのまま使用しても、新しい名前を入力してもかまいません。新しい名前を入力する場合は、有効なJava名を使用する必要があります。
「パッケージ」リストから、クラスが存在するパッケージを選択します。プロジェクト内のパッケージを検索するには、「参照」ボタンをクリックします。特定のパッケージを選択しないと、ウィザードではプロジェクトのデフォルト・パッケージが使用されます。
「言語」リストから、ポートレットがサポートするデフォルト言語を選択します。ウィザードでは、デフォルトで英語が使用されます。
ポートレットで「編集」モードをサポートするには、「ユーザーがポートレット・コンテンツを編集できるようにします」を選択します。ウィザードでは、このオプションはデフォルトで選択されています。
このオプションを選択すると、後にウィザードで「編集」モードの詳細を指定できます。
Oracle WSRP 2.0拡張機能をサポートするポートレットを作成するには、「Oracle WSRP V2拡張機能を使用してポートレット間通信を可能にします」を選択して「次へ」をクリックします。
注意: Oracle拡張機能で構築されたJSR 168ポートレットは、WSRP 2.0をサポートするすべてのコンシューマで使用できます。WSRP 2.0を利用するには、Oracle WebLogic Serverにポートレットをデプロイする必要があります。 |
「追加ポートレット情報」ページ (図6-7)の「表示名」フィールドに、ポートレットの名前を入力します。この名前は、Oracle Portalのカタログまたはリポジトリに表示されます。
「ポートレット・タイトル」フィールドに、ポートレットを説明するタイトルを入力します。
「リソース・パレット」パネルまたは「アプリケーション・リソース」パネルにポートレットのタイトルが表示されるため、ポートレットが役に立つかどうかをユーザーが判断しやすくなるタイトルを使用してください。ポートレットのタイトルは、ポートレットがページに表示されるとポートレットのヘッダーにも表示されます。
「ポートレット・タイトル」フィールドに、ポートレットのタイトルを入力します。このタイトルは、ポートレットがページに表示されるとポートレットのヘッダーに表示されます。
「短いタイトル」フィールドに、ポートレットの短いタイトルを入力します。この短いタイトルは、モバイル・デバイスでポートレットがページに表示されるとポートレットのヘッダーに表示されます。
「説明」フィールドに、ポートレットの説明を入力します。この説明は、ポートレット・リポジトリでポートレット名の下に表示されます。
「キーワード」フィールドに、ユーザーがポートレットを検索するときに役立つ追加のキーワードを入力します。
「次へ」をクリックすると、「コンテンツ・タイプとポートレット・モード」ページ(図6-8)が表示されます。
または、「終了」をクリックして、すぐにポートレットを作成することもできます。残りのすべての設定にはデフォルト値が使用されます。
デフォルトでは、ポートレットはコンテンツ・タイプがtext/htmlで表示されます。他のコンテンツ・タイプを追加する場合は、text/htmlをクリックし、「追加」をクリックします。
使用できるコンテンツ・タイプのリストが表示されます(図6-9)。「使用可能」リストで目的のコンテンツ・タイプを選択し、矢印ボタンを使用して、「- 選択されたもの」リストに移動します。終了したら、「OK」をクリックします。
デフォルトでは、ポートレットには「view」モードが含まれます。「一般ポートレット・プロパティ」ページで「編集可能」を選択した場合は、「編集」モードも含まれます。他のポートレット表示モードを含める場合は、既存の表示モード(たとえば、「view」)を選択し、「追加」をクリックします。
使用できるポートレット表示モードのリストが表示されます(図6-10)。必要なモードを「使用可能」リストから「- 選択されたもの」リストに移動することで、表示モードを追加できます。終了したら、「OK」をクリックします。ポートレット表示モードの詳細は、6.1項「Javaポートレット作成のガイドライン」を参照してください。
必要なポートレット表示モードをすべて追加した後、各モードについて実行する機能を選択します。ポートレット・モードごとに、ポートレット・モードをクリックして右側にある次のオプションを選択します。
Oracle JDeveloperでそのポートレット・モードにJSPを生成する場合は、「JSPの生成」を選択します。対応するフィールドにJSPの名前を入力するか、デフォルトのままにします。
ウィザードを完了すると、生成されたJSPが「アプリケーション・ナビゲータ」に表示されるので、それを選択してさらに開発できます。これは、すべてのポートレット表示モードのデフォルトの選択です。これを選択すると、生成されるJSPに特定のモードに対するリクエストをルーティングするコードが、生成されるポートレットJavaクラスに入力されます。
.jspx
ファイルを生成するには、「ADF-Faces JSPXの生成」を選択します。.jspx
ファイルは、JSPとまったく同じマークアップを生成します。
ポートレットをページなどの既存のWebリソースにマップする場合は、「パスへのマップ」を選択します。対応するフィールドにパスを入力します。これを選択するときは、ターゲットのリソースまたはファイルを作成する必要があります。ターゲットとしては、JSP、サーブレット、HTMLファイルなどを使用できます。これを選択すると、指定したターゲットに特定のモードに対するリクエストをルーティングするコードが、生成されるポートレットJavaクラスに入力されます。
カスタム・コーディングしたオブジェクトでポートレット・モードを実装する場合は、「カスタム・コード」を選択します。このオブジェクトは後で作成します。これを選択すると、生成されるポートレットJavaクラスにコンテンツをレンダリングするスケルトン・メソッド(private void do<MODE_NAME><CONTENT_TYPE>
)が生成されます。有用なコンテンツをレンダリングするには、このコードを更新する必要があります。
「次へ」をクリックします。
ウィザードの「一般ポートレット・プロパティ」ページで「編集可能」を選択した場合は、「カスタマイズ・プリファレンス」ページ(図6-11)が表示されます。ステップ23に進みます。
このオプションを選択していない場合は、「セキュリティ・ロール」ページ(図6-13)が表示されます。ステップ31に進みます。
カスタマイズ・プリファレンスを追加する場合は、「追加」をクリックします。「新規プリファレンスの追加」ダイアログ・ボックスが表示されます。
「名前」フィールドに、新しいプリファレンスの名前を入力します。この名前は、ポートレット内で一意である必要があります。文字、数字、アンダースコアのみを使用できます。
「デフォルト値」フィールドに、新しいカスタマイズ・プリファレンスのデフォルト値を1つ以上入力します。複数の値はカンマで区切ります。
カスタマイズ・プリファレンスの値を翻訳する場合は、「プリファレンスの翻訳」チェック・ボックスを選択します。このオプションを選択すると、Oracle JDeveloperは、翻訳できる文字列のリソース・バンドル・クラスを生成します。実行時には、ポートレットはリソース・バンドルのエントリを参照します。
注意: 名前は常に翻訳されますが、デフォルト値は必ずしも翻訳する必要はありません。たとえば、値が整数の場合、翻訳は不要です。 |
「OK」をクリックします。カスタマイズ・プリファレンスをさらに追加する場合は、前述の手順を繰り返します。
既存のカスタマイズ・プリファレンスの詳細を編集するには、「ポートレット・プリファレンス」リストでプリファレンスを選択し、「プリファレンス詳細」セクションでフィールドを編集します。
既存のカスタマイズ・プリファレンスを削除するには、「ポートレット・プリファレンス」リストでプリファレンスを選択し、「削除」をクリックします。
「次へ」をクリックすると、「セキュリティ・ロール」ページ(図6-13)が表示されます。
JSR 168ポートレットは、web.xml
で定義され、portlet.xml
で参照されているJ2EEセキュリティ・ロールを使用できます。「使用可能」リストには、ポートレット・アプリケーションのWebデプロイ・ファイル(web.xml
)で定義されているセキュリティ・ロールが表示されます。「使用可能」リストから「- 選択されたもの」リストにセキュリティ・ロールを移動すると、web.xml
内のセキュリティ・ロールに対する参照が、アプリケーションのポートレット・デプロイ・ファイル(portlet.xml
)に作成されます。
新しいセキュリティ・ロールを定義する場合は、「新規セキュリティ・ロール」をクリックします。「セキュリティ・ロールの新規作成」ダイアログ・ボックス(図6-14)表示されます。
「名前」フィールドに、セキュリティ・ロールの一意の名前を入力します。
「説明」フィールドに、アクセス権限およびこのロールのポートレットでの制限についての、セキュリティ・ロールの説明を入力します。
「OK」をクリックします。
新しいセキュリティ・ロールが、「使用可能」リストに追加されます。セキュリティ・ロールを手動で作成することもできます。
「次へ」をクリックすると、「キャッシュ・オプション」ページ(図6-15)が表示されます。
ポートレットのキャッシュを有効にする場合は、「キャッシュ・ポートレット」を選択します。
このオプションを選択すると、ポートレットのキャッシングをポートレット・コンテナで管理することを示されます。ポートレット自体で、指定のレスポンスのコンテンツをキャッシュすることもできます。このページで指定する設定は、レスポンスに対するキャッシュ条件がポートレットで指定されていない場合にのみ適用されます。
「デフォルト失効条件」セクションで、次を選択します。
キャッシュされているポートレット・コンテンツに有効期限を設定する場合は、「キャッシュ・コンテンツ有効期限 [] 秒」を選択します。隣接フィールドで時間制限を指定します。
キャッシュされているポートレット・コンテンツに有効期限を設定しない場合は、「キャッシュ・コンテンツ無期限」を選択します。ポートレットのコンテンツが静的であまり変化しない場合は、このオプションを選択します。
注意: このポートレットについてデフォルトのキャッシュをしない場合は、「デフォルトでキャッシュしない」を選択します。この場合、ウィザードではキャッシュ有効期限が0秒に設定されます。前述したとおり、このキャッシュ設定が有効となるのは、レスポンスに対するキャッシュ条件がポートレットで指定されていない場合のみです。ここでキャッシュしないように設定し、後で、ポートレットについてデフォルトでキャッシュする必要が生じた場合は、簡単に変更できます。変更するには、ウィザードで生成した |
「次へ」をクリックすると、「初期化パラメータ」ページ(図6-16)が表示されます。
初期化パラメータによって、.war
ファイルの内容を決定するWebアプリケーション開発者が指定されます。このファイルは、JNDI変数のかわりに、Webアプリケーション(サーブレットやポートレット)のすべてのコンポーネントの動作を互換性のある方法で構成するために使用します。初期化パラメータは、portlet.xml
ファイルに追加されます。
初期化パラメータを追加する場合は、「新規」をクリックします。パラメータの表に新しい行が追加されます。行をダブルクリックすると詳細を編集できます。
「名前」フィールドに、初期化パラメータの一意の名前を入力します。文字、数字、アンダースコアのみを使用できます。
「値」フィールドに、パラメータのデフォルト値を入力します。
「説明」フィールドに、パラメータの説明を入力します。
初期化パラメータを削除するには、表で選択し、「削除」をクリックします。
「次へ」をクリックすると、「終了」ページが表示されます。
注意: PortalでWSRP2が有効になっている場合、ポータル・ナビゲーション・パラメータ・ページが表示されます。「次へ」をクリックすると、「終了」ページが表示されます。 |
「終了」をクリックすると、ポートレット用のファイルが生成されます。「アプリケーション・ナビゲータ」のプロジェクト・ノードに対して、次のファイルが生成されます(図6-17を参照)。
ポートレット・モードに「JSPの生成」を選択した場合は、モードごとにコードが生成されます。
「カスタム・コード」を選択した場合は、生成されるコードはポートレットのJavaクラスに属します。
2つのJavaクラス
<packagename>.<portletname>.java
は、ポートレット・コンテナによって呼び出され、ポートレット標準で必要なすべてのメソッドを含みます。
<packagename>.<portletname>Bundle.java
は、ポートレットのすべての翻訳文字列を含みます。
portlet.xml
oracle-portlet.xml
web.xml
ポートレットのデフォルト実装を作成した後は、独自のビジネス・ロジックでサンプル・コードを拡張し、必要な機能を実装できます。機能の追加方法は、JPSまたはJavadocを参照してください。
ウィザードを終了してポートレットを生成した後は、そのポートレットをOracle WebLogic Serverにデプロイできます。WARファイルを作成してデプロイする手順は、次のとおりです。
アプリケーション・ナビゲータで、ポートレットを含むプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」で「一般」を開き、「Deployment Profiles」を選択します。
「項目」リストで、「WARファイル」を選択して、「OK」をクリックします。
「デプロイメント・プロファイルの作成 -- WARファイル」ダイアログ・ボックスが開きます。
「デプロイメント・プロファイル名」フィールドに、デプロイ・ファイルのわかりやすい名前を入力します(たとえば、webapp
)。
「OK」をクリックします。
「WARデプロイメント・プロファイルのプロパティの編集」ダイアログ・ボックスが開きます。
「Webアプリケーションのコンテキスト・ルート」の下で、「J2EE Webコンテキスト・ルートを指定」を選択し、対応するフィールドにコンテキスト・ルートを入力します(たとえば、my-portlet
)。
「OK」をクリックします。
「プロジェクト・プロパティ」ダイアログ・ボックスが開きます。
「OK」をクリックします。
「アプリケーション・ナビゲータ」で、プロジェクトを右クリックして「デプロイ」を選択し、デプロイ・ファイルを選択してから「デプロイ先」を選択し、最後にIntegratedWLSConnectionを選択します。
「デプロイメント・タイプの選択」ダイアログ・ボックスで、「はい」を選択して「OK」をクリックします。
Oracle JDeveloperの下部にあるデプロイ・ログに「---- デプロイが終了 ----」メッセージが表示されたときは、エラーが発生していないことを確認します。
JSP準拠のポートレットのWSDL URLを次のように作成します。
http://host:port/context-root/portlets/wsrp2?WSDL
host
は、プロデューザがデプロイされているサーバーです。
port
は、Application Server Controlコンソールのメイン・ページの「ポート」タブにあるOracle Web Cache HTTP Listenerポートです。
context-root
は、Webアプリケーションのコンテキスト・ルートで、「一般」の「WARデプロイメント・プロファイルのプロパティ」にあります。
Webブラウザで、前述の手順で指定したWSDL URLを入力し、正しく動作することを確認します。WSDL定義がブラウザに表示されない場合は、WARファイルのデプロイに失敗しています。付録B「Javaポートレットの問題」を参照してください。
SSL(HTTPS)を使用している場合は、Oracle Portalにプロデューサを登録する前にWSDL URLを変更する必要があります。SSLを使用していない場合は、次の手順をスキップできます。
注意: HTTPSをプロデューサで動作させるには、『Oracle Fusion Middleware Oracle 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ディレクトリを使用します。Oracle Portalにプロデューサを登録するとき、登録の「接続の定義」ページでWSDL URLにこのWSDLロケーションを使用します。
ここでプロデューサを登録し、ポートレットを表示する必要があります。6.3.4項「JSR 168ポートレットの登録と表示」を参照してください。
ポートレット・コンテナにポートレットを再度デプロイすると、プロデューサとそのすべてのコンシューマの間で持たれている既存のセッションがすべて失われます。コンシューマが既存のプロデューサ・セッションを再利用しようとする場合、コンシューマが再デプロイ後初めてプロデューサに接続しようとすると、エラー・メッセージが表示されることがあります。
Error: Could not get markup. The cookie or session is invalid or there is a runtime exception.
プロデューサのセッションを再確立するには、ポータル・ページをリフレッシュします。新しいブラウザ・セッションからポートレットに再アクセスする場合は、このエラー・メッセージは表示されません。自動的に新しいプロデューサ・セッションが確立されるためです。
プロバイダとそのポートレットを作成してデプロイした後は、そのプロバイダをOracle Portalに登録する必要があります。プロバイダを登録すると、そのプロバイダを検索して通信するために必要な情報がOracle Portalに提供されます。プロバイダを登録した後は、プロバイダとそのポートレットがポートレット・リポジトリで使用可能になります。また、Oracle Portalのナビゲータにもプロバイダとそのポートレットのリストが表示されます。
注意: ポートレット・ビルダーなどの組込みツールを使用してポートレットやプロバイダを作成すると、Oracle Portalによってそのプロバイダが自動的に登録されます。さらに、作成したポートレットは、ポートレット・リポジトリに自動的に表示されます。Oracle Portalには組込みポートレットも用意されており、それらは事前構成済のプロバイダに含まれています。たとえば、複雑な設定が不要なポートレットのOmniPortletとWebクリッピングは、すでにOracle Portalに登録されています。これらのポートレットは「ポートレットの追加」リストで参照できます。ただし、ポートレットとプロバイダをプログラムで作成した場合、そのプロバイダは、ポータル・ユーザーが使用できるように登録する必要があります。 |
標準準拠のポートレット用にプロバイダを登録する手順は、次のとおりです。
Oracle Portalを開いてログインします。プロバイダを登録するには、プロバイダに対する管理権限または編集権限が必要です。これらの権限がない場合は、管理者にリクエストする必要があります。
注意: Oracle Portalをインストールしないがポートレットをテストする必要がある場合は、OTNのOracle Portal Verification Serviceを使用してWSRPプロデューサを検証できます:http://portalstandards.oracle.com/portal/page/portal/OracleHostedWSRPPortal/Welcome |
「Portalビルダー」ページで作業していない場合は、右上隅にある「ビルダー」をクリックします。
「管理」タブをクリックします。
「ポートレット」サブタブをクリックします。
「リモート・プロバイダ」ポートレットで、「プロバイダの登録」をクリックして、「プロバイダの登録」ページを表示します(図6-18)。
「名前」フィールドに、プロバイダの名前を入力します。この名前は200文字までで、スペースまたは他の特殊文字は使用できません。
「表示名」フィールドに、ポートレット・リポジトリなどでプロバイダが参照されるときに表示される名前を入力します。表示名は200文字以下です。
「タイムアウト」フィールドに、タイムアウト・メッセージが表示されるまでにOracle Portalがプロバイダへの接続を試行する秒数を入力します。
「タイムアウト・メッセージ」フィールドに、「タイムアウト」フィールドで指定した秒数以内にOracle Portalがプロバイダとの接続を確立できないときに表示するメッセージを入力します。メッセージは、ポートレットの本体に表示されます。メッセージにHTMLまたはmobileXMLを含めることはできません。
「実装スタイル」リストから、WSRPプロバイダのWSRPを選択します。
注意: なんらかの理由でプロバイダが使用できない場合は、そのプロバイダからのポートレットを含むページのレンダリングが遅くなる可能性があります。デフォルトでは、Oracle Portalは、ページ・アセンブリが完了する前にすべてのポートレットが戻されるまで待機します。遅延を回避するため、ページ・プロパティの「メイン」タブにある「ページ・アセンブリ・タイムアウト」を使用して時間制限を設定できます。Oracle Portalが指定されたタイムアウト期間内にプロバイダからポートレットを取得できない場合は、ポートレットなしでページをレンダリングします。プロバイダが後で利用できるようになった場合、Oracle Portalはページをリフレッシュし、取得できなかったポートレットを追加します。ページのレンダリングは、このように、特定のプロバイダが利用できないため停止するということはありません。ページ・アセンブリ・タイムアウトの詳細は、『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』を参照してください。 |
「次へ」をクリックすると、「接続の定義」ページ(図6-19)が表示されます。
WSDL URLフィールドに、プロバイダのWSDL URLを入力します。例:
http://myserver.com:8888/my-portlet/portlets/WSRPBaseService?WSDL
注意: WSRPプロデューサには、WLDL v1またはv2フレームワークで動作するポートレットを含めることができます。WLDL v1ポートレットは、11gR1より前のOracle Portalリリースで動作します。WSDL v2ポートレットは、Oracle Portal 11gR1で動作します。v2ポートレットを含むWSRPプロデューサがv1 URLに登録されている場合は、ポートレット・リポジトリにv1登録名とv1ポートレットのみが表示されます。したがって、v2ポートレットのみを含むWSRPプロデューサがv1 URLに登録されている場合は、ポートレット・リポジトリに登録名のみが表示され、ポートレットは表示されません。 |
「次へ」をクリックすると、「登録プロパティ値を入力」ページ(図6-20)が表示されます。
プロバイダに必要な登録プロパティを指定します。必要な登録プロパティがない場合は、次の手順に進みます。
「終了」をクリックします。図6-21に示すような「登録確認」ページが表示されます。
これで、ポートレット・リポジトリ内のポートレットと同様に、ポートレットをページに追加できます。ポートレットをページに追加するには、『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』の指示に従ってください。
エンタープライズ構成でWSRPプロデューサを登録する場合、Webサービス定義言語(WSDL)のドキュメントを手動で作成し、そのWSDLを使用してWSRPプロデューサを登録する必要があります。これは、動的に生成されたWSDLではHTTPSプロトコルおよびHTTPSポートを使用してURLが作成されるのに対し、WSRPプロデューサではHTTPが使用されるためです。
注意: WSRPポートレットのプロデューサは、PDK-Javaポートレットのプロバイダと類似しています。 |
WSDLドキュメントを手動で作成するには、次のタスクを実行します。
ブラウザ(Internet Explorerを推奨)に、動的に生成されたWSDLを表示します。
WSRPサンプルのWSDLを表示するには、次のURLに移動します。
http://host
:external http port
/portletapp/portlets?WSDL
ブラウザから外部の使用可能な場所にファイルを保存します。
このWSRPサンプルでは、ブラウザから次のディレクトリにファイルを保存します。
ORACLE_HOME/j2ee/home/applications/portletapp/wsrp-samples
ファイルをwsrpsamples.wsdl
という名前で保存します。
ファイルを編集し、https
をhttp
に置き換え、ポートを外部HTTPポートに修正します。
ブラウザにファイルを表示します。
たとえば、このWSRPサンプルでは次のURLを使用します。
http://host
:external http port
/portletapp/wsrpsamples.wsdl
WSRPプロデューサを登録する場合、*.wsdl
ファイルに対するURL(ステップ4のURLなど)を使用します。
エンタープライズ構成の詳細は、Oracle Fusion Middlewareエンタープライズ・アーキテクチャおよびデプロイメント・ガイドを参照してください。
Oracle PDK-Javaは、一般的に必要なユーティリティを提供することでJavaポートレットを簡単に開発できるフレームワークを提供し、これまでの開発スキルや、JSP、サーブレット、静的HTMLページなどの既存アプリケーション・コンポーネントを活用できるようにします。また、Oracle Portalとプロバイダ間の通信の複雑性に直接対処する必要なしにポートレットを作成できます。
Oracle PDK-Javaのフレームワークは次の領域に分けられます。
プロバイダ・アダプタ: これにより、開発者は、Webプロバイダとの通信用にOracle Portalによって定義されたHTTP構文を使用しないで済むようになります。Oracle PortalとJava Webプロバイダ間で受け渡しされる情報がトランスレートされます。プロバイダは、アダプタがないと、ポートレットを管理するのみでなく、必要な言語でこの情報を直接Oracle 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に付属のレンダリング、パーソナライズおよびセキュリティのフレームワークを活用できるようにします。このようなクラスと関連フレームワークは、Oracle 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フォームをレンダリングするメソッドおよびポートレット・キャッシュをサポートするメソッドが含まれています。
Oracle JDeveloperのOracle PDK-Javaポートレット・ウィザードを使用すると、短時間で簡単にポートレットの開発を開始できます。
この項では、次のことを前提にしています。
ポートレットの表示モードなど、ポートレットに関する用語の知識があること。第1章「ポートレットの概要」および6.1項「Javaポートレット作成のガイドライン」を参照してください。
Oracle JDeveloperに関する知識があり、それを使用したJavaコンポーネントを構築およびデプロイする方法を習得していること。Oracle JDeveloperはOTNからダウンロードできます。次のURLでOTNの「Oracle JDeveloper」ページにアクセスします。
http://www.oracle.com/technology/products/jdev/index.html
この項の内容は、次のとおりです。
この項では、Oracle PDK-Javaポートレット・ウィザードの手順を説明します。最初に、実装するポートレットの表示モード、および実装メソッド(JSP、HTTPサーブレット、JavaクラスまたはHTML)を選択できます。次に、ウィザードによって、選択したモードごとに簡単なサンプル実装が作成されます。
ポートレットおよびプロバイダを作成する手順は、次のとおりです。
Oracle JDeveloperを起動します。
「アプリケーション・ナビゲータ」で、ポートレットを作成するアプリケーションを開きます。
ポートレットを作成するプロジェクトを右クリックし、「新規」を選択します。
注意: プロジェクトがまだない場合は、次のいずれかの方法で作成できます。
|
「新規ギャラリ」で「Web層」カテゴリを開き、「ポートレット」をクリックします。
「項目」リストで「Oracle PDK-Javaポートレット」を選択します(図6-22)。
注意: 「規格に基づいたJavaポートレット」を選択すると、JPS準拠のポートレット作成のためのポートレット・ウィザードが開きます。「Oracle PDK-Javaポートレット」を選択すると、PDK-Javaポートレット作成のためのポートレット・ウィザードが開きます。 |
図6-22 Oracle PDK-Javaポートレットが選択された「新規ギャラリ」ダイアログ・ボックス
「OK」をクリックすると、「プロバイダの詳細」ページ(図6-23)が表示されます。
「プロバイダの詳細」ページで、ポートレットを含める新しいプロデューサの名前を入力します。この名前は、プロジェクト内で一意である必要があります。PDK-Javaでは、プロデューサではなく「プロバイダ」という用語を使用します。プロバイダは、プロデューサとまったく同じです。
デプロイメント・プロパティ・ファイルの生成」を選択します。
これによって、以下の2つの.properties
ファイルが自動的に生成されます。
serviceID.properties
は、そのサービスIDを持つプロデューサのプロパティを定義します。サービスIDの値は、プロデューサ名と同じ値です。
_default.properties
は、デフォルトのプロパティ・ファイルです。1つのプロデューサ・アプリケーションが複数のプロデューサを持つことができ、それぞれには固有のサービスIDが付きます。登録のときに、サービスIDが定義されていない場合は、デフォルトのプロパティ・ファイルが使用されます。
「XMLエントリの生成」を選択します。
これによって、ウィザードによって生成されるものも含めて、プロデューサに属するポートレットの詳細を含むプロデューサ定義ファイル(provider.xml
)が自動的に生成されます。
「索引JSPの生成」を選択します。
これによって、アプリケーション内に存在するプロデューサと、プロデューサのテスト・ページへのアクセスを簡単にするハイパーリンクをすべてリストしたindex.jsp
ファイルが自動的に生成されます。
「次へ」をクリックすると、「一般ポートレット情報」ページが表示されます。
「ポートレット名」フィールドに、ポートレットのわかりやすい名前を入力します。この名前は内部的に使用され、ユーザーには公開されません。表示名は、コンポーネント・パレットなどのポートレット選択リストでユーザーに対して表示されます。
「表示名」フィールドに、ポートレットの表示名を入力します。この名前は、ポートレット・リポジトリでユーザーがページに追加するポートレットを選択する場合など、ポートレットの選択リストに表示されます。
「説明」フィールドに、ポートレットの説明を入力します。この説明は、ポートレット・リポジトリでポートレット名の下に表示されます。
「タイムアウト」フィールドに、ポートレットのレンダリングに与える秒数を入力します。
「タイムアウト・メッセージ」フィールドに、ポートレットのレンダリングが指定したタイムアウト値を超えた場合に表示するメッセージを入力します。
「次へ」をクリックすると、「ビュー・モード」ページ(図6-25)が表示されます。
「ページの表示」セクションで、「実装スタイル」リストから共有画面モードの実装スタイルを選択します。
ポートレットの共有画面モードをJavaServer Pageとして実装するには、「JSP」を選択します。「ファイル名」フィールドに、ウィザードで生成するファイルの名前を入力します。
ポートレットの共有画面モードを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クラスの名前を入力します。
共有画面モードの詳細は、6.1.1.1項「共有画面モード(JPSの場合は表示モード)」を参照してください。
ポートレットに全画面モードを実装する場合は、「詳細ページの表示」を選択し、前の「ページの表示」で説明したように「実装スタイル」を選択します。
全画面モードの詳細は、6.1.1.5項「全画面モード(PDK-Java)」を参照してください。
「次へ」をクリックすると、「カスタマイズ・モード」ページ(図6-26)が表示されます。
デフォルトでは、「ページの編集」が選択されています。ポートレットに編集モードを実装する場合は、前の「ページの表示」で説明したように「実装スタイル」を選択します。編集モードを実装しない場合は、「ページの編集」チェック・ボックスの選択を解除します。
編集モードの詳細は、6.1.1.2項「編集モード(JPSおよびPdk-Java)」を参照してください。
ポートレットにデフォルト編集モードを実装する場合は、「デフォルト・ページの編集」を選択し、前の「ページの表示」で説明したように「実装スタイル」を選択します。
デフォルト編集モードの詳細は、6.1.1.3項「デフォルト編集モード(JPSおよびPDK-Java)」を参照してください。
「次へ」をクリックすると、「追加モード」ページ(図6-27)が表示されます。
ポートレットにヘルプ・モードを実装する場合は、「ヘルプ・ページ」を選択し、前の「ページの表示」で説明したように「実装スタイル」を選択します。
ヘルプ・モードの詳細は、6.1.1.6項「ヘルプ・モード(JPSおよびOracle Portal)」を参照してください。
ポートレットに情報モードを実装する場合は、「ページ情報」を選択し、前の「ページの表示」で説明したように「実装スタイル」を選択します。
情報モードの詳細は、6.1.1.7項「情報モード(JPSおよびPDK-Java)」を参照してください。
「次へ」をクリックすると、「パブリック・ポートレット・パラメータ」ページ(図6-28)が表示されます。
パブリック・パラメータをポートレットに追加する場合は、「追加」をクリックして、ブランク行を作成します。パラメータの使用方法の詳細は、7.2.3項「パラメータの引渡しとイベントの送信」を参照してください。
「名前」フィールドに、パラメータの内部名を入力します(たとえば、MyParam
)。
「表示名」フィールドに、ユーザーに対して表示する名前を入力します(たとえば、My Portlet Parameter
)。
「説明」フィールドに、パラメータの説明を入力します。
「次へ」をクリックすると、「パブリック・ポートレット・イベント」ページ(図6-29)が表示されます。
このページでは、パラメータをイベントにマップできます。イベントの使用方法の詳細は、7.2.3項「パラメータの引渡しとイベントの送信」を参照してください。
「終了」をクリックすると、ポートレット用のファイルが生成されます。「アプリケーション・ナビゲータ」のプロジェクトに対して次のファイルが生成されます(図6-30を参照)。
選択した各ポートレット・モード用のファイル
provider.xml
web.xml
index.jsp
_default.properties
<serviceID>.properties
これらすべてのファイルは、ポートレットを正常にデプロイして実行するために必要です。ただし、index.jsp
はOracle JDeveloperでテスト用に使用されます。
ポートレットのデフォルト実装を作成した後は、独自のビジネス・ロジックでサンプル・コードを拡張し、必要な機能を実装できます。機能の追加方法は、JPSまたはJavadocを参照してください。
ポートレットを作成した後は、構成をチェックして、ポートレットとそのプロバイダが正しく動作することを確認する必要があります。
注意: この手順は、テスト目的でのみ実行します。この手順を実行した後は、6.5.5項「PDK-Javaポートレットの登録と表示」で説明しているように、プロバイダを登録する必要があります。また、開発と本稼働では、6.5.4項「アプリケーション・サーバーへのOracle PDK-Javaポートレットのデプロイ」で説明しているように、必ずポートレットをアプリケーション・サーバーにデプロイする必要があります。 |
ポートレットとプロバイダを検証するには、次のようにします。
ウィザードを終了してポートレットを生成した後は、そのポートレットをOracle WebLogic Server(WLS)にデプロイできます。以下の項で、Oracle PDK-JavaポートレットをWebLogic Serverにデプロイする方法について説明します。
WARファイルを作成してデプロイするには、次の手順を実行します。
アプリケーション・ナビゲータで、ポートレットを含むプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」で「一般」カテゴリを開き、「Deployment Profiles」を選択します。
「項目」リストで、「WARファイル」を選択して、「OK」をクリックします。「デプロイメント・プロファイルの作成 -- WARファイル」ダイアログ・ボックスが開きます。
「デプロイメント・プロファイル名」フィールドに、デプロイ・ファイルのわかりやすい名前を入力します(たとえば、myj2eeportlet
)。
「OK」をクリックします。「WARデプロイメント・プロファイルのプロパティ」ダイアログ・ボックスが開きます。
「Webアプリケーションのコンテキスト・ルート」の下で、「Java EE Webコンテキスト・ルートを指定」を選択し、対応するフィールドにコンテキスト・ルートを入力します(たとえば、myj2eeportlet1)。
WEB-INF/libの下のContributorsノードを選択します。
ポートレット開発を選択します。
「OK」をクリックします。「プロジェクト・プロパティ」ダイアログ・ボックスが開きます。
「OK」をクリックします。
「アプリケーション・ナビゲータ」で、プロジェクトを右クリックして「デプロイ」を選択し、デプロイ・ファイルを選択してから「デプロイ先」を選択し、最後にポートレットをデプロイするアプリケーション・サーバー接続を選択します。
Oracle JDeveloperの下部にあるデプロイ・ログに「---- デプロイが終了 ----」メッセージが表示されたときは、エラーが発生していないことを確認します。
ポートレットのURLを次のように作成します。
http://host:port/context-root/providers
host
は、プロバイダがデプロイされているサーバーです。
port
は、Application Server Controlコンソールのメイン・ページの「ポート」タブにあるOracle Web Cache HTTP Listenerポートです。
context-root
は、Webアプリケーションのコンテキスト・ルートで、「一般」の「WARデプロイメント・プロファイルのプロパティ」にあります。
Webブラウザで、前述の手順で指定したURLを入力し、正しく動作することを確認します。図6-33に示すようなページが表示されます。
プロバイダとそのポートレットを作成してデプロイした後は、そのプロバイダをOracle Portalに登録する必要があります。プロバイダを登録すると、そのプロバイダを検索して通信するために必要な情報がOracle Portalに提供されます。プロバイダを登録した後は、プロバイダとそのポートレットがポートレット・リポジトリで使用可能になります。また、Oracle Portalのナビゲータにもプロバイダとそのポートレットのリストが表示されます。
注意: ポートレット・ビルダーなどの組込みツールを使用してポートレットやプロバイダを作成すると、Oracle Portalによってそのプロバイダが自動的に登録されます。さらに、作成したポートレットは、ポートレット・リポジトリに自動的に表示されます。Oracle Portalには組込みポートレットも用意されており、それらは事前構成済のプロバイダに含まれています。たとえば、複雑な設定が不要なポートレットのOmniPortletとWebクリッピングは、すでにOracle Portalに登録されています。これらのポートレットは「ポートレットの追加」リストで参照できます。ただし、ポートレットとプロバイダをプログラムで作成した場合、そのプロバイダは、ポータル・ユーザーが使用できるように登録する必要があります。 |
Oracle PDK-Javaポートレットのプロバイダを登録するには、次のようにします。
Oracle Portalを開いてログインします。プロバイダを登録するには、プロバイダに対する管理権限または編集権限が必要です。これらの権限がない場合は、管理者にリクエストする必要があります。
「Portalビルダー」ページで作業していない場合は、右上隅にある「ビルダー」リンクをクリックします。
「管理」タブをクリックします。
「ポートレット」サブタブをクリックします。
「リモート・プロバイダ」ポートレットで、「プロバイダの登録」をクリックして、「プロバイダの登録」ページを表示します。
「名前」フィールドに、プロバイダの名前を入力します。名前は200文字までで、スペースまたは他の特殊文字は使用できません。
「表示名」フィールドに、ポートレット・リポジトリなどでプロバイダが参照されるときに表示される名前を入力します。表示名は200文字以下です。
「タイムアウト」フィールドに、タイムアウト・メッセージが表示されるまでにOracle Portalがプロバイダへの接続を試行する秒数を入力します。
「タイムアウト・メッセージ」フィールドに、「タイムアウト」フィールドで指定した秒数以内にOracle Portalがプロバイダとの接続を確立できないときに表示するメッセージを入力します。メッセージは、ポートレットの本体に表示されます。メッセージにHTMLまたはmobileXMLを含めることはできません。
「実装スタイル」リストから「Web」を選択します。
「次へ」をクリックすると、「接続の定義」ページ(図6-34)が表示されます。
「URL」フィールドに、プロバイダのURLを入力します。このURLは、6.5.4項「アプリケーション・サーバーへのOracle PDK-Javaポートレットのデプロイ」の最後に作成したものです。
「サービスID」フィールドに、プロバイダのサービスIDを入力します。
注意: 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です。
「終了」をクリックします。「登録確認」ページが表示されます。
これで、ポートレット・リポジトリ内のポートレットと同様に、ポートレットをページに追加できます。ポートレットをページに追加するには、『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』の指示に従ってください。
この項では、WSRPおよびJPDKアプリケーションを手動で構成し、Oracle WebLogic Serverにデプロイする手順について説明します。
この項の内容は次のとおりです。
WSRPを構成するには、次の手順を実行します。
WSRP管理対象サーバーの作成
カスタムのOracle Portalアプリケーションの実行に必要な管理対象サーバー・インスタンスの作成および共有ライブラリのプロビジョニングを行うために、Oracle WebLogic Server管理コンソールを使用して既存のドメインでWebLogic管理対象サーバーを作成できます。WSRP管理対象サーバーを作成するには、次の手順を実行します。
Oracle WebLogic Server管理コンソールにログオンします。
まだ行っていない場合は、管理コンソールのチェンジ・センターで「ロックして編集」をクリックします。
「ドメイン構造」ツリーで、「環境」を開き、「サーバー」を選択します。
「サーバーのサマリー」ページが表示されます。
新規をクリックします。
「新しいサーバーの作成」ページが表示されます。
「新しいサーバーの作成」ページで、次の情報を入力します。
サーバー名: WLS_WSRPなど、サーバーの名前を入力します。
サーバー・リスニング・ポート: 9003など、サーバー・インスタンスにアクセスするポート番号を入力します。
「いいえ、これはスタンドアロン・サーバーです。」ラジオ・ボタンを選択します。
「終了」をクリックします。
「サーバーのサマリー」ページで、作成したサーバー(WLS_WSRP)をクリックします。
「マシン」ドロップダウン・リストからマシン名を選択して「保存」をクリックします。
「変更のアクティブ化」をクリックします。
WSRP管理対象サーバーへの必須ライブラリの追加
ポートレット・プロデューサ・アプリケーションの場合は、新しい管理対象サーバーまたはクラスタに、次のライブラリをデプロイする必要があります。
oracle.portlet-producer.wsrp(11.1.1,11.1.1)
oracle.portlet-producer.jpdk(11.1.1,11.1.1)
DMSアプリケーション(11.1.1.1.0)
oracle.jrf.system.filter
oracle.jsp.next(11.1.1,11.1.1)
oracle.wsm.seedpolicies(11.1.1,11.1.1)
wsil-wls
ライブラリを追加するには、次の手順を実行します。
「ロックして編集」をクリックします。
「ドメイン構造」ツリーで、「デプロイメント」を選択します。
「デプロイメントのサマリー」ページが表示されます。
「デプロイメント」表からoracle.portlet-producer.wsrp(11.1.1,11.1.1)を選択します。
「oracle.portlet-producer.wsrp(11.1.1,11.1.1)の設定」ページが表示されます。
注意: oracle.portlet-producer.wsrp(11.1.1,11.1.1)が「デプロイメント」表に表示されない場合は、「この表のカスタマイズ」をクリックして「デプロイメントを表示するときにライブラリを除外」チェック・ボックスを無効にします。「適用」をクリックします。 |
「ターゲット」タブをクリックして「サーバー」セクションからAdminServerおよびWLS_WSRPを選択します。
「保存」をクリックします。
「デプロイメントのサマリー」ページに移動し、共有ライブラリごとに「ターゲット」タブをクリックして「サーバー」セクションからAdminServerおよびWLS_WSRPをチェックします。
wsil-wlsライブラリを追加するには、次の手順を実行します。
「デプロイメント」表からwsil-wlsを選択します。
「ターゲット」タブをクリックして「コンポーネント」表からwsil-wlsを選択します。
「ターゲットの変更」をクリックして「サーバー」セクションからAdminServerおよびWLS_WSRPをチェックします。
「はい」をクリックします。
「変更のアクティブ化」をクリックします。
WSRP管理対象サーバーの起動
管理対象サーバーを起動するには、次の手順を実行します。
「ロックして編集」をクリックします。
「ドメイン構造」ツリーで、「環境」を開き、「サーバー」を選択します。
「サーバーのサマリー」ページが表示されます。
「制御」タブをクリックして、作成したサーバー(WLS_WSRP)をチェックします。
「開始」をクリックします。
「サーバー・ライフサイクル・アシスタント」ページが表示されます。
「はい」をクリックして管理対象サーバーを起動します。
データソースの構成
portletPrefsデータソース・ターゲットを管理対象サーバー(WLS_WSRP)にマップするには、次の手順を実行します。
「ドメイン構造」ツリーで「サービス」を展開し、「JDBC」を選択および展開して「データ・ソース」をクリックします。
「JDBCデータ・ソースのサマリー」ページが表示されます。
jdbc/portletPrefs
JNDI.に関連付けられている名前をクリックします。
「ターゲット」タブをクリックして「サーバー」セクションからWLS_WSRPをチェックします。
「保存」をクリックします。
「変更のアクティブ化」をクリックします。
既存のWebLogicドメインの拡張
Oracle WSM Policy Managerを使用して既存のOracle WebLogicサーバー・ドメインを拡張するには、次の手順を実行します。
注意: Oracle Portalドメインで実行中のすべてのサーバーを停止する必要があります。 |
「既存のWebLogicドメインの拡張」を選択して「次へ」をクリックします。
「WebLogicドメイン・ディレクトリの選択」画面が表示されます。
有効なドメイン・ディレクトリを選択して「次へ」をクリックします。
「拡張ソースの選択」画面が表示されます。
「次の追加製品をサポートするために、自動的にドメインを拡張する:」オプションから(使用しているOracle Portalに関連付けられている)Oracle WSM Policy Manager - 11.1.1.0 [Oracle_Common]チェック・ボックスを選択して「次へ」をクリックします。
「JDBCデータ・ソースの構成」画面が表示されます。
「次へ」をクリックします。
「JDBCデータ・ソースのテスト」画面が表示されます。
「次へ」をクリックします。
「JDBCコンポーネント・スキーマの構成」画面が表示されます。
OWSM MDS Schemaをチェックして、MDSスキーマのホスト名、ポート、DBMS/サービス、スキーマ・パスワードを入力します。「次へ」をクリックします。
注意: これは、インストール時にリポジトリ構成ユーティリティ(RCU)を実行した際、MDS用に作成されたスキーマです。このスキーマをまだ作成していない場合は、まず、RCUを使用してこのスキーマを作成する必要があります。 |
「コンポーネント・スキーマのテスト」画面が表示されます。
テストが正常に実行されたことを確認して「次へ」をクリックします。
「オプションの構成を選択」画面が表示されます。
「デプロイメントとサービス」を選択します。
「次へ」をクリックします。
「デプロイメントのクラスタまたはサーバーへのターゲット設定」画面が表示されます。
wsrp-pmがWLS_WSRPおよびAdminServerを含むサーバーを対象としていることを確認します。
「次へ」をクリックします。
「サービスのクラスタまたはサーバーへのターゲット設定」画面が表示されます。
「次へ」をクリックします。
「構成のサマリー」画面の設定を確認し、「拡張」をクリックします。
「完了」をクリックします。
Oracle WebLogicの管理サーバー、管理対象サーバー、およびWLS_WSRP管理対象サーバーを起動します。
WSRP管理対象サーバーへのwsm-pmの追加
次の手順を実行して、WLS_WSRP管理対象サーバーにwsm-pmを追加する必要があります。
まだ行っていない場合は、管理コンソールのチェンジ・センターで「ロックして編集」をクリックします。
「ドメイン構造」ツリーで、「デプロイメント」を選択します。
「デプロイメントのサマリー」ページが表示されます。
「デプロイメント」表からwsm-pmを選択します。
「ターゲット」タブをクリックして「コンポーネント」表からwsm-pmを選択します。
「ターゲットの変更」をクリックして「サーバー」セクションからAdminServerおよびWLS_WSRPをチェックします。
「はい」をクリックします。
サンプルEARファイルのデプロイ
EARファイルをデプロイするには、http://www.oracle.com/technology/products/ias/portal/pdk.html
にある「Download the Oracle Portlet Container」からwsrp-samples.earファイルをダウンロードし、次の手順を実行します。
「ロックして編集」をクリックします。
「ドメイン構造」ツリーで、「デプロイメント」を選択します。
「デプロイメントのサマリー」ページが表示されます。
「インストール」をクリックします。
ディレクトリからwsrp-samples.earを選択し、「次へ」をクリックします。
このデプロイメントをアプリケーションとしてインストールするを選択し、「次へ」をクリックします。
「サーバー」セクションでWLS_WSRPをチェックし、「次へ」をクリックします。
デプロイメントの名前を入力し、「終了」をクリックします。
「変更のアクティブ化」をクリックします。
「デプロイメントのサマリー」ページで、デプロイしたアプリケーションを選択して「起動」をクリックします。
サンプルEARファイルのデプロイが完了したら、WSDL URLをブラウザに入力してテストする必要があります。WSDL URLの形式は次のとおりです。
http://host:port/portletapp/portlets?WSDL
例6-1に示すようなページが表示されます。
例6-1 WSRPプロデューサWSDLページ
<?xml version="1.0" encoding="UTF-8" ?> <definitions targetNamespace="urn:oasis:names:tc:wsrp:v1:wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bind="urn:oasis:names:tc:wsrp:v1:bind"> <import namespace="urn:oasis:names:tc:wsrp:v1:bind" location="http://stamf10.us.abc.com:8090/wsrp-tools/portlets/wsrp1?WSDL=wsrp_v1_bindings.wsdl" /> <service name="WSRP_v1_Service"> <port name="WSRPServiceDescriptionService" binding="bind:WSRP_v1_ServiceDescription_Binding_SOAP"> <soap:address location="http://stamf10.us.oracle.com:8090/wsrp-tools/portlets/WSRPServiceDescriptionService" /> </port> <port name="WSRPBaseService" binding="bind:WSRP_v1_Markup_Binding_SOAP"> <soap:address location="http://stamf10.us.oracle.com:8090/wsrp-tools/portlets/WSRPBaseService" /> </port> <port name="WSRPPortletManagementService" binding="bind:WSRP_v1_PortletManagement_Binding_SOAP"> <soap:address location="http://stamf10.us.abc.com:8090/wsrp-tools/portlets/WSRPPortletManagementService" /> </port> <port name="WSRPRegistrationService" binding="bind:WSRP_v1_Registration_Binding_SOAP"> <soap:address location="http://stamf10.us.abc.com:8090/wsrp-tools/portlets/WSRPRegistrationService"/> </port> </service> </definitions>
Oracle Web Cacheの構成
Oracle Web Cacheポートを使用してWSDL URLを表示するには、portal.conf
ファイル(Windowsでの場所はORACLE_INSTANCE\config\OHS\ohs1\moduleconf
)を次のように編集します。
<Location /portletapp> SetHandler weblogic-handler WebLogicHost servername.domain.com WebLogicPort 9003 </Location>
ファイルを保存し、Oracle HTTP Serverを再起動します。これで、Oracle Portalポート(デフォルトポートは8090
)を介してWSDL URLにアクセスできます。
ポートレットの登録と表示
プロバイダおよびそのポートレットを作成してデプロイした後、Oracle Portalでプロバイダを登録する必要があります。詳細は、『Oracle Fusion Middleware Oracle Portal開発者ガイド』のJSR 168ポートレットの登録および表示に関する説明を参照してください。
JPDKを構成してデプロイするには、次の手順を実行します。
JPDK管理対象サーバーの作成
カスタムのOracle Portalアプリケーションの実行に必要な管理対象サーバー・インスタンスの作成および共有ライブラリのプロビジョニングを行うために、Oracle WebLogic Server管理コンソールを使用して既存のドメインでWebLogic管理対象サーバーを作成できます。JPDK管理対象サーバーを作成するには、次の手順を実行します。
WebLogic Server管理コンソールにログオンします。
まだ行っていない場合は、管理コンソールのチェンジ・センターで「ロックして編集」をクリックします。
「ドメイン構造」ツリーで、「環境」を開き、「サーバー」を選択します。
「サーバーのサマリー」ページが表示されます。
新規をクリックします。
「新しいサーバーの作成」ページが表示されます。
「新しいサーバーの作成」ページで、次の情報を入力します。
サーバー名: サーバーの名前を入力します。この手順では、例としてWLS_JPDKを使用します。
サーバー・リスニング・ポート: サーバー・インスタンスにアクセスするポート番号を入力します。この手順では、例として9004を使用します。
「いいえ、これはスタンドアロン・サーバーです。」ラジオ・ボタンを選択します。
「終了」をクリックします。
「サーバーのサマリー」ページで、作成したサーバー(WLS_JPDK)をクリックします。
「マシン」ドロップダウン・リストからマシン名を選択して「保存」をクリックします。
「変更のアクティブ化」をクリックします。
JPDK管理対象サーバーへの必須ライブラリの追加
ポートレット・プロデューサ・アプリケーションの場合は、新しい管理対象サーバーまたはクラスタに、次のライブラリをデプロイする必要があります。
oracle.portlet-producer.jpdk(11.1.1,11.1.1)
DMSアプリケーション(11.1.1.1.0)
oracle.jsp.next(11.1.1,11.1.1)
ライブラリを追加するには、次の手順を実行します。
「ロックして編集」をクリックします。
「ドメイン構造」ツリーで、「デプロイメント」を選択します。
「デプロイメントのサマリー」ページが表示されます。
「デプロイメント」表からoracle.portlet-producer.jpdk(11.1.1,11.1.1)を選択します。
「oracle.portlet-producer.jpdk(11.1.1,11.1.1)の設定」ページが表示されます。
注意: oracle.portlet-producer.jpdk(11.1.1,11.1.1)が「デプロイメント」表に表示されない場合は、「この表のカスタマイズ」をクリックして「デプロイメントを表示するときにライブラリを除外」チェック・ボックスを無効にします。「適用」をクリックします。 |
「ターゲット」タブをクリックして「サーバー」セクションからAdminServerおよびWLS_JPDKを選択します。
「保存」をクリックします。
「デプロイメントのサマリー」ページに移動し、共有ライブラリごとに「ターゲット」タブをクリックして「サーバー」セクションからAdminServerおよびWLS_JPDKをチェックします。
「変更のアクティブ化」をクリックします。
JPDK管理対象サーバーの起動
管理対象サーバーを起動するには、次の手順を実行します。
「ロックして編集」をクリックします。
「ドメイン構造」ツリーで、「環境」を開き、「サーバー」を選択します。
「サーバーのサマリー」ページが表示されます。
「制御」タブをクリックして、作成したサーバー(WLS_JPDK)を選択します。
「開始」をクリックします。
「サーバー・ライフサイクル・アシスタント」ページが表示されます。
「はい」をクリックして管理対象サーバーを起動します。
データソースの構成
portletPrefs
データソース・ターゲットを管理対象サーバー(WLS_JPDK)にマップするには、次の手順を実行します。
「ドメイン構造」ツリーで「サービス」を展開し、「JDBC」を選択および展開して「データ・ソース」をクリックします。
「JDBCデータ・ソースのサマリー」ページが表示されます。
jdbc/portletPrefs JNDI.に関連付けられている名前をクリックします。
「ターゲット」タブをクリックして「サーバー」セクションからWLS_JPDKをチェックします。
「保存」をクリックします。
「変更のアクティブ化」をクリックします。
EARファイルのデプロイ
JPDKをデプロイするには、次の手順を実行します。
「ロックして編集」をクリックします。
「ドメイン構造」ツリーで、「デプロイメント」を選択します。
「デプロイメントのサマリー」ページが表示されます。
「インストール」をクリックします。
「アプリケーション・インストール・アシスタント」ページが表示されます。
「パス」フィールドで、(WindowsではORACLE_HOME/archives/applications
、UNIXではORACLE_HOME\archives\applications
にある)jpdk.earファイルの場所を入力します。
jpdk.earを選択し、「次へ」をクリックします。
このデプロイメントをアプリケーションとしてインストールするを選択し、「次へ」をクリックします。
「サーバー」セクションでWLS_JPDKをチェックし、「次へ」をクリックします。
「名前」フィールドに、デプロイメントの名前を入力します。
「終了」をクリックします。
「変更のアクティブ化」をクリックします。
「ロックして編集」をクリックします。
「デプロイメントのサマリー」ページで、アプリケーションを選択して「起動」、「すべてのリクエストを処理」の順にクリックします。
「アプリケーション起動アシスタント」から、「はい」をクリックします。
サンプルEARファイルのデプロイが完了したら、URLをブラウザに入力してテストする必要があります。URLの形式は次のとおりです。
http://host:port/jpdk/providers/sample/
詳細は、『Oracle Fusion Middleware Oracle Portal開発者ガイド』のJavaポートレットの作成に関する説明を参照してください。
Oracle Web Cacheの構成
Oracle Web Cacheポートを使用してJPDKサンプルURLを表示するには、portal.conf
ファイル(Windowsでの場所はORACLE_INSTANCE\config\OHS\ohs1\moduleconf
)を次のように編集します。
<Location /jpdk> SetHandler weblogic-handler WebLogicHost servername.domain.com WebLogicPort 9004 </Location>
ファイルを保存し、Oracle HTTP Serverを再起動します。これで、Oracle Portalポート(デフォルトポートは8090
)を介してWSDL URLにアクセスできます。
ポートレットの登録と表示
プロバイダおよびそのポートレットを作成してデプロイした後、Oracle Portalでプロバイダを登録する必要があります。詳細は、『Oracle Fusion Middleware Oracle Portal開発者ガイド』のPDK-Javaポートレットの登録および表示に関する説明を参照してください。
脚注
脚注1: Javaポートレット仕様1.0は、Java Specification Request 168およびJSR168専門家グループによって作成されました。