S-JIS[2007-07-07/2008-08-15] 変更履歴

WARファイル

WAR(ワー)は、Javaのウェブ用のアーカイブ(Web Archive)のこと。J2EEの仕様で決められているらしい。
(実はWARは「Web Application Archive」が正しいらしいんだけど、それなら略はWAAなのでは…? でもEARもそういう略し方じゃないな(苦笑)
いや、そうじゃなくて「Web Application」はいわばそれだけで1つの単語で、「WebApplication Archive」という取り方なのか?)

コンテンツ(jspファイルやらhtmlファイルやら画像ファイル、およびウェブ用のプログラム等)を一つのファイルにまとめたもの。
J2EEサーバー上にコンテンツを持って行くのに便利。


warファイルの作成

warファイルを作成するにはantを使用するのが便利。

ディレクトリ・ファイル構成の例
xxxプロジェクト xxx   htmlファイルやjspファイル等を置く。サブディレクトリも作成可。
WEB-INF web.xml 呼び出すサーブレット等を書いた設定ファイル
classes コンパイルしたclassファイル
lib 実行時に使用するjarファイル
src   javaファイル
bin build.xml  
xxx.war 生成されるwarファイル

build.xml:

<?xml version="1.0" encoding="Shift_JIS"?>
<project name="make_war" basedir=".." default="mk_war">
	<property name="xxx.home" location="xxx" />

	<!-- warファイルの作成 -->
	<target name="mk_war">
		<war destfile="xxx.war" webxml="${xxx.home}/WEB-INF/web.xml">
			<fileset dir="${xxx.home}">
				<exclude name="**/web.xml" />
			</fileset>
		</war>
	</target>
</project>

要するに、xxxプロジェクト内のxxxディレクトリが圧縮される。
そういう意味ではjarファイルと同様だが、warファイルではweb.xmlが必須。

antでビルドする前のweb.xmlはどこにあってもよくて、warタスクのwebxml属性で場所を指定する。ビルドすると、(warファイル内の)WEB-INFの直下に置かれる。
上記の例では元々WEB-INFの直下に置いているため、filesetのexcludeでわざわざ除外している。
(こうしないと、二重に存在することになってエラーとなる)
(web.xmlがどこにあってもいいとは言え、最終的にWEB-INFの直下にあるので、最初からそこにあった方が分かりやすいと思う)


warファイルの展開

J2EEサーバーの所定の場所にwarファイルを置けば、勝手に展開してくれる。
展開して使える状態にすることをデプロイ(deploy)と言う。

Tomcat5.5の展開場所
WebLogic10の展開場所 [2008-08-02]
JBossASの展開場所 [2008-08-15]


サーブレットへ戻る / J2EEへ戻る / Javaへ戻る
メールの送信先:ひしだま