何かと忘れがちなので、Tomcatへのアプリケーションのデプロイ方法をまとめておく。
Tomcatのディレクトリ構成
Tomcatのホームディレクトリはもちろんインストールの仕方によって変わるけれども、私の場合は「/usr/share/tomcat6」だった。CentOS6.4です。
で、この下にいくつかのフォルダがある。
主要なフォルダは「conf」と「webapps」の2つ。この2つを押さえておけばひとまずOK。
「conf」ディレクトリ
シンボリックリンクで「/etc/tomcat6」につながっている。
server.xml、web.xml、tomcat-users.xmlなどの設定ファイルがある。
ちなみに、ここにあるweb.xmlとは別に個々のアプリでweb.xmlを作ります。
「webapps」ディレクトリ
シンボリックリンクで「/var/lib/tomcat6/webapps」につながっている。
webアプリの配備先。
jarファイルを配置
以下の5つの順序でデプロイしていきます。
1.webappsに新規ディレクトリ作成
ディレクトリ名がURLになります。例えば、ディレクトリ名が「testtest」だったら、URLは「http://localhost:8080/testtest」という感じ。
他人に見える部分なのであんまり変な言葉にはできないですね!
2.WEB-INFディレクトリ作成
1で作成した新規ディレクトリの下にWEB-INFという名前のディレクトリを作成します。この名前はTomcatで決まってます。「webapps/testtest/WEB-INF」という感じ。
3.libディレクトリ作成
2で作成したWEB-INFの下にlibというディレクトリを作成します。この名前も決まってます。そして、jarファイルはこのlibディレクトリに置くと決まっています。「webapps/testtest/WEB-INF/lib」という感じ。
4.jarファイルデプロイ
3で作ったディレクトリにjarファイルをデプロイします。デプロイって言うとカッコいいですが、アップロードするだけですね(笑)
ちなみに、私はjarファイルはEclipseで作りました。スタンダードですよね。
5.web.xml作成
最後に2で作ったWEB-INFのディレクトリにweb.xmlを作成します。このweb.xmlというのは、jarファイルのクラスとURLをマッピングする役割です。
以下、web.xmlのサンプルです。
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <servlet> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class>net.tazakazushi.hello.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorldServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
この設定だと、8~11行目でパッケージ名「net.tazakazushi.hello」のjarファイルの「HelloWorld」というクラス名に対して、「HelloWorldServlet」というサーブレット名をつけています。
さらに、13~16行目で「HelloWorldServlet」というサーブレットに対して、「/*」というURLを紐付けています。「*」は全てという意味なので、全てのURLがこのサーブレットにひも付きます。
全て、とは言っても、そもそもこのディレクトリは「testtest」という名前にしていたので、「http://localhost:8080/testtest/」以下が全てひも付きます。
表示を確認
「http://localhost:8080/testtest/」にアクセスしてみて、きちんと表示されたらOKです。絶対正しいはずなのにエラーの場合は、Tomcatを再起動させてみるといいかも。