BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

開発者ガイド

 前 次 目次 索引 PDFで表示  

カスタム テンプレートの作成

WebLogic Portal には、ドメイン、アプリケーション、ポータル、およびポートレットをすばやく効率的に作成するのに役立つウィザードとテンプレートが多数用意されています。 この章では、独自のカスタム テンプレートを作成する方法の概要を説明します。 ドメイン テンプレートとポータル テンプレートは Domain Wizard または Portal Wizard で使用され、グループ ポータル テンプレートは WebLogic Portal Administration Tools を用いて呼び出されます。

この章では、以下のトピックを扱います。

 


テンプレートの概要

BEA WebLogic Platform には、3 種類のテンプレートが組み込まれています。 すなわち、ドメイン テンプレート、ポータル テンプレート、そして、グループ ポータル テンプレートです。 ドメイン テンプレートとポータル テンプレートがウィザード コンポーネントとして作成されるのに対して、グループ ポータル テンプレートは WebLogic Portal Administration Tools で使用されます。

3 種類のテンプレート

WebLogic Platform 用テンプレートの作成方法を学ぶ前に、ポータル作成における各テンプレート タイプの役割について考えてみましょう。

ドメイン ウィザード テンプレート

定義済みのドメイン テンプレートは、JAR ファイルの形式で以下のディレクトリに格納されています。

<BEA_HOME>weblogic700¥common¥templates¥domains

Domain Configuration Wizard を起動するには、[スタート|プログラム|BEA WebLogic Platform 7.0] メニューから選択すればよく、その際にサーバが稼働している必要はありません。 このウィザードは、一連の画面を通じてユーザから入力された情報を収集し、ディレクトリとファイルのコピーをいくつか実行したあと、作成対象となるドメイン内のコンフィグレーション ファイルと起動スクリプトに含まれているいくつかの文字列を置換します。 そのため、ユーザが選択した設定はテンプレートに適用され、新しいドメイン ディレクトリ内にインスタンス化されます。

Domain Configuration Wizard でドメイン テンプレートがいくつか列挙されている様子を 図 5-1 に示します。

図5-1 カスタム ドメインの選択


 

Domain Configuration Wizard では、template.xml ファイルの内容に基づいてテンプレートを認識します。 そのファイルの編集に関しては、後で説明します。

図 5-2 は、株式ポータル用 WebLogic Portal ドメインの JAR を展開して、その中のファイルを一部示したものです。

図5-2 WebLogic Portal ドメイン テンプレート ファイル


 

Domain Configuration Wizard では、template.xmlconfig.xml、および application.xml の各ファイルを用いて、リソースをコピーし、新しいドメイン内のコンフィグレーション ファイルとスクリプトの文字列置換を実行します。

ポータル ウィザード テンプレート

インストールされた WebLogic Portal には、定義済みのポータル テンプレートが 1 つ付属しています。 図 5-3 に示すのはカスタム ポータル テンプレートの内容です。このテンプレートは以下のディレクトリに格納されているでしょう。

<BEA_HOME>¥weblogic700¥common¥templates¥webapps¥portal

図5-3 Avitek ポータル テンプレートのファイル構造


 

Domain Configuration Wizard と同様に、Portal Wizard でも template.xml というファイルを使用しますが、その他に、template-icon.gif も使用します。 template.xml ファイルには、Portal Wizard で得られたユーザ入力を、このフォルダに含まれている J2EE リソースとメタデータ リソースに適用するためのディレクティブと変数が記述されています。

Portal Wizard では、図 5-4 に示すように、ポータル テンプレートは名前とアイコンで表示されます。

図5-4 ポータル テンプレートの選択


 

ポータル テンプレートを用いてポータルがインスタンス化されたあと、WebLogic Portal Administration Tools を用いて、そのポータルのページやポートレットといった構成要素の属性が設定されます。

グループ ポータル テンプレート

ドメイン テンプレートやポータル テンプレートとは異なり、グループ ポータル テンプレートはパッケージ化されたエンティティとして存在するわけではありません。 テンプレートを用いてすべてのグループ ポータルを作成するためのメカニズムは、WebLogic Portal Administration Tools によって提供されるのです。 あらかじめ用意されているのはデフォルト グループ ポータルだけで、これにはカスタマイズは施されていません。[ポータル管理ホーム] ページの [グループ ポータルを新規作成] リンクを 図 5-5 に示します。

注意: グループ ポータル テンプレートと言っても、基本的にはグループ ポータルの再利用なので、このマニュアルではその作成については扱いません。 グループ ポータルの作成方法の詳細については、「グループ ポータルの作成」というチュートリアルを参照してください。

図5-5 グループ ポータルの作成


 

新しいグループ ポータルに名前を付け、ユーザ グループと関連付けたあとは、図 5-6 に示すように、グループ ポータル テンプレートを選択する必要があります。

図5-6 グループ ポータル テンプレートの選択


 

こうして、どのようなグループ ポータルでも、新しいグループ ポータルのテンプレートになることができます。 重要なのは、図 5-7 に示すように、資格と委託管理をグループ ポータル テンプレートからコピーできることです。

