Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ServletをテストするとHTTPステータス 404が出てしまいます。

Javaとサーバーの基礎的な部分を独学し、いざ進もうとし始めたところで行き詰ってしまいました。
自分なりに色々と調べて似た症状の事例は発見しましたが、それらでは私のケースには当てはまらないようでした。
丸二日以上原因が分からず、お知恵を貸していただけないかとこちらに至った次第です。
八方塞のため、どうか、ヒント・アドバイス・お力添えをお願いいたします。


<内容>
xamppにてTomcatを導入し、TomcatとApacheの連携を確認。
参考書を元に、Eclipseの導入と設定。
Eclipseにて参考書のサンプルコード(Sample014)を入力。
指示通り、
http://localhost:8080/myapp/Sample014
にアクセスしたところ、
「HTTPステータス 404 
The requested resource (/myapp/Sample014) is not available.」
とのエラーが出てきました。

試しに、同じ参考書に従い、EclipseにてJSPのサンプルコード(Sample015)を入力。
http://localhost:8080/myapp/Sample015.jsp
にアクセスしたところ、正常に表示されました。

当サイトhttp://www.javaroad.jp/opensource/js_tomcat2.htm
を参考に、Eclipseを使わずにメモ帳にてServletを作ってみました。
(Tomcat/webapps内にて)

コンパイルエラー

CLASSPATHにC:\xampp/tomcat/lib/servlet-api.jarを追加し再起動。

コンパイル成功。Servletの確認。
http://localhost:8080/javaroad/Helloにアクセスしてみると、「HTTP 404」エラー。

JSPの確認。
http://localhost:8080/javaroad/jspdir/HelloJsp.jspにアクセスしてみると、「HTTP 404」エラー。

HelloJsp.jspをC:\Eclipse/Workspace/myappにコピーし、
http://localhost:8080/myapp/HelloJsp.jspにアクセスしてみると、正常に表示。


という状態です。

Servletが動かない原因は何なのでしょうか?
また、なぜJSPは、Eclipse/Workspace/myappでは動き、xampp/tomcat/webapps/××では動かないのでしょうか?
(Eclipseを使うとEclipse内で全て管理されるようになってしまうのでしょうか?)

この二点に詰まっています。


<状況>
JDK 6 Update 21 
Apache2.2
Tomcat6.0.20
Eclipse3.6

<フォルダ配置>
C
 -Eclipse
  -Workspace
   -myapp
    -WEB-INF
      -classes
        -web.xml
        -com
          -gokui
           -Sample014
   -work
   -Sample015.jsp
   -HelloJsp.jsp
 -xampp
   -tomcat
     -webapps 
      -javaroad
        -jspdir
          -HelloJsp.jsp
        -WEB-INF
          -web.xml
          -classes
            -HelloServlet.class

※参考書にてSample014及び015を作成。
 Eclipse/Workspace/myapp/WEB-INF/classes/come/gokuiは、その設定に従いました。
※当サイトにてHelloJsp.jsp及びHelloServlet.classを作 成。
※web.xmlが二つあるのは、それぞれに従い作成したためです。

不勉強なため、お答えに必要な情報や設定など基本的なことが分からず長々と書いてしまいました。
そのほかも、ご指示いただければ記入します。
web.xmlなど必要な設定は参考に従いましたが、こちらに書いたほうがよろしいでしょうか?

本及びサイトやQ&A等で自分なりに調べてみましたが解決できずにいます。
何卒、諸先輩方のお力をお借りしたく、よろしくお願いいたします。

ここまで読んでいただき、ありがとうございました。

7

回答

61919

閲覧

7件の回答

評価

0

web.xmlの階層を再度かくにん。

評価

0

>$さん

書き込みありがとうございます。
そこは、気になっていたところの一つですが、色々動かしてみたところダメで初期位置に戻した、という感じなのです。

基本形が、
ルートディレクトリ
  -WEB-INF
   -web.xml
   -classes
   -lib
であることは、http://www.javaroad.jp/opensource/js_tomcat2.htm
に書いてありました。

その上で、Eclipseにてweb.xmlを作成したところ、
Eclipse-Workspace-myapp-WEB-INF-classese
                               -src
