ServletのWebアプリケーションの追加方法

このQ&Aのポイント
  • ServletのWebアプリケーションの追加方法について悩んでいます。
  • 自分のホームに専用のディレクトリを作り、tomcatの設定を行いましたがうまく認識されません。
  • 試しにファイルを置いてアクセスしてみたのですが、すべて404エラーが発生します。
回答を見る
  • ベストアンサー

ServletのWebアプリケーションの追加方法

Servletド素人なのですが、なんとかtomcatをセットアップして悪戦苦闘しています。 ServletはWebアプリケーションという単位で動くと聞きまして、自分のホームにそれ専用のディレクトリを作ってみたのですが、うまくtomcatから認識されないんです。 /home/user/hoge とか作って、tomcatのserver.xml に <Context path="/hoge" docBase="/home/user/hoge" debug="0" reloadable="true" ></Context> と書いたのですが、いざtomcatをスタートさせると AutoWebApp: Loaded from config: DEFAULT:/hoge WorkDirSetup: Creating work dir /usr/local/jakarta-tomcat-3.3.1/work/DEFAULT/hoge となってしまい、自分のホームにならないんです。 仕方なくそこにファイルを置いて、http://localhost/hoge/ 等と打っても、全部404になってしまいました・・・。 もちろん、http://localhost/examples/ ではちゃんとtomcatのデフォルトが出てきます。 わかりますでしょうか・・・。

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

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

  • ベストアンサー
  • covachan
  • ベストアンサー率38% (46/120)
回答No.3

