Wildfly classpath library conflicts - jboss-deployment-structure.xml
marks1900 Apr 6, 2017 12:34 PMI have a war that acts as a bridge between my web application and Druid ( http://druid.io/ ), where I have one message driven bean (@MessageDriven) that reads from a queue and sends requests to Druid using a library called Tranquility (https://github.com/druid-io/tranquility ). Unfortunately, the Druid Tranquility Maven dependency tree is large and has multiple library conflicts with the Wildfly classpath. I have in the past cherry picked which Wildfly dependencies to exclude from the classpath using jboss-deployment-structure.xml. However I am wondering if the following jboss-deployment-structure.xml template might be a better approach, where instead I choose what Wildfly libraries to include in the classpath (Using http://developer-should-know.com/post/109875086957/how-to-exclude-jboss-or-wildfly-subsystems-and for inspiration). Thoughts?
Proposed - Sample jboss-deployment-structure.xml
<?xml version='1.0' encoding='UTF-8'?> <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> <deployment> <exclusions> <!-- Core Server --> <module name="javax.api" /> <module name="sun.jdk" /> <module name="org.jboss.vfs" /> <!-- Batch Subsystem --> <module name="javax.batch.api" /> <!-- EE Subsystem --> <module name="javaee.api" /> <!-- EJB3 subsystem --> <module name="javaee.api" /> <!-- JAX-RS (Resteasy) subsystem --> <module name="javax.xml.bind.api" /> <module name="org.jboss.resteasy.resteasy-atom-provider" /> <module name="org.jboss.resteasy.resteasy-cdi" /> <module name="org.jboss.resteasy.resteasy-jaxrs" /> <module name="org.jboss.resteasy.resteasy-jaxb-provider" /> <module name="org.jboss.resteasy.resteasy-jackson-provider" /> <module name="org.jboss.resteasy.resteasy-jsapi" /> <module name="org.jboss.resteasy.resteasy-multipart-provider" /> <module name="org.jboss.resteasy.async-http-servlet-30" /> <!-- JCA subsystem --> <module name="javax.resource.api" /> <module name="javax.jms.api" /> <module name="javax.validation.api" /> <module name="org.jboss.logging" /> <module name="org.jboss.ironjacamar.api" /> <module name="org.jboss.ironjacamar.impl" /> <module name="org.hibernate.validator" /> <!-- JPA (Hibernate) subsystem --> <module name="javax.persistence.api" /> <module name="javaee.api" /> <module name="org.jboss.as.jpa" /> <module name="org.hibernate" /> <!-- Logging Subsystem --> <module name="org.jboss.logging" /> <module name="org.apache.commons.logging" /> <module name="org.apache.log4j" /> <module name="org.slf4j" /> <module name="org.jboss.logging.jul-to-slf4j-stub" /> <!-- SAR Subsystem --> <module name="org.jboss.logging" /> <module name="org.jboss.modules" /> <!-- Security Subsystem --> <module name="org.picketbox" /> <!-- Web Subsystem --> <module name="javaee.api" /> <module name="com.sun.jsf-impl" /> <module name="org.hibernate.validator" /> <module name="org.jboss.as.web" /> <module name="org.jboss.logging" /> <!-- Web Services Subsystem --> <module name="org.jboss.ws.api" /> <module name="org.jboss.ws.spi" /> <!-- Weld (CDI) Subsystem --> <module name="javax.persistence.api" /> <module name="javaee.api" /> <module name="org.javassist" /> <module name="org.jboss.interceptor" /> <module name="org.jboss.as.weld" /> <module name="org.jboss.logging" /> <module name="org.jboss.weld.core" /> <module name="org.jboss.weld.api" /> <module name="org.jboss.weld.spi" /> </exclusions> <dependencies> <!-- Logging Subsystem --> <module name="org.jboss.logging" /> <module name="org.apache.commons.logging" /> <module name="org.apache.log4j" /> <module name="org.slf4j" /> <module name="org.jboss.logging.jul-to-slf4j-stub" /> <!-- Web Subsystem --> <module name="javaee.api" /> <module name="com.sun.jsf-impl" /> <module name="org.hibernate.validator" /> <module name="org.jboss.as.web" /> <module name="org.jboss.logging" /> </dependencies> </deployment> </jboss-deployment-structure>
Verses - Explicitly cherry picking my exclusions, and hoping I don't discover a new one at run time.
<?xml version='1.0' encoding='UTF-8'?> <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> <deployment> <exclusions> <module name="com.fasterxml.jackson.core.jackson-annotations" /> <module name="com.fasterxml.jackson.core.jackson-core" /> <module name="com.fasterxml.jackson.core.jackson-databind" /> <module name="org.jboss.resteasy.resteasy-jackson2-provider" /> <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" /> </exclusions> <dependencies> <module name="org.slf4j" /> </dependencies </deployment> </jboss-deployment-structure>