図5-7 グループ ポータル テンプレートからの資格と委託管理のコピー


 


 

テンプレートの利用

ポータルのライフ サイクルには、およそ 3 通りのカスタマイズを取り入れることができます。 すなわち、ポータルのレイアウトやスキンを作成することでルック&フィールのカスタマイズを施すことができ、アプリケーション要素を追加することで機能をカスタマイズすることができ、そして、グループ ポータル テンプレートを用いてこれらのカスタム オブジェクトの一部を保存し普及させることができます。

各テンプレート タイプの利点は、以下のように、それぞれ異なります。

 


ドメイン テンプレートの作成

カスタム ポータル ドメイン テンプレートを作成する方法として最もよいのは、テンプレートを用いて作成された WebLogic Portal ドメインを出発点にすることです。 アプリケーション機能の追加からポートレットへの資格の設定に至るまで、必要なカスタマイズはすべて実行し、所属組織において後任の開発者にカスタマイズを受け継いでいくメカニズムとしてドメイン テンプレートを使用します。

この節では、Domain Configuration Wizard 用のテンプレートを作成する基本手順を以下の順に説明します。

ステップ 1: ポータル ドメインをインスタンス化する

まず、Domain Configuration Wizard を用いて WebLogic Portal ドメインをインスタンス化します。 このステップの詳細については、「新規ドメインへのポータルの新規作成」というチュートリアルを参照してください。

ステップ 2: ポータル ドメインをカスタマイズする

Portal Wizard や Portlet Wizard を使用し、また、アプリケーション機能、ルック&フィール コンポーネント、EJB などの J2EE コンポーネントを追加することで、ドメインをカスタマイズします。 この節では、WebLogic Portal ドメインに機能を追加する方法を詳しく説明します。 この節で説明するのは以下の手順ですが、これらはそれぞれ別々に適用することができます。

2 フェーズ デプロイメントのサポート

テンプレートを使わずに独自のポータル Web アプリケーションを作成することにした場合には、リスト 5-1 に示す weblogic-application.xml ファイルを必ず以下のディレクトリに保存するようにしてください。

domain¥beaApps¥portalApp¥META-INF¥

2 フェーズ アプリケーション デプロイメントが正常に機能するには、このファイルが必要です。 このファイルは、WebLogic Portal テンプレートを用いてアプリケーションを作成する際には自動的に生成されます。 ウィザードを使わずにアプリケーションを作成する場合には、このファイルを手動で作成し、以下のエントリを追加する必要があります。

コード リスト 5-1 weblogic-application.xml

<!DOCTYPE weblogic-application PUBLIC "-//BEA Systems, Inc.//DTD WebLogic Application 7.0.0//EN" "http://www.bea.com/servers/wls700/dtd/weblogic-application_1_0.dtd">
<weblogic-application>
  <application-param>
   <description>Required for deployment of portal
   applications</description>
   <param-name>weblogic.internal.listeners</param-name>
<param-value>com.bea.p13n.management.internal.lifecycle.J2EELifecycleListener</param-value>
  </application-param>
</weblogic-application>

ドメインへの全ポータル サービスの追加

WebLogic Portal に付属しているテンプレートには、ポータル フレームワークで利用可能なアプリケーション機能のうち、コンテンツ管理サービス、パーソナライゼーション サービス、プレースホルダ サービス、および広告サービスを除くすべての機能が一部含まれています。

ドメインにこうした機能をすべて追加するには、以下の手順に従います。

  1. Portal Wizard を使用して、新しいドメインにポータルとポータル Web アプリケーションを新規作成します。

  2. リスト 5-2 に列挙したファイルを、新しいドメインの <webapp>¥WEB-INF¥lib ディレクトリにコピーします。

  3. リスト 5-3 に示したエントリを <webapp>/WEB-INF 内の web.xml ファイルに挿入します。

  4. リスト 5-4 に示したエントリを <webapp>/WEB-INF/weblogic.xml ファイルに追加します。

これで、このドメイン内のポータル Web アプリケーションは、WebLogic Platform に用意されているすべてのサービスをサポートすることになります。 このドメインを Domain Configuration Wizard 用のテンプレートとして使用するには、このあと「ステップ 3: 全般的なコンフィグレーションを適用する」以降の手順に従います。

コード リスト 5-2 全ポータル サービスを追加するための JAR

BEA_HOME/weblogic700/portal/lib/commerce/web/cat_taglib.jar
BEA_HOME/weblogic700/portal/lib/commerce/web/eb_taglib.jar
BEA_HOME/weblogic700/portal/lib/commerce/web/productTracking_taglib.jar
BEA_HOME/weblogic700/portal/lib/p13n/web/ad_taglib.jar
BEA_HOME/weblogic700/portal/lib/p13n/web/cm_taglib.jar
BEA_HOME/weblogic700/portal/lib/p13n/web/ph_taglib.jar
BEA_HOME/weblogic700/portal/lib/p13n/web/ps_taglib.jar
BEA_HOME/weblogic700/portal/lib/p13n/web/pz_taglib.jar
BEA_HOME/weblogic700/portal/lib/p13n/web/tracking_taglib.jar

