2016-04-15 7 views
0

私は自分の問題について多くの調査をしましたが、それに直面しましょう、私は回避策を見つけませんでした。なぜ私のアプリをターゲットしているときにTomcatのベースURLが私のアプリのURLでないのですか?

私はTomcat7アプリケーションサーバーにwarファイルをデプロイしています。全て大丈夫。しかし、開発者用コンソールの助けを借りてアプリケーションをターゲットにすると、私のすべてのリンク(相対および絶対)が壊れていることがわかります。

したがって、すべてのアセット、内部API呼び出し、および最終的には自分のアプリケーションにアクセスできません。

例: 私のアプリはhttp://localhost:8585/myapp/に配備されています。 私のリンク(絶対および相対)はこのURLの基になっています:http://localhost:8585/、それは正しいURLを対象としていないため、すべてのリンクが壊れていることは論理的です。

私は、アプリケーションの依存性、制約または定数には依存しないようにしたいと考えています。そして、あなたが私の問題を解決するための適切な方法で私を助けることができれば素晴らしいでしょう。私がしなければならないことは、私の戦争ROOT.warをルートレベルで配備するように改名することです。

素晴らしい一日をありがとう、 最大。

+1

(すなわち相対リンクを使用し、または絶対リンクが必要な場合に、要求に使用されるコンテキストパスを使用して、それを構築するコンテキストパスは関係ないような方法でアプリを書く。 – Henry

答えて

0

さて、あなたは(私の知る限り理解したように)あなたが望むものを達成するために、基本的に3つのオプションがあります。

  1. あなたが読んでいないだろう1:ROOTコンテキストでアプリを展開します。しかし、あなたが正しく述べたように、アプリのデプロイメントは依存しますが、もちろん、必ずしも可能ではありません。

  2. あなたのTomcatの前に、プロキシ(ApacheなどHTTPD)を入れて、 http://localhost/ http://localhost:8585/myapp/に変換するために、いくつかの書き換えルールを設定することができ
  3. - これは便利な場合がありますが、あまりにも複雑で、そして時にはことはできませんほとんどの場合(例えば原因会社内の展開ポリシーに)

  4. IMHO最も適切なもの:相対リンクの使用(彼のコメントでHenryが述べたように)とContextPath(JSPでrequest.contextPath)の使用。

+0

はあなたのヨゼフありがとう!私が言ったように、最初のオプションは不可能です.3番目のオプションは興味深いかもしれませんが、JSPがアプリケーションで使われていないので、JSPタグでソリューションを実装することは不可能です。それに焦点を当て、あなたにできるだけ早くフィードバックを与えてください! –

+0

技術によっては、コンテキスト相対パスを作成するさまざまなソリューションがあります。ページ/ jsのフルパスをハードコードするのは賢明ではありません。 –

+0

コンテキストパス任意のテンプレート言語で、または直接サーブレットで使用できます。 –

関連する問題