135

Tomcat 6 Web サーバーのデフォルト アプリケーションを「ROOT」(webapps フォルダー内) とは異なるアプリケーションに変更しようとしています。これを行う最善の方法は何ですか?

4

13 に答える 13

132

次の 3 つの方法があります。

  • まず、Tomcat をそのbinディレクトリからシャットダウンします ( sh shutdown.sh)。次に、Tomcatwebappsフォルダー ( rm -fr *) のすべてのコンテンツを削除します。次に、WAR ファイルの名前を に変更しROOT.war、最後にbinディレクトリ ( sh startup.sh) から Tomcat を起動します。

  • war ファイルは$CATALINA_BASE/webapps元の名前のままにしておきます。ファイルの Host 要素で autoDeploy と deployOnStartup をオフます server.xmlpath属性 とdocBaseserver.xml属性の両方を指定して、すべてのアプリケーション コンテキストを明示的に定義します。これを行う必要があるのは、Tomcat の自動デプロイ メカニズムをすべて無効にしたためです。Tomcat は、.server.xml

    2 番目の方法: アプリケーションに変更を加えるには、Tomcat を停止して再起動する必要があります。

  • WAR ファイルを の外部に配置します$CATALINA_BASE/webapps(二重展開を防ぐために外部に配置する必要があります)。という名前のコンテキスト ファイルを配置しROOT.xmlます$CATALINA_BASE/conf/。このコンテキスト ファイル内の 1 つの要素に は、WAR ファイルの場所を指すdocBase属性が必要です。.xmlpath 要素は設定しないでください。この場合は、ファイルの名前から派生しますROOT.xml。詳細については、Context コンテナのドキュメントを参照してください。

参照

于 2011-05-23T06:37:15.897 に答える
25

Tomcat 6のタグに<Context>タグを追加すると、問題が解決します。<Host>server.xml

path=""空を使用する場合は、のようなURLを使用できますhttp://localhost/first.do

コンテキストタグで属性docBase="E:\struts-ITRCbook\myStrutsbook"reloadable="true"を設定し、コンテキストタグを終了します。

次のようになります。

<Host name="localhost"  appBase="webapps" 
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
    </Context>
</Host>
于 2010-03-03T08:11:14.847 に答える
17

ROOT のデフォルト アプリは通常 Tomcat Manager です。

というわけでアプリを ROOT にして TCmgr をキープする方法はこんな感じでした。

ROOT を別の名前に変更

mv ROOT TCmgr

次に、ROOTがデフォルトにしたいアプリを指すシンボリックリンクを作成しました。

ln -s <your app> ROOT

私のために働き、最も簡単なアプローチのようでした。

于 2011-11-03T17:07:57.073 に答える
12

Apache Tomcatのドキュメントによると、ROOT.xmlファイルを作成することでアプリケーションを変更できます。詳細については、こちらをご覧ください。

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

「デフォルトのWebアプリケーションは、ROOT.xmlというファイルを使用して定義できます。」

于 2009-04-03T20:09:42.227 に答える
12

これは、次の方法で少しハックのように行うことができます。

  1. Tomcatを停止します
  2. ROOT.warを脇に移動し、rm -rf webapps / ROOT
  3. 必要なWebアプリケーションをwebapps/ROOT.warにコピーします
  4. Tomcatを起動します
于 2009-04-03T21:09:11.930 に答える
3

別の解決策は、目的のデフォルト Web アプリケーションにリダイレクトを送信するサーブレットを作成し、そのサーブレットを ROOT Web アプリケーションのすべての URL にマップすることです。

package com.example.servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class RedirectServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.sendRedirect("/myRootWebapp");
  }
}

上記のクラスを に追加し
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servletます。
そして、以下を に追加します
CATALINA_BASE/webapps/ROOT/WEB-INF/web.xml

  <servlet>
    <display-name>Redirect</display-name>
    <servlet-name>Redirect</servlet-name>
    <servlet-class>com.example.servlet.RedirectServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Redirect</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

また、必要に応じて、RedirectServlet を簡単に変更して init パラメータを受け入れ、ソースを変更せずにデフォルトの webapp を設定できるようにすることもできます。

これを行うことが悪影響を与えるかどうかはわかりませんが、これをテストしたところ、うまくいくようです。

于 2011-07-11T18:02:45.993 に答える
2

context.xml 構成がうまくいきませんでした。Tomcat 6.0.29 は、appBase 内にある docBase について不平を言います: ... Tomcat 5 の場合、これは実際に機能しました。

したがって、1 つの解決策は、アプリケーションを ROOT フォルダーに配置することです。

もう 1 つの非常に簡単な解決策は、次のようにアプリケーションにリダイレクトする ROOT に index.jsp を配置することです。

よろしく、 ヤン

于 2011-01-11T16:38:57.173 に答える
1

Tomcatを構成してserver.xmlContext要素を追加すると問題が発生します。彼は私の設定を使いたくないだけです: http ://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html

システムを使用している場合Unix-like

  1. mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
  2. ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT

終わり。

私のために働きます。

于 2011-11-24T16:24:35.170 に答える
0

ドキュメントを見ていきます。ルートWebアプリケーションのパスをROOT(またはROOT.war)から変更する構成を指定する方法がありますが、Tomcat5と6の間で変更されたようです。

これを見つけました:

http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html

したがって、ルートパス(ROOT.xml内)を変更することは可能のようですが、少し壊れています。WARを自動展開ディレクトリの外に移動する必要があります。ファイルの名前をROOT.warに変更するだけでは、実行可能な解決策ではない理由を尋ねてもかまいませんか?

于 2009-04-03T20:10:29.293 に答える
0

あまり良い解決策ではありませんが、1 つの方法は、ROOT アプリから YourWebApp にリダイレクトすることです。このためには、ROOT index.html を変更する必要があります。

<html>
    <head>
        <title>Redirecting to /YourWebApp</title>
    </head>
    <body onLoad="javascript:window.location='YourWebApp';">
    </body>
</html>

また

<html>
    <head>
        <title>Redirecting to /YourWebApp</title>
        <meta http-equiv="refresh" content="0;url=YourWebApp" />
    </head>
    <body>
    </body>
</html>

参考:http ://starapd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html

于 2013-06-10T15:56:16.737 に答える
-4

Tomcat 7 (Windows サーバーの下) では、どの構成ファイルにも何も追加または編集しませんでした。ROOTフォルダーの名前を別の名前に変更し、アプリケーションフォルダーの名前をROOTに変更しただけで、正常に機能しました。

于 2014-01-17T15:36:11.117 に答える