Cloud Foundry-Liberty for Java の context-root を変更する

以前、Tomcat の context-root を変更する記事を書きました.

今回は Liberty for Java Runtime の context-root を変更したいと思います.
IBM WebSphere Application Server Liberty Buildpack

変更できないパターン

まずはできないパターンのご紹介から.

Spring に context-path を設定する

これで出来そうなものですが、残念ながら反映されません.

server:
  servlet:
    context-path: /api

 

Cloud Foundry の routes を設定する

これも出来そうなものですが、残念ながら反映されません.

applications:
  - name: myapp
    buildpack: liberty-for-java
    memory: 512M
    instances: 1
    path: build/libs/myapp.war
    timeout: 180
    routes:
      - route: myapp.mybluemix.net/api

 

ibm-web-ext.xml を設定する

Buildpack のソースコードを読んだところ、怪しい箇所を発見しました.
ibm-websphere-liberty-buildpack/lib/liberty_buildpack/container/liberty.rb

def get_context_root
      ibm_web_xml = WebXmlExt.read(File.join(@app_dir, WEB_INF, 'ibm-web-ext.xml'))
      ibm_web_xml.get_context_root unless ibm_web_xml.nil?
end

なにやら ibm-web-ext.xml というファイルを読んでいるようです.

src/main/webapp/WEB-INF に以下のファイルを配置します.

ibm-web-ext.xml

 
manifest.yml は特に変更する必要はありません.

applications:
  - name: myapp
    buildpack: liberty-for-java
    memory: 512M
    instances: 1
    path: build/libs/myapp.war
    timeout: 180

 

これで context-root を /api に設定することができました.

 

結論

src/main/webapp/WEB-INF/ibm-web-ext.xml を設定しましょう.

 

以上です.