Java ServletをWebサーバー上で動作させるための「サーブレットコンテナ」の一つ。
作成したJava Servletの動作確認をするための簡易的なWebサーバーとしての機能も備えています。
本格的にWebサービスを作成する場合は、Apache(Webサーバーソフト)をサーバーにインストールして
サーバーを動作させます。
Tomcatで重要なディレクトリとファイルを記載します。
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
サーバー単位の設定ファイルです。
Webアプリケーションの登録、ロギング、アクセス方法などが指定してあります。
EnginタグのNameでCatalinaが指定してあったり、defaultHostでlocalhostが指定して
あったりします。Catalinaがサーブレットコンテナ。
昔は、Context pathの指定もこのファイルに存在していたが、現状は、context.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>
コンテキストの登録により、静的ファイル(.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