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 を設定しましょう.
以上です.