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
LayoutPanelを拡張して、パネルを作成します。-
super(new RegionLayout())
-
setLabel(...)
-
new Heading(0)
<h1> XHTML要素としてレンダリングされます。-
helloWorldHeading.setLabel("Hello World!")
-
add(helloWorldHeading)
「Hello World」というタイトルを含むパネルを表示するJavaソースコードはこれですべてですが、このアプリケーションをブラウザで実際に試すには、もちろん、いくつかの操作を行う必要があります。まずGuiseのインストール方法を確認してから、このHello Worldアプリケーションの構成方法を見ていくことにしましょう。
Guiseのインストール
Guiseをインストールする前に、以下の環境が用意されていることを確認します。
- Java 5.0以降
- 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/」にマップすることも前提です。
- Guiseライブラリファイルcom.guiseframework-unlicensed.jarをアプリケーションクラスパスにインストールします。
- JavaBeans Activation FrameworkライブラリおよびJavaMailライブラリをWebアプリケーションクラスパスにインストールします。
- 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サンプルにアクセスできるようになります。
