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


130

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

回答:


129

3つの方法があります。

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

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

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

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

参照


4
私は最初の方法を試しましたが、うまくいきました!Bdw-すべてを削除する必要はありません。ROOTフォルダーを削除し、warの名前をROOT.warに変更しました。
hostnik 11/11/4

私は実際にはsofの規則に従っていないことを知っていますが、それを台無しにします。一回以上賛成できればいいのに。超役立つ。ところで、私は持っていた @hostnik、これはうまくいく前に、Tomcatを再起動します。
厄介なペースト

@ danny-londonの3番目の方法は、Tomcat 7では機能しませんでしたが、ROOT.xmlファイルを$CATALINA_BASE/conf/[enginename]/[hostname]ディレクトリ(私の基本的な設定では$CATALINA_HOME/conf/Catalina/localhost)に配置すると機能します。Context Containerのドキュメントを参照しください。
Michael Scheper

Tomcatを起動するために近代的な代替:バージョン番号を表しますsudo systemctl start tomcatxx
EarthMind

24

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

あなたが使用している場合は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>

これはTomcat 7にも当てはまりますか?
Marcy Sutton、

4
ドキュメントごと:Tomcat 6の場合、Tomcat 4.xとは異なり、<Context>要素をserver.xmlファイルに直接配置することはお勧めしません。これは、Tomcatを再起動しないとメインのconf / server.xmlファイルを再ロードできないため、コンテキスト構成の変更がより侵襲的になるためです。

このアプローチには副作用があることを通知しましょう!myStrutsbookは、localhost:8080に対して2回、localhost:8080 / myStrutsbookに対して1回デプロイされます。また、データベース接続エラーやより多くのリソース使用を引き起こす可能性があります
Ali.Mojtehedy

24

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

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

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


私が探していたソリューションだけです!百万人に感謝します、Sudheer!私にとっては魅力のように機能します。そしてねえ!別の質問があります。でROOTにアクセス/ROOTし、正しい認証情報を使用してManagerページにログインしようとすると、アクセスが拒否されます。これを修正する方法を知っていますか?
Saturnian 2014

@Sudheer Palyam私も同じことをしました。server.xmlファイルを変更してから、サーバーを起動しました。しかし、localhost:8080をロード/アクセスすると、404ステータスエラーが表示されました。server.xmlからこれらの行を削除すると、上記のポートが読み込まれます。
Sachin Kumar

16

ROOTのデフォルトアプリは通常、Tomcat Managerです。これは便利なため、そのままにしておく気がしました。

だから私が私のアプリをROOTにし、TCmgrを維持する方法はこのようなものでした。

ROOTを別の名前に変更

mv ROOT TCmgr

次に、シンボリックリンクを作成しました。これにより、ROOTがデフォルトにするアプリをポイントします。

ln -s <your app> ROOT

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


@Vicあなたは正しいですが、Windowsにはシンボリックリンクがあります。XP以降では、mklinkを使用できると思います。私はこれを行っていないことに注意してください。シンボリックリンクを使用しない理由は他にもあります。
MichaelStoner


12

あなたはこれを少しハック的な方法で行うことができます:

  1. Tomcatを停止します
  2. ROOT.warを脇に移動してrm -rf webapps / ROOT
  3. 必要なwebappをwebapps / ROOT.warにコピーします。
  4. Tomcatを起動します

2
醜いまたは多分厄介ですが、公式またはサポートされている方法のように見えるため、ハックは間違った用語である可能性があります。
Brian Knoblauch、2014

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パラメータを受け入れ、ソースを変更せずにデフォルトのWebアプリケーションを設定できるようにすることもできます。

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


2

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

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

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

よろしく、Jan



1

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を再起動します。再起動後、アプリケーションはルートになります。

0

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

これが見つかりました:

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

したがって、ルートパス(ROOT.xml内)の変更は可能であるように見えますが、少し壊れています。WARを自動展開ディレクトリの外に移動する必要があります。ファイルの名前をROOT.warに変更するだけでは解決できないのはなぜですか。


1
残念ながら、warファイルをROOT.warに変更することは、私にとって選択肢ではありません。ジャック

少し遅れましたが、私にとっては変更できません。サードパーティによって作成されたシステムを使用しているためです。その場所は、jarファイルにいくつかの場所をハードコードしているようです... ROOT.warに移動します。元のアプリケーションが[originalapp.war]にあるディレクトリで独自のjarを探すため、問題が発生します
mur

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 : //staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html


-4

Tomcat 7(Windowsサーバー下)では、構成ファイルに何も追加または編集していません。ROOTフォルダーの名前を別の名前に変更し、アプリケーションフォルダーの名前をROOTに変更したところ、問題なく動作しました。


1
これは良い回避策かもしれませんが、Jaquesの質問はデフォルトのアプリケーションを変更する方法についてです。彼がROOTフォルダの内容を変更できない理由があるかもしれません。
JVMATL 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.