2

現在、Javaのビルドパック(Tomcat)に動的なJavaアプリケーション(サーブレットベース)をCloud Foundryにデプロイしています。Cloud Foundryのコンテキストパスルーティングの問題

私たちはコンテキストパスベースのルーティングを使用しています。 Springアプリケーションでは、アプリケーションプロパティファイルまたはDserver.contextPathにコンテキストパスを設定しています。両方とも正常に動作します。

Cloud以外のJavaアプリケーションへのコンテキストパスをCloud Foundry Tomcatコンテナで動作させるにはどうすればよいですか?以下のオプションを試しましたが、ルートに接続中に404エラーが発生しました。クラウドファウンドリTomcatのコンテナ上で動作するように非春のJavaアプリケーションにコンテキストパスを設定する方法

cf set-env my-application JBP_CONFIG_TOMCAT '{tomcat: { context_path: /first-segment/second-segment }}' 
+2

環境変数を設定した後、 'cf restage my-application'を実行しましたか?この環境変数は、アプリケーションを再起動する必要があります。再起動するだけでは不十分です。 – dkoper

答えて

3

必要な構文があります。私はcf set-env JBP_CONFIG_TOMCAT '{tomcat: {context_path: "/spring-music"}}'をテストしたところ、問題なく動作しました。また私のために働いたcf set-env JBP_CONFIG_TOMCAT '[tomcat: {context_path: "/spring-music"}]'を使用することもできます。 manifest.ymlを使用して

例:

--- 
applications: 
- name: spring-music 
    memory: 512M 
    host: spring-music-example 
    path: build/libs/spring-music.war 
    env: 
    JBP_CONFIG_TOMCAT: '[tomcat: {context_path: "/spring-music"}]' 

これは春の音楽ではなく、デフォルトhttp://spring-music-example.example.com/で、http://spring-music-example.example.com/spring-musicで利用可能になります。

それは働いていない場合はこれもパスベースのルーティング(すなわちcf push --route-pathかまたはcf create-route --path

と一緒に非常にうまく動作します:あなたがアプリをrestagedかを経由して変更を適用した

  1. チェックを。あなたは、Javaの最新バージョンを使用しているcf push
  2. チェックはパックを構築します。私は3.14でテストし、それが働いた。
  3. のJavaのバージョンを確認するパックのを構築ファイル(つまりthis)です。このファイルは設定オプションの階層を定義し、ときどき変更されます。ビルドパックのバージョンで、設定しているファイルがそのファイルと一致していることを確認してください。

希望すると助かります!

関連する問題