TomcatとEclipseのweb.xmlの設定について

このQ&Aのポイント
  • TomcatとEclipseのweb.xmlの<context-param>の設定について、優先順位や設定場所について教えてください。
  • TomcatとEclipseのweb.xmlには、<context-param>の記述があります。jspやHttpServletの子クラスから呼び出した場合、優先される設定はどちらでしょうか?また、その優先順位の記述場所も教えてください。
  • TomcatとEclipseのweb.xmlの設定に関してお聞きしたいです。両者の<context-param>の設定を使用する場合、どちらが優先されるのか、また記述の優先順位がある場合にはどこで行うのか教えてください。
回答を見る
  • ベストアンサー

TomcatとEclipseのweb.xml[]について

TomcatとEclipseのweb.xmlの<context-param>の設定について お聞きいたします。 windowsXP上にTomcatとEclipseをインストールし ${CATALINA.HOME}\confの直下にあるweb.xmlと Eclipseで作成したWEB-INF直下のweb.xmlの 両者に <context-param> <param-name>hoge</param-name> <param-value>foo</param-value> </context-param> と記述があり jspから application.getInitParameter("hoge"); またはHttpServletの子クラスから getServletContext().getInitParameter("hoge"); と呼びに言った場合どちらの設定が優先され また、その優先順位の記述(設定)はどこで 行うのでしょうか? ちなみにlogging.propertiesなどの設定も どちらが優先されるのか気になります。 尚、環境は Tomcat5.5 Eclipse3.2 です。 どうかご教授お願い致します。

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

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 web.xmlの内容は各コンテキストのWEB-INF以下のものが優先されます。この優先順位はTomcatというかj2ee規格の決まりごとなので変更できません。  logging.propertiesの優先順位は設定によりますがTomcatだと多分コンテキスト優先固定だと思います。この理由はクラスローダーの作られ方を参照すれば分かります。WebSphereやGlass Fishなどのj2eeコンテナでは優先順位を設定できるはずですが、そんな設定使うことはないと思いますし私も使った事ないです。logging APIのjarがコンテキストではなくcommonあたりに入っていた場合は・・・・どうなるのか試した事ないので分かりません。 http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html Tomcat 5.5のクラスローダーについての詳細はこの辺を参照の事。

public_sa
質問者

お礼

大変遅くなり申し訳ありません。 デスマーチにどっぷり浸かってしまった って感じです。 クラスローダーですか。。。 今まではあまり気にしていなかったので 再度学習してみます。 とりあえずTomcatではコンテキスト優先との ことですので、一安心です。 分かりやすい回答有難うございました。

関連するQ&A

  • 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*)" と一致しなければなりません。 お詳しい方、何卒ご教示の程願います。

  • 【Java】Eclipseで作成したTomcatプロジェクトへブラウザ

    【Java】Eclipseで作成したTomcatプロジェクトへブラウザからアクセスできません。 Tomcatは問題なく起動していて、Apache Tomcatへはアクセスできます。 以下に詳細を記載していますのでアドバイスをお願いします。 環境は以下の通りです。 ・Windows XP ・Internet Explorer8.0 or Firefox ・Eclipse Platform 3.4.2 Ganymede (All in one) ・Tomcat6.0 ・jre1.6 EclipseでTomcatを起動でき、その際のコンソールにも特にエラーはありません。 Tomcatを起動した際に http://localhost:8080/ へアクセスすると、Apache Tomcatへ繋がります。 なので問題なくTomcatは起動しています。 EclipseでTomcatプロジェクトとして”mbshop”という名のプロジェクトを作成しました。 http://localhost:8080/mbshop/とアクセスするとHTTPステータス 404 - /mbshop/ と表示されてしまいます。 mbshop配下にWEB/INFがあり、その中にweb.xmlを記述しています。 web.xmlの記述内容は以下の通りです。 <?xml version="1.0" encoding="ISO-8859-1"?> <web-app version="2.5" 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_5.xsd" <servlet> <servlet-name>invoker</servlet-name> <servlet-class> org.apache.catalina.servlets.InvokerServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> </web-app> Tomcatが起動できApache Tomcatのサイトへアクセスできるのに、 Eclipse内のTomcatプロジェクトが表示できないのは、なぜでしょうか。 いくら調べても原因が見つかりません。 ご存知の方がいれば、アドバイスを下さい。 宜しくお願いします。

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

    現在、以下の環境で開発しております。 ・Eclipce 3.2 + Tomcat5.0 + Struts ・OS:WindowsXP プロジェクトのweb.xmlを以下の様に書き換えるとJspを認識してくれなくなってしまいます。原因が全く掴めず難儀しております。 どうかご助言の程願います。 <?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> <display-name>Struts Blank Application</display-name> -----------------------このブロックを挿入すると404エラーになる <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Shift_JIS</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> --------------------------------------------------- <!-- Standard Action Servlet Configuration (with debugging) --> <servlet> ・ ・ 日本語の文字化け防止に入れたいのですが、現象の為、入れられず困っています。

  • eclipse-TomcatでHTTP404エラー

    初心者です。既存eclipse環境に、Tomcatを使える様設定したのですが、 タイトルのようなエラーで困っています。環境は OS:WindowsXPSP2 Tomcat:5.5 eclipse:3.2 です。 まず、Tomcatを単体で使う際のデータの保存先を「c:\webapps\ROOT」としているため、 Tomcatインストールパスのserver.xmlのappbaseの記述を"webapps"から"c:\webapps"に変更しています。 この状態で、eclipseに「動的Webプロジェクト」を作成し、 「サーバー」としてTomcatサーバを追加し、 JSPプログラムを作成して実行したところHTTP404エラー 「ドキュメントベース c:\webapps\"プロジェクト名" が存在しない、又は読めないディレクトリです」 が出てしまいました。 色々調べた結果、eclipse上の「サーバー」としてTomcatサーバを追加したとき Tomcatインストールパスのserver.xmlをインポートしているようですが、 appbaseの記述を"webapps"から"c:\webapps"としているせいでその下を見に行っているようです。 server.xmlのappbaseの記述を"c:\webapps"から"webapps"に戻したところ動作するようになったのですが、 (ここからが質問ですが、) 別の環境では、(Vista-Tomcat6.0-eclipse3.4)server.xmlを直さなくても正常に動作します。 ということは、どこかほかの所にもっと優先されるパスの設定があるのではないか?と思うのですが、 それらしいところが見つかりません。 どなたかご教授いただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • eclipse、Tomcatの設定

    お世話になります。 以前JAVAで開発していたプロジェクトを久々に動かそうと 思、新たにEclipse3.2、Tomcat5.5の環境を構築し、 TomcatのWebappsにWarをデプロイし、起動したのですが、 ブラウザからhttp://localhost:8080/プロジェクト名/index.html にアクセスしても404エラー画面が出力されてしまいます。 index.javaにSystem.outでデバッグしたのですが、 eclipseのコンソール上は何も出力されていないため、 TomcatとStrutsの連携がうまくいってなようです。 以前の設定でTomcatのWeb.xmlとServer.xmlを記述したのですが 何故うまくいかないのかわかりません。 どなたかご存知の方がいましたら教えていただけないでしょうか?

  • Tomcat6.0のContext要素について

    Tomcat6.0のContext要素についてなのですが、今までEclipseで自動的にTomcat/conf/sever.xmlに記述してくれたので気にしてなかったのですが、 http://www.oki.com/jp/oss/document/tomcat/tomcat-6.0.14/build/tomcat-docs/config/context.html を見たのですが、server.xmlに記述する事はよくないと書いてありました。 それと、今までのバージョンのTomcatと違って記述する内容も違うみたいなのですが、debug="0"とかtrusted="false"とか書くと、警告が表示されます。 Eclipseを使わずにTomcatを使用するには、どういう風にContext要素を書けばいいのでしょうか。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • Java
  • Tomcat5.0でJNDI

    お世話になります。 Tomcat5.0で、JNDIを使ってコネクションプーリングを実現しようとしてますが、なかなかうまいこといきません。 コンテキストファイル(hoge.xml)の設定 前略 <Resource name="jdbc/hoge" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/hoge">   <parameter>     <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>   </parameter>   <parameter>     <name>driverClassName</name>     <value>com.mysql.jdbc.Driver</value>   </parameter>   <parameter>     <name>url</name>     <value>jdbc:mysql://localhost/hoge</value>   </parameter>   <parameter>     <name>username</name>     <value>hogeuser</value>   </parameter>   <parameter>     <name>password</name>     <value>hogepass</value>   </parameter> 中略 </ResourceParams> 後略 これを、トムキャットホーム\conf\Catalina\localhostに置いています。 Javaの方のソース String dsString = getServlet().getInitParameter("java:comp/env/jdbc/hoge"); InitialContext context = new InitialContext(); DataSource ds = (DataSource) context.lookup(dsString); Connection connection = ds.getConnection(); 実行すると、 名前 java:/comp/env/jdbc/hoge はこのコンテキストにバインドされていません という具合に怒られます。名前はjdbc/hogeで合ってると思うのですが、他に何かおかしいところがあるでしょうか。 また他に調べるべき点はどのようなところでしょうか。 どうぞよろしくご教授ください。

  • Eclipse+TomcatのHTML表示について

    Eclipse+TomcatのHTML表示について EclipseにTomcatプラグインを追加して、下記動作を行ったところ404エラーが出てしまいます。 WEB-INF以下に置いたHTMLファイルを正常に表示するためには、どのような設定が必要なのでしょうか? 環境:eclipse3.4/Tomcat6 1.プロジェクトの作成 新規プロジェクト>Tomcatプロジェクト プロジェクト名:Example コンテキスト名:/Example Webアプリケーション・ルートとするサブディレクトリ:/ コンテキスト定義の更新を可能にする(server.xml またはコンテキスト・ファイル):チェック 2.コンテキストの更新 プロジェクト右クリック>Tomcatプロジェクト>コンテキスト定義を更新 3.Tomcat起動 Tomcatプラグインからポート8080でTomcatを起動。 4.HTMLを配置してアクセス(1) 配置:/Example/WEB-INF/index.html アクセス:http://localhost:8080/Example/index.html 結果:404エラー 4.HTMLを配置してアクセス(2) 配置:/Example/WEB-INF/index.html アクセス:http://localhost:8080/Example/WEB-INF/index.html 結果:404エラー 5.HTMLを配置してアクセス(3) 配置:/Example/index.html アクセス:http://localhost:8080/Example/index.html 結果:正常表示

    • ベストアンサー
    • Java
  • Tomcat で CGI の実行結果が表示されません

    Tomcat 6.0.24 を使って、perl または python で記述された cgi を実行したいのですが 実行されているのかされていないのか?がよくわからない状態で困っています。 ※環境は Windows XP Pro SP3 上です。 具体的には、cgi 側で単純な HTML を print し、その結果をブラウザで確認したいだけなのですが その print 結果が何も出力されません。 (ブラウザでアクセスすると、特にエラーは出ず、真っ白な画面) ◆試している cgi ソース(Perl) -------------------------------------------- test.cgi -------------------------------------------- #! c:/perl/bin/perl print "Content-Type: text/html\n\n" print "<html><body>Hello, World</body></html>" -------------------------------------------- ◆この test.cgi を配置している場所  インストールディレクトリ/webapps/ROOT/WEB-INF/cgi/test.cgi ◆ブラウザでアクセスしている場所  http://localhost:8080/cgi-bin/test.cgi ◆検証用 HTML の配置  インストールディレクトリ/webapps/ROOT/WEB-INF/cgi/test.html  →普通の HTML を確認のために配置。しかし、同様のアクセスで表示できず(画面真っ白) ちなみに、Tomcat インストール後にやったことは以下です。  1.インストールディレクトリ/conf/context.xml の 以下の部分に    「privileged="true"」という記述を追加    <Context>     /*中略*/    </Context>    ↓    <Context privileged="true">     /*中略*/    </Context>     2.インストールディレクトリ/conf/web.xml の以下の部分のコメント化を解除    <servlet>     <servlet-name>cgi</servlet-name>    /*中略*/    </servlet>    <servlet-mapping>     <servlet-name>cgi</servlet-name>     <url-pattern>/cgi-bin/*</url-pattern>    </servlet-mapping>  3.上の1、2では perl を実行してくれないので、    インストールディレクトリ/conf/web.xml に以下を追加    <init-param>     <param-name>executable</param-name>     <param-value>C:\Perl\bin\perl.exe</param-value>    </init-param>     ↓結果的に    <servlet>     <servlet-name>cgi</servlet-name>    /*中略*/     <init-param>      <param-name>executable</param-name>      <param-value>C:\Perl\bin\perl.exe</param-value>     </init-param>    </servlet> 以上ですが、何かヒントになるようなことでもよいので、識者の方、アドバイスをお願いいたします。

    • 締切済み
    • CGI
  • eclipseでTOMCATが起動しない

    eclipseにTOMCATのプラグインを導入し、eclipseからTOMCAT を起動できるようにしたい(というか、本にはできると書いてある) のですがうまくいきません。 2台のPCでやったのですが、どちらも同じようにだめです。 スタートメニューから、TOMCATを起動すれば起動してくれます。 http://localhost:8080 にて起動が確認できます。 TOMCATは4.1.31で、プラグインはcom.sysdeo.eclipse.tomcat_2.1.0です。 web.xmlはservlet-mappingのコメントアウトをはずしてます。 TOMCATホームは C:\Program Files\Apache Group\Tomcat 4.1 設定ファイルは C:\Program Files\Apache Group\Tomcat 4.1\conf\server.xml としています。 サーブレットを作成して、eclipseからTOMCATの起動ボタンを押すと、 なにやら起動画面が出てくることは出てくるのですが、 http://localhost:8080/Servlet などとしても、何も見つからないと出てしまいます。 ここで、スタートメニューからTOMCATを起動させ、ブラウザで↑にアクセスするとようやく 起動が確認できました。 何かが間違えているのでしょうか? 足りない情報は捕捉をお願いします。 よろしくお願いいたします

    • ベストアンサー
    • Java

専門家に質問してみよう