課題 1.4: デプロイメント記述子相違の比較

この課題を始める前に、『課題 1.3: Java クラス相違の比較』を完了していなければなりません。

この課題では、2 つのポートレット API 用のデプロイメント記述子間の相違を学習します。 ポートレット・デプロイメント記述子 (portlet.xml) の 2 つのバージョンで調べます。 サンプルで説明される基本的な相違は下に示したとおりです。 ポートレット・デプロイメント記述子を編集する場合は、 ポートレット・デプロイメント記述子エディターを使用します。

portlet.xml のタグ付け規則

IBM ポートレット API のタグ付け規則は DTD で定義します。一方、JSR 168 ポートレット API は XML スキーマで定義します。 このために、ポートレット・デプロイメント記述子の先頭に異なる XML 定義ステートメントが必要になります。

IBM ポートレット API
<!DOCTYPE portlet-app-def PUBLIC "-//IBM//DTD Portlet Application 1.1//EN"
          "portlet_1.1.dtd ">
JSR 168 ポートレット API
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             version="1.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             id="bookmark_03_jsr.1">

<portlet-app> エレメントの id 属性

2 つの API は <portlet-app> エレメントの id 属性に対して異なる名前を使用します。 IBM ポートレット API は uid を使用し、一方、JSR 168 ポートレット API は id を使用します。

IBM ポートレット API
<portlet-app uid="com.ibm.etools.portal.portletexamples.bookmark.legacy"
JSR 168 ポートレット API
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             version="1.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             id="bookmark_03_jsr.1">

<portlet> エレメントの href 属性

IBM ポートレット API を使用する場合、<portlet> エレメントの href 属性は Web デプロイメント記述子 (web.xml) で <servlet> エレメントの対応する id をポイントしていなければなりません。 JSR 168 ポートレット API を使用する場合、<portlet-app> エレメントの id 属性はサーバーに対して、 ポートレットを一意的に識別します。 JSR 168 ポートレットはサーブレットではなく、web.xml への参照は必要ありません。

IBM ポートレット API
portlet.xml: <portlet id="Bookmark" href="WEB-INF/web.xml#Servlet_1086938566718"
web.xml:     <servlet id="Servlet_1086938566718">
JSR 168 ポートレット API
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             version="1.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             id="bookmark_03_jsr.1">

ポートレット・バージョン

IBM ポートレット API の場合は、<portlet-app> および <portlet> エレメントの major-version、 および minor-version 属性を使用します。 JSR 168 ポートレット API の場合は、<portlet-app> エレメントの version 属性を使用します。

IBM ポートレット API
<portlet-app uid="com.ibm.etools.portal.portletexamples.bookmark.legacy"
             major-version="1" minor-version="0">
<portlet id="Bookmark" href="WEB-INF/web.xml#Servlet_1086938566718"
             major-version="1" minor-version="0">
JSR 168 ポートレット API
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             version="1.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             id="bookmark_03_jsr.1">

サポートされるマークアップ・タイプ

ポートレット・デプロイメント記述子で、IBM ポートレット API はサポートされるマークアップ・タイプを宣言します。 一方、JSR 168 ポートレット API はサポートされる MIME タイプを宣言します。 IBM は拡張子が wps.markup の初期化パラメーターを提供します。 これは JSR 168 ポートレットにサポートされるマークアップ・タイプを定義できるようにするためです。 このタイプは HTML や cHTML のように、同じ MIME タイプを使用するマークアップ・タイプを区別するために使用されます。

IBM ポートレット API
<supports>
   <markup name="html">
      <view />
      <edit />
   </markup>
   <markup name="chtml">
      <view />
   </markup>
</supports>
JSR 168 ポートレット API
<init-param>
   <name>wps.markup</name>
   <value>html,chtml</value>
</init-param>

<supports>
   <mime-type>text/html</mime-type>
   <portlet-mode>VIEW</portlet-mode>
   <portlet-mode>EDIT</portlet-mode>
</supports>

サポートされるモード

両方の API は構文が僅かに異なりますが、 サポートされるモードをポートレット・デプロイメント記述子に定義する必要があります。 両方の API は編集、表示、およびヘルプ・モードをサポートします。 IBM ポートレット API は構成モードもサポートします。 JSR 168 ポートレット API は、 プレビュー、印刷、デフォルトの編集、および構成のようなカスタム・モードをサポートします。 両方の API には表示モードが必須です。その他すべてのモードはオプションです。

