• ベストアンサー

Tomcat4.1でServletが無いと言われるのです……

以前の時よりもっと初歩の段階で動かないのです・・・・・・。 例えば、sever.xmlでpathとdocBaseをtestにした場合、 webapps以下に、test, WEB-INF, classesとファイルを作りますよね。 それで、testフォルダにあるhtmlファイルの送信ボタンを押したら、 form action="/test/servlet/foo"として、method="POST"とした場合 『存在しません』といった内容のエラーがでるのは、何故でしょうか??? ほとほとTomcat4.1が使いこなせません。 どうか良きアドバイスを頂けるよう、お願いします。

  • Java
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
回答No.4

JavaでHello Worldからの抜粋です。バージョン4.1.24 の場合は、276行目を以下に従って修正して下さい。 (Tomcatバージョン4.1.12以上を使用する場合の注意) Tomcat4.1.12以上を使用する場合、上記のURLを指定す るとHTTP Status 404 が帰ってきます。これはデフォル トの設定では/servlet/*にアクセスがあった場合、サー ブレットを実行するようになっていないためです。 <解決方法> [Tomcatのフォルダ]\conf\web.xmlを編集します。 273行目付近の以下の赤字の2行のコメントアウトの行 をはずします。 (修正前) <!-- <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> --> (修正後) <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> この修正で/servlet/*にアクセスがあった場合にサーブ レットが実行されるようになります。編集が終了したら Tomcatを再起動してください。

参考URL:
http://www.hellohiro.com/servlet.htm
persona
質問者

お礼

メチャクチャ感激です!!! 言い表す言葉もありません。

その他の回答 (3)

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.3

サーブレットの問題だけなんですよね? JSPとかは表示されるんですよね? 必須かどうかっていうのはわからないのですが、 とりあえずweb.xmlを書いてみてはどうでしょう。 どっかからサンプルをぱくってそれを真似てかいてみてはどうですか? tomcatのサンプルにもついていたと思いますし。 "/test/servlet/foo"というようなサーブレットへのアクセスはweb.xmlに定義してないとできないんじゃないかなぁとおもってみたりなんかして。。。 ちなみに 「存在しません」といったエラーとかいわれるより エラーコードとかでいってもらったほうがいいですね。 たぶん404エラーなんだとおもいますが。

persona
質問者

お礼

JSPは、JSPServletが上手く生成されれば、表示されます。 v4.0.6の時は、 <%@ page import="foobarBean" %> ってのが通用したのにversionが4.1になってからは、 Beanをパッケージ化しないといけないみたい・・・・・・。 そうですね、何かJSPのTaglibsも使わないといけないような気も するんで>JSPに関しては ああ、もうダメダメです。

回答No.2

どのバージョンのTomcatを使ってますか?Tomcat4.1.12 とTomcat4.1.18は${Tomcat_Home}\conf\web.xmlに修正 を加える必要があるみたいです。 まず、以下の二つの事を試してください。 *FORM要素を使わずに、HTMLファイルのリンクから直接 例のサーブレットにアクセスする。(doGet()に何か処 理を書いてください。) *servelt-mappingを使ってる場合は、その部分をコメ ントアウトして、サーブレットのクラス名に直接アクセ スしてみてください。

persona
質問者

お礼

アドバイス有り難うございます。 直入でも試してみたのですが、結果は同じでした( ̄▽ ̄;) やはり、web.xmlの記述が必要不可欠なようですね。 マッピングとか今一まだ理解しきれてないので、それなりの 本を買って勉強する必要があるようです。 それと、2つほど。 Tomcat4.1は、v4.1.12が一番安定しているのでしょうか。 自分はv4.1.24です。 2つ目はportを80に設定している点なんですが。 難しいものに手を出してしまったのかもしれません。

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.1

web.xmlの設定はしましたか?

persona
質問者

お礼

今更ではありますが、最近になって回答者にお礼をしない事がどれだけ失礼な事かを感じまして書く次第であります。 補足だけしといて、肝心なお礼の言葉をしていませんでした。 レスを頂き、ありがとうございます。

persona
質問者

補足

やはり、web.xml(DD)の記述ですよね。 v4.0.6のときは、必要なかったんでいいのかなと思いつつ、 でも、色々な書籍等々を見ると、ここの記述がやはり必須なんだろうな、て気はしてました。 ただ、記述方法が今一分かりません。 何か良き例のある本とかサイトとかあるでしょうか。

関連するQ&A

  • TomcatでServletの配置場所を変更できますか?

    Tomcatを使ってServletを開発しています。 普通ならば、d:\tomcat\webapps\test\WEB-INF\classes に開発したServletを配置しますが、 事情があって、別のドライブにServletを置きたいのです。 # 例 E:\test\classes\ その場合、どのようにすればよいのでしょうか? どなたか、アドバイスよろしくお願いします。

  • servlet (resin) について

    tomcatとresinって、そんなに違うのですか? resinでプログラムを動かしたいのですが、動いてくれません… tomcatの場合、webappsの下に自分の好きなディレクトリを作れば(test)その中のWEB-INF/classes にクラスファイル(TEST.class)を置けば、  http://localhost:8080/test/servlet/TEST で動きますが、resinも同じようにしようと思って、test/WEB-INF/classes/の下にTEST.java を置いて(コンパイルしてくれると聞いたのでJAVAファイルを置きました) http://localhost:8080/test/servlet/TEST を見ても、/test/servlet/TEST was not found on this server. と怒られました… どうすればいいのでしょう??

  • Tomcat Servletが動きません

    『Javaへの道:Tomcat』のページを参考に同じようにやってるのですが、 JSPはうまくいくのですがServletがうまくいきません。 (長文になります) 参考ページと私の環境で違う点 Windows XP Home → XP Pro Tomcat 6 → Tomcat 7 JDK6.0 → JDK6.23 ポート8080 → 8081 以下のファイル、フォルダを作りました(参考ページそのままです)。 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\jspdir\HelloJsp.jsp C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\classes\HelloServlet.class C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\web.xml C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\Catalina\localhost\javaroad.xml --↓↓HelloJsp.jspここから↓↓-- <HTML> <BODY> from JSP source<br> <%= new java.util.Date() %> </BODY> </HTML> --↑↑HelloJsp.jspここまで↑↑-- --↓↓web.xmlここから↓↓-- <?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>Hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> </web-app> --↑↑web.xmlここまで↑↑-- --↓↓javaroad.xmlここから↓↓-- <Context path="/javaroad" reloadable="false"/> --↑↑javaroad.xmlここまで↑↑-- JSPを起動 http://localhost:8081/javaroad/jspdir/HelloJsp.jsp → 正しく表示される Servletを起動 http://localhost:8081/javaroad/Hello → ステータス404 The requested resource (/javaroad/Hello) is not available. <気になる点> 1.Tomcatを起動するためStratボタン押しても1回では起動せず、2~3回で起動する。  1回目のときcommons-daemon.2011-01-15.logにこんなログが出る。  [2011-01-15 23:01:16] [error] Pid file 'C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\tomcat7.pid' exists  [2011-01-15 23:01:16] [error] ServiceStart returned 1 2.servletクラスは正しくコンパイルできているのか 状況を詳しく説明しようとして長々と書いてしましたが Servletを表示するにはどうしたらいいでしょう? 足りない情報があれば追加します。

    • ベストアンサー
    • Java
  • 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. ーーーーーーーーーーーーーーーーーーーーーーーーーーー

  • クラスファイルの配置について

    初めまして。 質問したいことがあります。 私の環境は 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のServletについて

    TomcatのServletについて TomcatのServletでエラーが出て困っています。 エラーは405で、「HTTPのGETメソッドは、このURLではサポートされていません。」と表示されます。 このときのServletとweb.xmlは以下の通りです。 -----<Servlet>----------------------------------- public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; public MyServlet() { // TODO Auto-generated constructor stub super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain; charset=windows-31j"); response.setCharacterEncoding("windows-31j"); PrintWriter writer = response.getWriter(); writer.println("log check"); } } -------------------------------------------------- -----<web.xml>----------------------------------- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <servlet> <servlet-name>Test</servlet-name> <servlet-class>servlet.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Test</servlet-name> <url-pattern>/test.do</url-pattern> </servlet-mapping> </web-app> -------------------------------------------------- テスト用のServletを動かしてみると、 エラーが出てしまって、どうすればいいか困っています。 なんとかご助言をお願いいたします。 まだまだ情報が足りないかもしれません。 そのようなご指摘もお願いいたします。 よろしくお願いいたします。

  • Servlet内でのPath

    Servlet内でのPath指定でちょっと悩んでいます。 XMLを読ませて処理させようとして Source inSource = new StreamSource(new File("./XmlDump.xml")); とかやっているんですが、いざアクセスすると java.io.FileNotFoundException: /usr/local/jakarta-tomcat-3.3.1/bin/./XmlDump.xsl などとエラーを吐いてしまいます。 Servlet実行時のPathはどこになるのでしょうか・・・? いままで、実行中のclassが置いてあるディレクトリ(この例では $TOMCAT_HOME/webapps/xxx/WEB-INF/class)がルートだと思っていたのですが・・・。

    • ベストアンサー
    • Java
  • tomcat+apache+JBuilderでのServletの動作

    現在の環境は下記の通りです。 Linux(Laser5 4.6) Apache1.3.20 Tomcat3.2.3 ------------------------------------ tomcat+apacheでJBuilderを使い作成した Servlet(JARアーカイブ)を動かしたいの ですが、思うように動きません。 手順としては、 1.index.htmlを表示させる。 2.index.htmlにFORMを記述し、Servletを 起動させ、FORM上に入力した値を使用し て処理させる。 になります。 index.htmlとJARアーカイブファイルをどの 位置へ置き、web.xmlやserver.xmlをどの様 に記述すれば宜しいのでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • Javaサーブレットを読み込んでくれません…

    現在、社内での新プロジェクトの為にJSPの研修を行っています。 開発環境 ・Windows2000 Service Pack 4 ・JDK 1.5.0_06 ・Tomcat 5.5.20 JDKとTomcatのインストールは正常に終了し、http://localhost:8080/は正常に見ることが出来ました。 その後、<Tomcat-Home>/webapps/ROOT/entryフォルダを作成し、 ・entry/WEB-INF/ ・entry/WEB-INF/classes/ 以上二つのフォルダを作成して、WEB-INFフォルダ直下にweb.xmlファイルを作成しています。 classesフォルダの中にHelloServlet.classを置き、web.xmlファイルの中身を書き換えてTomcatを再起動させてみたのですが、http://localhost:8080/entry/HelloServletとURLを打ってみても見ることが出来ません。 何か間違っているのか、設定不足なのか…教えていただければ幸いです、よろしくお願いいたします。 ************<web.xml>************ <web-app> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping> *********************************

    • ベストアンサー
    • Java
  • JSPからServletへの遷移

    今回、eclipseで開発をすることになりました。 しかしながら、動的Webプロジェクトという使い慣れないプロジェクトでの作成を しなくてはならなくなり、混乱しています。 tomcatとWTPのことについては、先の質問で教えて頂き解決したのですが、 もう一つ困ったことがあったので、再度質問させて頂きます。 --------------------------------------- 環境 Windows7 Ultimate eclipse Indigo tomcat 5.5 --------------------------------------- まずは、JSPを作成し、それを実行し、ブラウザ上に表示することは出来ました。 その後にServletに<form action ="/test" method = "POST">という形で投げるのですが、 それがうまくいかず、404エラーが出てしまいます。 階層としては、JSPはSample(プロジェクト名)/WebContent/NewFile.jspに配置しています。 そして、Servletについては、Sample(プロジェクト名)/src/test/Test.javaに配置しています。 web.xmlについては、Sample(プロジェクト名)/WebContent/WEB-INF/web.xmlにあります。 まず、JSPのソースは以下の様に書かれています。 ----------------------------------------------------- <%@ page contentType="text/html;charset=Windows-31J" language="java"%> <%@ page pageEncoding="Windows-31J"%> <html> <head><title>タイトル</title></head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <%request.setCharacterEncoding("Windows-31J");%> <body> <form method="POST" action="/test"> <%--ここに処理を記述 --%> <input type = "submit" name="submit" value = "送信"> </form> </body> </html> ----------------------------------------------------- Servletについては、以下の様に、型だけ記述しています。 ----------------------------------------------------- package test; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Test */ public class Test extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Test() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } ---------------------------------------------------- そして、web.xmlについては、以下の様に記述しています。 ---------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" 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"> <display-name>SampleWeb</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>test</servlet-name> <servlet-class>test.Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> </web-app> ----------------------------------------------------- その状態で、JSPの中から <form action ="/test" method = "POST"> <input type ="submit" name = "submit" value="送信"> </form> とやっても、404が出てしまいます。 Java自体が久々で、根本的に間違っているかもしれませんが、 ご教授お願い致します。

    • ベストアンサー
    • Java