の二つに同じweb.xmlが作成されました。
気になってsrc側を削除、classese側をWEB-INFに移したところ、Tomcatが終了してしまったのです。
xamppコントロールパネルから再び起動させてもすぐに終了してしまいます。
web.xmlをWEB-INFから動かしたら、元通りにTomcatが動作しました。
そのため、web.xmlファイルをclasseseに戻した次第です。
もしかして、WEB-INFで止まったTomcatとclasseseとsrcにweb.xmlを作成するEclipseの設定がおかしいのでしょうか?


また、xampp/tomcat/webapps/javaroad/WEB-INF側は、
正しい場所にweb.xmlを置いていると思いますが、こちら側も「HTTP 404」になってしまっています。
これは、どういった原因が考えられるのでしょうか?


当たり前なこと、基本的なことが欠けているかもしれませんが、どうか、何か思い当たることがありましたらヒントをいただきたく、よろしくお願いいたします。

評価

0

web.xml
の中身が間違っているんじゃない?

評価

0

あれ?
最近のTomcatって、packageなしのservletを受け付けないようになってなかったっけ?

あとはTomcatのログに本島に何も出てないか。

評価

0

あれからもう一度全てのファイルを確認していたところ、
条件付とはいえ、無事にServletをみることが出来るようになりました!

>気になってsrc側を削除、classese側をWEB-INFに移したところ、Tomcatが終了してしまったのです。
>xamppコントロールパネルから再び起動させてもすぐに終了してしまいます。
>web.xmlをWEB-INFから動かしたら、元通りにTomcatが動作しました。
>そのため、web.xmlファイルをclasseseに戻した次第です。

の箇所ですが、先ほどもう一度web.xmlをWEB-INFにおいてみたところ、今朝まで止まっていたTomcatが起動したままだったのです。
再起動してみても、通常通り停止することなくRunningが表示されつづけます。
これにより、http://localhost:8080/myapp/Sample014へのアクセスが可能になり、やっとServletを表示させることができました。

次に、Eclipse以外での場合ですが、
xampp/tomcat/webapps/javaroad内のServlet及びJSPは変わらず「HTTP 404」エラーが出て表示されませんでした。
また、xampp/tomcat/webapps/examples内のサンプルを表示させてみると、正常に表示できました。
ここに、javaroad内のJSPを移動させてみたところ、
http://localhost:8080/examples/HelloJSP.jsp
にてアクセスでき、表示されました。

結果として、
Eclipse/Workspace/myapp内と
xampp/tomcat/webapps/examples内
ならば表示可能であり、
独自に追加したルートディレクトリjavaroadでは表示できない、という状態です。

これは、なにか設定が足りないからなのでしょうか?
サイトの表示どおりにjavaroad.xmlを
tomcat\conf\Catalina\localhost
内に置いてみたりしていますが、不勉強なため原因が分からずにいます。

引き続き、こちらの原因に関するアドバイスをいただけたら幸いです。

評価

0

>てんこさん
ご回答いただき、ありがとうございます。
おかげさまで、Servlet自体は表示することができました。

web.xmlは、Eclipse側は正常に見れていたので問題ないかと思います。
javaroad側は、以下の通りです。
サイトからのコピペですが、確かにEclipse側とは違う部分があり、それがどう違いを生み出しているのか分からない状況です。
なにかお知恵がありましたら、教えていただけるようお願いいたします。


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>

評価

0

>$さん

お返事いただき、ありがとうございます。
おかげさまで、Servlet自体はやっと見ることができました。


PackageされていないServletは受付ないんですか?!
それは知りませんでした・・・
しかし、Tomcatのexamples内のサンプルのweb.xmlを見てみると、packageと書かれた表示が無いように見えますが、どうなんでしょうか?
やはり、Verによって大きく扱いが違うのですね。
参考サイトも鵜呑みに出来ない場合が多々あり、難しさをひしひしと感じています。
こうして的確にアドバイスをいただき、本当にありがとうございます。

Logsに関しては、cataline内に、

・コンテキストの起動が失敗しました
・[Catalina].[localhost].[/javaroad] はまだ起動されていません
・ドキュメントベース C:\Program Files\xampp\tomcat\webapps\javaroad が存在しない、又は読めないディレクトリです
・前のエラーのためにこのアプリケーションは利用できないようにマークします

などが作業のたびに繰り返し表示されています。
細かい見方が分からないため、どこを参照したらいいのかわかりませんが、同じような内容が(おそらく作業失敗毎に)繰り返し表示されています。

何か思い当たることがありましたら、アドバイスいただけると嬉しいです。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。