CodeZine(コードジン)

特集ページ一覧

Java Enterprise Portalとポートレット開発の紹介

企業ポータルサーバとオープンソースポータルの両面から解説

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/01/13 14:00

ダウンロード サンプルソース (47.4 KB)

目次

 次に、ポートレット用のコントローラ、ビュー、ハンドラとして機能するJavaソースコードを記述します。ビューはJSPページ、コントローラとハンドラはJavaクラスです。これらのサンプルについては、本稿のダウンロード可能なソースコードを参照ください。その中には、本稿のポートレットスケルトンプロジェクトがあります。

 コントローラは、ハンドラクラスを利用することにより、Webサービス、データベース、またはフィードなどのデータソースからデータを取得します。コマンドパターンによって、このデータをビューへと引き渡す機構を実装できます。ユーザーのポートレットセッション全体を通して、情報の送受にはcommandObjectを使用します。

 例えば、データを取得し、それをビューレイヤーに返すためのポートレットAPIのメソッドのスケルトンコードは、次のようになります。

@Override
protected ModelAndView handleRenderRequestInternal(
   RenderRequest request, RenderResponse response) throws Exception
{      
   logger.info ("Inside Controller handleRenderRequestInternal");
   Map<String, CommandObject> model = new
     HashMap<String, CommandObject>();
   CommandObject commandObject =
     (CommandObject)request.getPortletSession().getAttribute(
     CommandObject.COMMAND_NAME,PortletSession.APPLICATION_SCOPE);
   if (commandObject == null){
      commandObject = new CommandObject();
   }

   // logic to get the data and put it in the commandObject
   // should be here...

   String view = getFormView();
   model.put("commandObject", commandObject);
   ModelAndView mav = new ModelAndView(view, model);
   return mav;  
}
@Override
public void onSubmitAction (final ActionRequest request,
  final ActionResponse response, final Object command,
  final BindException bindException) throws Exception
{
   logger.info ("Inside onSubmitAction");
   // Set the form bean into session so that it will be available
   CommandObject commandObject = (CommandObject)command;
   logger.info("Command Object :"+ToStringBuilder.reflectionToString(
      commandObject));
   request.getPortletSession ().setAttribute ("command_obj",
      command,PortletSession.APPLICATION_SCOPE);
}

 JSPからは、以下のようにしてデータを取得できます。

<form:form action="${formAction}" name="quickProcess"
   method="post" commandName="commandObject">
  <form:hidden path="p" id="p" />
  <c:if test="${commandObject.someList != null}">
    <c:forEach items="${commandObject.someList}"
      var="listItem" varStatus="loop">
      <c:out value="${listItem.name}"/><br>
    </c:forEach>
  </c:if>
</form:form>

 ポートレットは、それを画面上にレイアウトする方法、リサイズの可否、高さや幅を指定しないことに注意してください。これらの外部的な属性はすべて、ポートレットコンテナが制御します。

 ポートレットプロジェクトを動作させるには、それをビルドしデプロイする必要があります。ビルドでは、Javaの標準的なwarファイルを(通常はAntまたはMavenを使用して)作成します。デプロイでは、warファイルをアプリケーションサーバに配置します。このアプリケーションサーバでは、ポートレットコンテナアプリケーションも稼働しています。ポートレットがポートレットコンテナに登録されるときには、どのようなポートレットが存在し、何という名前なのかを調べるためにportlet.xmlファイルが参照されます。例えばVignette Portalサーバで新しいポートレットを作成するには、目的のポートレットを検索してサイトに追加します(図6と図7参照)。

図6 Vignetteにおけるポートレットの追加:Vignette Portalサーバでは、ポートレットをリスト表示し、追加できる
図6 Vignetteにおけるポートレットの追加:Vignette Portalサーバでは、ポートレットをリスト表示し、追加できる
図7 Vignetteにおけるポートレットの検索:サイトに追加するポートレットを検索することもできる
図7 Vignetteにおけるポートレットの検索:サイトに追加するポートレットを検索することもできる

 ポートレットをポートレットコンテナに追加したら、(プラットフォームによっては)その配置、レイアウト、属性を設定できます。例えば、デフォルトの幅と位置を設定したり、ポートレットの最小化や移動ができないように指定したりできます。

 図8に、3つの設定済みポートレットからなるVignetteのページ例を示します。これが、ユーザーがポータルにログインしたときに使用されるデフォルトの配置となります。

図8 Vignetteにおけるポートレットのレイアウト設定:Vignetteにおいてポートレットのレイアウトを設定できる管理ページ
図8 Vignetteにおけるポートレットのレイアウト設定:Vignetteにおいてポートレットのレイアウトを設定できる管理ページ

 図9は、eXo JBossポートレットコンテナで選択できるデフォルトレイアウトを示したものです。もちろん、これ以外のレイアウトも可能ですが、ほんの数回のマウスクリックですぐに使用できるページグリッドレイアウトがあるのは便利です。

図9 デフォルトのレイアウト:eXo JBossポートレットコンテナでは、いくつかのデフォルトのレイアウトの中から選択できる
図9 デフォルトのレイアウト:eXo JBossポートレットコンテナでは、いくつかのデフォルトのレイアウトの中から選択できる

 最新のポートレットコンテナでは、ポータルサイトのルック&フィールの変更を容易にするために、ポートレットのレイアウト、スキン、UIスキームなどを便利な管理ダッシュボードからまとめて変更できるようになっています。

 以上、Webポータルおよびポートレットコンテナの動作の基本と、最新のJava仕様およびデプロイメント手法を用いたポートレットの開発例を示しました。具体的な仕様の策定により、Web開発分野において、オープンソースと商用ベンダーの両方によるポートレットコンテナが普及しました。それによって、JavaのWeb開発者は、ポートレットコードを再利用し、ビジネスロジックに専念し、ポータルコードをそれほど記述しなくてもそのまま使用できる堅牢な機能をエンドユーザー向けに提供できるようになりました。今後数年間で、Javaポータルの分野にどのような新しい進展が見られるかは、興味深いところです。より詳細な情報については、以下の参考サイトを参照ください。

参考サイト



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Vlad Kofman(Vlad Kofman)

    ウォールストリート有数の企業でエンタープライズレベルのプロジェクトに携わる。また、米国政府の防衛関連の仕事も手がけている。特に関心を寄せているのは、オブジェクト指向プログラミング方法論、UI、デザインパターン。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5