ヘッダーをスキップ

Oracle WebCenter Framework WebCenterアプリケーションの構築 - ステップ・バイ・ステップ
10g(10.1.3.2.0)

E05617-02
目次
目次
索引
索引

戻る 次へ

2 ポートレットの構築

この章では、JSR 168を使用するJavaポートレットとOracle固有のAPIを使用するPDK-Javaポートレットの2種類のポートレットを構築する方法について学びます。

この章の内容は次のとおりです。

始める前に

この章の手順を始める前に、ダウンロードしたサンプル・ファイルに含まれるinstall.htmlファイルの手順を必ず完了しておきます。次に、次の手順を実行します。

ポートレット用のプロジェクトの作成

アプリケーション内のものを見つけやすくするために、プロジェクトを作成してポートレットを格納することができます。

ポートレット用のプロジェクトを作成するには、次のようにします。

  1. アプリケーション・ナビゲータで、「SRDemoSample_Starter」アプリケーションを右クリックし、「新規プロジェクト」を選択します。

  2. 「項目」リスト(図2-1)で「空のプロジェクト」を選択し、「OK」をクリックします。

    図2-1    空のプロジェクトの作成


    画像の説明

  3. 「プロジェクト名」フィールドに、ProdDetailPortletと入力します。

  4. デフォルトのディレクトリ名を使用し、「OK」をクリックしてプロジェクトを作成します。

  5. プロジェクト・プロパティを表示するには、プロジェクト名(この場合は「ProdDetailPortlet」)を右クリックし、ポップアップ・メニューから「プロジェクト・プロパティ」を選択します。

  6. プロジェクトのテクノロジ・スコープ(プロジェクトに含めるテクノロジ)、すなわち「Java」、「JSPおよびサーブレット」、「ポートレット」を選択します(図2-2を参照)。

    図2-2    新規プロジェクトのテクノロジ・スコープ


    画像の説明

  7. 「OK」をクリックします。

  8. 再度、手順1〜7に従って2つ目のプロジェクトを作成し、SRStatusPortletと名前を付けます。

  9. アプリケーションを保存します。

Oracle WebCenter Preconfigured OC4Jへのアプリケーション・サーバー接続の作成

ポートレットをアプリケーション・サーバーのOracle JDeveloperにデプロイするには、まず、Oracle JDeveloperに埋め込まれているOracle WebCenter Preconfigured OC4Jへの接続を確立する必要があります。

Preconfigured OC4Jへのアプリケーション・サーバー接続を作成するには、次のようにします。

  1. Oracle JDeveloperで、「WebCenter Preconfigured OC4Jの起動」アイコンをクリックします。readme.htmlファイルが表示されます。このファイルには、Preconfigured OC4Jに関する接続情報が格納されています。

  2. 接続ナビゲータで、「接続」を右クリックし、「アプリケーション・サーバー接続の作成」を選択します。

    ヒント

    接続ナビゲータが表示されない場合は、「表示」メニューから「接続ナビゲータ」を選択します。 

  3. 「アプリケーション・サーバー接続の作成」ウィザードの「ようこそ」ページが表示されたら、「次へ」をクリックして「タイプ」ページを表示します。

  4. 「接続名」フィールド(図2-3)に、SRDemoConnectionと入力します。

  5. 「接続タイプ」リストから、「スタンドアロンOC4J 10g 10.1.3」を選択します。

    図2-3    アプリケーション・サーバー接続の作成: タイプ


    画像の説明

  6. 「次へ」をクリックして「認証」ページを表示します。

  7. 関連する中間層に対するApplication Server Controlコンソール管理者のユーザー名およびパスワードを入力します。通常、管理者のユーザー名はoc4jadmin、パスワードはwelcomeです。

  8. 「次へ」をクリックして「接続」ページを表示します。

  9. 「ホスト名」フィールドに、localhostと入力します。

  10. 「RMIポート」フィールドに、Remote Method Invocation(RMI)サーバーがOC4Jサーバーにバインドするためのポート番号を入力します。Preconfigured OC4Jのデフォルト値は、22667です。

  11. 「次へ」をクリックして「テスト」ページを表示します。

  12. 「接続のテスト」をクリックして接続を確認します。何も問題がなければ、成功メッセージが表示されます。テストが失敗した場合は、接続情報を確認する必要があります。

  13. 「終了」をクリックします。

