| Oracle WebCenter Framework チュートリアル 10g(10.1.3.2.0) E05043-01 |
|
このレッスンでは、最初のポートレットを構築する方法を学びます。ポートレットを作成した後は、ポートレットをテストし、簡単なページを作成してから、ポートレットをページ上にドロップします。次に再びポートレットをテストしてから、ポートレットにいくつかのロジックを追加します。このレッスンを終えると、簡単なポートレットを構築およびテストするための手順を理解できます。
図3-1に、このレッスンを終えた時点での完成物の概念的な図を示します。MySampleという名前のWebCenterアプリケーションに、MyPageという名前のページ(MyPage.jspx)が含まれています。また、MyJavaPortletという名前のポートレットを作成します。このポートレットはMyPageに配置してからカスタマイズします。
次の手順で、ポートレットを構築してテストします。
このプロセスは、JDeveloperを使用してどのようなタイプのポートレットを構築するかにかかわらず、だいたい同じです。
ポートレットを作成する前に、ポートレットのコンテナとなるアプリケーションを作成する必要があります。アプリケーションを作成するには、次のようにします。
MySampleを入力します。
このテンプレートによって、必要なプロジェクトが作成され、WebCenterアプリケーションに適用可能なオプションのみが表示されるようにターゲットのJDeveloperが設定されます。
アプリケーション・ナビゲータ(図3-4)で、WebCenterアプリケーションが次の3つのプロジェクトで構成されていることがわかります。
今度は、JSR 168 Javaポートレット・ウィザードを起動してポートレットを作成します。
作成できるポートレットは、次の2種類です。
これによって、JSR 168 Javaポートレット・ウィザードが開きます(図3-6)。
JSR 168 Javaポートレット・ウィザードによって、ポートレットのスケルトンが生成されます。このスケルトンに、独自のロジックを追加します。これから、その方法を示します。
MyJavaPortlet(空白なし)に変更します(図3-8を参照)。 通常は、ページに表示されるポートレットの名前とアプリケーション・ナビゲータに表示される名前が同じになるように、クラス名と表示名を同じにすることをお薦めします。
WSRPのポートレット間通信については、このチュートリアルの以降の部分で学びます。
ユーザーが実行時にこのポートレットをパーソナライズできるように、「編集可能」ボックスが選択されていることを確認します。(「編集可能」を選択すると、ポートレットがパーソナライズ可能になります。ユーザーは、自分のみに適用する変更を行うとき、ポートレットをパーソナライズします。それより上位の権限セットを持つユーザーは、ポートレットをカスタマイズして、誰もに表示される変更を行うことができます。詳細は後で説明します。)
「コンテンツ・タイプとポートレット・モード」ページで、text/htmlがデフォルトのコンテンツ・タイプになっていることに注意してください。これは、ポートレットがHTMLでエンコードされたテキストをサポートするということです。text/htmlのデフォルトのポートレット・モードとして「view」と「edit」がリストされます。「view」はポートレット・モードとして常に使用可能です。「edit」モードを選択すると、ユーザーがポートレット・インスタンスをパーソナライズできるページが提供されます。
このチュートリアルの以降の部分で、このポートレットを使用したパーソナライズとカスタマイズの違いをテストします。このため、ここでポートレットのカスタマイズを有効にしておく必要があります。カスタマイズを有効にするには、「edit_defaults」コンテンツ・タイプをポートレットの構成に追加します。
ポートレット・モード・ウィンドウが表示されます。
「コンテンツ・タイプとポートレット・モード」ページの先に進む前に、「実装メソッド」領域(図3-11)に注目してください。これらのコントロールによって、ポートレットにJSPを生成するかどうか、あるいは独自のカスタムJSPコードを使用するかどうかを指定できます。このレッスンでは、JSPを生成するようにJDeveloperを設定します。
この時点で「終了」をクリックして基本的なポートレットを生成することもできますが、ここでは、他の使用可能なオプションを調べるために引き続きウィザードを使用します。
MyJavaPortletを入力します。 このポートレットを「編集可能」にすることを指定したため、ユーザーは実行時にこのタイトルを変更できます。
このリリースでは翻訳は関係ないため、「翻訳」チェック・ボックスの選択を解除します。
ここではこのページは何も変更しませんが、将来的に、このページを使用して、ポートレットの他のカスタマイズ・オプションを追加できます。たとえば、ポートレットがZip Codeパラメータを受け入れる場合、ユーザーがZip Codeラベルをパーソナライズできるようにします。この場合は、「追加」ボタンを使用して、Zip Codeラベルをパーソナライズ可能にします。
このページを使用して、このポートレットに対して設定するアプリケーションのセキュリティ・ロールを指定します。
このページの設定によって、ポートレットの有効期限に基づいたキャッシュを定義できます。ここではキャッシュ条件は必要ありません。
初期化パラメータは、Webアプリケーション開発者がポートレットの動作を構成する手段です。このチュートリアルでは、初期化パラメータは必要ありません。
ナビゲーション・パラメータは、WSRP 2.0の機能です。このページでは、JSR 168ポートレットによって消費される外部パラメータを指定できます。このチュートリアルでは、ナビゲーション・パラメータは必要ありません。
「終了」をクリックした後、アプリケーション・ナビゲータの「ポートレット」プロジェクトの下に、新しく生成されたいくつかのファイルが表示されます。展開されたナビゲータは、図3-13のようになります。
ポートレットの作成が完了したので、今度はポートレットを実行してその動作を確認します。これを行うには、まず、ポートレットをOracle Application Serverにデプロイする必要があります。JDeveloperをインストールしたときに、WebCenter Preconfigured OC4JというスタンドアロンOC4Jが自動的にダウンロードされているため、それを使用できます。ただし、最初に、このOC4Jと使用しているJDeveloperのインスタンスとの間の接続を確立する必要があります。これから、それを行います。
ポートレットをデプロイする場合、使用しているいずれかのアプリケーション・サーバーへの接続を確立する必要があります。このチュートリアルでは、ポートレットをWebCenter Preconfigured OC4Jにデプロイします。これから、このOC4Jへの接続を設定します。
初めてこのOC4Jを起動した場合は、WebCenter Preconfigured OC4Jをインストールするかどうか尋ねるメッセージが表示されます。
OC4Jインスタンスの初期化が完了したことを示すメッセージを待ってから、次に進みます(図3-15を参照)。
Preconfigured OC4Jを初めて起動すると、JDeveloperエディタにREADMEファイルが表示されます。このドキュメントには、Preconfigured OC4Jの起動、停止および接続の方法が記載されています。また、ポートのデフォルトがリストされ、有用なトラブルシューティング・ヒントが示されています。将来このファイルにアクセスする必要が生じた場合は、JDeveloperのメイン・メニューから「ヘルプ」、「WebCenter Preconfigured OC4J README」の順に選択します。
Preconfigured OC4Jはコンピュータにインストールされましたが、さらに(JDeveloperがPreconfigured OC4Jの場所を認識できるように)Preconfigured OC4Jへの接続を確立する必要があります。
MyLocalOC4Jを入力します。
oc4jadminを入力し、パスワードとしてwelcomeを入力します。 welcomeは、WebCenter Preconfigured OC4Jのデフォルト・パスワードです。
「localhost」を受け入れます。このチュートリアルでは、URL内にlocalhostを使用するとローカル・コンピュータを参照できることを前提としています。ただし、ファイアウォール構成によってはこのアドレスへのアクセスがブロックされることもあります。このような場合は、localhostが許可されるようにファイアウォール構成を変更するか、ここにコンピュータの固定IPアドレスを入力します。使用しているコンピュータがDHCPを使用するように構成されていて固定IPアドレスを持たない場合は、localhostが機能するようにファイアウォールを再構成してください。
22667(Preconfigured OC4JのデフォルトのRMIポート)に変更します。「URLパス」は空白のままでかまいません。この情報は必要ありません(図3-19)。
何も問題がなければ、ステータス・ペインに成功メッセージが表示されます。テストが失敗すると、ステータス・フィールドにエラー・メッセージが表示されます。ウィザードの前のページに戻ってエントリを訂正するには、「戻る」ボタンを使用します。
接続が確立されたので、ポートレットをWARファイルに含める準備ができました。WARはweb application archiveの略語で、ポートレットのデプロイに必要なすべてのリソース、ポートレットおよびデプロイメント・ディスクリプタをまとめてパッケージ化したものです。
このレッスンでは、JavaポートレットをローカルのWebCenter Preconfigured OC4Jにデプロイする方法を学びます。ポートレットをデプロイする場合、J2EEサーバー上で実行できるようにポートレットをパッケージ化します。OracleAS Portalの知識がある場合、これは実際にはポートレット・プロバイダを作成することです。これは、WSRPの世界ではポートレット・プロデューサと呼ばれています。
表3-2 デプロイメント・プロファイルの作成 -- WARファイル
| 設定 | 値 |
|---|---|
|
デプロイメント・プロファイル名 |
|
|
ディレクトリ |
「手順1: JSR 168 Javaポートレット・ウィザードの使用」の手順7で選択したディレクトリにナビゲートします。デフォルトを受け入れるだけでよいはずです。 |
TutorialPortletsを入力します(図3-22を参照)。
デプロイメント・プロファイルTutorialPortlets.deployが表示されます(図3-23を参照)。
(JDeveloperウィンドウの一番下にある)デプロイメント・ログに「デプロイが終了」というメッセージが表示されるのを待って、デプロイメントが正常に完了したことを確認します。
今度はポートレットを実行して、適切に機能することを確認します。
http://<host>:<port>/<context-root>/portlets/wsrp2?WSDL
各パラメータの意味は次のとおりです。
| パラメータ | 値 |
|---|---|
|
host |
WebCenter Preconfigured OC4Jへの接続に使用したホスト名。このレッスンで以前に、デフォルト (localhostではなくコンピュータのIPアドレスを使用するように選択した場合、ここにはそのIPアドレスを入力してください。) |
|
port |
HTTPリスナー・ポート。WebCenter Preconfigured OC4Jの場合は、このPreconfigured OC4Jがリスニングするデフォルト・ポートである6688を使用してください。1 |
|
context-root |
このレッスンの手順8で設定したTutorialPortlets。 |
|
1
Preconfigured OC4Jがリスニングするポートを変更するには、JDEVHOME¥jdev¥extensions¥oracle.adfp.seededoc4j.10.1.3.2.0¥j2ee¥home¥config¥default-web-site.xmlに移動し、エントリ<web-site .... port="6688" ...>を変更します。 |
したがって、このチュートリアルでは、URLは次のようになります。
http://localhost:6688/TutorialPortlets/portlets/wsrp2?WSDL
このURLを書き留めておきます。このURLは、「手順5: Oracle WebCenter Frameworkへのポートレットの登録」で必要になります。
デプロイしたポートレットが、Webサービスとして公開されています。ブラウザに表示されているのは、このWebサービスを記述するWeb Services Description Language(WSDL)です。WSDLが図3-24のように表示されていれば、次の手順は、ポートレットを消費するJSFページを作成することです。
JavaServer Faces(JSF)ページを作成するには、次のようにします。
JSF JSPウィザードが開きます。
MyPageを入力します。「ディレクトリ名」には、デフォルト場所を受け入れてかまいません。
アプリケーション・ナビゲータで、「ViewController」の「Webコンテンツ」の下に、作成したページMyPage.jspxが表示されます(図3-28を参照)。
また、ビジュアル・エディタにページが開かれ、コンポーネントをすぐに追加できるようになります。
これまでに、ポートレット、ポートレット・プロデューサおよびJavaServer Facesページを作成しました。今度は、これらをすべて結合し、プロデューサへのアクセス方法をページに指示する必要があります。これは、アプリケーションへのプロデューサの登録とも呼ばれます。
これによって、WSRPプロデューサの登録ウィザードが開きます。
TutorialProducerを入力します。
http://localhost:6688/TutorialPortlets/portlets/wsrp2?WSDL
ローカルのPreconfigured OC4Jを使用しているため、このチュートリアルではプロキシ情報は必要ありません。
図3-31のようなメッセージが表示されます。
アプリケーション・ナビゲータに、「Portlet Producers」ノードが表示されます(図3-32を参照)。このノードを開き、TutorialProducerが表示されることを確認します。
これで、ポートレットMyJavaPortletの位置とそのアクセス方法がページに認識されます。これから、このことを確認します。
ポートレットをテストするには、ポートレットをMyPage.jspxに追加してページを実行し、ポートレットが予測どおりに表示されるかどうかを確認します。
これによって、構造ウィンドウ内にページが開きます(図3-33を参照)。
「h:form」にドラッグします。ポートレットがフォームに含まれていることを確認できます。構造ウィンドウで、これを簡単に確認できます。 現在、図3-35のように表示されています。
新しく生成されたいくつかのファイルおよびフォルダは、アプリケーション・ナビゲータで表示されます。展開されたナビゲータは、図3-36のようになります。WSRPプロデューサのポートレットを消費するときに、これらの内部ファイルが作成されます。これらのファイルはいずれも編集する必要がありません。
今度は、ページを実行します。
これには数秒かかることがあります。「実行中: 埋込みOC4Jサーバー」というメッセージ・ログが表示されます。ポートレットはこのチュートリアルの最初にダウンロードしたPreconfigured OC4J内で実行されていますが、ページそのものはJDeveloperの埋込みOC4J内で実行されています。
ページが新しいブラウザ・ウィンドウ内に開きます(図3-37)。
2つのオプション(「リフレッシュ」および「カスタマイズ」)が表示されます(図3-38)。「パーソナライズ」オプションは表示されないことに注意してください。MyJavaPortletではユーザーのパーソナライズをサポートしていますが、「パーソナライズ」オプションが表示されるのは、セキュリティ・モデルを実装するアプリケーション内にポートレットが表示されていて、かつ有効なユーザー資格証明でログインしている場合に限られます。「パーソナライズ」モードは、第8章「セキュリティの設定」でテストします。
ここでは、「カスタマイズ」モードをテストします。
My First Java Portlet)に変更します(図3-39を参照)。
ポートレットがブラウザに再表示され、選択した名前がヘッダーに表示されます。
さて、このポートレットは適切に機能していることがわかりましたが、あまり面白みはありません。今度は、レンダリングされるポートレットのテキスト・ボックスにユーザーがHTMLを貼り付けることができるように、いくつかのロジックを追加します。
この手順では、レンダリングされるポートレットのテキスト・ボックスにユーザーがHTMLを貼り付けることを可能にするコードを追加します。
アプリケーション・ナビゲータの右側に、新しい編集ウィンドウが開きます。
コピーして貼り付けるコードは、次のとおりです。
<% String[] str = {"Portlet Content"}; PortletPreferences prefs = renderRequest.getPreferences(); str = prefs.getValues("portletContent",str); for (int i=0; i<str.length; i++) { %><%=(i<str.length-1)?str[i]+", ":str[i]%><%}%>
このコードによって、「パーソナライズ」モードまたは「カスタマイズ」モードで設定セットが取得され、ポートレットの「表示」モードでユーザーに表示されます。
<% String[] str = {"Portlet Content"}; str = prefs.getValues("portletContent",str); %> <tr><td width="20%"> <p class="portlet-form-field" align="right"> Content</p> </td><td width="80%"> <textarea rows="10" cols="60" class="portlet-form-input-field" name="portletContent"><% for (int i=0; i<str.length; i++) {%><%= (i<str.length-1) ? str[i]+", " : str[i] %><%}%> </textarea> </td></tr>図3-41 edit.jspへのコードの追加
これで、「パーソナライズ」モードで変更した内容を格納するファイルを編集しました。今度は、「カスタマイズ」モードで変更した内容を格納するファイル(edit_defaults.jsp)にも同様の変更を行う必要があります。
MyJavaPortlet.java(このポートレットのJavaコードが含まれるファイル)も、同様に編集する必要があります。
「processAction」メソッドにスクロールダウンし、//Save the preferencesというコード行を見つけます。次の2行の(太字で示された)コードを挿入します。
// Save the preferences. PortletPreferences prefs = request.getPreferences(); String param = request.getParameter(PORTLETTITLE_KEY); prefs.setValues(PORTLETTITLE_KEY, buildValueArray(param)); String contentParam = request.getParameter("portletContent"); prefs.setValues("portletContent", buildValueArray(contentParam)); prefs.store();
いくつか変更を行ったので、Preconfigured OC4Jにポートレットを再デプロイする必要があります。
「デプロイが終了」というメッセージが表示されるのを待ちます。JDeveloperによって、ポートレットのデプロイ前に、コードが自動的に保存およびコンパイルされることがわかります。
あるいは、埋込みOC4Jサーバーのログ・ウィンドウで、赤い四角形の「終了」アイコンをクリックします。ページをテストする前には、埋込みOC4Jを停止することをお薦めします。ページを実行すると、JDeveloperによって埋込みOC4Jサーバーが自動的に再起動されます。
新しいブラウザ・ウィンドウが開き、MyJavaPortletが表示されます。
「コンテンツ」フィールドを追加したので、「カスタマイズ」アクションでは図3-43のようなテキスト・ボックスが表示されます。
「MyJavaPortlet」に戻します。
<p>Read <em>The Path to Portlet Interoperability</em> by John Edwards in <strong>Oracle Magazine</strong> - Nov-Dec 2005. </p> <p>It discusses JSR 168 and WSRP open portals. </p>図3-44 「ポートレット・タイトル」および「コンテンツ」のカスタマイズ
ブラウザは図3-45のように表示されます。
デフォルト・テキスト(Welcome, this is the view mode.)を削除する場合は、「view.jsp」をダブルクリックし、コードの最後の行を削除し、Preconfigured OC4Jにポートレットを再デプロイしてから、ページを再実行するだけです。
次のレッスンでは、イメージ・フォームのコンテンツをページに追加します。
|
![]() Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|