JSP: application追加時のweb.xml設定

このQ&Aのポイント
  • Redhat7.2J+Tomcat4.0.1でJSPを使っています。サーバのweb.xmlを変更し例えばhttp://www.goo.ne.jp/~hanakoというURLで/home/hanako/public_htmlを参照するようにしました。
  • ユーザhanakoがJSPでいうapplicationを/home/hanako/public_htmlの中に作りたいとします。(application名をapp1とします。)このとき、/home/hanako/public_html/app1/WEB-INF/web.xmlはどのように記述したらよいのでしょうか?
  • app1というディレクトリを作らずにpublic_htmlの下に直接WEB-INFを置く場合はweb.xmlに何も書かなくてよいのですが、app1の下に置くと"HTTP Status 500 - Internal Server Error"といったエラーメッセージが出力されます。サーバの方のweb.xmlを書き換えずにやる方法はないでしょうか?
回答を見る
  • ベストアンサー

JSP: application追加時のweb.xml設定

Redhat7.2J+Tomcat4.0.1でJSPを使っています。 サーバのweb.xmlを変更し例えば http://www.goo.ne.jp/~hanako というURLで /home/hanako/public_html を参照するようにしました。 ここで、ユーザhanakoがJSPでいうapplicationを/home/hanako/public_html の中に作りたいとします。(application名をapp1とします。)このとき、/home/hanako/public_html/app1/WEB-INF/web.xmlは どのように記述したらよいのでしょうか? app1というディレクトリを作らずにpublic_htmlの下に直接WEB-INFを 置く場合はweb.xmlに何も書かなくてよいのですが、app1の下に 置くと "HTTP Status 500 - Internal Server Error" "The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request." "java.lang.ClassNotFoundException" といったエラーメッセージが出力されます。 サーバの方のweb.xmlを書き換えずにやる方法はないでしょうか?

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

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

  • ベストアンサー
  • s-mariko
  • ベストアンサー率64% (33/51)
回答No.2

