メイン

Tomcat アーカイブ

2009年04月01日

Tomcatで404エラーが出る時の原因と解決策

404は要求したリソース(≒ページ)が見つからない時に出るエラー

一番最初に確認すべきはURLが正しいか?

ピリオドがカンマになっていたりとか、パスが間違っていたりとか。テンパっている時こそ落ち着いて確認すべき。

次に仮にURLが正しい場合で404エラーが出る場合は、HTMLなどのスタティックコンテンツを同じディレクトリにおいてみる。 そして404エラーが出ないようであれば設定漏れ(web.xmlを更新して再起動してないとか)

最後にHTMLコンテンツですら見えない場合は、コンテキストの起動に失敗している可能性が高い。 たとえばweb.xmlが不正であったり、filterの設定でクラス名を間違えて、 ClassNotFoundExceptionが発生している場合そのContextは無効になる。 他のコンテキストは大丈夫なので一見エラーではないと勘違いしがちであるが、 Tomcatの起動ログではエラーのスタックトレースが発生しているはずである。

web.xmlの大掛かりな変更をする場合は、バックアップをとるのは必須といえよう。

Tomcatで404エラーが出る時の原因と解決策

404は要求したリソース(≒ページ)が見つからない時に出るエラー

一番最初に確認すべきはURLが正しいか?

ピリオドがカンマになっていたりとか、パスが間違っていたりとか。テンパっている時こそ落ち着いて確認すべき。

次に仮にURLが正しい場合で404エラーが出る場合は、HTMLなどのスタティックコンテンツを同じディレクトリにおいてみる。 そして404エラーが出ないようであれば設定漏れ(web.xmlを更新して再起動してないとか)

最後にHTMLコンテンツですら見えない場合は、コンテキストの起動に失敗している可能性が高い。 たとえばweb.xmlが不正であったり、filterの設定でクラス名を間違えて、 ClassNotFoundExceptionが発生している場合そのContextは無効になる。 他のコンテキストは大丈夫なので一見エラーではないと勘違いしがちであるが、 Tomcatの起動ログではエラーのスタックトレースが発生しているはずである。

web.xmlの大掛かりな変更をする場合は、バックアップをとるのは必須といえよう。

2009年05月08日

NoClassDefFoundErrorの原因を探る Tomcat編

自分が遭遇することも多いので必然的に検索ランキング上位に位置するようになった前回の 「NoClassDefFoundErrorの原因を探る 」 エントリーでは特にWebアプリの対応を挙げていなかったので今回はTomcatに焦点を絞ってみたい。

Tomcatの場合共通系のライブラリにjarファイルを置くことはあまりしない(JDBCドライバぐらい)はずなのでjarファイルを置く場所としては下記の場所になる。

コンテキストベース/WEB-INF/lib

ここに目的のjarファイルがないとNoClassDefFoundErrorが実行時にでてしまう。 難しいのは実行時にしか起こらないことと、コンパイル時には判明しないjar同士の依存関係があること。

あわてることは無いので一つ一つ出るたびにjarファイルを探してきて、 上記ディレクトリに配置してTomcatあげなおすの繰り返しで解決するしかない。

実行時エラーとはいえコンパイルエラーと同様本来起こってはいけないエラーなので、 設定系を担当している人はこれが出てしまったら自分が怠けているってことだぜ!

2009年05月26日

TomcatのバージョンとJDKの対応表

TomcatがどのJDKで動くのかというバージョン対応表

http://www.rutake.com/wiki/Java/Jakarta/Tomcat/#k323cf8d

2009年06月17日

Tomcat 監視ツール

http://www.lambdaprobe.org/

結構よさげ。家帰ったら試そう

2009年07月01日

TomcatをUnixデーモンとして起動する

jsvcというものを使えばデーモンとして起動できるらしい。

http://tomcat.apache.org/tomcat-6.0-doc/setup.html

http://www.codeanimato.com/blog/archives/2008/01/solaris10tomcat.html

 

2009年07月16日

Tomcatの設定ファイルに環境変数を使う

へー使えるんだといまさら発見

下記のように使う。

<Context>
    path="/Sample"
    docBase="${catalina.home}/webapps/Sample">
</Context>

 

2009年08月11日

tomcatのserver.xmlの設定を動的に置換える

起動時の引数を利用してserver.xmlの内容を置換えるようにできる。

これは目からうろこだった。

たとえばクラスタリングにつかうjvmRouteの値などはほとんど同じ設定の二台でjvmRouteだけが違うのに二つのファイルを用意するのはミスの元。

というわけでjava起動時の-Dオプションで指定しておけばあとはシェルでおなじみの変数表記で置換えてくれる。

Tomcat起動引数に以下のようにして起動

-DjvmRoute=a

server.xmlでは以下のように記述

<Engine name="Catalina" defaultHost="localhost" jvmRoute="${jvmRoute}">

そうするとjvmRoute="a"と記述したのと同じことになる。すばらしい!

About Tomcat

ブログ「技術メモ」のカテゴリ「Tomcat」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはSeasar2です。

次のカテゴリはeclipseです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。