2

申し訳ありませんが、全体の状況を説明せずに、よりわかりやすいタイトルを思いつきませんでした.

Tomcat7 で IIS7 を使用しています。GWT を使用して Web アプリを作成し、それを war ファイルにパッケージ化して、Tomcat にデプロイしました。
「www.myapp.com」などの Web サイトの URL を入力すると、Tomcat のデフォルト ページが表示されます。これは %TOMCAT_HOME%/webapps/ROOT ディレクトリにあるためだと思います。「www.myapp.com/myapp」で自分の webapp にアクセスでき、期待するすべての機能がそこにあります。

「www.myapp.com/myapp」ではなく「www.myapp.com」から Web アプリケーションにアクセスできるように Tomcat を構成するにはどうすればよいですか?

webapp に新しい「host」タグを追加して、%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>

Adding the Host tag from above, typing in "www.myapp.com" takes me directly to my web application now. The problem is that when I do something in the application that makes a call to the servlet(I am using GWT RPC), I get errors:

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

Server Error 404 - File or directory not found.

The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.

I don't know why I am getting this error, when typing in "www.myapp.com/myapp" before without the added 'Host' tags worked fine.

I am new to Tomcat, and am not sure how to go about solving this. Any help would be greatly appreciated. Thanks

EDIT:

a) Hosts sections from server.xml (I have the default host as www.myapp.com):

<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(ここでホストをwww.myapp.comに変更しようとしましたが無駄になりました):

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

c) uriworkermap.properties:

/*=worker1
4

2 に答える 2

3

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

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

  2. WAR を Tomcat の appBase の外に移動し、次の内容の新しいファイル $CATALINA_BASE/Catalina/localhost/ROOT.xml を追加します。

    <Context docBase="path/to/WAR" />

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

オプション 1 で複数のホストを使用しているため、appBase != docBase. それらに同じ値を使用しようとすると、あらゆる種類の悪いことが起こります。

あなたが持っているものから実用的なソリューションに到達するには、いくつかの方法があります。次のことをお勧めします: 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 にデプロイしたことを前提としています。

于 2012-04-29T17:13:27.647 に答える
-1

Tomcat 7ドキュメントから:

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

標準の Host 実装を使用している場合、 deployOnStartup プロパティが true (デフォルト値) に設定されている場合、Catalina の最初の起動時に次のアクションが自動的に実行されます。

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

単一の Web アプリケーションの Context 要素 (および関連するサブ要素) を含む context XML 記述子。これらの各コンテキスト XML 記述子ファイルに関連付けられた Web アプリケーションが最初にデプロイされます。

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

ホストの appBase 内にある場合、docBase は、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.xml です。/ のコンテキスト パスを持つ既定の 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 によって除外されていない場合は、次にデプロイされます。使用されるコンテキスト パスは、スラッシュ文字 ("/") の後に ".war" 拡張子を除いた Web アプリケーション アーカイブ名です。この規則の 1 つの例外は、"ROOT.war" という名前の Web アプリケーション アーカイブがコンテキスト パス / でデ​​プロイされることです。マルチレベル コンテキストは # を使用して定義できます。たとえば、/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」拡張子」。

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

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

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」拡張子ではなく「.xml」拡張子を持つ) がスキャンされ、コンテキスト 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 でない限り、スラッシュ文字 ("/") の後にディレクトリ名が続きます。ROOT の場合、コンテキスト パスは / になります。マルチレベル コンテキストは、# を使用して定義できます。たとえば、/foo/bar のコンテキスト パスに foo#bar という名前のディレクトリを使用します。

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

ホストの xmlBase 内のコンテキスト XML 記述子がスキャンされ、コンテキスト XML 記述子 (/META-INF/context.xml にあります) が含まれているかどうかが確認されます。見つかった場合、記述子は xmlBase ディレクトリにコピーされ、名前が変更されます。

このすべての要点:

a web application archive named "ROOT.war" will be deployed with a context path of /.
于 2012-04-29T16:36:39.520 に答える