手順1: Product Detailsポートレット(JSR 168ポートレット)の構築

単純なJSR 168ポートレットを構築するために、サンプルのService Request Statusポートレットを構築する手順を実行します。このポートレットをデプロイすると、「My Acme」ページに追加できます。Ajaxを使用してより高度にインタラクティブなJSR 168ポートレットのライブ・デモ・バージョンを表示するには、Service Requestデモの完成バージョンを実行するだけです。

JSR 168ポートレットの詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。

JSR 168ポートレットを構築するには、次の作業を行います。

JSR 168ポートレットの作成

Oracle WebCenter Frameworkには、Javaポートレット・ウィザードが用意されているため、ポートレットのモードごとに単純な実装を迅速に作成できます。このウィザードを使用して、ポートレットの作成を開始します。

JSR 168ポートレットを作成するには、次のようにします。

  1. Oracle JDeveloperのアプリケーション・ナビゲータで、「SRDemoSample_Starter」アプリケーション内の「ProdDetailsPortlet」プロジェクトを右クリックし、「新規」を選択します。

    ヒント

    このプロジェクトが存在しない場合は、この章の「ポートレット用のプロジェクトの作成」の項で説明した指示に従います。 

  2. 新規ギャラリで、「Web Tier」カテゴリを開き、「Portlets」を選択します。

  3. 「項目」リスト(図2-4)で、「規格に基づいたJavaポートレット(JSR 168)」を選択してJSR 168ポートレットを構築します。

    図2-4    新規JSR 168ポートレットの作成


    画像の説明

  4. 「OK」をクリックしてJSR 168 Javaポートレット・ウィザードを表示します。

  5. ウィザードの「ようこそ」ページが表示されたら、「次へ」をクリックして「Webアプリケーション」ページを表示します。

  6. 「サーブレット2.4¥¥JSP 2.0 (J2EE 1.4)」を選択します。

    ヒント

    プロジェクトに対してWebアプリケーションがすでに作成されている場合は、ウィザードのこのページは表示されず、直接「一般ポートレット・プロパティ」ページが表示されることがあります。 

  7. 「次へ」をクリックして「一般ポートレット・プロパティ」ページを表示します。

  8. 「名前」および「クラス」フィールド(図2-5)にProductDetailsPortletと入力し、「Oracle拡張機能を使用してWSRP V2のポートレット間通信を可能にします。」チェック・ボックスの選択を解除します。

    ポートレットを表すこの名前でクラスが作成されます。

    図2-5    JSR 168ポートレットの一般ポートレット・プロパティ


    画像の説明

  9. 「次へ」をクリックします。

  10. 「表示名」フィールド(図2-6)に、Product Details Portletと入力します。

  11. 「ポートレット・タイトル」フィールドに、Product Details Portletと入力します。

  12. 「短いタイトル」フィールドに、Product Detailsと入力します。

    図2-6    JSR 168ポートレットの名前と属性


    画像の説明

  13. 「終了」をクリックし、ポートレットの残りの属性についてデフォルト設定を受け入れます。

    これで、Product Detailsポートレットがアプリケーション・ナビゲータに表示されます(図2-7を参照)。

    図2-7    アプリケーション・ナビゲータでのProduct Detailsポートレット


    画像の説明

  14. 作業内容を保存します。

JSR 168ポートレット用のWebサービス・プロキシの作成

JSR 168ポートレットでは、Webサービスをデータソースとして使用します。アプリケーション内のポートレットでWebサービスを使用するには、まず、ポートレット・プロジェクト用にWebサービス・プロキシを作成する必要があります。

