• ベストアンサー

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)。 よろしくお願いします。

noname#4486
noname#4486
  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • Harry_
  • ベストアンサー率55% (36/65)
回答No.1

Tomcat 4.1.12 ですか。 セキュリティ上の理由で、 デフォルトでは /servlet/* という URL によるサーブレットの実行が できなくなっています。 %TOMCAT_HOME%/conf/web.xml の ( 多分 ) 272 行目から始まる、 invoker という名前のサーブレットのマッピングがコメントアウトされてますので、 それを有効にして Tomcat を再起動すればよいです。 もしくはコンテキストごとに準備する web.xml のなかに、 examples/WEB-INF/web.xml の 146 行目のようにマッピングを追加するのが、 よりよいのではないかと思います。 ただし、デフォルトでコメントアウトされているのには それなりの理由があるのだということは忘れないでください。

noname#4486
質問者

お礼

完璧なご回答ありがとうございます! Jakartaが公開している文書だと、どこに記載されておりますでしょうか?Jakarta仕様じゃなくて、Sun仕様なんでしょうか? サードベンダー提供の文書は発見しました。この件ですよね? http://www.moreservlets.com/Using-Tomcat-4.html#Enable-Invoker 追加質問となり、まことにお恥ずかしいのですが、お時間のあるときにご教示ください。 よろしくお願いします。

その他の回答 (1)

  • Harry_
  • ベストアンサー率55% (36/65)
回答No.2

Jakarta のドキュメントは、よく知りませんが、とりあえず、 http://jakarta.apache.org/site/news.html の 10月9日の Tomcat 4.0.6 がリリースされたニュースの ところに、コメントアウトされることになった簡単な経緯が載ってます。 変更されたのは、Tomcat 4.1 から、というわけではなく、 4.0.x、4.1.x ともにバグがあり、 それぞれ、4.0.6、4.1.12 から修正されています。 このセキュリティホールは Sun のサーブレット仕様とは関係ありません。 Tomcat 固有のバグです。

noname#4486
質問者

お礼

ありがとうございます。 JakartaのNEWS確認いたしました。 Tomcat 4.1.12ではおっしゃるとおり、web.xmlの273-278のコメントアウトを削除することで、/servlet/*を実行することができましたが、Tomcat 4.0.6ではそのような作業を必要としないようです。4.0.6ではserver.xmlへのドキュメント・ルートの追加以外の追加作業は不要でした。 4.1のmanager, adminの使い方等、?な点がありますので、追って勉強の必要がありそうです。 ご回答、ありがとうございました。

関連するQ&A

  • java servlet tomcat エラー

    サーブレット用のクラスファイルがwebページ (http://localhost:8080/examples/servlet/HelloWorldServlet) で見ることができないんですがなんででしょうか? http://localhost:8080にはアクセスできるからtomcatは正常に起動してるんですが。 ちなみにファイル HelloWorldServlet.class はtomcat 6.0\webapps\examples\WEB-INF\classesに保存してあります。 エラー内容は下記のようになっています。 ーーーーーーーーーーーーーーーーーーーーーーーーーーー HTTPステータス 404 - /examples/servlet/HelloWorldServlet type ステータスレポート メッセージ /examples/servlet/HelloWorldServlet 説明 The requested resource (/examples/servlet/HelloWorldServlet) is not available. ーーーーーーーーーーーーーーーーーーーーーーーーーーー

  • サーブレットが実行できない

    似たような質問が何件かあるのですがそちらを読んでも解決できないので、質問させてください。 java servlet初心者なのですが、 http://www.hellohiro.com/servlet.htm のサイトをもとにサーブレット環境を自分のパソコンで作ろうとしています。 とりあえず ・Tomcat5.5.23をダウンロード ・http://localhost:8080でページが表示されることを確認 ・HelloWorldServlet.classを作る。 まで正常にできました。 その後、 [Tomcatのフォルダ]\webapps\examples\WEB-INF\classes にHelloWorldServlet.classをコピーし、 http://localhost:8080/examples/servlet/HelloWorldServlet  を実行したところ 404エラーが発生しました。 もともとwebappsファイル下にexamplesというファイルがなかったのですが、これは正常なのでしょうか? jsp-examplesファイルとservlets-examplesファイルがあったのでその中の \WEB-INF\classes下にHelloWorldServlet.classを入れてみたり、 webapps下に\examples\WEB-INF\classesを作って、その中にそのclassファイルを入れてみたりといろいろやってみたのですが、 まったくエラーは変わりません。 何が悪いのかわからないのですが、 何かアドバイスをいただけないでしょうか? お願いします。

    • ベストアンサー
    • Java
  • クラスファイルの配置について

    初めまして。 質問したいことがあります。 私の環境は OS:RedHatLinux7.2 JDK:1.3.0_02 Tomcat:ver3.2.4 です。 servletの動作について (1)tomcat/WEB-INF/test/classes/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/helloと入力すると正常に動 作しました。 次に (2)tomcat/WEB-INF/test/classes/sample/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/sample/helloと入力すると Error 500 Internal Servlet Errorというエラーが発生しました。 server.xmlには <Context path="/test"    docBase="webapps/test"    crossContext="false"    debug="0"    reloadable="true" > </Context> を追加しているだけなのですが、Tomcatではクラスファイルは絶対にclassesディレクトリの直下に配置しなければならないのでしょうか? (2)のclasses-sample-hello.classというように、classesディレクトリとクラスファイルの間にディレクトリが存在すると駄目なのでしょうか? もし何かわかることがありましたらご教授御願い致します。

    • ベストアンサー
    • Java
  • Tomcatでプログラムが動作しません。

    Apache tomcatの事なのでオープンソースかこちらにご相談させていただこうか悩みましたがこちらにさせていただきました。 開発環境: Windows XP SP3 Professional java 2 SDK 1.5.0_16 Jakarta Tomcat 5.5.26 です。 現在javaのservletとJSPをtomcatで勉強している者です。 http://www.javaroad.jp/opensource/index.html#tomcat http://www.thinkit.co.jp/cert/article/0708/2/6/2.htm http://www.javadrive.jp/servlet/index.html などを参考にしてTomcatを使い自分で作成したservletやJSPを動作させようとしたのですが 404エラー(存在しないファイル)が排出されるだけで実行できません。 試しに上記のページが提供しているプログラムやweb.xml及びservlet.xml(javaroad.xml)を 配備しましたが404エラーが排出されるだけで動作しません。(編集するたびにTomcatを再起動させています) http://localhost:8080/のトップページとROOTフォルダに上記のサイトのJSPを配備したものは 表示されますのでtomcatは動作していると思いますが、残念ながらどこが間違っているのか検討がつきません。 似たような事例に http://questionbox.jp.msn.com/qa1321207.html?StatusCheck=ON という物を見つけました。 同じように「JSP Examples」と「Servlet Examples」は404エラーが排出されます。 どのようにすれば宜しいのでしょうか、どうかご教授願います。

    • ベストアンサー
    • Java
  • サーブレットの実行について

    サーブレットの実行について http://www.hellohiro.com/servlet.htm こちらを参考しながら設定してみたのですが、 アクセスしても404エラーでページが表示されません。 Tomcatをインストールし http://localhost:8080 にてindex.jspが表示されることは確認できました。 Tomcat起動後 http://localhost:8080/manager/htmlからアプリケーションjavahelloを設定しました。 そして サーブレットファイル(A.class)を[Tomcatのフォルダ]\javahello\WEB-INF\classesの下にコピーし、 http://localhost:8080/javahello/servlet/A とブラウザにしてすると404エラーになってしまいます。 何か設定が足りていないのでしょうか? どなたか教えてください。よろしくお願いします。 環境 Windows XP Tomcat 5.5

    • ベストアンサー
    • Java
  • Tomcatにおけるサーブレットの呼び出し

    tomcatに関してですが、現在サーブレットからjspを呼び出すようなことをしたいと思い、web.xmlを以下のように設定し、”http:localhost:8080/servlet/Login”としても『HTTP Status 404 - 』が返却されます。jspからサーブレットを呼び出すことはできるのですが・・・(この場合、jspファイルをWEB-INFの直下にディレクトリを作成するとやはりアクセスができませんでした。WEB-INFと同レベルに置けばアクセスは可能でした。)。 どなたかわかる方がいれば教えて下さい! よろしくお願いします。 --------------- 環境 --------------- Windows2000Server eclipse ver2.1.1 tomcat ver4.1 --------------- ディレクトリ構成 --------------- WEB-INF Lclasses | LLogin_serv.java Ljsp LLogin.jsp --------------- web.xml --------------- <?xml version="1.0" encoding="shift_jis"?> <!DOCTYPE web-app PUBLIC "-//SUN Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>Login</servlet-name> <servlet-class>serv.Login_serv</servlet-class> </servlet> <servlet-mapping> <servlet-name>Login</servlet> <url-pattern>Login</url-pattern> </servlet-mapping> </web-app> 補足:tomcat-confにあるweb.xmlの『invoker』はコメントを外し有効にしてます。

    • ベストアンサー
    • Java
  • Tomcat4.1.31でのserver.xmlの<Context>の追加について

    環境:OS:win2k Tomcat4.1.31+j2sdk1.4.2_05 eclipse3.0.1 E:\eclipse_project\MyProject以下で作業しています。 参考書籍:JavaWebプログラミング徹底入門(技術評論社) 環境変数などの設定もすませ、http://localhost:8080/index.jspも見れて、http://localhost:8080/examples/servlet/HelloWorldExampleなどのサーブレット・jspのサンプルなども全て正常に動きます。 server.xmlの<!-- Tomcat Root Context -->のすぐ下の行に <Context path="/rucho" reloadable="true" docBase="E:/eclipse_project/MyProject" debug="0" crossContext="true"/> と追加して再起動して、サンプルのクラスをコピーしても、 正常に表示されません。http404エラーが出ます。 他のサーブレットクラスや、本のサンプルをコピーしても同様です。 また、NO,1091223の件を参考にマネージャーから パス: /rucho ディレクトリのURL:file:E:/eclipse_project/MyProject としてもだめでした。 tomcat自体を入れ直してみたりもしましたが、だめでした。 E:/eclipse_project/MyProject/jspにindex.jspを置くと問題なく表示されます。 さらに、本に付録として付いていたTomcat4.0.6を入れて、 server.xmlに全く同じContextタグを追加したら、 今度は何の問題もなく意図通りの設定が反映されて動作しました。 一体何が悪いのか、どなたご教授願えないでしょうか?

    • ベストアンサー
    • Java
  • TOMCATでのサーブレット環境構築

    初心者です。 Tomcat4.1を使ってサーブレットを動かしたいと思います。 manage/installを使ってWebアプリをインストールするところまではわかりました。 ディレクトリ[c:\java\test\]の配下に [WEB-INF\classes\]というディレクトリを掘って そこにtest.javaとそれをコンパイルしたtest.classがあります。 この状態で http://localhost:8080/manager/install?path=/test&war=file:c:/java/test といれ、testというwebアプリをインストールしました。 listでも確認し、登録されていました。 しかし http://localhost:8080/test/servlet/test とやっても動作しません。 HTTP 404エラーがでます。 (description The requested resource (/test/servlet/test) is not available.) 何が足らないのでしょうか?ご指示をお願いします。 できればわかりやすく解説してあるサイトとかを教えていただければありがたいです。 ちなみにサンプルではいってたexamplesのサーブレットは動作します。 環境はWindows2000です。

    • ベストアンサー
    • Java
  • 作成したサーブレットが表示されません(Tomcat使用)

    はじめまして。 本を見ながらサーブレットを作成、実行したところエラーに 検索するも知識が浅いために理解できず、行き詰ってしまいました。 解決法ご存知の方おられましたら、ご教示いただけますと幸いです。 ************ (略)Tomcat 5.5\webapps\kajsp\WEB-INF\classesの直下にhello_servlet1.classを置き実行したところ、以下のエラーが… ************ HTTPステータス 404 - /kajsp/hello_servlet1 ------------ ステータスレポート /kajsp/hello_servlet1 The requested resource (/kajsp/hello_servlet1) is not available. ------------ Apache Tomcat/5.5.20 ************ web.xmlファイルは以下のとおりです。WEB-INF直下に置きました。 ************ <?xml version="1.0" encoding="Windows-31J"?> <servlet> <servlet-name>hello_servlet1</servlet-name> <servlet-class>hello_servlet1</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello_servlet1</servlet-name> <url-pattern>hello_servlet1</url-pattern> </servlet-mapping> ************ http://localhost:8080/ は見る事ができるのですが、 http://localhost:8080/kajsp/hello_servlet1 ではエラーが出ます。 ************ 環境は Windows XP Home(SP2) JDK JRE:1.5.0_09 Tomcat:5.5 です。 初歩的な質問で申し訳ありませんが、よろしくお願い致します。

    • ベストアンサー
    • Java
  • Tomcat内のJSPファイルを削除したい

    事情がありにTomcat内のフォルダを 見せなければならなくなりました。 他人にTomcat内のファルダにあるサーブレット(+Beans等のクラスファイル)と JSPのソースを見られない様にしたいです。 またその上で実行も可能にしたいのですがどうすればいいでしょうか? サーブレット等は Tomcat 7.0/webapps/MyWebSite/WEB-INF/classes以下の クラスファイル(.class)だけを残してJavaファイル(.java)を削除 するか、Eclipseでソースをエクスポートさせない様にすると Javaのソースは見れなくなると思いますが、 JSPの場合だと Tomcat 7.0/webapps/MyWebSite/以下の JSPファイル(.jsp)を削除して、 Tomcat 7.0/work/ 以下にあるJSPをサーブレットに変換後 コンパイルされたファイル(.class)を残すだけではダメな様です。 他に方法はあるでしょうか? サーブレットのソースを見られないだけでも良しと考えるべきでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう