• 締切済み

Tomcatのエラーページをカスタマイズする方法【すべてのWebアプリケーションに適用させたい】

こんにちは。 各種サイトを見ても詰まってしまったため、質問させていただきます。 Tomcat 5.0.28を使用しています。 HTTPのエラーコードを受け取ったときに、独自のエラーページを 表示させるには、web.xmlを編集すればよいことまではわかっています。 個々のWebアプリの設定であれば、(アプリケーションルート)/WEB-INF/web.xml を編集することでカスタムエラーページを表示できました。 今回、Tomcatに配備しているすべてのWebアプリに対して、同じエラーページを表示させるつもりです。 この場合、$CATALINA_HOME/conf/web.xmlに同じような編集を 行えばよいということが下記サイトに書かれていました。 http://www.atmarkit.co.jp/fjava/javatips/064container011.html ここで問題なのが、web.xmlで <error-page> <error-code>404</error-code> <lcoation>/error/404.html<location> </error-page> とした場合、404.htmlはどこにおけばよいかがわからず、適切に 表示されません。 各アプリごとの場合は、アプリケーションルートの直下に errorディレクトリを作ればよいのですが・・・ conf/web.xmlに記述をした場合は、ルートはどこに おいたらよいのでしょうか。 ちなみに 1.$CATALINA_HOME/webapps/error/404/html 2.$CATALINA_HOME/webapps/ROOT/error/404.html 3.$CATALINA_HOME/error/404.html を試しましたが、いずれもうまくいきませんでした。 また1.の設定の場合、server.xmlに記述を追加して errorコンテクストを配備しています。 <Context path="/error" docBase="error" ....> 基本的な質問かもしれませんが、何卒よろしくお願いします。

  • Java
  • 回答数2
  • ありがとう数1

みんなの回答

  • hofchan
  • ベストアンサー率62% (17/27)
回答No.2

#1 です 少し違いましたね Tomcat 単体で動かして確認しました <error-page> <error-code>404</error-code> <lcoation>/error/404.html<location> </error-page> とした時アプリ /app1 以下で 404 を出した時と /app2 以下で 404 の場合ではそれぞれ違う場所を参照しているようです /app1 の時は /app1/error 以下の 404.html /app2 の時は /app2/error 以下の 404.html ですね

Dandee
質問者

補足

やっぱ個別のアプリごとに404.htmlを用意するしかないのでしょうかね。 conf/web.xmlにエラーページ記述をしたら、どこのアプリ配下で 404を受け取っても同じページに遷移するようにはできないもんなのかと悩んでます・・・

  • hofchan
  • ベストアンサー率62% (17/27)
回答No.1

Tomcat が単体で動いているなら $CATALINA_HOME/webapps/ROOT/error/404.html でいいと思いますが Apache と共に動いていれば Apache の /error/404.html を参照するのではないでしょうか?