Webサービス・プロキシを作成するには、次のようにします。

  1. ProductDetailsPortletが含まれる「ProdDetailPortlet」プロジェクトを右クリックし、「新規」を選択します。

  2. 「Business Tier」ノード(図2-8)の下の「Web Services」を選択し、「Webサービス・プロキシ」を選択します。

    ヒント

    新規ギャラリに「Business Tier」ノードが表示されない場合は、「フィルタ方法」ドロップダウン・リストから「すべてのテクノロジ」オプションを選択してフィルタ処理をする必要があります。 

    図2-8    新規ギャラリ: Webサービス・プロキシ


    画像の説明

  3. 「OK」をクリックします。

  4. ウィザードの「ようこそ」ページで、「次へ」をクリックします。

  5. 「Webサービス記述」ページ(図2-9)で、次のようなWebサービスのWSDLを入力します。

    http://localhost:8888/ProductDetailsWS/ProductDetailsWSSoapHttpPo
    rt?WSDL
    


    注意

    このWSDLでは、localhostおよびポートは、Webサービスをデプロイしたシステムを指しています。Webサービスは、SRDemo OC4Jにデプロイされます。  


    図2-9    Webサービス記述の設定


    画像の説明

  6. 「次へ」をクリックします。


    注意

    「モデルを作成中」ダイアログ・ボックスが表示されない場合は、「次へ」を再度クリックする必要があります。 


  7. Webサービスのモデルが作成されると、WebサービスのエンドポイントURLを検証できるページ(図2-10)が表示されます。

    図2-10    Webサービス・ポート・エンドポイントの検証


    画像の説明

  8. 「終了」をクリックし、Webサービス・プロキシの残りのパラメータについてデフォルト値を受け入れます。

  9. ProductDetailsWSSSoapHttpPortClient.javaファイルを閉じます。

JSR 168ポートレットへのポートレット・ロジックの追加

この時点で、ポートレットはほとんど機能しません。実際には、ようこそメッセージを表示し、エンド・ユーザーがポートレット・タイトルをパーソナライズできるようにしているだけです。ポートレットが必要な特定の機能を実行するようにするには、必要な機能を実装するビジネス・ロジックでサンプル・コードを拡張する必要があります。

まず、ポートレットに製品タイプのリストを表示させます。このリストはWebサービスから取得します。その後で、ポートレットを拡張し、エンド・ユーザーが製品タイプを選んで特定の製品を選択できるようにします。製品が選択されると、詳細情報が簡単な説明およびイメージとともに表示されます。

JSR 168ポートレットにポートレット・ロジックを追加するには、次のようにします。

  1. アプリケーション・ナビゲータで、「Webコンテンツ」ノードを開いて「view.jsp」を右クリックし、「開く」を選択してビジュアル・エディタにファイルを開きます。

    ヒント

    view.jspを探すには、SRDemoSample_Starterアプリケーションの下で、「Portlets」「Webコンテンツ」「ProductDetailsPortlet¥html」の順にノードを開きます。 

  2. ビジュアル・エディタの下部で、「ソース」タブをクリックしてページのソース・コードを表示します。

  3. 既存のコードを例2-1に示すコードで置き換えます。

    例2-1    view.jspのコード

    <%@ page contentType="text/html"
    import="javax.portlet.*,java.util.*,portlets.ProductDetailsPortlet,portlets.resource.Pr
    oductDetailsPortletBundle"%>
     
    <%@ page contentType="text/html"
    import="portlets.proxy.ProductDetailsWSSoapHttpPortClient,portlets.proxy.types.productd
    etailsws.types.ProductDetailsBean"%>
     
    <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
     
    <portlet:defineObjects/>
     
    <%
        String prodType = renderRequest.getParameter("prodType");
    %>
     
    <table cellpadding="10%">
     <tr>
      <td>
       <font class="portlet-section-header">
          Product Types
       </font>
      </td>
      <td>
       <font class="portlet-section-header">
          Products
       </font>
      </td>
      <td>
       <font class="portlet-section-header">
          Details
       </font>
      </td>
     </tr>
     <tr>
       <td>
    <%
       ProductDetailsWSSoapHttpPortClient proxy = new ProductDetailsWSSoapHttpPortClient();
       Vector productTypes =  proxy.getProductTypes();
           for (int i=0; i<productTypes.size(); i++)
           {
              PortletURL productURL = renderResponse.createRenderURL();
              productURL.setParameter ("prodType", productTypes.elementAt(i).toString());   
    %>
            
             <font class="portlet-font">
        
               <a href="<%=productURL%>">
                 <%= productTypes.elementAt(i) %>
               </a></font><br>
    <%
           }
    %>
     
      </td>
     </tr>
    </table>
    

  4. 「ファイル」メニューから、「すべて保存」を選択します。

