web-dev-qa-db-ja.com

ROOTアプリケーションを変更するには?

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

128
Jacques

3つの方法があります。

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

  • Warファイルを元の名前で$CATALINA_BASE/webappsに残します。 server.xmlファイルのHost要素でautoDeployおよびdeployOnStartupをオフにします。 server.xmlですべてのアプリケーションコンテキストを明示的に定義し、pathおよびdocBase属性の両方を指定します。すべてのTomcat自動デプロイメカニズムを無効にしているため、これを行う必要があります。Tomcatは、server.xmlでコンテキストが見つからない限り、アプリケーションをデプロイしません。

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

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

参照

126
user597987

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

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

コンテキストタグで属性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>
24
ze.

これらの変更を加えたTomcat 7では、/myAPPおよび/ROOTROOTにアクセスできます

<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>

上記をserver.xmlの<Host>セクションに追加します

23
Sudheer Palyam

ROOTのデフォルトのアプリは通常Tomcatマネージャーです。これは便利な場合があるので、そのままにしておきたいと感じました。

そのため、私がmy app ROOTを作成し、TCmgrを保持する方法は次のようになりました。

rOOTを別の名前に変更しました

mv ROOT TCmgr

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

ln -s <your app> ROOT

私のために働いて、最も簡単なアプローチに見えました。

15
nestochan

これをややハック的な方法で行うには:

  1. Tomcatを停止します
  2. ROOT.warを脇に移動し、rm -rf webapps/ROOTを移動します
  3. 目的のwebappをwebapps/ROOT.warにコピーします
  4. Tomcatを起動します
12
gareth_bowles

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

http://Tomcat.Apache.org/Tomcat-6.0-doc/config/context.html

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

11
Jon

別の解決策は、目的のデフォルト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を設定できるようにすることができます。

これを行うことでマイナスの影響があるかどうかはわかりませんが、これをテストしましたが、うまくいくようです。

3
Jonathan Dixon

context.xml構成は私にとっては機能しませんでした。 Tomcat 6.0.29は、appBase内にあるdocBaseについて不平を言っています。.. Tomcat 5では、これは実際に機能しました。

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

別の非常に簡単な解決策は、index.jspをROOTに配置して、次のようにアプリケーションにリダイレクトすることです。response.sendRedirect( "/ MyApplicationXy");

よろしく、1月

2
Jan

Tomcatのserver.xmlを構成し、Context要素を追加すると問題が発生します。彼は私の設定を使用したくないだけです: 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

できた.

私のために働く。

1
AC de Souza

Tomcatルートアプリケーションを変更する究極の方法。 Tomcat 7および8でテスト済み。

  1. Tomcat webappsディレクトリに移動します。

    私のマシンの例:~/stack/Apache-Tomcat/webapps

  2. ROOTフォルダーの名前変更、置換、または削除。バックアップ用のコピーの名前を変更するか、コピーを作成することをお勧めします。 ROOTの名前をRENAMED_ROOTに変更する例:

    mv ROOT RENAMED_ROOT

  3. アプリケーションと一緒にwarファイルをTomcat webappsディレクトリ(私のマシンの古いROOTフォルダであったディレクトリ:〜/ stack/Apache-Tomcat/webapps)に移動します

Warファイルの名前はROOT.warでなければなりません。必要に応じてアプリケーションの名前を変更します。yourApplicationName.war-> ROOT.war

  1. Tomcatを再起動します。再起動後、アプリケーションはルートになります。
1
Jackkobec

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

これを見つけました:

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

そのため、(ROOT.xml内の)ルートパスを変更することは可能ですが、少し壊れています。自動展開ディレクトリの外にWARを移動する必要があります。ファイルの名前を単にROOT.warに変更するだけでは実行可能なソリューションではない理由を尋ねた場合、注意してください。

0
Don Werve

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

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

OR

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

参照: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-Tomcat.html

0
abbas