我正在尝试更新我在 6.4.20 JBoss patch 之后使用的 Jackson 版本.我正在使用 org.codehause.jackson
,据我所知,JBoss 6.4.x 不为较新的 com.fasterxml.jackson
提供隐式依赖项。
假设 jackson-mapper-asl-1.9.9.redhat-6
是用于 this patch 的有效包是否合适? ?当滚动到 6.4.20 announcement 的 noarch 部分时,我看到提到了 codehaus-jackson-mapper-asl-1.9.9-12.redhat_6
。这是否意味着这是推荐的版本?我可以看到它是 05/14/18 发布的,公告是 05/15/18 发布的。
目前我遇到以下错误,因为 codehause-jackson-mapper-asl
与 fasterxml-jackson-databind
相关联,让我相信我正在使用版本不正确。
16:01:22,620 ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (http-127.0.0.1:8080-1) RESTEASY000100: Failed executing POST /find: org.jboss.resteasy.spi.ReaderException:
org.codehaus.jackson.map.JsonMappingException: Illegal type [...] to deserialize: prevented for security reasons
[...]
Caused by: org.codehaus.jackson.map.JsonMappingException: Illegal type [...] to deserialize: prevented for security reasons at org.codehaus.jackson.map.deser.BeanDeserializerFactory.checkLegalTypes(BeanDeserializerFactory.java:1521) [jackson-mapper-asl-1.9.9.redhat-6.jar:1.9.9.redhat-6] `
最佳答案
我最近从 JBoss EAP 6.3.0 升级到 6.4.20 并遇到了同样的异常。
根据异常的堆栈跟踪,我发现有必要使用要反序列化的类的完整类名设置系统属性 jackson.deserialization.whitelist.packages
。
如果你愿意,你可以只放包的后缀。对于多个值,以逗号分隔。您可以在第 38 行的 jackson-mapper-asl-1.9.9.redhat-6.jar
类 org.codehaus.jackson.map.deser.BeanDeserializerFactory
中看到这一点到 45。
对于 JBoss 环境,您可以在 standalone*.xml
或 domain.xml
中定义系统属性,如下所示:
<system-properties>
<property name="jackson.deserialization.whitelist.packages" value="br.com.myapp" />
</system-properties>
关于java - JBoss 6.4.20 补丁中允许使用哪些版本的 Jackson?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917932/