SeamFramework.org Community Documentation

- 前のページ
- 次のページ

## 第3章 JBoss Tools を使って Seam を始めよう

JBoss Tools は Eclipse プラグインを集めたものです。 JBoss Tools は Seam プロジェクト作成ウィザード、facelets と Java コードの Unified Expression Language (EL) のための入力補助、jPDLのためのグラフィックエディタ、Seam 設定ファイルのためのグラフィックエディタ、Eclipse から Seam 統合テストの実行サポートなどです。

端的にいえば、Eclipse ユーザーであれば、JBoss Tools を必要とするでしょう。

seam-gen 同様 JBoss Tools は JBoss AS と動作させるのが好ましいのですが、わずかに変更することで他のアプリケーションサーバーでも動作させることが可能です。 変更はこのリファレンスマニュアル中の seam-gen の記述と似ています。

## 3.1. 始める前に

開始前に JDK 5、JBoss AS 4.2 または 5.0、Eclipse 3.3、the JBoss Tools プラグイン ( 最低限、Seam Tools、Visual Page Editor、jBPM Tools と JBoss AS Tools) そして TestNG プラグイン for Eclipse がきちんとインストールされていることを確認してください。

Eclipse に JBoss Toolsをすばやくセットアップする方法については、正式な JBoss Tools installation ページをご覧ください。この詳細情報と別のインストール方法についてはJBoss コミュニティ Wiki の Installing JBoss Tools ページも調べることができます。

## 3.2. 新しい Eclipse プロジェクトのセットアップ

Eclipse を起動して Seam パースペクティブを選択してください。

File -> New -> Seam Web Project とすすめます。

最初に、プロジェクト名を登録します。 このチュートリアルでは `helloworld` とします。

次に、JBoss Tools に JBoss AS について指定します。 この例では JBoss AS 4.2を使いますが、JBoss AS 5.0 ももちろん利用可能です。JBoss ASの選択は二段階のプロセスからなります。 最初にランタイムを定義します。 さらに JBoss AS 4.2 を選択してください。

ランタイムの名前を登録し、ハードディスク上の位置を指定します。

次に、JBoss Tools がプロジェクトをデプロイ可能なサーバを定義する必要があります。 ここでも JBoss AS 4.2 と直前で定義したランタイムを選択してください。

次のサーバに名前をつける画面では、Finish を押してください。

いま作成と選択をしたランタイムとサーバを確認して、Dynamic Web Project with Seam 2.0 (technology preview) を選択して Next を押してください。

次の 3 つの画面では新規プロジェクトのカスタマイズが可能ですが、デフォルトで大丈夫なので、最後の画面に到達するまでただ <empahsis>Next</empahsis> を押してください。

最初のステップは JBoss Tools を使用する上で必要な Seam ランタイムを指定します。 新しい Seam Runtime を追加します。 - 名前をつけて、バージョンとして 2.0 を選択してください。

決める必要がある重要な選択は、プロジェクトとして EAR 形式デプロイと WAR 形式デプロイのどちらにするかです。 EAR プロジェクトは EJB 3.0 に対応し Java EE 5 が必要です。 WAR プロジェクトは EJB 3.0 には対応しませんが、く J2EE 環境にデプロイ可能です。 WAR は EAR に比べシンプルで理解しやすいパッケージです。 JBoss のような EJB3 が実行可能なアプリケーションサーバーにインストールする場合は `EAR` を選択してください。 これ以外は `WAR` を選択してください。 以降、 このチュートリアルでは WAR デプロイメントが選択されたと仮定しますが、 EAR デプロイメントの場合もまったく同じステップで進むことができます。

次に、データベースのタイプを選択します。 ここでは既存のスキーマを持つ MySQL がインストールされていることを前提とします。 JBoss Tools にデータベースについて指定する必要があります、データベースとして MySQL を選択して、新たにコネクションプロファイルを作成してください。 Generic JDBC Connection を選択してください。

名前をつけてください。

JBoss Tools はデータベースドライバを持っていないので、JBoss Tools にどこに MySQL JDBC があるかを指定する必要があります。 クリックしてドライバに関して指定してください。

MySQL 5 の場所で、Add... を押してください。

MySQL JDBC Driver テンプレートを選択してください。

Edit Jar/Zip を選択することでコンピュータ上の jar の位置を指定してください。

接続のためのユーザー名とパスワードを確認して正しければ、Ok を押してください。

最後に新規に作成されたドライバを選択してください。

既存のデータモデルで作業をしている場合、 データベースに既にテーブルが存在していることを JBoss Tools に必ず知らせてください。

接続のためのユーザー名とパスワードを確認して、Test Connection ボタンを使用して接続をテストします。 動作したならば、Finish を押します。

最後に、生成された Bean のパッケージ名を確認して、問題なければ、Finish をクリックします。

JBoss は WAR や EAR の優れたホット再デプロイメントをサポートします。 残念ながら、 JVM にバグがあるため、 — 開発段階では一般的な — EAR の再デプロイメントを繰り返すと最終的には JVM が perm gen スペースを使い果たしてしまうことになります。 この理由により、デプロイメント時に perm gen space を大きく確保した JVM で JBoss を稼動させることを推奨します。 以下のような値を推奨します。

    -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512

十分なメモリがない場合には、以下が最小の推奨値です。

    -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256

