SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

インターネットアプリケーションの新しいフレームワーク「Guise」

HTML、JavaScript実装なしでAjaxを実現するJavaフレームワーク

Guiseで「Hello World!」

 チュートリアルのお約束に従い、画面に「Hello World!」というテキストを表示するGuiseアプリケーションを作成してみます。

package com.example;

import com.guiseframework.component.*;
import com.guiseframework.component.layout.RegionLayout;

public class HelloWorldPanel extends LayoutPanel
{
   public HelloWorldPanel()
   {
      super(new RegionLayout());
      setLabel("Guiseu2122 Demonstration: Hello World");

      final Heading helloWorldHeading = new Heading(0);
      helloWorldHeading.setLabel("Hello World!");
      add(helloWorldHeading);
   }
}

 技術的には、ここで新しいGuiseアプリケーション型を作成する必要はありません。既定のGuiseアプリケーション型を使用し、カスタマイズされたパネルを提供して、Guiseアプリケーションフレームに配置します。このアプリケーションのメインパネルの主要なセクションを見ていきましょう。

  • class HelloWorldPanel extends LayoutPanel
  • 標準のGuiseパネルクラスLayoutPanelを拡張して、パネルを作成します。
  • super(new RegionLayout())
  • パネルを作成します。このときに子コンポーネントのレイアウト方法を指定します。この例では、RegionLayoutクラスを使用することで、パネルをいくつかの領域に分割するよう指定しています。
  • setLabel(...)
  • 各コンポーネントにはラベルを指定できます。ラベルの用途は状況に応じて異なります。ここでは、このメインパネルのラベルはブラウザ内のページのタイトルとして使用されます。
  • new Heading(0)
  • 新しいコンポーネントHeadingを作成します。ここではトップレベルヘッダ(レベル0)の使用を指定しています。このコンポーネントは、ブラウザの中で<h1> XHTML要素としてレンダリングされます。
  • helloWorldHeading.setLabel("Hello World!")
  • ヘッダのラベルを設定します。ヘッダコンポーネントのラベルには、ブラウザに表示するタイトルではなく、ヘッダコンテンツとして表示するテキストを指定します。
  • add(helloWorldHeading)
  • パネルにヘッダを追加します。特に指定しない限り、RegionLayoutはパネルの中心にヘッダを配置します。

 「Hello World」というタイトルを含むパネルを表示するJavaソースコードはこれですべてですが、このアプリケーションをブラウザで実際に試すには、もちろん、いくつかの操作を行う必要があります。まずGuiseのインストール方法を確認してから、このHello Worldアプリケーションの構成方法を見ていくことにしましょう。

Guiseのインストール

 Guiseをインストールする前に、以下の環境が用意されていることを確認します。

  • Java 5.0以降
  • 重要:JDK 1.5.0_11の時点では、Sun Javaコンパイラのバグが原因でGuiseと連携できません。最新のEclipse 3.2.xコンパイラを使用してアプリケーションをコンパイルする必要があります。
  • JavaBeans Activation Frameworkライブラリ(Webアプリケーションクラスパスに配置)
  • JavaMailライブラリ(Webアプリケーションクラスパスに配置)
  • Apache Commons FileUpload 1.0ライブラリ(Webアプリケーションクラスパスに配置)
  • 最新のGuiseライブラリ(Webアプリケーションクラスパスに配置)

 また、この説明では、WebアプリケーションをホストするJavaサーブレットコンテナが「/server/webapp/」に格納され、Webアプリケーション定義ファイルが「/server/webapp/WEB-INF/web.xml」に格納されることを前提としています。Guiseアプリケーションを「/webapp/example/」にマップすることも前提です。

  1. Guiseライブラリファイルcom.guiseframework-unlicensed.jarをアプリケーションクラスパスにインストールします。
  2. JavaBeans Activation FrameworkライブラリおよびJavaMailライブラリをWebアプリケーションクラスパスにインストールします。
  3. Apache Commons FileUpload 1.0ライブラリをWebアプリケーションクラスパスにインストールします。

アプリケーション記述ドキュメントの設定

 Guiseをインストールしたら、Hello Worldアプリケーションの設定に戻ります。「Hello World」ページをユーザーにどのようにして閲覧させるかをGuiseに指示するには、Guiseアプリケーション記述ドキュメントを作成する必要があります。このドキュメントでは、最低限、アプリケーションの「ナビゲーションパス」とコンポーネントのマッピングを指定します。

 Guiseアプリケーション記述ドキュメントでは、XML形式でシリアル化されるRDFオントロジの一種であるPLOOPを使用します。Guiseアプリケーション記述ドキュメントについては後で詳しく説明することにして、まず今回のサンプルアプリケーションに必要なアプリケーション記述ドキュメントを紹介しておきます。このコードは「/server/webapp/WEB-INF/example-application.rdf」ファイル内に記述されます(web.xmlと同じ場所です)。

<rdf:RDF
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:property="http://ploop.org/namespaces/property#"
   xmlns:guise="java:com.guiseframework."
>
   <guise:DefaultGuiseApplication>
      <property:destinations rdf:parseType="Collection">
         <guise:ComponentDestination>
            <property:path>helloworld</property:path>
            <property:componentClass>
               com.example.HelloWorldPanel
            </property:componentClass>
         </guise:ComponentDestination>
      </property:destinations>
   </guise:DefaultGuiseApplication>
</rdf:RDF>

 アプリケーション記述ドキュメントの中心部分では、<guise:ComponentDestination>を使用してコンポーネントの「マップ先」を指定します。この例では、helloworldという<property:path>を、<property:componentClass>で指定したパネルクラスにマップしています。

web.xmlの構成

 最後に、サーブレット「/server/webapp/WEB-INF/web.xml」ファイルで、Guiseを構成し、アプリケーション記述ドキュメントを参照する必要があります。最初に、先頭の<servlet>定義の前に、HTTPセッションリスナとしてHTTP Guiseセッションマネージャを追加します。

<listener>
   <description>
      The class that manages Guise sessions in an HTTP servlet
      environment.
   </description>
   <listener-class>
      com.guiseframework.platform.web.HTTPGuiseSessionManager
   </listener-class>
</listener>

 次に、GuiseHTTPServletを使用してGuiseアプリケーションのサーブレット定義を追加します。Guiseアプリケーションは、各アプリケーションがそれぞれ異なるパスにマップされる限りは、いくつでも定義可能であり、それぞれがGuiseHTTPServletを使用します。Guiseアプリケーションごとに、web.xmlに関連する個別のGuiseアプリケーション記述ファイルを指定します。

<servlet>
   <description>Example Application</description>
   <servlet-name>exampleApplication</servlet-name>
   <servlet-class>
      com.guiseframework.platform.web.GuiseHTTPServlet
   </servlet-class>
      <init-param>
         <param-name>application</param-name>
         <param-value>example-application.rdf</param-value>
      </init-param>
   <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
   <servlet-name>exampleApplication</servlet-name>
   <url-pattern>/example/*</url-pattern>
</servlet-mapping>

 J2EEコンテナを起動すると、要求を受け取るGuiseアプリケーションが「http://localhost/webapp/example/」に作成されます。これで、「http://localhost/webapp/example/helloworld」のHello Worldサンプルにアクセスできるようになります。

次のページ
「Hello User!」サンプル

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

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

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Garret Wilson(Garret Wilson)

自身が設立したGlobalMentor, Inc.でインターネット標準に関するコンサルティングを行う。Guiseの主要アーキテクトでもある。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1242 2007/04/26 08:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー