2012-04-29 6 views
1

申し訳ありませんが、私は全体の状況を説明することなく、より説明的なタイトルを考えることができませんでした。Apache Tomcatを 'www.myapp.com/myapp'ではなく 'www.myapp.com'からWebページを提供するにはどうすればいいですか?

私はTomcat7でIIS7を使用しています。 GWTを使ってWebアプリケーションを作成し、それをwarファイルにパッケージしてTomcatにデプロイしました。
"www.myapp.com"と言う私のウェ​​ブサイトのURLを入力すると、Tomcatのデフォルトページが表示されます。私はこれが%TOMCAT_HOME%/ webapps/ROOTディレクトリのwhatsであると考えています。私は "www.myapp.com/myapp"で私のWebアプリケーションにアクセスすることができ、私が期待しているすべての機能がそこにあります。

ウェブアプリケーションに「www.myapp.com/myapp」ではなく「www.myapp.com」でアクセスできるようにTomcatを設定するにはどうすればよいですか?私は私のWebアプリケーションのための新しい「ホスト」のタグを追加することにより%のTOMCAT_HOME%を/ confにあるserver.xmlを設定しようとした

 <Host name="myapp.com" debug="0" appBase="webapps/myapp" unpackWARs="true"> 
       <Alias>www.myapp.com</Alias> 
       <Context path="" docBase="." debug="0" reloadable="true"/> 
     </Host> 

上記からホストのタグを追加する、で入力して「www.myapp .com "は今すぐ私のWebアプリケーションに直接接続します。問題は、私は(私はGWTのRPCを使用しています)サーブレットへの呼び出しを行うアプリケーションで何かをするとき、私はエラーを取得することです:

com.google.gwt.user.client.rpc.StatusCodeException: 404

サーバーエラー 404 - ファイルまたはディレクトリが見つかりません。

あなたが探しているリソースが削除されたか、名前が変更されたか、一時的に利用できない可能性があります。

「Host」タグを追加しないと「www.myapp.com/myapp」を入力する前にこのエラーが発生する理由がわかりません。

私はTomcatを初めて使用しており、これを解決する方法がわかりません。 ご協力いただければ幸いです。 おかげ

EDIT:

<Host name="localhost" appBase="C:/Tomcat 7.0/webapps" unpackWARs="true" autoDeploy="true"></Host> 


<Host name="www.myapp.com" appBase="C:/Tomcat 7.0/myapp" unpackWARs="true" autoDeploy="true">  </Host> 

b)のworkers.properties(私はしました:

A)のserver.xmlからのセクションを(私はwww.myapp.comとしてデフォルトのホストを持っている)ホストここでホストをwww.myapp.comに変更してみました):

worker.list=worker1 
worker.worker1.port=8009 
worker.worker1.host=localhost 
worker.worker1.type=ajp13 

c)uriworkermap。プロパティ:

/*=worker1 
+0

以下のa)webappsディレクトリb)アプリケーションmyappを含むディレクトリWARを追加してください。 –

+0

a)C:/ Tomcat 7.0/webapps b)C:/ Tomcat 7.0/myapp 質問に追加しました。また、docBaseのフルパスを使用してみました。 –

答えて

-1

のTomcat 7 ドキュメントから:

http://tomcat.apache.org/tomcat-7.0-doc/config/host.html

あなたは、標準のホストの実装を使用している場合はカタリナが最初に起動したとき、次のよう アクションが自動的に行われ、 deployOnStartupプロパティがtrue(デフォルトの の値)に設定されている場合:

Any XML file in the Host's xmlBase directory (by default $CATALINA_BASE/conf/[engine_name]/[host_name]) is assumed to be a 

コンテキストXML要素(単一のWebアプリケーションのコンテキスト要素(およびそれに対応するサブ要素) )が含まれています。これらのコンテキストXML記述子 の各ファイルに関連付けられているWebアプリケーションが最初に展開されます。ホストののappBase内に位置し

The docBase attribute of this <Context> element must only be set if the docBase is outside the Host's appBase. For web applications 

、文書ベースのWebアプリケーション アーカイブまたは「持つXMLファイルの名前を「の.war」に置き換える「の.xml」と XMLファイルの名前になります.xml "がディレクトリ のために削除されました。

The path attribute must not be set. The context path used will be a slash character ("/") followed by the name of the XML file (less the 

.xml拡張子)。多レベルコンテキストパスは、#、 などを使用して定義できます。 foo#bar// foo/barのコンテキストパス。コンテキストパスが/である既定のWeb アプリケーションは、 というファイルROOT.xmlを使用して定義できます。

Any web application archive file within the Host's appBase directory that has not already been deployed as a result of a context 

XML記述子は、(「.warの」拡張子なし)同じ 名前の対応するディレクトリを持っていない、と次の展開される deployIgnoreによって除外されていません。使用されるコンテキストパスは、 スラッシュ文字( "/")と、Webアプリケーションアーカイブ名 の ".war"拡張子のあとに続きます。このルールの1つの例外は、 Webアプリケーションアーカイブ "ROOT.war"が のコンテキストパス/とともに展開されることです。マルチレベルコンテキストは、#、 などを使用して定義できます。/foo/barのコンテキストパスにfoo#bar.warという名前のWARを使用します。

If the unpackWARs attribute is true, the web application archive file will be expanded to a directory of the same name (without the 

".warの" 拡張子」。Tomcatを再起動

Note: If you re-deploy an updated WAR file while Tomcat is stopped, be sure to delete the associated expanded directory before 

、更新されたWARファイルが再展開されるように Tomcatを再起動します。

コンテキストXML対応
If copyXML is true (it is false by default), any web application archive file within the Hosts's appBase directory that does not have a 

ホストのxmlBase内の ".xml"拡張子( ".war"拡張子よりもむしろ )をスキャンすると、contが表示されますコンテキストXML記述子( /META-INF/context.xmlにあります)が見つかった場合、その記述子は になり、xmlBaseディレクトリにコピーされ、名前が変更されます。

Finally, any sub-directory within the Host's appBase that has not already been deployed as a result of a context XML descriptor and is 

deployIgnoreによって除外されないものが展開されます。 ディレクトリ名がROOTでない場合は、 のコンテキストパスはスラッシュ文字( "/")に続いてディレクトリ名が続きます。この場合、コンテキストパスは/となります。 マルチレベルコンテキストは、#を使用して定義できます。/foo/barのコンテキストパスにfoo#barという名前のディレクトリ を使用してください。ホストのxmlBaseのコンテキストXML記述子は、それが( /META-INF/context.xmlに位置)コンテキストXML記述子が含まれており、1が発見された場合、ディスクリプタは なります かどうかを確認するためにスキャンされます

If copyXML is true (it is false by default), any directory within the Hosts's appBase directory that does not have a corresponding 

xmlBaseディレクトリにコピーされ、名前が変更されました。このすべてで

主なポイント:

a web application archive named "ROOT.war" will be deployed with a context path of /. 
+1

この回答に間違いがあります。 1. Tomcat 7の問題をTomcat 3.2のドキュメントで参照しています。 2. server.xmlにコンテキストを定義することはお勧めしません。 3.この構成では、二重展開が行われます。 –

3

2つのオプションがあります。

  1. WARの名前をROOT.warに変更します。

  2. は、TomcatののappBaseの外であなたのWARを移動し、次の内容で新しいファイル$ CATALINA_BASE /カタリナ/ localhostの/ ROOT.xmlを追加

    <コンテキスト文書ベース= "パス/に/ WAR"/>

これは、エンジンとホストのデフォルト名を使用していることを前提としています。そうでない場合は、それに応じてパスを調整します。これは、$ CATALINA_BASE/<ENGINE_NAME>/< host_nameに> /ROOT.war

は今、あなたはオプション1で複数のホストを使用している、あなたはのappBase!=文書ベースので、次の操作を実行する必要があります。試して同じ値を使用すると、あらゆる種類の悪いことが起こります。

あなたが持っているものから実際の解決策に到達するには、いくつかの方法があります。 1. C:/ Tomcat 7/webapps-myapp/ROOT ディレクトリを作成します。2. C:/ Tomcat 7/myappの内容をこの新しいディレクトリにコピーします。 3. C:/ Tomcat 7を削除します。/myapp 4. MyAppホストのappBaseを "webapps-myapp"(またはフルパス)に変更します。

これは、C:/ Tomcat 7/myappからROOT(デフォルト)アプリケーションとしてアプリケーションを展開します。 myapp仮想ホスト。これは、myappアプリケーションをC:/ Tomcat 7/myappにデプロイしたと仮定しています。

+0

返事をありがとう。私は前に最初のオプションについて読んだことがありました。私が最初の選択肢で持っていた問題は、将来私がTomcatを使って欲しいwebappが1つ以上あればどうなるでしょうか? 1番目のソリューションは、デフォルトとして私のwebappを設定していませんか? –

+0

とにかく、私は今のところ最初のオプションを試しました。 「www.myapp.com」と入力すると、内容のないページが表示されます。それは私が探している適切なhtmlファイルをロードしますが、その中に何もありません。しかし、「www.myapp.com/myapp」と入力すると、私は期待したことが得られます。これは%CATALINA_HOME%/ conf/web.xmlにいくつかの設定が必要なのでしょうか? –

+0

追加したHost要素を削除します。ちょうどTomcatのデフォルトを使用してください。 –

関連する問題