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. |
|