![](/img/trans.png)
[英]Why wildfly17 server show 403 where jboss 6.X work perfectly in my System?
[英]Upgrading from Wildfly8 to Wildfly17, Child attributes are not coming in API response
從 Wildfly-8.1.0.Final 升級到 Wildfly-17.0.1.Final
class Parent {
String prop1;
public Parent(String prop1) {
this.prop1 = prop1;
}
}
class Child extends Child {
String prop2;
public Child(String prop1, String prop2) {
super(prop1);
this.prop2 = prop2;
}
}
在控制器層
public Parent getDetails() {
return serviceImpl.getDetails();
}
在服務層
public Child getDetails() {
return new Child("String1", "String2");
}
從 Wildfly 8 開始,我們得到
{
"prop1": "String1",
"prop2": "String2"
}
但是從 Wildfly 17 開始,我們得到了
{
"prop1": "String1"
}
我們認為這可能是由於 Jackson 庫,所以我們在運行 Wildfly 17 時將 pom.xml 中的 jackson 庫版本更改為 2.3.2,但它仍然以相同的方式出現
我們也嘗試使用帶有 Wildfly 8 的 Jackson 2.9.8,但 WF8 仍然返回了兩個屬性“prop1”和“prop2”
我們正試圖找出造成這種情況的根本原因,它是否與 WF17 的內部實現有關,還是我們在這里遺漏了其他東西?
已編輯
我們還嘗試了另一件事:我們嘗試在獨立的 Java 代碼上重現 Jackson 庫的問題,但無法重現此問題。
雖然它仍然與 Wildfly 8 或 Wildfly 17 一起在 Jackson 2.6.0 以上版本運行時出現,但直到 2.5.5 這不會出現。
當您切換到備用 Jackson 版本時,您是否排除了 Jackson 常規/默認 jars ,以便您的 jars 優先?
這可以通過添加一個名為“jboss-deployment-structure.xml”的文件(放在 WEB-INF 文件夾下)來完成,其內容是 - 例如:
<?xml version="1.0"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<deployment>
<exclusions>
<module name="com.fasterxml.jackson.core.jackson-databind"/>
<module name="com.fasterxml.jackson.core.jackson-core"/>
<module name="com.fasterxml.jackson.core.jackson-annotations"/>
<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider"/>
您可以在此處找到各種 Jackson 模塊:.../wildfly-17.0.1.Final/modules/system/layers/base/com/fasterxml/jackson
希望這可以幫助
您也可以嘗試使用 Jackson 注釋來注釋您的超類(例如Parent
),以便將Child
注冊為子類。
@JsonTypeInfo(use=Id.NAME)
@JsonSubTypes({
@JsonSubTypes.Type(value=Child.class, name="child"),
})
請小心,因為如果您需要反序列化您的 json,這將是不夠的。 看看這里: http : //federico.defaveri.org/2016/11/20/handling-polymorphism-with-jackson/
問題修復:這是由於我們使用的是 spring 版本,4.2.0(這個 spring 版本不支持 Jackson 2.6+ 版本)這就是它來自 Jackson 2.6.0 的原因。
這是 Spring 4.2.1 中修復的 spring 中的錯誤
https://github.com/spring-projects/spring-framework/issues/18008
https://jira.spring.io/browse/SPR-13429?redirect=false
現在它也可以與 Spring 4.2.1 和 Jackson 2.9.9 一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.