関連するQ&A

  • Tomcat 4.1.18でのWebアプリ追加方法

    お世話になります。 RedHat8.0にj2sdk1.4.0_03とtomcat-4.1.18をインストールし サンプルの動作は確認できました。 その後 server.xmlへ ------------------------------- <Context path="/ogjsp" docbase="/home/og/webapps" debug="0" reloadable="true"> </Context> ------------------------------- を追記しTomcat再起動後 http://localhost:8080/ogjsp/hello.jsp を表示させようと しましたが http 404 がでてしまいます。 試しにtomcat-4.0.6をインストールして 同じように設定したところきちんと表示されました。 tomcat-4.1.18からなにか他に設定が必要なのでしょうか? ご存知の方がいましたらよろしくお願いします。

  • Tomcatの設定について、404エラー

    本日の質問は、Tomcatのエラー404になります。 PCの環境OS:Windows7 JSPを始めるつもりで、下記のものをインストールしました。 javaのJDKをインストール済で、 Tomcat/7.0.32をインストールしました。 C:\Tomcat7\webapps\Sample_JSP\Sample_01.jsp C:\Tomcat7\webapps\Sample_JSP\WEB-INF\Sample_01.xml 環境変数   変数名:CATALINA_HOME   変数値:C:\Tomcat7 という感じで、Webページを参考にファイルを作り、 http://localhost:8080/は、表示させることができ、 http://localhost:8080/Sample_JSP\Sample_01.jspについても 表示出来ましたが、 http://localhost:8080/のページの HTTPステータス 404 - /manager/status HTTPステータス 404 - /manager/html HTTPステータス 404 - /host-manager/html どのページも、説明 The requested resource is not available. と出て、 Webページがが表示しません。 少し調べた所によると、tomcat-users.xml このファイルを なんか設定するように有り、admin の設定が入ってなかったので、 付け加えてみたり、削除してみたり、再起動もしました。 初心者なので、どこがおかしいのか良く解りません。 参考になるページでもありましたら、 どうか、よろしくお願いします。

  • 新しいWebアプリをTomcat4.0に追加するには?

    servletを使った掲示板の製作を行っています。 実際のWebアプリは開発中のため 試しに簡単なアプリを仮に登録しようと思い Webアプリを配置したもののローカルでもうまく起動してくれません。 フォルダ構成も  %CATALINA_HOME%\webapps   |----SampleAdressApp\      |----WEB-INF\           |----classes\               |----*******1.class               |----*******2.class           |----web.xml      |----index.html   |----examples\ といった配置で配置しています。 web.xmlには Tomcatの既存(サンプル)のweb.xmlをコピーし 以下を追加しました。 <servlet> <servlet-name> *********1 </servlet-name> <servlet-class> SampleAdressApp.*********1 </servlet-class> </servlet> <servlet-mapping> <servlet-name> *********1 </servlet-name> <url-pattern> /SampleAdressApp1 </url-pattern> </servlet-mapping> それで http://localhost:8080/SampleAdressApp/index.html で接続しにいくと、以下のメッセージが表示されてエラーになります。  Apache Tomcat/4.0.4 - HTTP Status 404 - /SampleAdressApp/index.html  type Status report  message /SampleAdressApp/index.html  description The requested resource (/SampleAdressApp/index.html) is not available. 解決するにはどうすればよいのでしょうか? 直接、server.xmlに追加する方法もとってみましたが、 無理でした・・・ 教えてください m(__)m よろしくお願いします、

  • Tomcatを再起動するとエラーとなります

    現在Eclipce2.1.3と、Tomcat5.0.19を利用しjspベースのデータベースによる情報の管理を行う環境を作成しています。 元々、同様の環境で動作していたものと同じソースを新しいプロジェクトに移行させ別の管理ページを作成しようとしていたのですが、いじっている間にビルドをするとホット・コード置換エラーと言う画面が出ました。 何度ビルドしても同じエラーが出たのですが、Eclipceを再起動させるとエラーが表示されなくなりました。 ところが、Tomcatを再起動させると下記エラーがでてしまい「org.gjt.mm.mysql.Driver」が必要なページが表示されなくなってしまいました。 サーバを再起動したところ正常に表示されるのですが、Tomcatを再起動するとまた同じようにエラーが出てしまいます。 今のところサーバ再起動で動作は行っていますが、Tomcatの挙動が不安定と言うのが心配です。 どこを修正or確認すればよいか、教えていただけませんでしょうか。 宜しくお願いします。 stdout.logから 2006/07/21 11:19:29 org.apache.catalina.startup.ContextConfig applicationConfig 情報: アプリケーションのweb.xmlが見つかりません、デフォルトだけを使用します 2006/07/21 11:19:30 org.apache.catalina.startup.ContextConfig applicationConfig 情報: アプリケーションのweb.xmlが見つかりません、デフォルトだけを使用します 2006/07/21 11:19:30 org.apache.catalina.startup.ContextConfig applicationConfig 情報: アプリケーションのweb.xmlが見つかりません、デフォルトだけを使用します 2006/07/21 11:19:31 org.apache.catalina.startup.ContextConfig applicationConfig 情報: アプリケーションのweb.xmlが見つかりません、デフォルトだけを使用します 文字数の関係でこの部分だけ載せています。 他に必要なところがあれば仰ってくださいませ。

  • tomcatでエラー

    よろしくお願いいたします。 os:freebsd 5.3 web server: apache 2.0.13 + tomcat 4.1.31 + mod_jk(ajp13) java:1.4.2 env: JAVA_HOME=/usr/local/linux-sun-jdk1.4.2 JAKARTA_HOME=/usr/local/jakarta-tomcat4.1 CLASSPATH=/usr/local/jakarta-tomcat4.1/lib/common/servlet.jar apacheとtomcatをmod_jk(ajp13)で連携させて、 tomcatのwebapps内にblojsomというblogソフトを 動作させています。 2年くらい特に問題もなく運用していたのですが、 いつの間にか下記のようなエラーメッセージが 表示されるようになっており、tomcatが動作しなくなりました。 HTTP Status 404 - /blojsom/blog/user/ type Status report message /blojsom/blog/user/ description The requested resource (/blojsom/blog/usr/) is not available. tomcat内のlogsディレクトリ下の localhost_admin_log.2006-06-07.txtは、 下記のようなログが出力されています。 2006-06-07 00:46:26 ContextConfig[/admin] Required temporary directory $CATALINA_BASE/temp is missing javax.servlet.ServletException: Required temporary directory $CATALINA_BASE/temp is missing at org.apache.catalina.startup.ContextConfig.tldScanJar(ContextConfig.java:872) ・・・ "$CATALINA_BASE/temp is missing"とあるので、 $CATELINA_BASEを設定したり、$CATELINA_TMPDIRを 設定してみたりしたのですが、結果は変わりませんでした。 動作しなくなる前に行った作業は、 apacheのhttpd.confを少し変えたことぐらいです。 上記エラーメッセージが表示されたので、 あわてて、httpd.confをもとに戻したのですが、 エラーは直りませんでした。 ご存じの方がおられましたら、ご教授のほどよろしくお願いいたします。

    • ベストアンサー
    • Java
  • TomcatとEclipseのweb.xml[]について

    TomcatとEclipseのweb.xmlの<context-param>の設定について お聞きいたします。 windowsXP上にTomcatとEclipseをインストールし ${CATALINA.HOME}\confの直下にあるweb.xmlと Eclipseで作成したWEB-INF直下のweb.xmlの 両者に <context-param> <param-name>hoge</param-name> <param-value>foo</param-value> </context-param> と記述があり jspから application.getInitParameter("hoge"); またはHttpServletの子クラスから getServletContext().getInitParameter("hoge"); と呼びに言った場合どちらの設定が優先され また、その優先順位の記述(設定)はどこで 行うのでしょうか? ちなみにlogging.propertiesなどの設定も どちらが優先されるのか気になります。 尚、環境は Tomcat5.5 Eclipse3.2 です。 どうかご教授お願い致します。

    • ベストアンサー
    • Java
  • Tomcat ManagerでのWAR更新について

    使用している環境はTomcat5.5.26、JDK1.6.24になります。 Tomcat ManagerでWEBアプリケーションの配備解除を行うと、 以下のファイルも一緒に消えます。 <TOMCAT_HOME>/conf/Catalina/localhost/アプリケーション名.xml 現在、WARファイル配備後にサーバ上でTomcat停止、アプリケーション名.xmlをコピー、Tomcat開始を行っています・・・ このファイルが消えないように、またはブラウザから再設定する方法が御座いましたら教えて下さい。 方法が無い場合でも、無いと教えて頂けると幸いです。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • Tomcat 4.1での配備方法

    Tomcat 4.0で動作していたアプリがTomcat 4.1だと動作しません。配備方法が変わったんでしょうか? 導入時のサンプル/examplesのサーブレット/JSPは動きますが、そのContext要素の上に記述したContextのdocBaseで指定したパスのWEB-INF/classes/*.classがブラウザから呼び出せないのです(localhost:8080/.../servlet/*)。ちなみに、ドキュメントルート直下にindex.htmlをおいたところ、問題なく参照できました(localhost:8080/.../index.html)。 よろしくお願いします。

    • ベストアンサー
    • Java
  • eclipse-TomcatでHTTP404エラー

    初心者です。既存eclipse環境に、Tomcatを使える様設定したのですが、 タイトルのようなエラーで困っています。環境は OS:WindowsXPSP2 Tomcat:5.5 eclipse:3.2 です。 まず、Tomcatを単体で使う際のデータの保存先を「c:\webapps\ROOT」としているため、 Tomcatインストールパスのserver.xmlのappbaseの記述を"webapps"から"c:\webapps"に変更しています。 この状態で、eclipseに「動的Webプロジェクト」を作成し、 「サーバー」としてTomcatサーバを追加し、 JSPプログラムを作成して実行したところHTTP404エラー 「ドキュメントベース c:\webapps\"プロジェクト名" が存在しない、又は読めないディレクトリです」 が出てしまいました。 色々調べた結果、eclipse上の「サーバー」としてTomcatサーバを追加したとき Tomcatインストールパスのserver.xmlをインポートしているようですが、 appbaseの記述を"webapps"から"c:\webapps"としているせいでその下を見に行っているようです。 server.xmlのappbaseの記述を"c:\webapps"から"webapps"に戻したところ動作するようになったのですが、 (ここからが質問ですが、) 別の環境では、(Vista-Tomcat6.0-eclipse3.4)server.xmlを直さなくても正常に動作します。 ということは、どこかほかの所にもっと優先されるパスの設定があるのではないか?と思うのですが、 それらしいところが見つかりません。 どなたかご教授いただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • tomcat サーブレットエラー

    表題の件、原因がつかめず困っています。 何かアドバイスある方いらっしゃれば是非お願いいたします。 環境 Linux/FedoraCore5 tomcat6.0.10/Webポート8080 apacheは使っていません /usr/local/bin/tomcat/conf/Catalina/localhost/fs.xmlの設定 <Context path="/fs" reloadable="true" docBase="/usr/local/sample/d emo/data" crossContext="false" cookies="false" /> /usr/local/sample/demo/data/WEB-INF/web.xmlの設定で、 あるサーブレットクラスを呼び出すようにしています。 そのクラス内で、net.sample.sql.ConnectionManagerという クラスを呼び出しているのですが、実行時に以下のエラーが出ます。 java.lang.NoClassDefFoundError: Could not initialize class net.sample.sql.ConnectionManager net.sample.sql.ConnectionManagerはsample.jarに含まれており、 /usr/local/sample/demo/data/WEB-INF/lib/に配置しています。 (呼出元のクラスもこのディレクトリにあります。) 原因となりえる場所として、考えられることは何かありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java