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>