私はTomcatガイドでこれについて読んだ ここ そしていくつかのSO質問。そして私はほとんど同じことをしていると思う。しかし、何らかの方法で成功することができない。
まず第一に、私のアプリケーションは、私が制御できない共有Tomcatサーバーにデプロイされていると言わなければなりません。 。warファイルをドロップするだけで、デプロイされます。
アプリケーションをROOT.warとしてパッケージ化しようとしましたが、機能しませんでした。管理者は私が望む名前としてそれをパッケージ化するように私に言いました、そして彼らはそれを世話するでしょう。 my-application.warとしてパッケージ化し、デプロイされましたが、-と入力する必要があります。 http:// my-Host/my-applicationWebサイトにアクセスします。
管理者に連絡した後、Tomcat設定ファイルのホストに次のようなコンテキスト要素を配置したと言われました。
<Context path="" docBase="path of my-application deployed folder"/>
これは、my-applicationをmy-Host
に送信されるすべてのリクエストのデフォルトアプリケーションとして設定することになっています。しかし、そうではなく、http:// my-Hostと入力するたびに次のようになります。
HTTP Status 404 - / The requested resource (/) is not available
しかし、もう一度http:// my-Host/my-applicationと入力すると、すべて正常に機能します。何が間違っているのかについての提案は間違いなくありがたいです。
更新:
Tomcatのドキュメントに記載されている手順を実行しようとしました アプリケーションをデフォルトにする方法 。 3つの方法が説明されており、3つの方法すべてを試し、ローカルホストにROOTとしてアプリケーションを正常にデプロイできました。
また、リモートサーバーで直面している問題を再現して、理由を見つけて管理者に報告できるようにしました。いくつか問題があります。
いずれにせよ、上記のケースをチェックするためにTomcatログファイルとconfファイルにアクセスする必要があるため、ROOT.warのデプロイを正確に妨げている原因を正確に特定することはできませんでした。
また、すべてのことから、管理者はTomcatサーバーを保守して問題を見つけることができないようです。そこで、共有サーバーと格闘した後、専用のTomcatサーバーを使用することにしました。
あなたの質問では、管理者がコンテキストを次のように設定したと述べています。
<Context path="" docBase="path of my-application deployed folder"/>
上記のコメントに基づいて、絶対パスではなく、アプリケーションの相対パスを使用することをお勧めします。
私はTomcatサーバーでこれを試しました:
<Context path="/" docBase="my-application/" />
そしてそれはトリックをしました。
Context要素を含むHost要素は、実際には、コンテキストにも影響を与える可能性のあるいくつかのパラメーターを設定します。これがデフォルト設定の場合、相対コンテキストは単にwebappsフォルダーを指している必要があります。変更された場合、結果が異なる場合があります。
通常、これは次の手順で実行できます。
ただし、共有Tomcatインスタンスでそれを実行できるとは思えません。デフォルトのアプリケーションとして実行できるアプリケーションは1つだけです。ホスティング会社はおそらくそれを許可しないでしょう。そうでなければ、同じTomcatインスタンスを共有する多くの人々のうち、どのアプリケーションをデフォルトにすることができますか?
このリンクを参照してください: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-Tomcat.html
Tomcat Wikiには、アプリケーションをデフォルトのコンテキストに配置することに関する section があります。ただし、これを行うには、説明する共有コンテキストでは不可能な、Tomcatサーバーの制御を意味します。
サーバーに他のシステムをインストールする機能がある場合、1つの代替ソリューションは、NGINXなどのプロキシサーバーを使用することです。これは、単にwarファイルにROOT.warという名前を付けるよりもはるかに複雑ですが、それが唯一のオプションである場合もあります。
サーバーでNGINXをリッスンしていて、独自のURLがある場合は、次のような設定で HttpProxyModule を使用します。
server {
listen 80;
server_name my.domain.com;
location / {
proxy_pass http://my-Host/my-application;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_Host;
}
}
また、これを機能させるには、「my.domain.com」のURLを所有している必要があり、とは別にする必要があります。誰もが共有Tomcatサーバーに使用しているもの。
ソリューションのnginx部分は無料ですが、新しいURLを登録してから、no-ip.comなどを使用してTomcatサーバーにリダイレクトする必要がある場合は、費用がかかります。