連載
» 2012年12月13日 18時00分 公開

小山博史のJavaを楽しむ(17):JBoss Forgeでアジャイルな対話式開発をやってみた (2/4)

[小山博史,SSS(G)/ガリレオ]

ForgeでMavenプロジェクトを作成

 プロジェクトを作成してみましょう。下記の例では、プロジェクト名「simpleapp」、パッケージ名「jp.example.simpleapp」、プロジェクトのフォルダ 「simpleapp」としています。成功すると「***SUCCESS*** 」というメッセージが表示されます。

[no project] forge $ new-project --named simpleapp --topLevelPackage jp.example.simpleapp --projectFolder simpleapp
***SUCCESS*** Created project [simpleapp] in new working directory 【略】

新規Mavenプロジェクトの中身

 これで、Mavenプロジェクトができます。「$HOME/workspace/forge/simpleapp」のファイルを見ると、「pom.xml」が生成されています。この時点では下記のようなディレクトリとファイルしか生成されていません。ここに必要なファイルやディレクトリを追加してWebアプリを完成させていきます。

.

├── pom.xml

└── src/

  ├── main/

  │  ├── java/

  │  │   └── jp/

  │  │     └── example/

  │  │       └── simpleapp/

  │  └── resources/

  └── test/

    ├── java/

    └── resources/


scaffoldでひな型を簡単に作成

 手作業でファイルを追加していっても良いのですが、簡単なひな型を作るための手段「scaffold setupコマンド」が用意されているので、それを使います。

 「scaffold」とは足場という意味で、アプリを作成するのに必要なものを一通り用意することから、この用語が使われているようです。Ruby on Railsの機能として一躍有名になりましたね。ここでは、Forgeデフォルトの「JavaServer Faces」を使ってファイルを生成します。

 JavaServer Facesとは、Java Webアプリのフレームワークの1つで、これを使うことでJava EEアプリのユーザーインターフェイスの開発が簡単にできるようになります。

[simpleapp] forge $ scaffold setup
 ? No scaffold type was selected, use default [JavaServer Faces]? [Y/n] 
 ? Scaffold provider [faces] is not installed. Install it? [Y/n] 
 ? Facet [forge.maven.WebResourceFacet] requires packaging type(s) [war], but is currently [jar]. Update packaging? (Note: this could deactivate other plugins in your project.) [Y/n] 
***SUCCESS*** Installed [forge.maven.WebResourceFacet] successfully.
Use which version of 'jboss-javaee-6.0' ?
【略】
  13 - [org.jboss.spec:jboss-javaee-6.0:pom::3.0.1.Final]*
 ? Choose an option by typing the number of the selection [*-default]  [0] 
