【问题标题】:Different response when application deployed in jBoss 6.2 vs jBoss 7.3在 jBoss 6.2 与 jBoss 7.3 中部署应用程序时的不同响应
【发布时间】:2021-10-17 05:46:49
【问题描述】:

我们最近将 jBoss EAP 从 6.2 升级到了 7.3.0。

升级后,我们观察到应用程序开始出现异常行为。我们正在使用 Spring 框架版本 - 4.1.9.RELEASE。

例如:

@RestController
public class CommonController{

@RequestMapping(value = "/rest/report/testResponse", method = RequestMethod.GET)
    public @ResponseBody List<Entry<String, Number>> getData(){
        List<Entry<String, Number>> technologyList = new ArrayList<>();
        SimpleEntry<String, Number> simpleEntry1 = new AbstractMap.SimpleEntry<String,Number>("Java",1);
        SimpleEntry<String, Number> simpleEntry2 = new AbstractMap.SimpleEntry<String,Number>("Spring",2);
        technologyList.add(simpleEntry1);
        technologyList.add(simpleEntry2);
        return technologyList;
    }
}

在 jBoss 6.2 中部署应用程序时我得到的响应是:

[
{
"key": "Java",
"value": 1
},
{
"key": "Spring",
"value": 2
}
]

现在在 jBoss 7.3 中部署应用程序时我得到的响应是:

[
{
    "Java": 1
}, 
{
    "Spring": 2
}
]

如您所见,上述两个响应存在细微差别。这破坏了我的前端代码,我们使用了下面的 javascript 代码,因为现在在 jBoss7 中,我们没有得到带有键/值前缀的响应:

<ui-select-choices repeat="obj.value as obj in  technologyList |  orderBy:'key'">
   <div class ="small" ng-bind-html="obj.key" title ="{{obj.key}}"></div>
</ui-select-choices>

我们无法修改后端/前端代码,因为该应用程序已经在生产环境中运行,并且无法在许多地方更改代码。我们只是想升级jBoss版本。

任何人都遇到过类似的问题,请评论/建议解决方案。

【问题讨论】:

标签: javascript java spring spring-mvc jboss7.x


【解决方案1】:

这是杰克逊默认用于序列化的问题。

这里是 release 当更改被带到杰克逊时。 Jackson 2.5

的兼容性问题中也提到了您面临的问题

JBoss 7.3 可能带有一个已经包含的 jackson 库,所以这就是您受到影响的地方。在这里查看如何exclude provided Jackson from JBoss 7

然后用早于 2.5 的 jackson 库打包您的应用程序并再次部署它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-12
    • 2020-06-08
    • 1970-01-01
    • 2014-09-12
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多