JBoss Server View にサーバを配置し、サーバの上で右クリックして Edit Launch Configuration を選択してください。

そして、VM 引数を変更してください。

今すぐに変更を行いたくない場合は特に行う必要はありません — `OutOfMemoryException` が発生した時点で対処してください。

JBoss の起動、プロジェクトのデプロイのためには、作成したサーバの上の右クリックして Start をクリックしてください。 また、デバッグモードで起動するには Debug をクリックしてください。

プロジェクトディレクトリに XML 設定ドキュメントが生成されますがびっくりしないでください。 これらのほとんどが標準 Java EE に関するもので、 一度生成したら 二度と見る必要のないものです。 すべての Seam プロジェクトで 90% は同じものです。

## 3.3. 新規のアクションを生成する

従来のアクションスタイルの Web フレームワークに慣れている場合、 おそらくどのように Java のステートレスアクションメソッドを持つ簡単な Web ページが生成されるのだろうかと思われるでしょう。

最初に、New -> Seam Action と選択してください。

ここでは、Seam コンポーネント名を登録してください。 JBoss Tools は他のフィールドのために気の利いたデフォルトを選択します。

最後に Finish を押します。

さあ、`http://localhost:8080/helloworld/ping.seam` に進んで、クリックボタンを押してください。 プロジェクトの `src` directory ディレクトリを見れば、このアクションに隠されたコードを見ることができます。 `ping()` メソッドにブレークポイントを置いて、 クリックボタンを押してください。

最後に、`helloworld-test` プロジェクトを開いて、`PingTest` クラスを指定して、それを右クリックして、Run As -> TestNG Test と選択してください。

## 3.4. アクションのあるフォームを生成する

最初のステップはフォームを生成することです。 New -> Seam Form と選択してください。

ここでは、Seam コンポーネント名を登録してください。 JBoss Tools は他のフィールドのために気の利いたデフォルトを選択します。

`http://localhost:8080/helloworld/hello.seam` と進んでください。 そして生成されたコードを見てください。 テストを起動してください。 フォームと Seam コンポーネントに新しいフィールドを追加してみてください。(Seam がコンポーネントをホットリロード 項3.6. 「Seam と JBoss Tools を使用した増分ホットデプロイメント」 するので、 `src/hot` のコードを変更するたびにアプリケーションサーバーをリスタートする必要がないことに留意してください。)

## 3.5. 既存のデータベースからアプリケーションを自動生成する

手動でデータベースの中にテーブルを生成します。 (別のデータベースに切り替える必要がある場合、新たなプロジェクトを作成して、正しいデータベースを選択してください。) そして、New -> Seam Generate Entities と選択します。

JBoss Tools には、データベーススキーマからエンティティ、コンポーネント、ビューのリバースエンジニアリングをするか、あるいは既存 JPA エンティティからコンポーネントとビューのリバースエンジニアリングをするかのオプションがあります。 ここではデータベースからのリバースエンジニアリングを行います。

デプロイメントの再起動：

`http://localhost:8080/helloworld` にすすんでください。 データベースをブラウズ、既存オブジェクトの編集、そして新規オブジェクトの作成が可能です。 生成されたコードを見ると、何てシンプルなんだと驚かれるはずです！ Seam はマニュアルで簡単にデータアクセスコードが書けるよう設計されています。 リバースエンジニアリングを使用したカンニングをしたくない人にも簡単です。

## 3.6. Seam と JBoss Tools を使用した増分ホットデプロイメント

JBoss Tools は以下について増分ホットデプロイメントをサポートします。

- facelets ページ

- `pages.xml` ファイル

out of the box.

ただし Java コードを変更したいのならば、Full Publish することでアプリケーションを再起動する必要があります。

しかし、 早いペースの編集/コンパイル/テストのサイクルを望むならば、 Seam は JavaBean コンポーネントの増分再デプロイメントをサポートしています。 この機能を有効にするためには、 JavaBean コンポーネントを `WEB-INF/dev` ディレクトリにデプロイする必要があります。 その結果、コンポーネントは WAR あるいは EAR クラスローダではなく、 特殊な Seam クラスローダによってロードされるようになります。

以下の制約を知っている必要があります。

- コンポーネントは JavaBean コンポーネントでなければならず、 EJB3 Bean は不可です。 (この制約は修正中です。)

- エンティティはホットデプロイできません。

- `components.xml` でデプロイされたコンポーネントはホットデプロイできない場合があります。

- ホットデプロイ可能なコンポーネントは、 `WEB-INF/dev` の外部にデプロイされたクラスからは見えません。

- Seam デバッグモードは有効で `jboss-seam-debug.jar` は `WEB-INF/lib` になければなりません。

- web.xml に Seam フィルタをインストールしなければなりません。

- ロードとデバッグが有効な環境のシステムであればエラーが発生するかもしれません。

JBoss Tools を使用して WAR プロジェクトを生成する場合、 増分ホットデプロイメントは、`src/hot` ソースディレクトリにあるクラスはそのまま使用可能です。 しかし、 JBoss Tools は EAR プロジェクトに対する増分ホットデプロイに対応していません。

- 前のページ第2章 seam-gen を使って Seam を始めよう
- 上に戻る
- ホーム
- 次のページ第4章 コンテキスト依存コンポーネントモデル