アプリケーション・サーバーへのJSR 168ポートレットのデプロイ

ポートレットの構築が終了したら、パッケージ化してポートレット・コンテナにデプロイする必要があります。

  1. アプリケーション・ナビゲータで、「ProdDetailPortlet」プロジェクトを右クリックし、「新規」を選択します。

  2. 新規ギャラリで、「General」カテゴリを開き、「Deployment Profiles」を選択します。

  3. 「項目」リスト(図2-11)で、「WARファイル」を選択します。

    図2-11    WARデプロイメント・ファイルの作成


    画像の説明

  4. 「OK」をクリックして「デプロイメント・プロファイルの作成 -- WARファイル」ダイアログ・ボックスを表示します。

    ヒント

    このダイアログ・ボックスは、アプリケーション・ナビゲータでweb.xmlファイルを右クリックし、「WARデプロイメント・ファイルの作成」を選択しても表示できます。 

  5. 「デプロイメント・プロファイル名」フィールド(図2-12)に、ProductDetailsPortletと入力します。

  6. デフォルト・ディレクトリを使用します。

    図2-12    「デプロイメント・プロファイルの作成 -- WARファイル」ダイアログ・ボックス


    画像の説明

  7. 「OK」をクリックして「WARデプロイメント・プロファイルのプロパティ」ダイアログ・ボックスを表示します。

  8. 「J2EE Webコンテキスト・ルートを指定」を選択し、対応するフィールドにProductDetailsPortletと入力します(図2-13を参照)。

    図2-13    WARデプロイメント・プロファイルのプロパティ


    画像の説明

  9. 「OK」をクリックします。

  10. アプリケーション・ナビゲータ(図2-14)で、「ProdDetailPortlet」「リソース」の順にノードを開き、デプロイメント・ファイルを確認します。

    図2-14    アプリケーション・ナビゲータでのProductDetailsPortlet.deploy


    画像の説明

  11. 「ファイル」メニューから、「すべて保存」を選択します。

  12. 「ProductDetailsPortlet.deploy」を右クリックし、図2-15に示す「配布先」メニューから「SRDemoConnection」を選択します。

    「アプリケーションの構成」ダイアログ・ボックスが表示されます。

    図2-15    「アプリケーションの構成」ダイアログ・ボックス


    画像の説明


    注意

    メニューに「SRDemoConnection」が表示されない場合は、この章の「Oracle WebCenter Preconfigured OC4Jへのアプリケーション・サーバー接続の作成」の項で示した手順に従います。 


  13. 「OK」をクリックします。

  14. 「デプロイ - ログ」に「---- デプロイが終了 ----」メッセージが表示されたら、エラーが発生していないことを確認します。

プロデューサの登録

ポートレットは作成およびデプロイされたので、アプリケーションで使用する準備ができました。ポートレット・プロデューサをアプリケーションに登録して、アプリケーション開発者がポートレットをページに追加できるようにします。

プロデューサを登録するには、次のようにします。

  1. ポートレット・プロデューサはアプリケーションに関連付けられるため、アプリケーションまたはアプリケーション内の任意のプロジェクトを右クリックして起動します。しかし、最も簡単な方法は、UserInterfaceプロジェクトから新規ギャラリを開くことです。UserInterfaceプロジェクトのテクノロジ・スコープは、プロデューサ登録ウィザードが新規ギャラリ内に表示されるように設定されています。

  2. ポップアップ・メニューから「新規」を選択します。

  3. 「Web Tier」「Portlets」で、「WSRPプロデューサの登録」を選択し、「OK」をクリックします。

    ヒント

    新規ギャラリに「Business Tier」ノードが表示されない場合は、「フィルタ方法」ドロップダウン・リストから「すべてのテクノロジ」オプションを選択してフィルタ処理をする必要があります。 

  4. 「ようこそ」ページで、「次へ」をクリックします。

  5. 「名前」ページ(図2-16)で、「名前」フィールドにProductDetailsProducerと入力し、「次へ」をクリックします。

    図2-16    WSRPプロデューサ名


    画像の説明

  6. 「接続」ページ(図2-17)で、次のようなPreconfigured OC4JのWSRPコンテナのURLを入力します。

    http://localhost:6688/ProductDetailsPortlet/portlets/wsrp1?WSDL
    
    

    図2-17    WSRPプロデューサURL


    画像の説明

  7. 「次へ」をクリックします。

  8. 接続が作成されたら、「終了」をクリックします。成功メッセージが表示されたら、「OK」をクリックします。

    図2-18    WSRPプロデューサの登録の成功メッセージ


    画像の説明

  9. これで、ポートレットはページに追加できます。

