Java ServletをWebサーバー上で動作させるための「サーブレットコンテナ」の一つ。
作成したJava Servletの動作確認をするための簡易的なWebサーバーとしての機能も備えています。
本格的にWebサービスを作成する場合は、Apache(Webサーバーソフト)をサーバーにインストールして
サーバーを動作させます。
ディレクトリ構成
tomcat($CATALINA_HOME) ∟ bin ・・・Tomcatプログラム格納先 ∟ conf ・・・各種設定ファイル格納先 ∟ context.xml ∟ sever.xml ∟ tomcat-users.xml ∟ web.xml ∟ lib ・・・必要なAPIを格納。DB接続など ∟ logs ・・・ログ格納先 ∟ temp ∟ webapps ・・・作成アプリの格納先(デプロイ先) ∟ ROOT ・・・http://localhost:8080/でアクセスできる(ROOTの名前の通り、ルートでアクセス可) ∟ index.html ∟ WEB-INF ・・・WEB-INF以外は公開される。WEB-INF以下は、公開されない。設定ファイルなどを配置 ∟ web.xml ・・・classes以下のクラスファイルへどのようなURLでアクセスさせるかを記載 ∟ classes ・・・コンパイル済みファイルを格納 ∟ docs・・・http://localhost:8080/docs/でアクセスできるアプリ ∟ examples ∟ host-manager ∟ manager ∟ work
設定ファイル
次にTomcatの設定ファイルの概要について確認していきます。
∟ conf ・・・各種設定ファイル格納先 ∟ context.xml ∟ sever.xml ∟ tomcat-users.xml ∟ web.xml
実際の設定ファイルの配置先は、conf¥Catalina¥localhost以下になります。 localhostはホスト毎のディレクトリ。
∟ conf ・・・各種設定ファイル格納先 ∟ Catalina ∟ localhost ∟ ROOT.xml ・・・ 静的ファイルを保持するプロジェクトの読み込み使ったりする ∟ sampleApp.xml ・・・実際に作成したアプリのcontext.xml
context.xml
コンテキストの登録を行うファイルです。
アプリの配置先とその呼び出し方を設定します。
<Context path="/hello" docBase="c:/sampleApp/helloworld"/>
docBaseにアプリケーションのルートディレクトリを指定。
pathには、アプリケーションを呼び出すための文字列を指定します。
helloworld以下にindex.htmlが配置されている前提とすると。
呼び出す際は以下のようなURLとなります。
http://localhost:8080/hello/index.html
sever.xml
サーバー単位の設定ファイルです。
Webアプリケーションの登録、ロギング、アクセス方法などが指定してあります。
EnginタグのNameでCatalinaが指定してあったり、defaultHostでlocalhostが指定して
あったりします。Catalinaがサーブレットコンテナ。
昔は、Context pathの指定もこのファイルに存在していたが、現状は、context.xmlとなっている。
tomcat-users.xml
Webアプリケーションマネージャーを使う際にお世話になるファイル。
Webアプリケーションマネージャーは、ウェブ画面でサーバーの配備や起動、停止を行えるツールです。
ウェブ画面にログインするためのアカウントを設定したりします。
以下のアカウントを設定する場合、は以下のように設定します。
ユーザー名:admin
パスワード:pass
<tomcat-users> <role rolename="manager"/> <user username="admin" password="pass" roles="manager"/> <!-- <role rolename="tomcat"/> <role rolename="role1"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> --> </tomcat-users>
web.xml
コンテキストの登録により、静的ファイル(.html)などは参照できますが、
Servletなどは、別途web.xmlに指定が必要です。
フレームワークを導入していると、独自の設定ファイルやアノテーションやクラス名からの推測で設定が不要だったりします。
フレームワークなしの場合の設定を押さえておくことで、Servletを用いていた際の基本設定を理解しておきます。
<?xml version="1.0" encoding="ISO-8859-1"?> <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"> <servlet> <servlet-name>helloworld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloworld</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping> </web-app>
上記のようにサーブレットのクラス名とサーブレット名、サーブレット名と呼び出しURLに付与するパス名を 紐付けるように指定します。
以下のように呼び出します。
http://localhost:8080/hello/helloworld