IBM ポートレット API
<supports>
   <markup name="html">
      <view />
      <edit />
   </markup>
</supports>
JSR 168 ポートレット API
<supports>
   <portlet-mode>VIEW</portlet-mode>
   <portlet-mode>EDIT</portlet-mode>
</supports>

許容可能なウィンドウ状態

両方の API には標準状態が自動的に設定されます。 IBM ポートレット API では、「単独」のようなその他の状態は明示的に宣言する必要があります。 JSR 168 ポートレット API では、「最大化」および「最小化」の状態も自動的に設定されます。 カスタム状態は明示的に宣言することが必要になります。

IBM ポートレット API
<allows>
   <maximized/>
   <minimized/>
</allows>
JSR 168 ポートレット API
サンプルにはカスタム・ウィンドウ状態は表示されていませんが、 <custom-window-state> エレメントを使用することは可能です。

ローカリゼーション

ポートレットを定義する幾つかのローカライズ・ストリングは、 ポートレット・デプロイメント記述子に定義されます。 IBM ポートレット API の portlet.xml には、タイトル、ショート・タイトル、説明、 およびキーワード用のローカライズ値が定義されます。 IBM API にも、デフォルト・ロケールが設定されています。 JSR 168 ポートレット API には、portlet.xml にポートレット記述と表示名用のローカライズ値が定義されます。 タイトル、ショート・タイトル、およびキーワード用の値は、 ポートレット・リソース・バンドルにあります。 下に示したように、ポートレット・リソース・バンドルの Portlet.properties は、 サンプルの nls ディレクトリーに配置されています。 JSR 168 API には、リソース・バンドルとサポートされるロケールの定義が設定されています。
IBM ポートレット API
<default-locale>en</default-locale>
<language locale="en">
   <title>Bookmark portlet (IBM)</title>
   <title-short>Bookmark</title-short>
   <keywords>Bookmark</keywords>
</language>
<language locale="de">
   <title>Lesezeichen Portlet (IBM)</title>
   <title-short>Lesezeichen</title-short>
   <keywords>Lesezeichen, Bookmark</keywords>
</language>
JSR 168 ポートレット API
<resource-bundle>nls.Portlet</resource-bundle>
<supported-locale>en</supported-locale>
<supported-locale>de</supported-locale>
<description xml:lang="EN">English description</description>
<display-name xml:lang="EN">English display name</display>-name>
<description xml:lang="DE">German description</description>
<display-name xml:lang="DE">German display name</display>-name>

サンプル・ポートレットのリソース・バンドル、Portlet.properties:
javax.portlet.title = Bookmark Portlet
javax.portlet.short-title = Bookmark
javax.portlet.keywords = Bookmark

キャッシュの有効期限

IBM ポートレット API で、ポートレットは PortletRequest オブジェクトの invalidateCache() を使用して、 キャッシュ (無効化ベースのキャッシング) を明示的に無効にすることができます。 デフォルトのキャッシュ有効期限およびスコープは、ポートレット・デプロイメント記述子に設定されます。 <expires> エレメントの値には、0 (常に有効期限切れ)、-1 (常に有効)、 または有効期限が切れるまでの秒数にすることができます。 <shared> エレメント値が no である意味は、 キャッシュがポートレット・インスタンス間で共用されないことです。

JSR ポートレット API は 有効期限ベースのキャッシング を使用します。 ここで、キャッシュ有効期限時間はデプロイメント記述子に定義されますが、 ポートレットは RenderResponse オブジェクトの setAttribute() メソッドで EXPIRATION_CACHE 値を使用して、 この値を再設定できます。 <expiration-cache> エレメントは、 IBM ポートレット API が <expires> エレメント用に使用する値と同じ値を使用します。

IBM ポートレット API
<cache>
   <expires>-1</expires>
   <shared>no</shared>
</cache>
JSR 168 ポートレット API
<expiration-cache>0</expiration-cache>

これで、『課題 1.5: JSP ファイルのコーディング相違の比較』を開始する準備が完了しました。

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.