補足ありがとうございます。 /home/hanako/public_html が ContextPath に指定されてあるなら、 *.jsp はその下のどこに置いても動きませんか? (WEB-INF は、public_html の直下にあるとして) servlet も好きなところで動かしたいということだったら、web.xml の <url-pattern>/servlet/*</url-pattern> を <url-pattern>/*/servlet/*</url-pattern> にして、必ず servlet ディレクトリ下に置くようにするとかできない ですかね? (すいません、時間なくて試してません^^;)

heather
質問者

お礼

JSPはどこでも動きます。 あとは自分でいろいろやってみます。 スレッドを追跡するのが大変なので ここで終わりにさせて下さい。 ありがとうございました。

その他の回答 (1)

  • s-mariko
  • ベストアンサー率64% (33/51)
回答No.1

私はシロートなのですが、興味あるので回答してみます。 >サーバのweb.xmlを変更し例えば >http://www.goo.ne.jp/~hanako >というURLで >/home/hanako/public_html >を参照するようにしました。 こういった設定は Apache の httpd.conf と Tomcat の server.xml で 設定するものと思ってたんですが、web.xml にはどのように設定すればいい のでしょうか? すいません逆質問で^^; >app1の下に置くと とは、何を置いたのでしょうか? /home/hanako/public_html/app1 をアプリケーション?のディレクトリにしたいと言う事は、Tomcat の server.xml に context としてパスを登録するくらいしか知らないん ですが、ちなみに app1 下に置いて動かないものを public_html の 下に置くと動くのでしょうか?

heather
質問者

補足

すみません、すっかり書き間違えていました。 ご指摘の通り"サーバのweb.xml" --> "サーバのserver.xml"です。 app1/の下にWEB-INFや*.jspです。Tomcatをインストールすると webapps/examples/ができますよね。例えばこれを /home/hanako/public_html/app1/へ移動できないかと思ったわけです。 /home/hanako/public_html/に置くとできます。 ~hanakoで/home/hanako/public_htmlを参照するようにしたからと 思われます。 個々のユーザがapplicationを作ったり消したり名前を変えたりするたびに 管理者がserver.xmlの<Context>を変更してTomcatを再起動するというのは 大変ですよね。ユーザが何十人といたらとても無理です。

関連するQ&A

  • getInitParameter と web.xml

    http://www.atmarkit.co.jp/fjava/rensai2/jspservlet06/jspsevlet06_1.html を参考に、jsp を勉強していますが、 「 ■初期化パラメータの活用 」 というところで、 アプリケーションルートの配下に「/WEB-INF/web.xml」を配置するとありますが、 アプリケーションルート とはどこのことでしょうか? (1) [tomcat559 インストールフォルダ] D:\server\tomcat\ (2) http://localhost:8080/jsp/ E:\public_html\jsp\ (3) http://localhost:8080/jsp/folder/ E:\public_html\jsp\folder\ (3) で作業しています。 web.xml はそのままで、読み取るjsp を以下のように変えています。 <%@ page contentType="text/html;charset=Shift_JIS" %> <% String s = application.getInitParameter("driverName"); if (s==null) out.print("読み込めない"); else out.print(s); %> ちなみに、 (3)/WEB-INF/web.xml と置くと、「読み込めない」と表示されます。 (2)/WEB-INF/web.xml と置くと、 「HTTPステータス 404 - /jsp/folder/hoge.jsp」となります。

    • ベストアンサー
    • Java
  • web.xmlの書き方2

    すいません下の質問なのですが フォルダ構成は WEB-INF |____classes___test___Test.class | |____jsp(空) | |____web.xml となっております。 あと質問に追加なのですが。 他の書籍のweb.xmlを参考にして web.xmlの書き出しの部分を <!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> では無く、 <?xml version="1.0" encoding="UTF-8" ?> <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/web-app_2_4.xsd" version="2.4"> にしてトライしてみたところ、そもそもTomcatを起動させる時点で多数のエラーが出ます。 Tomcatのエラーは 致命的: Parse Error at line 8 column -1: 要素タイプ "servlet-name" は宣言されて いません。 org.xml.sax.SAXParseException: 要素タイプ "servlet-name" は宣言されていません。 といった物が多数でます。 これについてもお答え願えれば幸いです。 それでは失礼いたします。

    • ベストアンサー
    • Java
  • web.xmlの書き方

    web.xmlの書き方 質問させてください webcontent\day5\rsMeta.jspというファイルにブラウザからアクセスしたいのですが、エラーが出ます。 web.xmlの書き方が間違っているのですが、どのように書けばよいでしょうか? 現状のweb.xmlを以下に記載します。 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Jijyodoryoku</display-name> <servlet> <servlet-name>rsMeta</servlet-name> <jsp-file>/day5/rsMeta.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>rsMeta</servlet-name> <url-pattern>/rsMeta</url-pattern> </servlet-mapping> </web-app>

    • ベストアンサー
    • Java
  • Webアプリケーションのエラーメッセージについて

    EclipseとStrutsを使ってWebアプリケーションを作成しています。作成したものをブラウザで確認した際に、以下のようなメッセージが「説明」の部分に出ました。 The server encountered an internal error () that prevented it from fulfilling this request. また、「例外」と「原因」の部分に以下のメッセージが出ています。 javax.servlet.ServletException: このコレクションに対するイテレータは生成できません。 これはどのような意味のエラーなのか教えてください。

    • ベストアンサー
    • Java
  • web.xmlの書き方

    初めまして。最近Servletを始めた者です。 いきなりweb.xmlの書き方でつまづいてしまっています。 フォルダ構成は webapps\study\WEB-INF |____classes___test___Test.class | |____jsp(空) | |____web.xml になっています。 環境はWin2k j2sdk-1_4_1_04 jakarta-tomcat-4.1.27 です。 とりあえず自分の書いたweb.xmlは下記のとおりです。 <?xml version="1.0" encoding="ISO-8859-1"?> <!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>Test</servlet-name>   <servlet-class>test.Test</servlet-class>  </servlet> <servlet-mapping> <servlet-name>Test</servlet-name> <url-pattern>/servlet/Test</url-pattern> </servlet-mapping> </web-app> このまま http://localhost:8080/study/servlet/Test にアクセスしようとすると javax.servlet.ServletException: サーブレットインスタンスを割り当て中のエラーです java.lang.NoClassDefFoundError: test/Test (wrong name: Test) と出てしまいTest.classは表示されません。 ちなみにTest.classを一つ上のフォルダclassesの直下に入れてあげて <servlet-class>test.Test</servlet-class> を <servlet-class>Test</servlet-class> にしてあげるとちゃんと表示されます。 なのでそこの記述の仕方がわかっていないのだと思っていますがなかなかうまくいかないのです。 もしよろしければご教授願えるとありがたいです。 それでは失礼いたします。

    • ベストアンサー
    • Java
  • 【JSP】include時のパス設定について

    JSPでincludeしたいファイルがあるのですが、外部サーバーのためhttp://から設定したいのですがドキュメントルートからのパスとなってしまい、 以下エラーとなりうまく実行できません。 The requested resource (/service名/WEB-INF/jsp/admin/http://~) is not available 指定したいのは以下のように単純に『http://yahoo.co.jp』を読み込んでほしいのです。 <jsp:include page="http://yahoo.co.jp" flush="true"></jsp:include> サーバーの設定などで解決できるものでしょうか。

  • JSPページから、同じJSPページを呼び出す。

    こんばんは。 少し分からないことがあるのですが。 JSPにフォームを設けて、呼び出し先も おなじJSPにして、処理しようと思ったのですが うまくいきません。 エラーは・・The server encountered an internal error () that prevented it from fulfilling this request. となっています。 おそらく、最初にページを開くときに、 フォームに記載がされていない状態なので、 request.getParameterで受け取るデータが ない、というようなエラーだと思うのですが。 1つのページで処理したいと思っています。 このような場合、どうしたらいいのでしょうか。 なにかアドバイスありましたら、 お願いします。

    • ベストアンサー
    • Java
  • tomcatのweb.xmlについて

    tomcatのweb.xmlについての質問です。 eclipseにサーバーからソースをインポートしてプロジェクトを作成しました。 ビルドパス等の問題は解決したのですが、web.xmlの以下に示す箇所だけどうしてもエラーが解消出来ません。 色々調べてみた結果、要素の順番が悪いのだろうとは理解出来ましたが、順番を変えてもエラーが出続けます。 どこがいけないのでしょうか? web.xmlの記述 <servlet> <init-param> <param-name>browseDirs</param-name> <param-value>false</param-value></init-param> <servlet-name>FileServlet</servlet-name> <servlet-class>jrun.servlet.file.FileServlet</servlet-class> <description>This servlet may override a corresponding FileServlet in SERVER-INF/default-web.xml.If removed, the servlet in default-web.xml will be used.</description> </servlet> エラー内容 要素タイプ "servlet" のコンテンツは "(icon?,servlet-name,display-name?,description?,(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)" と一致しなければなりません。 お詳しい方、何卒ご教示の程願います。

  • web.xmlでのエラーページ

    お世話になります。 Tomcat5.5、Linux環境下で、 WEB-INF/web.xmlに <error-page> <error-code>500</error-code> <location>/jsp/error.jsp</location> </error-page> <error-page> <error-type>java.lang.Exception</error-type> <location>/jsp/error.jsp</location> </error-page> という記述をしています。 (Tomcatは問題なく起動しています) サーブレット内でエラーが起こるように設定したのですが、作成したerror.jspに飛ばず、通常の500のエラーページが表示されます。 サーブレット記述 doGet(... ) throws ServletException,IOException { ...処理  try { throw new IOException(); //ここでExceptionをわざと起こしています。 ...処理  } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } なぜ、独自のエラーページに飛んでくれないのか原因が分からず投稿させていただきました。 どなたかアドバイスお願いします。

  • 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" ....> 基本的な質問かもしれませんが、何卒よろしくお願いします。