jettyへのWebアプリケーションのデプロイ
Webアプリケーションサーバjettyにアプリケーションをデプロイするには、
の2点。なお、6.0では、webappsに配備する場合は、設定ファイルの作成は必要なく、単にwarをwebappsディレクトリにコピーするだけでよい。
ただし、TOMCATで動作しているからといってそのまますぐにアプリケーションが動作するわけではなさそう。(6.0.1では、改善されているようだが。)以下で使用したjettyは、5.1.4。
warに含まれるweb.xmlの内容
ちゃんとnamespaceを指定しなければいけない。たとえば、
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>click-servlet</servlet-name> <servlet-class>net.sf.click.ClickServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>click-servlet</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>redirect.html</welcome-file> </welcome-file-list> </web-app>
では、だめ。web-appタグは以下のようになっていなければサーバ起動時にエラーとなる。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> (以下略)
namespaceを使っていないからといって、namespaceの実体を省略してはいけないようだ。
サーバ起動時に指定する設定ファイル
etc/demo.xmlを参考に作成したが、書き方がよくわからない。下の例では、作成したアプリケーションは、clicktest.warにまとめられており、サーブレットは、clicktest/にある。demo.xmlの適当な場所に以下の行を追加した。
<Call name="addWebApplication"> <Arg>/clicktest/*</Arg> <Arg><SystemProperty name="jetty.home" default="."/>/webapps/clicktest.war</Arg> <Set name="extractWAR">true</Set> </Call>
最初のArgタグは、サーブレットにアクセスするパスを指定し、次のArgタグはアプリケーションそのもののファイルをしていているらしい。展開したものを指定する場合は、配備したディレクトリのパスを指定すればできた。Setタグは、TOMCATのように実行時にwarを展開するのかと思ったが、実際に動作させてみると、warを配備したディレクトリに展開はされないようだ。demo.xmlには、値がfalseになっているエントリもあるが、この場合、値をfalseにすると、VM_global_library.vmというリソースがないというエラーになる。(5.1.11では、値をfalseにしてもエラーとならない。)
アプリケーションサーバ自体はTOMCATよりはるかに起動が速い。
あと、welcom-fileが利いていないかもしれない。http://localhost:8080/clicktest/とだけ指定しても、redirect.htmlに指定されたページにジャンプしない。(5.1.11, 6.0.1ではジャンプする。)