コード リスト 5-3 全ポータル サービスを追加するための web.xml 内エントリ

<!-- ファイル末尾の </web-app> エントリの直前に以下のテキストを追加する -->
<!-- クリック スルー イベントを発生させるためのフィルタ -->
<filter>
    <filter-name>ClickThroughEventFilter</filter-name>
   <filter-class>com.bea.p13n.tracking.clickthrough.ClickThroughEventFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ClickThroughEventFilter</filter-name>
    <url-pattern>/application/*</url-pattern>
</filter-mapping>
<!-- ShowDoc サーブレット -->
<servlet>
    <servlet-name>ShowDocServlet</servlet-name>
    <servlet-class>com.bea.p13n.content.servlets.ShowDocServlet</servlet-class>
    <!-- showdoc が常にローカルの ejb-ref DocumentManager を使用するように設定する -->
    <init-param>
        <param-name>contentHome</param-name>
        <param-value>java:comp/env/ejb/DocumentManager</param-value>
    </init-param>
</servlet>
<!-- AdClickThru サーブレット -->
<servlet>
    <servlet-name>adClickThru</servlet-name>
    <servlet-class>com.bea.p13n.ad.servlets.AdClickThruServlet</servlet-class>
</servlet>
<!-- ClickThrough サーブレット -->
<servlet>
    <servlet-name>clickThroughServlet</servlet-name>
    <servlet-class>com.bea.p13n.tracking.clickthrough.ClickThroughServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ShowDocServlet</servlet-name>
    <url-pattern>/ShowDoc/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>adClickThru</servlet-name>
    <url-pattern>/adClickThru/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>adClickThru</servlet-name>
    <url-pattern>/AdClickThru/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>clickThroughServlet</servlet-name>
    <url-pattern>/clickThroughServlet/*</url-pattern>
</servlet-mapping>
<taglib>
    <taglib-uri>cat.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/cat_taglib.jar</taglib-location>
</taglib>
<taglib>
    <taglib-uri>eb.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/eb_taglib.jar</taglib-location>
</taglib>
<taglib>
    <taglib-uri>productTracking.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/productTracking_taglib.jar</taglib-location>
</taglib>
<taglib>
    <taglib-uri>ad.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/ad_taglib.jar</taglib-location>
</taglib>
<taglib>
    <taglib-uri>cm.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/cm_taglib.jar</taglib-location>
</taglib>
<taglib>
    <taglib-uri>ph.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/ph_taglib.jar</taglib-location>
</taglib>
<taglib>
    <taglib-uri>ps.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/ps_taglib.jar</taglib-location>
</taglib>
<taglib>
    <taglib-uri>pz.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/pz_taglib.jar</taglib-location>
</taglib>
<taglib>
    <taglib-uri>tracking.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/tracking_taglib.jar</taglib-location>
</taglib>
<!-- これは、さまざまな <cm:> タグで使用される -->
<ejb-ref>
    <description>
The ContentManager EJB for this webapp
    </description>
    <ejb-ref-name>ejb/ContentManager</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>com.bea.p13n.content.document.DocumentManagerHome</home>
    <remote>com.bea.p13n.content.document.DocumentManager</remote>
</ejb-ref>
<!-- これは ShowDocServlet で使用される -->
<ejb-ref>
    <description>
The DocumentManager for this webapp
    </description>
    <ejb-ref-name>ejb/DocumentManager</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>com.bea.p13n.content.document.DocumentManagerHome</home>
    <remote>com.bea.p13n.content.document.DocumentManager</remote>
</ejb-ref>
<!-- これはプレースホルダ タグで使用される -->
<ejb-ref>
    <description>
The PlaceholderService Session EJB for the placeholder tag.
    </description>
    <ejb-ref-name>ejb/PlaceholderService</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>com.bea.p13n.placeholder.PlaceholderServiceHome</home>
    <remote>com.bea.p13n.placeholder.PlaceholderService</remote>
</ejb-ref>
<!-- これは AdClickThruServlet と adTarget タグで使用される -->
<ejb-ref>
    <description>
The AdService for this webapp
    </description>
    <ejb-ref-name>ejb/AdService</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>com.bea.p13n.ad.AdServiceHome</home>
    <remote>com.bea.p13n.ad.AdService</remote>
</ejb-ref>
<!-- これは AdClickThruServlet で使用される -->
<ejb-ref>
    <description>
The AdBucketService for this webapp
    </description>
    <ejb-ref-name>ejb/AdBucketService</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>com.bea.p13n.ad.AdBucketServiceHome</home>
    <remote>com.bea.p13n.ad.AdBucketService</remote>
</ejb-ref>
<!-- これは、さまざまな <pz:> タグで使用される -->
<ejb-ref>
    <description>
The EjbAdvisor for this webapp
    </description>
    <ejb-ref-name>ejb/EjbAdvisor</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>com.bea.p13n.advisor.EjbAdvisorHome</home>
    <remote>com.bea.p13n.advisor.EjbAdvisor</remote>
</ejb-ref>

コード リスト 5-4 全ポータル サービスを追加するための weblogic.xml 内エントリ

<-- ファイルの冒頭付近にある <reference-descriptor> エントリの後に以下のテキストを追加する -->
<ejb-reference-description>
    <ejb-ref-name>ejb/ContentManager</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.DocumentManager</jndi-name>
</ejb-reference-description>
<ejb-reference-description>
    <ejb-ref-name>ejb/DocumentManager</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.DocumentManager</jndi-name>
</ejb-reference-description>
<ejb-reference-description>
    <ejb-ref-name>ejb/PlaceholderService</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.PlaceholderService</jndi-name>
</ejb-reference-description>
<ejb-reference-description>
    <ejb-ref-name>ejb/AdService</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.AdService</jndi-name>
</ejb-reference-description>
<ejb-reference-description>
    <ejb-ref-name>ejb/AdBucketService</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.AdBucketService</jndi-name>
</ejb-reference-description>
<ejb-reference-description>
    <ejb-ref-name>ejb/EjbAdvisor</ejb-ref-name>
    <jndi-name>${APPNAME}.BEA_personalization.EjbAdvisor</jndi-name>
</ejb-reference-description>

WebLogic Portal ドメインへの EJB の追加

たとえば、Enterprise JavaBeans (EJB) をドメインに追加するには、以下の手順に従います。

  1. EJB を作成します。 WebLogic Platform 用の EJB の作成方法については、『WebLogic エンタープライズ JavaBeans プログラマーズ ガイド』を参照してください。

  2. EJB の JAR ファイルを以下のアプリケーション ディレクトリに格納します。
    <BEA_HOME>/yourdomain/BEAapps/portalApp/META-INF

  3. この JAR ファイルへの参照を、以下の形式で META-INF/application.xml ファイルに挿入します。
    <module>
      <ejb>myEJB.jar</ejb>
    </module>

    ここで、myEJB は新しい EJB の名前です。

  4. domain/config.xml のアプリケーション ノード内に、以下のようなエントリを追加します。
    <EJBComponent
         Name="myEJB"
         Targets="@TARGETS"
         URI="myEJB.jar"
    />

指定した EJB は、起動時にその他のすべてのアプリケーション機能と共にデプロイされることになります。

ステップ 3: 全般的なコンフィグレーションを適用する

エンタープライズ レベルまたは Web アプリケーション レベルでのアプリケーション機能の追加だけでなく、ポータル、ページ、ポートレット、さらにはスキンやレイアウトさえも、カスタマイズされた WebLogic Portal ドメイン テンプレートに挿入して、より全般的なカスタマイズを広く利用したい場合もあるでしょう。

ポータルとポートレットの作成方法の詳細については、『WebLogic Portal 開発者ガイド』を参照してください。 グループ ポータルの作成方法の詳細については、『WebLogic Portal 管理者ガイド』の「チュートリアル - グループ ポータルの作成」という章を参照してください。

カスタム レイアウトおよびスキンの作成方法の詳細については、『WebLogic Portal 開発者ガイド』の「ルック アンド フィールの作成」という章を参照してください。 この節では、ルック&フィール コンポーネントを、カスタム WebLogic Portal ドメイン内にパッケージ化できるような形でドメインに追加する方法について説明します。

カスタム レイアウトをドメイン テンプレートに追加する

以下の例は、縦型 1 列配置の 「stack」というカスタム レイアウトを示します。 このレイアウトは、リスト 5-5 に示す JSP ファイルと、図 5-8 に示すサムネイル画像から成ります。

図5-8 stack レイアウト用の thumbnail.gif


 

コード リスト 5-5 stack レイアウトのテキスト

<%@ taglib uri='ren.tld' prefix='layout' %>
<layout:placePortletsinPlaceholder placeholders="top,middle,bottom" />
<center>
    <table BORDER COLS="1" WIDTH="250" >
        <tr>
            <td>
                <layout:render section='top'/>
            </td>
        </tr>
        <tr>
            <td>
                <layout:render section='middle'/>
            </td>
        </tr>
        <tr>
            <td>
                <layout:render section='bottom'/>
            </td>
        </tr>
    </table>
</center>

カスタム レイアウトを作成したら、以下の手順に従って、それを新しいドメイン テンプレートで利用できるようにします。

  1. このレイアウトをドメイン テンプレートに挿入するには、JSP ファイルを template.jsp、画像ファイルを <yourlayoutName>.gif として、以下のディレクトリに保存します。

<BEA_HOME>¥weblogic700¥common¥templates¥domains¥shared¥bea¥portal¥projects¥portalApp-project¥library¥portal¥layouts¥<yourlayoutName>¥

  1. このカスタム レイアウトを E-Business Control Center から参照できるようにするには、JSP を template.jsp、画像ファイルを thumbnail.gif として、以下のディレクトリに保存します。

<BEA_HOME>¥weblogic700¥common¥templates¥webapps¥portal¥newportal¥j2ee¥framework¥layouts¥<yourlayoutName>¥

警告: レイアウト サムネイルのファイル名には一定の規則はありません。 ファイル名が正しくなければ、E-Business Control Center または WebLogic Portal Administration Tools でプレビュー画像が表示されないことがあります。

カスタム スキンをドメイン テンプレートに追加する

カスタム スキンを作成したら、以下の手順に従って、そのカスタム スキンを新しいドメイン テンプレートで利用できるようにします。

  1. ポータル上でスキンのスクリーンショットを撮り、それを 1 インチ幅に縮小して <yourlayoutName>.gif として保存します。

  2. このサムネイルを以下のディレクトリに格納します。

<BEA_HOME>¥weblogic700¥common¥templates¥domains¥shared¥bea¥portal¥projects¥portalApp-project¥library¥portal¥skins¥<yourskinName>¥

  1. スキンの J2EE リソースを以下のディレクトリに格納します。

<BEA_HOME>¥weblogic700¥common¥templates¥webapps¥portal¥newportal¥j2ee¥framework¥skins¥<yourskinName>¥

これらの要素をドメインに追加したら、後は、Domain Configuration Wizard で使用してカスタム ドメインをインスタンス化できるような形に新しいドメインをパッケージ化するだけです。

ステップ 4: 新しいドメインをテンプレートとしてパッケージ化する

ドメインでのカスタマイズがすべて正常に追加されたことを確かめたら、その新しい機能をドメイン テンプレートの形で複製することができます。 このテンプレートを用いれば、社内の開発者にとって作業の適切な基本線が与えられることになり、開発、デプロイメント、および保守の各プロセスのさまざまな局面で、作業の不必要な重複を減らすことができます。

これらの追加機能をサポートするためのエントリは、すでにいくつかのコンフィグレーション ファイルに作成されています。 適切な J2EE リソースがテンプレートの JAR ファイルに正しくアーカイブされているとすれば、ウィザードでこれらのリソースを対象ドメインに組み込めるように、それらのメタデータを正しく入力することが非常に重要です。 このため、 template.xml ファイル内で、その他のコンフィグレーション ファイルや J2EE リソースの参照箇所に特に注意を払ってください。

注意: 新たに作成するドメイン テンプレートはどのようなものでも、すべてのポータル サービスをサポートしていなければなりません。 このため、ドメインをテンプレート化する前に、「ステップ 2: ポータル ドメインをカスタマイズする」で示した手順に従うことを強くお勧めします。

カスタマイズされたドメインからテンプレートを作成するには、以下の手順に従います。

template.xml ファイルを開く

以下の JAR ファイルをコピーすることで、template.xml ファイルのコピーを取得します。

<BEA_HOME>¥weblogic700¥common¥templates¥domains¥portal.jar

このアーカイブを解凍し、template.xml ファイルをテキスト ブラウザで開きます。 config.xml ファイルの編集時には、このファイルを参考にします。 必要な編集をすべて行ったら、このファイルを (JAR 形式で) アーカイブして、¥META-INF ディレクトリに抽出されるようにします。

config.xml ファイルを編集する

カスタマイズされたドメイン内の config.xml ファイルを開き、リスト 5-6 に示した置換を行います。 設定済みの属性を template.xml で使用されている変数に置き換えることで、Domain Configuration Wizard では、ユーザ入力を自動的に config.xml ファイルの各フィールドに設定できるようになります。

コード リスト 5-6 congif.xml ファイルでのドメイン ノードの置換

<Server 
    Name="portalServer"      "@SERVER_NAME" で置換
    ListenPort="7501"        "@LISTEN_PORT" で置換
    NativeIOEnabled="true"
    JavaCompiler="@JAVA_HOME/bin/javac"
    ServerVersion="7.0.1.0" 
    StagingMode="nostage" 
    TransactionLogFilePrefix="logs/"
>
<Log FileName="logs/weblogic.log" 
    Name="portalServer"/      "@SERVER_NAME" で置換
>
<SSL Enabled="true"          
   ListenPort="7502"          "@SSL_PORT" で置換
   Name="portalServer"      "@SERVER_NAME" で置換
   ServerCertificateChainFileName="ca.pem"
   ServerCertificateFileName="democert.pem" 
   ServerKeyFileName="demokey.pem"/
>
<ServerStart Name="portalServer"/>  "@SERVER_NAME" で置換
 <WebServer
  DefaultWebApp="DefaultWebApp"
  LogFileName="access.log"
  LoggingEnabled="true"
  Name="portalServer"      "@SERVER_NAME" で置換
/>

注意: template.xml では、@TARGETS 値を用いることで、config.xml ファイルを修正せずに同じドメインをクラスタ、管理サーバ、あるいはスタンドアロン サーバにデプロイできるようになります。

 <change-pair name="TARGETS">
         <before string="@TARGETS" />
         <after string="$TARGET_NAMES$" />
      </change-pair>

Domain Wizard を実行してテンプレートを選択すると、リスト 5-7 に示すように変数エントリが置き換えられます。

コード リスト 5-7 config.xml ファイルでの変数の置換

ポータル テンプレート config.xml に元々記述されていたノード
<EJBComponent
    Name="campaign"
    Targets="@TARGETS"
    URI="campaign.jar"
/>
新しい config.xml ファイルでは変数に値が設定される
<EJBComponent
    Name="campaign"
    Targets="portalServer"
    URI="campaign.jar"
/>

application.xml ファイルを編集する

template.xml ファイルや config.xml ファイルの場合と同様に、まず、既存のテンプレートからサンプル ファイルを抽出するところから始めるのがよいでしょう。 アーカイブ内のファイルとカスタマイズした application.xml ファイルを比較してください。 サーバ起動時に自動的にデプロイしたい新規 Web アプリケーションごとに、application.xml の application ノードにエントリを 1 つ 追加する必要があります。リスト 5-8 に示したのは、NewPWApp という Web モジュールを application ノードに挿入している例です。

コード リスト 5-8 application.xml へのモジュール リストの追加

<application>
 <module>
   <web>
     <web-uri>NewPWApp</web-uri>
     <context-root>NewPWApp</context-root>
   </web>
 </module>  
...
</application>

文字列置換用のシェル スクリプトをチェックする

アプリケーションに特別な起動クラスや環境設定が必要な場合には、それらを必ずテンプレート内のシェル スクリプトに追加してください。リスト 5-9 に示したのは、定義済みのポータル ドメイン テンプレートに付属している startPortal.bat の内容です。

ドメインに起動コマンドのカスタマイズが必要な場合には、リテラル参照を追加してもスクリプトが保守しにくくならないようにしてください。

コード リスト 5-9 portal.jar 内の startPortal.bat

@ECHO OFF
SETLOCAL
REM ###########################################################################
REM (c) 2002 BEA SYSTEMS INC. All rights reserved
REM
REM BEA WebLogic Portal Server 起動スクリプト
REM このスクリプトでは、ポータル ウィンドウ サービスのインストール/アンインストールを行うこともできる。 それには、以下のコマンドライン引数を使用する。
REM -installService または -uninstallService
REM ###########################################################################
REM ###########################################################################
REM WLP のインストール ディレクトリ
REM ###########################################################################
SET WLP_HOME=@BEA_PORTAL_HOME_BACK_SLASH@
REM ###########################################################################
REM WebLogic サーバ名を設定する
REM ###########################################################################
SET SERVER_NAME=@MANAGED_SERVER_REGISTERED_NAME_IN_ADMIN
IF "%SERVER_NAME%"=="" SET SERVER_NAME=@SERVER_NAME
REM ###########################################################################
REM 管理対象ノードの場合には、WebLogic Admin Server の URL を設定する。
REM それ以外の場合には、次の変数は空欄のまま。
REM ###########################################################################
set ADMIN_URL=@ADMIN_SERVER_URL
REM ###########################################################################
REM データベース タイプを設定する
REM 有効な値は次のいずれか。 POINTBASE、ORACLE_THIN、MSSQL、SYBASE_JCONNECT、DB2_TYPE2
REM 詳細については set-environment.bat を参照のこと。
REM ###########################################################################
SET DATABASE=@DATABASE@
REM db_settings.properties ファイルから取得を試みる
IF not exist .¥db_settings.properties goto _setenv
SET DB_SETTINGS=.¥db_settings.properties
FOR /F "eol=# tokens=1,2 delims==" %%i in (%DB_SETTINGS%) do  (
    if %%i == database SET DATABASE=%%j
)
:_setenv
REM ###########################################################################
REM 環境を設定する
REM 利用可能なパラメータの詳細については、set-environment.bat を参照のこと。
REM ###########################################################################
CALL "%WLP_HOME%¥bin¥win32¥set-environment.bat"
REM ###########################################################################
REM 追加すべき CLASSPATH 情報があれば、ここで設定する。
REM ###########################################################################
SET CLASSPATH=%CLASSPATH%;%P13N_DIR%¥lib¥commerce_system.jar;%P13N_DIR%¥lib¥campaign_system.jar
REM ###########################################################################
REM 上記パラメータで WebLogic を起動する
REM 利用可能なパラメータの詳細については、startWebLogic.cmd を参照のこと。
REM ###########################################################################
set MEM_ARGS=-Xms128m -Xmx128m -XX:MaxPermSize=128m
set JAVA_OPTIONS=-Dcommerce.properties="%WLP_HOME%¥weblogiccommerce.properties"
if "%1" == "-installService" goto _installService
if "%1" == "-uninstallService" goto _uninstallService
:_startWebLogic
call "%P13N_DIR%¥bin¥win32¥startWebLogic.cmd"
goto _the_end
:_installService
call "%P13N_DIR%¥bin¥win32¥installWebLogicService.cmd"
goto _the_end
:_uninstallService
call "%P13N_DIR%¥bin¥win32¥uninstallWebLogicService.cmd"
goto _the_end
:_the_end
ENDLOCAL

アーカイブを作成する

この段階で、ルック&フィールのカスタマイズと機能はすべてポータル ドメインに追加されており、図 5-9 に示すようなディレクトリ構造になっています。

図5-9 カスタム ポータル ドメインの展開表示


 

以下の手順に従って、アーカイブを作成します。

  1. config.xml ファイルとシェル スクリプトがドメイン ディレクトリ内に存在し、application.xml ファイル、application-config.xml ファイル、および weblogic-application.xml ファイルが各エンタープライズ アプリケーション内の META-INF ディレクトリに含まれていることを確かめます。

  2. 図 5-10 に示すように、アーカイブ フォルダのトップ レベルにファイルが存在しないことを確かめます。

    図5-10 アーカイブ化される前のドメイン テンプレート


     

  3. アーカイブ フォルダでコマンド ラインから以下のコマンドを入力します。

jar -cfM ..¥myportal.jar domain META-INF

  1. このドメイン テンプレートを Domain Configuration Wizard で利用できるようにするには、JAR ファイルを以下のディレクトリに格納します。

<BEA_HOME>/weblogic700/common/templates/domains/

 


ポータル テンプレートの作成

ドメイン テンプレートの作成プロセスと同様に、ポータル テンプレートの作成も基本的には、ポータルの新しいインスタンスを作成してカスタマイズしたあと、リソースの格納場所が Portal Wizard にわかるような形でパッケージ化することです。

新規ポータルをインスタンス化する

Portal Wizard を用いたポータルの新規作成の詳細については、「ポータルの新規作成」の節を参照してください。

新規ポータルをカスタマイズする

ポータルの動作と外見をカスタマイズする人には、多くの情報が利用可能です。 具体的な手順の概要とリンクについては、『WebLogic Portal 開発者ガイド』を参照してください。

基本コンフィグレーションを適用する

これで、グループ ポータル、ページ、ポートレット、資格、および委託管理設定の追加など、新規ポータルにコンフィグレーションを適用することができます。 ポータルのコンフィグレーションの詳細については、『WebLogic Portal 管理者ガイド』を参照してください。

新規ポータルをテンプレートとしてパッケージ化する

Domain Configuration Wizard 用のテンプレートとは異なり、ポータル テンプレートは圧縮済みのアーカイブ ファイル形式で提供する必要はありません。 ただし、新規ポータルのパッケージ化と言っても、template.xml ファイルの編集がほとんどです (このファイルの一例をリスト 5-12 に示します)。 カスタマイズされたポータルを Portal Wizard 用のテンプレートとしてパッケージ化するには、以下の手順に従います。

ステップ 1: ステージング ディレクトリを作成する

/myportal というディレクトリを作成して、新しいポータル テンプレートのステージング フォルダにします。 その中に 2 つのディレクトリを作成します。 すなわち、/j2ee/ebcc です。

ステップ 2: ソース ディレクトリを見つける

ソース ポータルに関連付けられている 2 つのディレクトリを見つけます。 すなわち、図 5-11 に示すような J2EE リソースと、図 5-12 に示すようなメタデータ ディレクトリです。

ステップ 3: ポータル リソースを移す

以下の手順で、リソースをテンプレート ステージング ディレクトリに移します。

注意: カスタマイズ時にポータルに追加したリソースのメタデータだけをコピーします。 stockportal テンプレートの株式リソース メタデータ ファイルをコピーしないようにしてください。

ステップ 4: template.xml を編集する

以下の規則に従って、template.xml ファイルを編集します。

コード リスト 5-10 Portal Wizard から提供されるプロパティ

<property name="template.common.lib.root.dir" value="Path to directory containing required jar files" />
<property name="template.ebcc.root.dir" value="Path to directory containing application data directory" />
<property name="template.j2ee.webapp.root.dir" value="Path to web application root directory" />
<property name="template.webapp.name" value="Name of the web application"/>
<property name="template.portal.name" value="Portal web application name"/>    
<property name="template.portal.description" value="Description of the portal application">

コード リスト 5-11 ポータル テンプレートに固有のプロパティ

<property name="template.name" value="baseportal" />
<property name="template.description" value="Description: Base Portal Template" />
<property name="template.hyperlink.text" value="After your new portal is deployed, follow these instructions..." />
<property name="template.hyperlink.url" value="http://edocs.beasys.co.jp/e-docs/wlp/docs70/dev/newdom.htm#1003370" />

ステップ 5: サムネイルを作成する

Portal Wizard に表示されるポータル テンプレートの外見を表すアイコンを作成します。 そのファイルの名前を template-icon.gif とします。 (このオプション ファイルがなければ、Portal Wizard では株式ポータル アイコンが表示されます。)

ステップ 6: アーカイブ ファイルを作成する

(省略可能) ポータル テンプレートの内容を圧縮します。 すなわち、myportal ディレクトリから以下のコマンドを実行します。

jar -cfM ../myportal.jar *.*

ステップ 7: アーカイブを利用できるようにする

生成されたアーカイブ ファイルを以下のディレクトリに格納します。

<BEA_HOME>¥weblogic700¥common¥templates¥webapps¥portal

コード リスト 5-12 ポータル用 template.xml

<?xml version="1.0"?>
<project name="Base Portal Template" default="main" basedir="."> 
  <!--
    JAR またはディレクトリには、この template.xml ファイルが入っている必要があり、さらに、オプションとして
    template-icon.gif を中に入れることができる。  template-icon.gif が存在しなければ、
    デフォルト アイコンが表示される。
  -->
  <!-- 呼び出し側は以下のプロパティを渡さなければならない。 
     <property name="template.common.lib.root.dir" value="Path to directory containing required jar files" />
     <property name="template.ebcc.root.dir" value="Path to directory containing application data directory" />
     <property name="template.j2ee.webapp.root.dir" value="Path to web application root directory" />
     <property name="template.webapp.name" value="Name of the web application"/>
     <property name="template.portal.name" value="Portal web application name"/>    
     <property name="template.portal.description" value="Description of the portal application">
     <property name="template.hotdeploy.path" value="Path to directory containing the portal for hot deploy"/>    
     <property name="template.hotdeploy.user" value="User name for logging into the server for hot deploy"/>    
     <property name="template.hotdeploy.password" value="Password name for logging into the server for hot deploy"/>    
<property name="template.hotdeploy.adminurl" value="Server location for hot deploy"/>    
  -->   
   <!-- テンプレート プロパティ -->
   <property name="template.name" value="baseportal" />
   <property name="template.version" value="1.0" />
   <property name="template.type" value="portal-webapp" />   
   <property name="template.description" value="Description: Base Portal Template" />
   <property name="template.hyperlink.text" value="After your new portal is deployed, follow these instructions..." />
   <property name="template.hyperlink.url" value="http://edocs.beasys.co.jp/e-docs/wlp/docs70/dev/newdom.htm#1003370" />    
<!-- これは、.war ファイルかホット デプロイ用ディレクトリのどちらか。 -->
   <property name="template.hotdeploy.path" value="${template.j2ee.webapp.root.dir}/${template.webapp.name}/"/>    
   <target name="main" >      
      <echo message="template.common.lib.root.dir ( ${template.common.lib.root.dir} )"/>
      <echo message="template.ebcc.root.dir ( ${template.ebcc.root.dir} )"/>
      <echo message="template.j2ee.eapp.root.dir ( ${template.j2ee.eapp.root.dir} )"/>
      <echo message="template.j2ee.webapp.root.dir ( ${template.j2ee.webapp.root.dir} )"/>
      <echo message="template.appsync.dir ( ${template.appsync.dir} )"/>      
      <echo message="template.webapp.name ( ${template.webapp.name} )"/>
      <echo message="template.portal.name ( ${template.portal.name} )"/>
      <echo message="template.hotdeploy.path ( ${template.hotdeploy.path} )"/>      
                   
      <!-- baseportal および tools Web アプリケーションを除くすべて -->
      <copy todir="${template.ebcc.root.dir}/"
            overwrite="no"
            preservelastmodified="yes" 
            includeEmptyDirs="yes"
            filtering="no" >
            
         <fileset dir="ebcc/" >
              <include name="**" />            
              <exclude name="application-sync/webapps/baseportal/" />
              <exclude name="application-sync/webapps/tools/" />              
         </fileset>                           
      </copy>            
      <!-- ここで、baseportal Web アプリケーション (baseportal.portal を除く) をコピーし、ディレクトリの名前を任意の Web アプリケーション名に変更する。 -->      
      <copy todir="${template.ebcc.root.dir}/application-sync/webapps/${template.webapp.name}/"
            overwrite="no"
            preservelastmodified="yes" 
            includeEmptyDirs="yes"
            filtering="no" >
            
         <fileset dir="ebcc/application-sync/webapps/baseportal/" >
              <include name="**" />            
              <exclude name="baseportal.portal" />
         </fileset>                           
      </copy>            
      <filter token="template.portal.description" value="${template.portal.description}" />
      <!-- ここで、baseportal.portal ファイルをコピーし、その名前を任意のポータル名に変更する。 -->
      <copy tofile="${template.ebcc.root.dir}/application-sync/webapps/${template.webapp.name}/${template.portal.name}.portal"
            file="ebcc/application-sync/webapps/baseportal/baseportal.portal"
            overwrite="no"
            preservelastmodified="yes" 
            includeEmptyDirs="yes"
            filtering="no" >            
      </copy>            
      
      <!-- すべての J2EE リソースをコピーする -->
      <copy todir="${template.j2ee.webapp.root.dir}/${template.webapp.name}/"
            overwrite="no"
            preservelastmodified="yes" 
            includeEmptyDirs="yes"
            filtering="no" >            
       <fileset dir="j2ee/" >
              <include name="**" /> 
              <exclude name="WEB-INF/weblogic.xml.stock"/>          
              <exclude name="WEB-INF/web.xml.stock"/>          
         </fileset>                                    
      </copy>            
     <filter token="template.portal.name" value="${template.portal.name}" />
      <filter token="template.webapp.name" value="${template.webapp.name}" />
      <copy tofile="${template.j2ee.webapp.root.dir}/${template.webapp.name}/WEB-INF/weblogic.xml"
            overwrite="yes"
            preservelastmodified="yes" 
            includeEmptyDirs="yes"
            filtering="no" 
            file="j2ee/WEB-INF/weblogic.xml.stock">
      </copy>
      <copy tofile="${template.j2ee.webapp.root.dir}/${template.webapp.name}/WEB-INF/web.xml"
            overwrite="yes"
            preservelastmodified="yes" 
            includeEmptyDirs="yes"
            filtering="no" 
            file="j2ee/WEB-INF/web.xml.stock">
      </copy>                  
   </target>    
</project>

 

ページの先頭 前 次