WildFlyにSpring Bootで作成したJerseyを含むWebアプリをデプロイしようとすると、エラーが発生しデプロイができない現象に遭遇しました。
その時の対処方法をまとめました。
対処方法
Webアプリ側にjboss-deployment-structure.xmlを用意し以下のように定義する。
jboss-deployment-structure.xml
<?xml version="1.0"?><jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><deployment><exclude-subsystems><subsystem name="jaxrs" /><!-- 追記する --></exclude-subsystems></deployment></jboss-deployment-structure>
jboss-deployment-structure.xmlをwarに含める場合、WEB-INF配下に置くようにします。
Gradleで以下のように定義しwarビルドすると、自動的にWEB-INF配下にコピーされます。
war { from('src'){ include 'jboss-deployment-structure.xml' into 'WEB-INF'}}
注意事項
すでにデプロイできない事象に遭遇している場合、上記対応を行ってもデプロイ時にエラーが発生します。
エラーなのにデプロイ時のゴミは残ったままなので、それらを削除する必要があります。
standalone.xmlを修正する
ファイルの場所:wildfly-root/standalone/configuration/standalone.xml
タグがある所を探し(ファイルの最後あたり)、デプロイに失敗したアプリ名の箇所を削除します。
<deployments><deployment name="postgresql-9.4.1212.jar"runtime-name="postgresql-9.4.1212.jar"><content sha1="38931d70811d9bfcecf9c06f7222973c038a12de"/></deployment><!-- 対象のアプリ名部分を削除する --><deployment name="Test.war"runtime-name="Test.war"><content sha1="fcb6ff1bf0777ce6b276f5067903db03c1addc3d"/></deployment><!-- ここまで --></deployments>