<% Include("/hsphere/local/home/terraint/common.phps");%> Jakarta Jetspeed:ポータルサイト構築支援 in Java - Application Development
Apache Jakarta Jetspeed

Jakarta Jetspeed

ダウンロード

ドキュメント

コンポーネント

参加するには

Links (Web/JP)

日本語訳 (Translations)

オリジナル

構成

Jetspeed内では、Turbineが、スケジューリング同様、ユーザ認証やページレイアウトを取り扱います。 ポートレットは、RunDataオブジェクトが生成されるTurbineサービスと相互作用します。 組み込み可能なテンプレートシステム(JavaServerPages、Cocoon、Velocity、Web Macroを含む) は、レイアウト・XML/XSLT・XSP(Cocoon用)を通じた動的なWebアプリケーションを提供します。 Castorは、実用的なXML操作を扱います。 SAXやDOMで扱う代わりに、XMLをJavaオブジェクトのセットとして考えるのは、とても便利なやり方です。


                  Jetspeed
                      |
                 Portlet API 
                      |
                   Turbine   
                      |
   JServ/Jakarta( あるいは JSDK 2.2 サーブレットエンジン)
                      |
Apache HTTPD (上記製品をサポートする全てのHTTPサーバ)
    
        


ページレイアウト

PortletController <-> PortletControl <-> Portlet relationship

  | -------------------- Turbine Screen ---------------------- |
    |------------------ PortletController ------------------ |
      |---- PortletControl ---- | |---- PortletControl ---- |
            |-- Portlet --|            |-- Portlet --|


ポートレット

コンテンツのサブスクライブ(投稿)やプレゼンテーション(表現)管理の標準的なやり方が求められて いた事は早いうちから明らかでした。

ポートレットの目指すところ:

  • 複数に亘る(がしかし)小さいウェブアプリケーションをユーザに利用可能にさせる。
  • ユーザが背景色・タイトルバーの色・アイコンなどを選択可能となるよう、これらのウェブアプリケーションを"skin"する。
  • キャッシュ・サブシステムを使う事で、複数ポートレットであってもパフォーマンスを維持させる。
  • 利用可能な全てのウェブアプリケーションを絶えず監視し、ユーザにその情報を提供する。
  • 独自ページの生成を非常に容易にする為に、ユーザの選択を簡単にする。それらはTurbine画面にとても似ているが、与えられたいかなる画面内でも複数のポートレットを持つことが出来るということだけが違う。
  • キャッシュ・サブシステムを速くする。其の事で、データベースを使う複合的ポートレットであってもHTMLを速く生成する事が出来る。
  • 開発を容易にし、開発者が自分のポートレットが動いているJetspeedエンジンの詳細の実装を知らなくても済むようにする。
  • 別のタイプのコンテンツの生成をポートレットが出来るようにする。ポートレットは、JDBCを通じたデータベース機能あるいは、Cocoonか何かを通じたXML -> XSL -> HTMLの複合的生成機能を使える。
  • 背景色・ポートレットの幅・タイトルバーの色をユーザが変更できるよう、ポートレットが自身を"skin"するようにする。
  • ポートレットは、PortletControllerで管理されている。このコントローラが明確な実装であり、独自の生成機能を提供する為に開発者がこのコントローラを変更可能となるようにする。
  • ポートレットはPortletControlによって生成され保持される。PortletControlがポートレットにスキンを加え、コンテンツを戻すようにする。
  • カテゴリベースのサブスクリプションを提供する。Jetspeed内のXMLサブスクリプションフレームワークが、ポートレットを(Portlet Markup Language を通じて)カテゴリに分類する事のできるようにする。これにより、容易なポートレットの管理が可能となる。
  • URLやパラメタのハッシュテーブルを含むPortletConfigオブジェクトが、ポートレットに渡されるようにする。このやり方により、PortletConfigを監視することで、ポートレットが稼動中に設定を柔軟に合わせる事ができる。
  • AbstractPortletが殆どの場面に措ける殆どの振る舞いを定義するよう、容易に書けるようにする。

ポートレットの例としては、ウェブページ内で動き、LDAPサーバに電話番号のセットを問い合わせる、小さいコントロールがあるでしょう。 Jetspeedの外で開発され、XMLファイルを修正し正しい場所を指すようにする事でフレームワーク内に組み込まれるでしょう。 独自ポートレットの開発は簡単であり、Portletメソッドの独自の実装による"Portlet"インターフェースの実装の問題でしかありません。

ポートレットは、自身がウェブアプリケーションとなるようセットアップされることもあるでしょう。 アプリケーションとして設定(getApplication() == true)されたポートレットは、全画面でのみ動きます。 "Portlications"(ポートレット・アプリケーション)を画面に一度に複数持つことは出来ません。 Jetspeedのナビゲーション機能を通じてなら、ユーザからいつでもアクセスされます。

