Исключить предоставленную версию Джексона из JBoss 7 EAP

Я пытаюсь использовать более новую версию Джексона, поскольку JBoss 7 EAP обеспечивает. Чтобы решить мою проблему, я создалJBoss развертывания-structure.xml файл, который содержится в моей войне развертывания.

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>
        <exclusions>
            <!--<module name="com.fasterxml.jackson.core.jackson-core" slot="main" />-->
            <!--<module name="com.fasterxml.jackson.core.jackson-annotations" slot="main" />-->
            <module name="com.fasterxml.jackson.core.jackson-databind" slot="main" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

Но похоже, что JBoss использует поставляемый модуль вместо предоставленной зависимости.

ModuleClassLoader для модуля "com.fasterxml.jackson.core.jackson-databind: main" из локального загрузчика модулей @ 134593bf (поиск: поиск локального модуля @ 4bb4de6a (корни: ... \ jboss-eap-7.0 \ modules, ... \ JBoss-EAP-7.0 \ модули \ система \ слои \ основа))

Я нашел похожий вопросJBoss 7 Classloader - исключить реализацию модуля но это не помогло мне.

Что я упустил?

 Tomaz Cerar03 авг. 2016 г., 13:56
ваше развертывание EAR?
 CSchulz04 авг. 2016 г., 17:17
Нам это нужно для Apache Camel.
 James R. Perkins03 авг. 2016 г., 17:10
Вы должны быть осторожны, поскольку другие модули Джексона зависят от этого модуля. Есть ли причина, по которой вам нужна более новая версия?

Ответы на вопрос(2)

и я заставил его работать в моем EAP 7, используя этуjboss-deployment-structure.xml :

<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="com.fasterxml.jackson.core.jackson-core" />
            <module name="com.fasterxml.jackson.core.jackson-annotations" />
            <module name="com.fasterxml.jackson.core.jackson-databind" />
            <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />
            <module name="org.jboss.resteasy.resteasy-jackson2-provider" />
            <module name="org.jboss.resteasy.resteasy-jackson-provider" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

Похоже, так долго, как любойДругой Модули перечисляют Джексона как их зависимость в их соответствующихmodule.xmlпросто его не исключают, и EAP нельзя заставить даже выдать предупреждение об этом.

Изменить 2018-02-19: При обновлении с EAP 7.0.0 до 7.1.0 все снова сломалось из-за обновленных банок Джексона.

Это важная часть трассировки стека:

Caused by: javax.ejb.EJBException: WFLYEJB0442: Unexpected Error
    at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:185)
[...]
    at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:161) [wildfly-ee-7.1.0.GA-redhat-11.jar:7.1.0.GA-redhat-11]
    ... 11 more
Caused by: java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    [...]()Lcom/fasterxml/jackson/databind/ObjectMapper; @89: invokevirtual
  Reason:
    Type 'com/fasterxml/jackson/datatype/jdk8/Jdk8Module' (current frame, stack[1]) is not assignable to 'com/fasterxml/jackson/databind/Module'

Поэтому мы исключаем и их:

<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="com.fasterxml.jackson.core.jackson-core" />
            <module name="com.fasterxml.jackson.core.jackson-annotations" />
            <module name="com.fasterxml.jackson.core.jackson-databind" />
            <module name="com.fasterxml.jackson.datatype.jackson-datatype-jdk8" />
            <module name="com.fasterxml.jackson.datatype.jackson-datatype-jsr310" />
            <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />
            <module name="org.jboss.resteasy.resteasy-jackson2-provider" />
            <module name="org.jboss.resteasy.resteasy-jackson-provider" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>
 minu25 февр. 2019 г., 06:38
Я сделал то же самое, что и предложил, но все равно я получил ошибку какCaused by: org.jboss.modules.ModuleLoadError: com.fasterxml.jackson.datatype.jackson-datatype-jdk8 Я использую Wildfly 14 и работаю с Keycloak создать проблему. Java 11 и весна 4.3.12.
 minu25 февр. 2019 г., 10:13
Это решает мою проблему, которую я исключил из развертывания, а не из дополнительного развертывания. Благодарю.

что подмодуль jax-rs из jboss eap 7 использует Джексона. Как только вы пропустите этот подмодуль, вы избавитесь от версии jboss jackson:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="jaxrs"/>
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

(имеет смысл только если вы не используете jaxrs ;-)

 Antares4226 сент. 2017 г., 22:59
Ну, мы делаем. Просто мы явно используем Джексона. : - /

Ваш ответ на вопрос