***SUCCESS*** Installed [forge.spec.jpa] successfully.
【略】
 ? Create scaffold in which sub-directory of web-root? (e.g. http://localhost:8080/simpleapp/DIR) [/] 
【略】

 「?」で始まる行については、「forge」コマンドからの質問となるので、キー入力が必要です。いくつか質問がありますが、デフォルトのまま[Enter]キーを入力すれば、サンプルアプリが生成されます。

 最後の質問では、WebアプリへアクセスするときのURLを指定しています。「/」を指定すると、「http://localhost:8080/simpleapp/」を指定したのと同じになります。

作られたひな型の中身

 この結果、次のようなJava EE用アプリのひな型が出来上がります。「java」ディレクトリにはJavaのプログラム、「resources」にはライブラリや設定ファイル、「webapp」にはWebアプリ用のHTML/CSS/JSPファイルや「WEB-INF」ディレクトリのファイルを置きます。これらのディレクトリには、最低限必要なファイルが生成されます。

.

└── pom.xml

└── src/

  ├── main/

  │   ├── java/ …… Javaプログラム

  │   ├── resources/ …… META-INF/persistence.xml など

  │   └── webapp/ …… index.html、index.xhtmlなど

  │     ├── WEB-INF/ …… web.xmlなど

  │     └── resources/ …… favicon.ico、forge-logo.pngなど

  │       └── scaffold/ …… pageTemplate.xhtmlなど

  └── test/ ... テストに必要なJavaプログラムやリソース


 このような感じでForgeで用意されているコマンドを実行することによって、プログラムに必要なものを用意したり、設定をしたりすることができます。

Mavenプロジェクトのビルド

 プログラミングはまだしていませんが、取りあえずデプロイして動かすことができるひな型が用意できたので、Webブラウザに表示させるところまでやってみましょう。

Forgeの「build」コマンドでビルド

 デプロイ用のwarファイルを生成するには、「build」コマンドを実行します。Mavenプロジェクトですから、必要なファイルが「$HOME/.m2」ディレクトリにダウンロードされます。warファイルは「$HOME/workspace/forge/simpleapp/target/simpleapp.war」に生成されます。

 また、このファイルはMavenのローカルリポジトリにインストールされます。成功すると、「BUILD SUCCESS」と表示されます。

[simpleapp] simpleapp $  build
【略】
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
【略】

Mavenの「mvn」コマンドでビルド

 Mavenのローカルリポジトリが出てきたところで、気付く人も多いでしょうが、Forgeの「build」コマンドを使うのではなく、通常のコンソールの画面で「mvn」コマンドを使ってwarファイルを作成することもできます。その場合は次のようにします(この場合はForgeは起動していません)。

$ mvn clean package

アプリケーションサーバへのデプロイ

 warファイルが用意できたら、Java EEアプリを実行できるコンテナへデプロイして動かしてみましょう。

JBoss AS 7のセットアップ

 ここではJBossを中心にしてForgeが開発されていることと、後ほど説明するプラグインが提供されていることから、JBoss AS(Application Server)のバージョン7を使うことにします。

図3 JBoss Application Server

 まだJBoss ASを用意してない場合、JBoss ASのページの右にあるダウンロードページへのリンクをクリックして、ダウンロードページから取得します。ここでは「jboss-as-7.1.1.Final.zip」をダウンロードして、次のように展開します。

$ unzip $HOME/{ダウンロード先のパス}/jboss-as-7.1.1.Final.zip \
   -C applications
$ cd $HOME/applications
$ ln -s jboss-as-7.1.1.Final jboss-as

 ここで環境変数「JBOSS_HOME」を設定しておいた方が良いので、「$HOME/.profile」へ下記を追加して、1度ログアウトしてからログインをし直します。

export JBOSS_HOME=$HOME/applications/jboss-as

JBoss AS 7の動作確認

 最初に、JBoss AS 7の動作確認をしておきましょう。次のように起動します。

$ $JBOSS_HOME/bin/standalone.sh

 正常に動作していれば、Webブラウザで「http://localhost:8080/」へアクセスすると、「Welcome to JBoss Application Server 7」のページが表示されます(図4)。

図4 JBoss AS 7のWelcomeページ

 停止するにはJBossを起動したコンソールで[Ctrl]+[C]キーを入力します。

JBoss AS 7のプラグインをForgeにインストール

 JBoss AS 7の用意ができたら、Forgeを起動して「jboss-as-7」のプラグインをインストールします。これにより、Forgeを起動した状態でJBoss AS 7の起動や停止はもちろんのこと、warファイルのデプロイやデプロイの取り消しが可能になります。

$ forge
[no project] forge $ forge install-plugin jboss-as-7
Connecting to remote repository [https://raw.github.com/forge/plugin-repository/master/repository.yaml]... connected!
***INFO*** Preparing to install plugin: jboss-as-7
【略】
JBoss Forge, version [ 1.1.2.Final ] - JBoss, by Red Hat, Inc. [ http://jboss.org/forge ]
The following plugins have been activated: [as7]
[no project] forge $

 プラグインは「the Central Plugin Index(CPI)」からインストールできます。ページのメッセージを見ると、「https://raw.github.com/forge/plugin-repository/master/repository.yaml」がデフォルトで使われています。ちなみに、プラグインを削除するには、「forge remove-plugin」コマンドを使います。

 jboss-as-7のプラグインのインストールができたら、次のように設定します。最初に設定するプロジェクトのディレクトリで「cd」コマンドで移動しています。このように、プロジェクトごとに設定ができます。「user001」のところは自分の環境に合わせて、アカウント名を指定するように直してください。

 ちなみに、「Enter path for JBoss AS or leave blank to download」に対して指定しなかった場合は、JBoss AS 7.1.1のダウンロードが始まります。プロジェクトごとにJBoss ASを用意したい場合に知っておくと役に立ちます。

[no project] forge $ cd simpleapp
[simpleapp] simpleapp $ as7 setup
 ? The Java Home '/home/hiro345/applications/jdk7' is already set, would you like to override it? [y/N] 
 ? A default version of 7.1.1.Final is already set, would you like to override it? [y/N] 
 ? Enter path for JBoss AS or leave blank to download: /home/user001/applications/jboss-as

ForgeでJBoss AS 7を操作

 設定ができたら、Forgeでプロジェクトへ設定したJBoss AS 7を操作できるようになります。次のように「as7 start」コマンドでJBoss AS 7を起動してから、warファイルを「as7 deploy」コマンドでデプロイします。

[simpleapp] simpleapp $ as7 start
【略】
***INFO*** JBoss AS 7.1.1.Final has successfully started.
[simpleapp] simpleapp $ as7 deploy
【略】
The deployment operation (FORCE_DEPLOY) was successful.

 デプロイが成功してから、「http://localhost:8080/simpleapp/」へアクセスすると、ForgeのWebアプリの初期画面(図5)が表示できます。

図5 ForgeのWebアプリの初期画面

 確認ができたらJBoss AS 7は停止します。

[simpleapp] simpleapp $ as7 shutdown

 なお、次のようにしてプロジェクトで生成したwarファイルのデプロイのやり直し、デプロイ取り消しができます。

[simpleapp] simpleapp $ as7 redeploy
[simpleapp] simpleapp $ as7 undeploy

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。