Tomcat 6 Webサーバーのデフォルトアプリケーションを「ROOT」以外のアプリケーション(webappsフォルダー内)に変更しようとしています。これを行う最良の方法は何ですか?
Tomcat 6 Webサーバーのデフォルトアプリケーションを「ROOT」以外のアプリケーション(webappsフォルダー内)に変更しようとしています。これを行う最良の方法は何ですか?
回答:
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コンテナのドキュメントを参照してください。
$CATALINA_BASE/conf/[enginename]/[hostname]
ディレクトリ(私の基本的な設定では$CATALINA_HOME/conf/Catalina/localhost
)に配置すると機能します。Context Containerのドキュメントを参照してください。
sudo systemctl start tomcatx
x
追加<Context>
でタグを<Host>
タグにserver.xml
Tomcat 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では、myAPP
at /
およびROOT
at にアクセスできます/ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
上記を<Host>
server.xml のセクションに追加します
/ROOT
し、正しい認証情報を使用してManagerページにログインしようとすると、アクセスが拒否されます。これを修正する方法を知っていますか?
ROOTのデフォルトアプリは通常、Tomcat Managerです。これは便利なため、そのままにしておく気がしました。
だから私が私のアプリをROOTにし、TCmgrを維持する方法はこのようなものでした。
ROOTを別の名前に変更
mv ROOT TCmgr
次に、シンボリックリンクを作成しました。これにより、ROOTがデフォルトにするアプリをポイントします。
ln -s <your app> ROOT
私のために働いて、最も簡単なアプローチのように見えました。
Apache Tomcatのドキュメントによると、ROOT.xmlファイルを作成してアプリケーションを変更できます。詳細はこちらをご覧ください:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
「デフォルトのWebアプリケーションは、ROOT.xmlというファイルを使用して定義できます。」
あなたはこれを少しハック的な方法で行うことができます:
別の解決策は、リダイレクトを希望のデフォルト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アプリケーションを設定できるようにすることもできます。
これを行うことで何か悪影響があるかどうかはわかりませんが、私はこれをテストしましたが、うまくいくようです。
Tomcatを構成してserver.xml
Context要素を追加すると問題が発生します。彼は私の設定を使いたくないだけです:
http //www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html
Unix-like
システムを使用している場合:
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
できました。
私のために働く。
Tomcatルートアプリケーションを変更する究極の方法。Tomcat 7および8でテスト済み。
tomcat webappsディレクトリに移動します。
私のマシンの例: ~/stack/apache-tomcat/webapps
ROOTフォルダーの名前変更、置換、または削除。私のアドバイスは、バックアップの名前を変更するか、コピーを作成することです。ROOTの名前をRENAMED_ROOTに変更する例:
mv ROOT RENAMED_ROOT
アプリケーションと一緒にwarファイルをtomcat webappsディレクトリ(私のマシン上の古いROOTフォルダーであったディレクトリ:〜/ stack / apache-tomcat / webapps)に移動します
warファイルにはROOT.warという名前を付ける必要があります。必要に応じてアプリケーションの名前を変更します:yourApplicationName.war-> ROOT.war
私のドキュメントを見ていきます。ルート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つの方法は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
Tomcat 7(Windowsサーバー下)では、構成ファイルに何も追加または編集していません。ROOTフォルダーの名前を別の名前に変更し、アプリケーションフォルダーの名前をROOTに変更したところ、問題なく動作しました。