| Oracle WebCenter Framework WebCenterアプリケーションの構築 - ステップ・バイ・ステップ 10g(10.1.3.2.0) E05617-02 |
|
この章では、JSR 168を使用するJavaポートレットとOracle固有のAPIを使用するPDK-Javaポートレットの2種類のポートレットを構築する方法について学びます。
この章の内容は次のとおりです。
この章の手順を始める前に、ダウンロードしたサンプル・ファイルに含まれるinstall.htmlファイルの手順を必ず完了しておきます。次に、次の手順を実行します。
アプリケーション内のものを見つけやすくするために、プロジェクトを作成してポートレットを格納することができます。
ポートレット用のプロジェクトを作成するには、次のようにします。
ProdDetailPortletと入力します。
SRStatusPortletと名前を付けます。
ポートレットをアプリケーション・サーバーのOracle JDeveloperにデプロイするには、まず、Oracle JDeveloperに埋め込まれているOracle WebCenter Preconfigured OC4Jへの接続を確立する必要があります。
Preconfigured OC4Jへのアプリケーション・サーバー接続を作成するには、次のようにします。
readme.htmlファイルが表示されます。このファイルには、Preconfigured OC4Jに関する接続情報が格納されています。
SRDemoConnectionと入力します。
oc4jadmin、パスワードはwelcomeです。
localhostと入力します。
22667です。
単純なJSR 168ポートレットを構築するために、サンプルのService Request Statusポートレットを構築する手順を実行します。このポートレットをデプロイすると、「My Acme」ページに追加できます。Ajaxを使用してより高度にインタラクティブなJSR 168ポートレットのライブ・デモ・バージョンを表示するには、Service Requestデモの完成バージョンを実行するだけです。
JSR 168ポートレットの詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。
JSR 168ポートレットを構築するには、次の作業を行います。
Oracle WebCenter Frameworkには、Javaポートレット・ウィザードが用意されているため、ポートレットのモードごとに単純な実装を迅速に作成できます。このウィザードを使用して、ポートレットの作成を開始します。
JSR 168ポートレットを作成するには、次のようにします。
ProductDetailsPortletと入力し、「Oracle拡張機能を使用してWSRP V2のポートレット間通信を可能にします。」チェック・ボックスの選択を解除します。ポートレットを表すこの名前でクラスが作成されます。
Product Details Portletと入力します。
Product Details Portletと入力します。
Product Detailsと入力します。
これで、Product Detailsポートレットがアプリケーション・ナビゲータに表示されます(図2-7を参照)。
JSR 168ポートレットでは、Webサービスをデータソースとして使用します。アプリケーション内のポートレットでWebサービスを使用するには、まず、ポートレット・プロジェクト用にWebサービス・プロキシを作成する必要があります。
Webサービス・プロキシを作成するには、次のようにします。
http://localhost:8888/ProductDetailsWS/ProductDetailsWSSoapHttpPo rt?WSDL
この時点で、ポートレットはほとんど機能しません。実際には、ようこそメッセージを表示し、エンド・ユーザーがポートレット・タイトルをパーソナライズできるようにしているだけです。ポートレットが必要な特定の機能を実行するようにするには、必要な機能を実装するビジネス・ロジックでサンプル・コードを拡張する必要があります。
まず、ポートレットに製品タイプのリストを表示させます。このリストはWebサービスから取得します。その後で、ポートレットを拡張し、エンド・ユーザーが製品タイプを選んで特定の製品を選択できるようにします。製品が選択されると、詳細情報が簡単な説明およびイメージとともに表示されます。
JSR 168ポートレットにポートレット・ロジックを追加するには、次のようにします。
<%@ 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>
ポートレットの構築が終了したら、パッケージ化してポートレット・コンテナにデプロイする必要があります。
ProductDetailsPortletと入力します。
ProductDetailsPortletと入力します(図2-13を参照)。
「アプリケーションの構成」ダイアログ・ボックスが表示されます。
|
注意 メニューに「SRDemoConnection」が表示されない場合は、この章の「Oracle WebCenter Preconfigured OC4Jへのアプリケーション・サーバー接続の作成」の項で示した手順に従います。 |
ポートレットは作成およびデプロイされたので、アプリケーションで使用する準備ができました。ポートレット・プロデューサをアプリケーションに登録して、アプリケーション開発者がポートレットをページに追加できるようにします。
プロデューサを登録するには、次のようにします。
ProductDetailsProducerと入力し、「次へ」をクリックします。
http://localhost:6688/ProductDetailsPortlet/portlets/wsrp1?WSDL図2-17 WSRPプロデューサURL
Service Requestアプリケーションでは、サービス・リクエストIDを指定すると、特定のサービス・リクエストの現行ステータスが表示されるようにします。このような情報を表示するポートレットを構築できます。
PDK-Javaポートレットの詳細は、『Oracle WebCenter Framework開発者ガイド』を参照してください。
PDK-Javaポートレットを構築するには、次の作業を行います。
Oracle WebCenter Frameworkには、Javaポートレット・ウィザードが用意されているため、ポートレットのモードごとに単純な実装を迅速に作成できます。このウィザードを使用して、ポートレットの作成を開始します。
SRStatusPortletと入力します。これは内部名にすぎず、エンド・ユーザーには公開されません。
Service Request Status Portletと入力します。これは、ページに追加するポートレットを選択するOracle JDeveloperのコンポーネント・パレットなどのポートレット選択リストに表示される名前です。
This portlet displays status information about a given service request.
Service Request Status Portlet timed out
ServiceReqIDに変更します。
ServiceReqIDに変更します。
Service Request IDに変更します。
srstatusproducerと入力します。
web.xml
_default.properties
srstatusproducer.properties
provider.xml
index.jsp
これらのファイルはすべてポートレットを正常にデプロイおよび実行するのに必要です。ただし、テストのためにOracle JDeveloperで使用されるindex.jspは除きます。
この時点で、ポートレットはほとんど機能しません。実際には、ようこそメッセージを表示し、エンド・ユーザーがポートレット・タイトルをパーソナライズできるようにしているだけです。ポートレットが必要な特定の機能を実行するようにするには、必要な機能を実装するビジネス・ロジックでサンプル・コードを拡張する必要があります。
Service Requestポートレットは、サービス・リクエストIDが指定されると、SRDemoデータベースに問い合せて特定のサービス・リクエストのステータスを検出し、その情報を表に表示する必要があります。
SRConnectionUtilと入力します。
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データベースへの接続を作成します。
install.htmlファイルの説明に従って、srdemoスキーマを指すデータベース接続を作成します。
<%@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表に出力されます。
「SRStatusPortletAboutPage.html」を右クリックし、「開く」を選択します。
Service Request Status Portlet
MyAcme, Copyright
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.
ポートレットの構築が終了したので、Preconfigured OC4Jにデプロイする準備ができました。
SRStatusPortletAppと入力します。
SRStatusPortletと入力します。
「アプリケーションの構成」ダイアログ・ボックスが表示されます。
|
注意 メニューに「SRDemoConnection」が表示されない場合は、この章の「Oracle WebCenter Preconfigured OC4Jへのアプリケーション・サーバー接続の作成」の項で示した手順に従います。 |
http://localhost:6688/SRStatusPortlet/providers
これで、作成したJSR 168ポートレットとPDK-Javaポートレットは、アプリケーションに追加できます。
この章では、JSR 168ポートレットとPDK-Javaポートレットを構築する方法およびWebCenterアプリケーションで使用するためにこれらのポートレットをデプロイする方法について学びました。この時点で、プロデューサをアプリケーションに登録し、ポートレットをページに追加できます。第7章「ページの構築とコンポーネントの追加」の作業を実行するだけです。しかし、ページの構築およびコンポーネントの追加に進む前に、第3章「スキンの設定」の作業を続けることができます。
|
![]() Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|