手順2: Service Request Statusポートレット(PDK-Javaポートレット)の構築

Service Requestアプリケーションでは、サービス・リクエストIDを指定すると、特定のサービス・リクエストの現行ステータスが表示されるようにします。このような情報を表示するポートレットを構築できます。

PDK-Javaポートレットの詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。

PDK-Javaポートレットを構築するには、次の作業を行います。

PDK-Javaポートレットおよびプロデューサの作成

Oracle WebCenter Frameworkには、Javaポートレット・ウィザードが用意されているため、ポートレットのモードごとに単純な実装を迅速に作成できます。このウィザードを使用して、ポートレットの作成を開始します。

  1. Oracle JDeveloperのアプリケーション・ナビゲータで、「SRDemoSample_Starter」アプリケーションを開きます。

  2. 「SRStatusPortlet」プロジェクトを右クリックし、「新規」を選択します。

    ヒント

    このプロジェクトが存在しない場合は、この章の「ポートレット用のプロジェクトの作成」の項で説明した指示に従います。 

  3. 新規ギャラリで、「Web Tier」カテゴリを開き、「Portlets」を選択します。

  4. 「項目」リストで、「Oracle PDK-Javaポートレット」を選択します(図2-19を参照)。

    図2-19    新規PDK-Javaポートレットの作成


    画像の説明

  5. 「OK」をクリックしてOracle PDK-Javaポートレット・ウィザードを表示します。

  6. ウィザードの「ようこそ」ページが表示されたら、「次へ」をクリックして「Webアプリケーション」ページを表示します。

  7. 「次へ」をクリックして「ポートレットの説明」ページを表示します。

  8. 「ポートレット名」フィールドに、SRStatusPortletと入力します。

    これは内部名にすぎず、エンド・ユーザーには公開されません。

  9. 「表示名」フィールドに、Service Request Status Portletと入力します。

    これは、ページに追加するポートレットを選択するOracle JDeveloperのコンポーネント・パレットなどのポートレット選択リストに表示される名前です。

  10. 「説明」フィールドに、次のように入力します。

    This portlet displays status information about a given service request.

  11. 「タイムアウト(秒)」フィールドは、デフォルト値の40のままにしておきます。

  12. 「タイムアウト・メッセージ」フィールドに、次のように入力します。

    Service Request Status Portlet timed out

    図2-20    「ポートレットの説明」ページ


    画像の説明

  13. 「次へ」をクリックして「ビュー・モード」ページを表示します。

  14. 「ページを表示」チェック・ボックスがデフォルトで選択されています。表示モードには、次のように指定します。

    1. 「実装スタイル」リストでは、「JSP」が選択されていることを確認します。

    2. 「ファイル名」フィールドは、デフォルト値のSRStatusPortletShowPage.jspのままにしておきます。

  15. このポートレットには詳細表示モードを指定しないため、「詳細ページを表示」チェック・ボックスの選択は解除したままにしておきます。

    図2-21    「ビュー・モード」ページ


    画像の説明

  16. 「次へ」をクリックして「カスタマイズ・モード」ページを表示します。

  17. 「ページの編集」チェック・ボックスがデフォルトで選択されています。編集モードには、次のように指定します。

    1. 「実装スタイル」リストでは、「JSP」が選択されていることを確認します。

    2. 「ファイル名」フィールドは、デフォルト値のSRStatusPortletEditPage.jspのままにしておきます。

  18. このポートレットにはデフォルト編集モードを指定しないため、「デフォルト・ページの編集」チェック・ボックスの選択は解除したままにしておきます。

    図2-22    「カスタマイズ・モード」ページ


    画像の説明

  19. 「次へ」をクリックして「追加モード」ページを表示します。

  20. 「ヘルプ・ページ」チェック・ボックスを選択します。ヘルプ・モードには、次のように指定します。

    1. 「実装スタイル」リストから、「HTMLファイル」を選択します。

    2. 「ファイル名」フィールドは、デフォルト値のSRStatusPortletHelpPage.htmlのままにしておきます。

  21. 「ページ情報」チェック・ボックスを選択します。情報モードには、次のように指定します。

    1. 「実装スタイル」リストから、「HTMLファイル」を選択します。

    2. 「ファイル名」フィールドは、デフォルト値のSRStatusPortletAboutPage.htmlのままにしておきます。

      図2-23    「追加モード」ページ


      画像の説明

  22. 「次へ」をクリックして「パブリック・ポートレット・パラメータ」ページを表示します。

  23. 「パブリック・ポートレット・パラメータ」ページで、「追加」をクリックします。

  24. 新規パラメータの名前をServiceReqIDに変更します。

  25. 新規パラメータの表示名をServiceReqIDに変更します。

  26. 新規パラメータの説明をService Request IDに変更します。

    図2-24    パブリック・ポートレット・パラメータ


    画像の説明

  27. 「次へ」をクリックして「パブリック・ポートレット・イベント」ページを表示します。

  28. 「次へ」をクリックして「プロデューサの説明」ページを表示します。

  29. 「プロデューサ名」フィールドに、srstatusproducerと入力します。

  30. すべてのチェック・ボックス、すなわち「デプロイ・プロパティ・ファイルの生成」「XMLエントリの生成」「索引JSPの生成」が選択されていることを確認します。

    図2-25    「プロデューサの説明」ページ


    画像の説明

  31. 「終了」をクリックしてポートレット用のファイルを生成します。アプリケーション・ナビゲータで、「SRStatusPortlet」プロジェクトの下のすべてのノードを開くと、次のファイルが表示されます。

    • 選択したポートレット・モードごとのファイル

      • SRStatusPortletAboutPage.html

      • SRStatusPortletEditPage.jsp

      • SRStatusPortletHelpPage.html

      • SRStatusPortletShowPage.jsp

    • web.xml

    • _default.properties

    • srstatusproducer.properties

    • provider.xml

    • index.jsp

    これらのファイルはすべてポートレットを正常にデプロイおよび実行するのに必要です。ただし、テストのためにOracle JDeveloperで使用されるindex.jspは除きます。

    図2-26    Service Request Statusポートレット用に生成されたファイル


    画像の説明

  32. 「ファイル」メニューから、「すべて保存」を選択します。

