TomcatとかJavaの世界に片足を突っ込んでみて気になったところ
TomcatとかJavaとかほとんど知らないけど、とりあえず少しは把握してないといけなくなったので調べてみました。片足突っ込んだだけなので、かなり触りの部分。でも、phpとかとは構成が違いすぎて、色々調べないと、とりあえず起動してJavaを書けば実行できるところまでたどり着けなかったです。そういう部分を書き立てた感じ。
ちなみに、Cygwin上で動かしてます。
Tomcatとは
webコンテナ。
TomcatはCatalinaとCoyoteを内包してるプロダクト。Tomcatをサーブレットコンテナと呼ぶ事もあるけど、Catalinaもサーブレットコンテナなので、紛らわしいのでwebコンテナと呼ばれるらしい。狭義ではCatalinaがサーブレットコンテナだけど、広義の意味でTomcatをサーブレットコンテナと呼ぶこともあるって感じかな。
Tomcatの前にApacheを置いて使う例を良く見るけど、Coyoteがhttpサーバーなので、Tomcat単体でも実は使える。オライリーのTomcatの本にちょろっと書いてあった話によると、Apache+Tomcatは速いからというよりApacheに慣れてるからだそう。Coyoteは遅くないし不安定でもないし、場合によってはCoyoteを使った方が速いこともあるんだとか。
$CATALINA_HOME/bin/catalina.sh
Tomcatを起動したり停止したりするコマンドを提供するスクリプト。
$CATALINA_HOMEは、要するにTomcatがインストールされたディレクトリ。
$ ./bin/catalina.sh Using CATALINA_BASE: C:\cygwin\home\myuser\dev\tomcat Using CATALINA_HOME: C:\cygwin\home\myuser\dev\tomcat Using CATALINA_TMPDIR: C:\cygwin\home\myuser\dev\tomcat\temp Using JRE_HOME: C:\Program Files\Java\jdk1.7.0_03 Usage: catalina.sh ( commands ... ) commands: debug Start Catalina in a debugger debug -security Debug Catalina with a security manager jpda start Start Catalina under JPDA debugger run Start Catalina in the current window run -security Start in the current window with security manager start Start Catalina in a separate window start -security Start in a separate window with security manager stop Stop Catalina stop -force Stop Catalina (followed by kill -KILL) version What version of tomcat are you running?
こんなコマンドがあるけど、例えば起動と停止はshutdown.sh
やstartup.sh
というラッパースクリプトがある。
$CATALINA_HOME/bin/version.sh
$ ./bin/version.sh Using CATALINA_BASE: C:\cygwin\home\myuser\dev\tomcat Using CATALINA_HOME: C:\cygwin\home\myuser\dev\tomcat Using CATALINA_TMPDIR: C:\cygwin\home\myuser\dev\tomcat\temp Using JRE_HOME: C:\Program Files\Java\jdk1.7.0_03 Server version: Apache Tomcat/6.0.18 Server built: Jul 22 2008 02:00:36 Server number: 6.0.18.0 OS Name: Windows 7 OS Version: 6.1 Architecture: amd64 JVM Version: 1.7.0_03-b05 JVM Vendor: Oracle Corporation
バージョン情報を出力するスクリプトもある。
Tomcatに関連する環境変数
# ----------------------------------------------------------------------------- # Start/Stop Script for the CATALINA Server # # Environment Variable Prequisites # # CATALINA_HOME May point at your Catalina "build" directory. # # CATALINA_BASE (Optional) Base directory for resolving dynamic portions # of a Catalina installation. If not present, resolves to # the same directory that CATALINA_HOME points to. # # CATALINA_OPTS (Optional) Java runtime options used when the "start", # or "run" command is executed. # # CATALINA_TMPDIR (Optional) Directory path location of temporary directory # the JVM should use (java.io.tmpdir). Defaults to # $CATALINA_BASE/temp. # # JAVA_HOME Must point at your Java Development Kit installation. # Required to run the with the "debug" or "javac" argument. # # JRE_HOME Must point at your Java Development Kit installation. # Defaults to JAVA_HOME if empty. # # JAVA_OPTS (Optional) Java runtime options used when the "start", # "stop", or "run" command is executed. # # JPDA_TRANSPORT (Optional) JPDA transport used when the "jpda start" # command is executed. The default is "dt_socket". # # JPDA_ADDRESS (Optional) Java runtime options used when the "jpda start" # command is executed. The default is 8000. # # JPDA_SUSPEND (Optional) Java runtime options used when the "jpda start" # command is executed. Specifies whether JVM should suspend # execution immediately after startup. Default is "n". # # JPDA_OPTS (Optional) Java runtime options used when the "jpda start" # command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS, # and JPDA_SUSPEND are ignored. Thus, all required jpda # options MUST be specified. The default is: # # -Xdebug -Xrunjdwp:transport=$JPDA_TRANSPORT, # address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND # # JSSE_HOME (Optional) May point at your Java Secure Sockets Extension # (JSSE) installation, whose JAR files will be added to the # system class path used to start Tomcat. # # CATALINA_PID (Optional) Path of the file which should contains the pid # of catalina startup java process, when start (fork) is used # # $Id: catalina.sh 656834 2008-05-15 21:04:04Z markt $ # -----------------------------------------------------------------------------
$CATALINA_HOME/bin/catalina.sh
にコメントで記載されている。Tomcat初心者な自分としてはTOMCAT_HOME
じゃなくてCATALINA_HOME
なところに、ちょっとした憤りを覚える。ちょっとググったら昔はTOMCAT_HOME
だったというページも見かけた。
CATALINA_HOMEとCATALINA_BASE
$CATALINA_BASE
はOptionalとなっているので、通常は$CATALINA_HOME
と同じディレクトリを指しているはず。別のパスを設定することで、Tomcatのエンジン部分とデータ部分の分離が可能。
$CATALINA_BASE/conf
$ ls conf -1 catalina.policy catalina.properties context.xml logging.properties server.xml tomcat-users.xml web.xml
設定ファイルが配置されている。Tomcatをアップグレードすると上書きされるので、ここのファイルを直接編集する事はお勧めされていないらしい。
Tomcatのディレクトリ構成
$ tree -d . |-- bin #catalina.shなど |-- conf #tomcatの編集すべきではない方の設定ファイル |-- lib #catalina.jarやtomcat-coyote.jarなど、Tomcatを構成するプログラム |-- logs #ログファイル | |-- catalina.out #Tomcatのログ | `-- localhost.log #jspのコンパイルに失敗した場合の例外とか書き出されるらしい。 |-- temp |-- webapps #アプリのデプロイ先 | |-- sample.war #設定次第だけど、ここにwarを置くと、1個したのように展開される。 | `-- sample #この場合は「sample」という名前のアプリ。サーブレットと呼んでもいいのかな? | |-- META-INF #sampleサーブレットの設定などを置く。HTTPを介してアクセスできない場所。 | | |-- context.xml #sampleサーブレットの設定の内、コンテキスト部分を記述する。コンテキストが何かは不明。 | `-- WEB-INF #sampleサーブレットの設定などを置く。HTTPを介してアクセスできない場所。 | |-- web.xml #sampleサーブレットの設定。デプロイメントディスクリプタと呼ぶらしい。 | |-- classes #sampleのプログラム。コンパイル済みの.classファイルを置く。 | `-- lib #sampleサーブレットが利用するライブラリ。基本.jarファイル `-- work #JSPがコンパイルされて生成されたサーブレットが配置される
その他
2012-03-13頃に書き始めたんだけど、ほっといたら4月になっちゃった。