ポートレットにはPortletConfigがあります。動作時の設定情報を決定する為、ポートレット内でPortletConfigが使われます。 ポートレットは、振る舞いを変更するために与えられるパラメタを取得する事ができます。 そのパラメタとは、普通のサーブレットパラメタ(ServletRequest・ServletResponse・Turbine RunData)です。

Jetspeed は、2・3のポートレット実装と共に世に送り出されています:

RSSPortlet
  • RDFサイトサマリ形式でレンダリングし、HTML形式でユーザに表現します。
  • FileServerPortlet
  • ユーザにHTML文書をURLから出します。
  • CocoonPortlet
  • スタイルシートとURLをパラメタとして取り、Cocoonによって変換し、コンテンツをユーザに戻します。
  • PortletViewerPortlet
  • ユーザがポートレットの追加情報(設定オプション・URL・プロパティを含む)を得る為の方法を与えます。第三者のリソースの複製(現在はAvantgo)といった追加オプションをここに含める事も出来ます。

  • DiskCacheDaemon

    Jetspeed を、Internet上のあらゆるところからのコンテンツで動くようセットアップする事ができます。 Internetではパフォーマンス条件が時間によって変わるかもしれないと言う事実を踏まえ、 遠隔ドキュメントの同一の複製をローカルに保存する為に高パフォーマンスのキャッシュ機能が必要でした。それがまさしくDiskCachです。 Jetspeed開発者が遠隔URLにアクセスする必要がある場合、 ドキュメントを要求する為にDiskCacheオブジェクトを使います。 DiskCacheは、URLを引っ張ってきて、ディスク上にコピーを格納します。 次回ユーザが遠隔ドキュメントを取ってこようとした際、DiskCacheオブジェクトが 既にローカルディスク上にコピーがあるかどうかを判断し、バージョンを返します。 これは、Netscape Navigator/Mozilla や Internet Explorer が使うディスクキャッシュに極めて似た機能です。

    上述のシナリオの唯一の問題は、結果的にコンテンツが期限切れ(時代遅れ)になってしまうことです。 さて、ここでDiskCacheDaemonの登場です。 Jetspeed管理者が指定する間隔(時間)に基づいて、DiskCacheDaemon(DCD)はキャッシュ内の全てのURLを覗きに行きます。 遠隔URLファイルが更新されていた場合、DCDは最新のコピーを取得し、ユーザが常に新しいコンテンツを見られるようにします。


    FeedDaemon

    FeedDaemonはDiskCacheDaemonと似ています。しかし、 URLをキャッシュから取ってくる代わりに、 Jetspeedドキュメントフィードのリモートコピーを取得します。 通常はOCSチャネルの更新用です。

    Jetspeed は、XML情報を取得したりパブリッシュしたりすることが出来るようにセットアップされます。 Open Content Syndication (OCS)で使う為に、XMLインプットフィードがセットアップされます。 OCSによって、開発者は遠隔XMLドキュメントやそれらのフォーマット/名前空間のリストをマークアップすることが出来ます。 OCSフィードを複数コンテンツプロバイダ(XMLTree・ Moreover等)からJetspeed が除外できるようにすべきです。 将来的には、第三者がデータ複製をJetspeed実装から行えるようにする為、OCSを通じた再パブリッシュをJetspeed がするようになるでしょう。


    PortletControl及びPortletController

    ポートレットのコンテンツ上部は、PorletControlとPortletControllerによって生成されます。

    PortletControl は、ポートレットが動く"box" (通常はHTMLの<table>)を与えます。 PortletControl は、ポートレットの<title>や<body>の生成を扱います。 PortletControl をエンドユーザに設定させるようにする事も出来ます。

    PortletController は、全体ページの情報を与えるため、複数のPortletControl(従ってPortletも)をつなぎ合わせます。 PortletController は、XMLを通じて設定され、殆ど全てのオプションをユーザに公開しています。


    Portletキャッシュ機能

    Jetspeed 上で、ポートレットは先進的なキャッシュ機能を利用する事が出来ます。 もっと高度なポートレットを開発するためには、これがどのように機能するかを知っておくのが重要です。

    クラス名やPortletConfig情報(パラメタ・URL等を含む)を通じて規定されるハンドラと共に、 ポートレットはキャッシュ内に置かれます。

    より高度なポートレットで、どうしても本格的なウェブアプリケーションのキャッシュ機能をオフにしたいと思う場合があります。 PortletインターフェースはCacheableインターフェースを拡張(extend)します。 これを使って、独自のisCacheable()メソッドを加え、falseを戻すようにする事が出来ます。 この瞬間、Jetspeedはポートレットをキャッシュしなくなります。

    時々、ポートレットがキャッシュからの削除を要求する必要がある場合もあります。 必要なのであれば、いつ消滅するかを決定出来るよう、独自のexpire()メソッドを準備すべきでしょう。 org.apache.jetspeed.portal.portlets.RSSPortletは、この良いサンプルです。



    Copyright © 1999-2005, Apache Software Foundation
    Translated into Japanese by Tetsuya Kitahata , powered by Terra-International, Inc.
    <% orig();%>