PDK-Javaポートレットへのポートレット・ロジックの追加

この時点で、ポートレットはほとんど機能しません。実際には、ようこそメッセージを表示し、エンド・ユーザーがポートレット・タイトルをパーソナライズできるようにしているだけです。ポートレットが必要な特定の機能を実行するようにするには、必要な機能を実装するビジネス・ロジックでサンプル・コードを拡張する必要があります。

Service Requestポートレットは、サービス・リクエストIDが指定されると、SRDemoデータベースに問い合せて特定のサービス・リクエストのステータスを検出し、その情報を表に表示する必要があります。

  1. アプリケーション・ナビゲータで、「SRStatusPortlet」プロジェクトを右クリックし、「新規」を選択します。

  2. 新規ギャラリで、「General」カテゴリを開き、「Simple Files」を選択します。

  3. 「項目」リストで、「Javaクラス」を選択します。

    図2-27    Javaクラスの作成


    画像の説明

  4. 「OK」をクリックして「Javaクラスの作成」ダイアログ・ボックスを表示します。

  5. 「名前」フィールドに、SRConnectionUtilと入力します。

  6. このダイアログ・ボックスの残りのオプションは、デフォルト値のままにしておきます。

    図2-28    「Javaクラスの作成」ダイアログ・ボックス


    画像の説明

  7. 「OK」をクリックします。

  8. 生成されたコードを例2-2に示すコードで置き換えます。

    例2-2    SRDemoデータベースへの接続を作成するコード

    package srstatusportlet;
     
    import java.sql.Connection;
    import java.sql.SQLException;
     
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
     
    import javax.sql.DataSource;
     
     
    public class SRConnectionUtil {
        public SRConnectionUtil() {
        }
        
        public static Connection getConnection ()
        { 
          InitialContext ctx;
          DataSource ds;
          Connection conn = null;
          try
          {
            ctx = new InitialContext();
            ds = (DataSource) ctx.lookup("jdbc/SRDemoCoreDS");
            conn = ds.getConnection();
          }
          catch (NamingException ne) 
          {
            conn = null;
          }
          catch (SQLException sqle) 
          {
            conn = null;
          };
          return conn;
        }   
        
    }
    

    このクラスは、ポートレット・コードでの問合せ実行対象となるSRDemoデータベースへの接続を作成します。

  9. ファイルを保存します。

  10. まだ作成していない場合は、ダウンロードしたサンプル・ファイルに含まれるinstall.htmlファイルの説明に従って、srdemoスキーマを指すデータベース接続を作成します。

  11. アプリケーション・ナビゲータで、「SRStatusPortletShowPage.jsp」を右クリックし、「開く」を選択します。

  12. 「ソース」タブを選択してページのソース・コードを表示します。

  13. 既存のコードを選択し、例2-3に示すコードで置き換えます。

    例2-3    Service Request Statusポートレット用のコード

    <%@page contentType="text/html; charset=windows-1252"
            import="oracle.portal.provider.v2.render.PortletRenderRequest"
            import="oracle.portal.provider.v2.http.HttpCommonConstants"
            import="oracle.portal.provider.v2.ParameterDefinition"
            import="srstatusportlet.SRConnectionUtil"
            import="java.sql.Connection"
            import="java.sql.Statement"
            import="java.sql.ResultSet"
            import="java.sql.SQLException"
    %>
     
    <%
       PortletRenderRequest pReq = (PortletRenderRequest)
          request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
          
       // Reading the service request ID, as a parameter
       String SRID = pReq.getParameter("ServiceReqID");
     
       // Creating the database connection
       Connection conn = SRConnectionUtil.getConnection();
       
       // Testing if the parameter has been wired. If no parameter is passed
       // it is set to 104, by default.
       if (SRID == null)
       {
         %>
         Please map the service request ID to this portlet's input parameter.
         <%
         SRID = "104";
       }
       
       if (conn == null) {
        %>
        Couldn't connect to the database.
        <%
       } 
       else
         try 
         {
          Statement stmt = conn.createStatement();
          // Constructing the SELECT statement
          String query =
              "SELECT svr_id, status, " +
              "users1.first_name || ' ' || users1.last_name createdby, " +
              "users2.first_name || ' ' || users2.last_name assignedto, " + 
              "TO_CHAR(assigned_date, 'Dy, Mon DD, YYYY') " +
              "FROM service_requests, users users1, users users2 " +
              "WHERE svr_id = " + SRID + " AND " +
              "users1.user_id = service_requests.created_by AND " +
              "users2.user_id = service_requests.assigned_to";
                         
          // Executing the query.
          ResultSet rs = stmt.executeQuery(query);
          // Stepping through the result set.
          while (rs.next()) 
          {
    %>
    <table>
     <tr>
      <td>
       <font class="PortletText1">
         Service Request ID:
       </font>
      </td>
      <td>
       <font class="PortletHeading1">
         <%=rs.getInt(1)%>
       </font>
      </td>
     </tr>
     <tr>
      <td>
       <font class="PortletText1">
         Status:
       </font>
      </td>
      <td>
       <font class="PortletHeading1">
         <%=rs.getString(2)%>
       </font>
      </td>
     </tr>
     <tr>
      <td>
       <font class="PortletText1">
         Created on:
       </font>
      </td>
      <td>
       <font class="PortletHeading1">
         <%=rs.getString(5)%>
       </font>
      </td>
     </tr>
     <tr>
      <td>
       <font class="PortletText1">
         Created By:
       </font>
      </td>
      <td>
       <font class="PortletHeading1">
         <%=rs.getString(3)%>
       </font>
      </td>
     </tr>
     <tr>
      <td>
       <font class="PortletText1">
         Assigned To:
       </font>
      </td>
      <td>
       <font class="PortletHeading1">
         <%=rs.getString(4)%>
       </font>
      </td>
     </tr>
    </table>
     
    <%
            } //while
          } // try
          catch (SQLException sqle)
          {
            System.out.println ("DB Connection established successfully but ran into an 
    issue while working with the DB.");
            System.out.println (sqle);
          }
          conn.close();
    %>
    

    このコードは、まず、先ほど作成したJavaクラスをコールしてデータベースに接続します。次に、サービス・リクエストIDを渡されたパラメータに基づいて設定します(パラメータが渡されない場合、サービス・リクエストIDはデフォルト値の100に設定されます)。このサービス・リクエストIDを使用してSRDemoデータベースに問い合せ、サービス・リクエストのステータスを検出します。最後に、この問合せ結果がHTML表に出力されます。

  14. ファイルを保存します。

  15. 「SRStatusPortletAboutPage.html」を右クリックし、「開く」を選択します。

  16. 「設計」ビューで、次のテキストを入力します。

    Service Request Status Portlet

    MyAcme, Copyright

  17. ファイルを保存します。

  18. 「SRStatusPortletHelpPage.html」を右クリックし、「開く」を選択します。

  19. 「設計」ビューで、次のテキストを入力します。

    This portlet displays status information about a given service request, based on a parameter (service request ID) it receives. If the portlet does not work as expected, it may not have been wired properly.

  20. ファイルを保存します。

アプリケーション・サーバーへのPDK-Javaポートレットのデプロイ

ポートレットの構築が終了したので、Preconfigured OC4Jにデプロイする準備ができました。

  1. アプリケーション・ナビゲータで、「SRStatusPortlet」「Webコンテンツ」「WEB-INF」の下のweb.xmlファイルを探します。

  2. 「web.xml」を右クリックし、「WARデプロイメント・プロファイルの作成」を選択します。

  3. 「デプロイメント・プロファイル名」フィールドに、SRStatusPortletAppと入力します。

  4. デフォルト・ディレクトリを使用します。

    図2-29    「デプロイメント・プロファイルの作成 -- WARファイル」ダイアログ・ボックス


    画像の説明

  5. 「OK」をクリックして「WARデプロイメント・プロファイルのプロパティ」ダイアログ・ボックスを表示します。

  6. 「J2EE Webコンテキスト・ルートを指定」を選択し、対応するフィールドにSRStatusPortletと入力します。

    図2-30    「WARデプロイメント・プロファイルのプロパティ」ダイアログ・ボックス


    画像の説明

  7. 「OK」をクリックします。

  8. アプリケーション・ナビゲータで、「リソース」ノードを開き、デプロイメント・ファイルを確認します。

    図2-31    SRStatusPortletのデプロイメント・ファイル


    画像の説明

  9. 「ファイル」メニューから、「すべて保存」を選択します。

  10. 「SRStatusPortletApp.deploy」を右クリックし、「配布先」メニューから「SRDemoConnection」を選択します。

    「アプリケーションの構成」ダイアログ・ボックスが表示されます。


    注意

    メニューに「SRDemoConnection」が表示されない場合は、この章の「Oracle WebCenter Preconfigured OC4Jへのアプリケーション・サーバー接続の作成」の項で示した手順に従います。 


  11. ここでは、デフォルト値を受け入れることができるため、「OK」をクリックします。

  12. 「デプロイ - ログ」に「---- デプロイが終了 ----」メッセージが表示されたら、エラーが発生していないことを確認します。

    図2-32    デプロイ - ログ


    画像の説明

  13. JSR 168ポートレットの「プロデューサの登録」で使用したのと同じ手順に従って、次のURLを使用してプロデューサを登録します。

    http://localhost:6688/SRStatusPortlet/providers
    

    これで、作成したJSR 168ポートレットとPDK-Javaポートレットは、アプリケーションに追加できます。

まとめ

この章では、JSR 168ポートレットとPDK-Javaポートレットを構築する方法およびWebCenterアプリケーションで使用するためにこれらのポートレットをデプロイする方法について学びました。この時点で、プロデューサをアプリケーションに登録し、ポートレットをページに追加できます。第7章「ページの構築とコンポーネントの追加」の作業を実行するだけです。しかし、ページの構築およびコンポーネントの追加に進む前に、第3章「スキンの設定」の作業を続けることができます。


戻る 次へ
Oracle
Copyright © 2007 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引