CSc*_*ulz 1 jboss war jboss-eap-7
我试图使用更新版本的Jackson作为JBoss 7 EAP提供.为了解决我的问题,我创建了一个jboss-deployment-structure.xml文件,该文件包含在我的war部署中.
<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>
Run Code Online (Sandbox Code Playgroud)
但似乎JBoss使用交付的模块而不是提供的依赖项.
来自本地模块加载器的模块"com.fasterxml.jackson.core.jackson -databind:main"的ModuleClassLoader @ 134593bf(finder:local module finder @ 4bb4de6a(roots:...\jboss-eap-7.0\modules,...\JBoss的-EAP-7.0 \模块\ SYSTEM \层\基))
我发现了一个类似的问题JBoss 7 Classloader - 排除模块实现,但它没有帮助我.
我错过了什么?
我遇到了与Jackson完全相同的问题,我使用它在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>
Run Code Online (Sandbox Code Playgroud)
看起来只要任何其他模块列出杰克逊作为他们各自的依赖关系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'
Run Code Online (Sandbox Code Playgroud)
所以我们也排除了这些:
<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>
Run Code Online (Sandbox Code Playgroud)
看起来 jboss eap 7 的 jax-rs 子模块使用了 jackson。一旦你跳过这个子模块,你就会摆脱 jboss jackson 版本:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="jaxrs"/>
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)
(只有当你不使用 jaxrs 时才有意义;-)
| 归档时间: |
|
| 查看次数: |
3612 次 |
| 最近记录: |