> JkMount /hoge/* ajp12 これはマウントと言ってコネクタに/hogeをマウントすると言うことです。 当然ながらこの設定は不可欠です。 これを行うことによりajp12コネクタで/hogeディレクトリへ対しての リクエストがとおります。 ですが、私の指摘したのはAliasです。 httpd.conf もしくは mod_jk.confへ以下の設定をすれば見れるはずです。 Alias /hoge/ "/$TOMCAT_HOME$/webapps/hoge/" #まず、Apacheに/hoge/*へ対してのリクエストを/$TOMCAT_HOME$/webapps/hoge/へAliasする。 JkMount /hoge/* ajp12 #/hoge/へのリクエストをajp12コネクタを通じて処理 Apacheのサンプルが見え、8080でTomcatのexamplesが見えるのであれば インストールと基本の設定は出来ていますので、この設定が出来ていないのが原因でしょう。

pythian
質問者

お礼

なるほど!Apache側アクセスからTomcatへの接続は、モジュールを入れておけば自動でされるのではないのですね。設定をしてみます。あとは、webアプリケーションの例の通りに、Servletを配置すれば良いんですね。色々とありがとうございました。

その他の回答 (2)

  • covachan
  • ベストアンサー率38% (46/120)
回答No.2

まず、tomcatのconfディレクトリにあるmod_jk-auto.confを見てみてください。 このファイルは、登録されているWebApplicationのためにTomcatが自動的に 作る設定ファイルです。 ご覧になるとわかると思うのですが、 Aliasが設定されていると思います。 つまり、WebApplicationへのAliasを設定するなどしてパスを通してあげないと そのファイルはTomcatは認識したとしてもApacheで認識できないのです。 exampleの場合、最初の起動時に認識されますのでアクセスはできます。 ですが、もしincludeファイルにmod_jk-auto.confでなく、自分で書いたものを 指定しているのであれば、後から追加したWebApplicationへのAliasは自動では設定されません。 ちなみに8080ポートで接続は確認しましたか?? 8080で見えて、80で見えなければ、それは完全にこの設定ができていないからです。 この場合httpd.confか、mod_jk.confでAliasを設定する必要があります。 httpd.conf、もしくはmod_jk.confの設定をもう一度見直してみてはどうでしょう??

pythian
質問者

お礼

conf/jk/mod_jk.conf というのがあったので、exampleなどの例にならって > JkMount /hoge/* ajp12 と指定を加えてみました。すると、80でも8080でも見えなかったものが、8080だけで見えるようになりました。ということは、Tomcatでは認識できているということですよね。自動的にApacheで認識されていないのが非常に気になるのですが、もう少しいじってみます。ありがとうございます。

  • covachan
  • ベストアンサー率38% (46/120)
回答No.1

まず、環境をしっかり書いておいてください。 http://localhost/examples/で見れるということはWebサーバーとの連携ですか? それとも、TOMCATのポートを80に指定したのですか? それと、もしWebサーバーを使用しているのならばそれは何ですか?? 404エラーはWebサーバーが吐き出すエラーです。 つまり、基本的に配置がうまくいってない、もしくはWebサーバーから見えない と考えるべきです。 Webサーバーの設定でちゃんとhogeが見えるようになっているか確認をしてください。 連携の概要はこうです。 Client > Webサーバー > もし、jspならば > tomcat ですので、Webサーバーがそのファイル自体を見れないと404エラーとなります。 設定について悩んでいるようでしたら、環境と手順を書いておいてください。

pythian
質問者

補足

大変失礼いたしました。 環境はLinux 2.4、Tomcat3.3.1(/usr/local/jakarta-tomcat3.3.1/)とApache1.3.20(/usr/local/apache/)にJ2SDK 1.3を連携させています。 Apacheのルートは/home/httpd/になっていて、exampleはtomcatの中(jakarta-tomcat3.31/webapps/example)にあり、Servlet関係の要求へ自動的にtomcatへ飛ぶようになっている・・・はずです(exampleは飛んでくれました)。 それが、tomcat側の conf/server.xml に新規で指定しても飛んでくれないのです・・・。

関連するQ&A

  • Tomcat Apache 新規アプリケーションの追加

    RedHat 7.2 apache_1.3.27 tomcat-4.1.24 jakarta-tomcat-connectors-jk2-2.0.1 を使用し新規にアプリケーションを作成しようと思っているのですが 新規に作成したディレクトリを認識させることができません apache/conf/workers2.propertiesに [uri:/新規作成ディレクトリ] [uri:/新規作成ディレクトリ/*] を追加して、 servlet.xmlにも <context path="/新規作成ディレクトリ docBase="新規作成ディレクトリ" debug="0" reloadable="true"crossContext=true" > </context>と追加しました localhost/新規ディレクトリ/test.html と指定しましても web上に Https Status 404 が出てしまい、 servletやHtmlが表示されません ちなみにデフォルトのexamples/だと表示されます。 workres2.propertiesに追記するのに不足があると思い、色々と試しているのですが うまくいきません。 どなたか知恵をかして頂けないでしょうか 宜しくお願い致します。

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

  • 困ってます

    自分は今TomcatでサーブレットとJSPの勉強をしています。 サーブレット(hello.class)はTomcat-conf-server.xmlに <Context path="/test"    docBase="webapps/test" crossContext="false" debug="0" reloadable="true" > </Context> を追加したことにより http://localhost:8080/test/servlet/hello で動作は確認しました("Helloworld"の表示のみ) JSP(hello.jsp)は Error: 500 Internal Servlet Error:が表示されて実行できません。 ちなみにhello.jspはtestディレクトリの直下に保存しています。 ・hello.jspのスクリプト <%@page contentType="text/html;" %> <html> <head> <title>JSPTEST</title> </head> <body> <% out.println("HELLO WORLD!"); %> </body> </html> ※ちなみにcontentType="text/html;charset=Shift_JIS"とすると  ページが見つからないというエラーになりました。 ・JSPファイルを表示するアドレス http://localhost:8080/test/hello.jsp 開発環境は RedHatLinux7.2 Java2 SDK 1.3.0 Jakarata Tomcat 3.2.4 で、 環境変数は JAVA_HOME=/usr/java/jdk1.3.0_02 TOMCAT_HOME=/usr/src/jakarta/tomcat PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/lib/servlet.jar CLASSPATH=. です 何か分かる事がありましたらご教授御願い致します。

    • ベストアンサー
    • Java
  • 全然分かりません・・

    J2SEとtomcat5.0をインストールし、C:\j2sdk1.4.2_11とC:\Tomcat5としてインストールしました。 環境変数は変数名/変数値 CATALINA_HOME/C:\Tomcat5 CLASSPATH/.;%JAVA_HOME%\lib\tools.jar;C:\Tomcat5\common\lib\servlet-api.jar JAVA_HOME/C:\j2sdk1.4.2_11 PATH/%JAVA_HOME%\bin と設定しました。 普通にJAVAなども使えてtomcatも起動できるのですが、 http://www.hellohiro.com/servlet.htmで、HelloWorldServlet.javaをDL、コンパイルしclassを作って、C:\Tomcat5\webapps\servlets-examples\WEB-INF\classesなどに置いたのですが、 http://localhost:8080/examples/servlet/HelloWorldServletを実行しても HTTPステータス 404 - /examples/servlet/HelloWorldServletのエラーとなってしまいます。 色々なサイトを回って試したのですが、http://f44.aaa.livedoor.jp/~takamura/www/tomcat.htmlのサイトを参考に、 http://localhost:8080/のTomcat Administrationからログインして説明通りにやろうとしたら、CATALINA_HOMEの間違ったうちにやってしまったのかわかりませんが、コンテキストは既に存在しています、となってしまったりしました。 そのへんはやる必要なかったのかもしれませんが、tomcat5.0の場合は、 C:\Tomcat5\conf\Catalina\localhostに、C:\Tomcat5\webapps\の中に作成した自分で決めた名前のxmlを作成したりするらしいのですが、わかりやすく解説してあるサイトはありますでしょうか・・? tomcatを起動している最中に、http://localhost:8080/に続くアドレス で自分で用意したclassとxmlから、一番簡単なサーブレットを動かしてみたいです。よろしくお願いします。

  • 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
  • クラスファイルの配置について

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

    『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
  • Tomcat ドキュメントルートの設定について

    当方、Tomcat 5.5.23 で検証を行っております。 TomcatのみでWebサーバの構築を考えているのですが、デフォルトで導入した 際に以下のURLでアクセスで表示されるTomcatのWellcome 画面を差し替えたい と考えています。  http://localhost:8080/ この際に 以下のディレクトリに Wellcome 系のjsp などが配置されている ことは確認したのですが、このROOTに関してのContextの設定などがfind/grep にてTomcatファイルをチェックしましたが該当がありませんでした。 ${CATALINA_HOME}/webapp/ROOT 他のデフォルトで配置されているTomcatのツールとしてmanagerやhost-manager はログの設定や、Contextが存在しており、要/不要の判断により取捨がで きたのですが、他のTomcatデフォルトで存在している以下のようなコンテン ツはどこでTomcatから参照した場合のpathの設定を行っているのでしょうか。 ${CATALINA_HOME}/webapps/  ROOT  balancer  jsp-examples  servlets-examples  tomcat-docs  webdav manager 画面からは上記の配置解除により上記の取捨が行うことができました。 $CATALINA_HOME 配下のファイルdiffを見ますと、上記のディレクトリが削 除されただけのように見られます。 ※ wokr配下も一部Diffが出ましたが。 前置きが長くなってしまいましたが、以下2点にて理解のある方いらっしゃいましたらご返答をお願いいたします。 □ Tomcatへhttp://localhost:8080/ でアクセスした際に指定したjspやServletを表示させる方法。 ※ Apacheは使用しない方法でお願いいたします。 □ ROOTなどのTomcatからの見え方の設定を行っているファイル、また設定方法。

専門家に質問してみよう