Tomcat 6 Web サーバーのデフォルト アプリケーションを「ROOT」(webapps フォルダー内) とは異なるアプリケーションに変更しようとしています。これを行う最善の方法は何ですか?
13 に答える
次の 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.xml
。path属性 とdocBaseserver.xml
属性の両方を指定して、すべてのアプリケーション コンテキストを明示的に定義します。これを行う必要があるのは、Tomcat の自動デプロイ メカニズムをすべて無効にしたためです。Tomcat は、.server.xml
2 番目の方法: アプリケーションに変更を加えるには、Tomcat を停止して再起動する必要があります。
WAR ファイルを の外部に配置します
$CATALINA_BASE/webapps
(二重展開を防ぐために外部に配置する必要があります)。という名前のコンテキスト ファイルを配置しROOT.xml
ます$CATALINA_BASE/conf/
。このコンテキスト ファイル内の 1 つの要素に は、WAR ファイルの場所を指すdocBase属性が必要です。.xml
path 要素は設定しないでください。この場合は、ファイルの名前から派生しますROOT.xml
。詳細については、Context コンテナのドキュメントを参照してください。
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>
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というファイルを使用して定義できます。」
これは、次の方法で少しハックのように行うことができます。
- Tomcatを停止します
- ROOT.warを脇に移動し、rm -rf webapps / ROOT
- 必要なWebアプリケーションをwebapps/ROOT.warにコピーします
- Tomcatを起動します
別の解決策は、目的のデフォルト 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 を設定できるようにすることもできます。
これを行うことが悪影響を与えるかどうかはわかりませんが、これをテストしたところ、うまくいくようです。
context.xml 構成がうまくいきませんでした。Tomcat 6.0.29 は、appBase 内にある docBase について不平を言います: ... Tomcat 5 の場合、これは実際に機能しました。
したがって、1 つの解決策は、アプリケーションを ROOT フォルダーに配置することです。
もう 1 つの非常に簡単な解決策は、次のようにアプリケーションにリダイレクトする ROOT に index.jsp を配置することです。
よろしく、 ヤン
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
終わり。
私のために働きます。
ドキュメントを見ていきます。ルートWebアプリケーションのパスをROOT(またはROOT.war)から変更する構成を指定する方法がありますが、Tomcat5と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 ://starapd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html
Tomcat 7 (Windows サーバーの下) では、どの構成ファイルにも何も追加または編集しませんでした。ROOTフォルダーの名前を別の名前に変更し、アプリケーションフォルダーの名前をROOTに変更しただけで、正常に機能しました。