0

Tomcatでローカルに実行し、CloudbeesにもデプロイしたWebアプリがあります。ただし、仮想ホストを使用するcloudbeesと、コンテキストパスを使用するローカルTomcatで問題が発生しています。

ローカルのTomcatアプリにアクセスします

  • http://localhost:8080/SpringMVC

cloudbeesでは、次の方法でアクセスします

これまでのところ良いですが、問題は私が提出しようとするときです。ローカルでは、これは正常に送信されます

  • http://localhost:8080/SpringMVC/HelloWorld

しかし、cloudbeesでは、に送信しようとします(そして失敗します)

  • http://springmvc.shaunabram.cloudbees.net/SpringMVC/HelloWorld

ブラウザのURLを手動で変更した場合

  • http://springmvc.shaunabram.cloudbees.net/HelloWorld

それはすべて正常に動作します。

私はここに投稿された同様の問題を見ましたが、提案された解決策は

  1. プレフィックスパスを使用するようにweb.xmlを更新します(たとえば、私の場合は/ SpringMVCだと思います)が、これによりローカルのTomcatバージョンが破損するか、
  2. アプリケーションをapplication.xmlを使用してEARファイルとしてデプロイしますが、tomcatEEやJBossなどのEEコンテナーへの移行ははるかに大きなタスクになります。

解決策は、CloudBees Web構成ファイルを使用http://springmvc.shaunabram.cloudbees.net/SpringMVCして、ベースURLとして(のような)を使用するようにアプリを構成することだと思っていましたが、その例は表示されません(CloudBeesWeb構成ファイルのすべての例は環境固有のデータソースに使用されます)。

どんな助けでも大歓迎です!

ショーン

4

2 に答える 2

2

Webアプリケーションは絶対パスを使用してはならず、常にServletContext.getContextPath()を使用してURLを構築する必要があります。これを処理するSpringMVCを使用していると仮定すると、この問題が発生するのではないでしょうか。

または、リソースパスをハードコーディングしたが、適切なパスを生成するために使用するか、コンテキストパスを追加するためのスクリプトレットを使用する必要があります。

<c:url value="/style.css" var="url" />
<link rel="stylesheet" href="${url}" type="text/css">

また

<link rel="stylesheet" href="${pageContext.request.contextPath}/style.css" type="text/css">

JSPのSpringMVCリクエストURLも参照してください

于 2012-09-13T09:14:43.157 に答える
0

CloudBeesは、ROOTコンテキストパス[/]を使用してアプリケーションを実行します。ローカル環境とクラウド環境の両方でアプリを機能させるには、少なくとも2つのオプションがあります。

  • ROOTコンテキストを使用してアプリをローカルで実行します(アプリをwebapps/ROOTまたはwebapos/ROOT.warにデプロイします)
  • フォームの生成に使用されるURLを変更して、request.getContextPath()を使用してフォームのアクションパスを作成します
于 2012-09-13T03:02:37.893 に答える