在 jBoss 6.2 与 jBoss 7.3 中部署应用程序时的不同响应

2024-01-11

我们最近将 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版本。

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


这是杰克逊的一个问题,默认情况下用于序列化。

这里是release https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.5当改变发生在杰克逊身上时。您遇到的问题也在兼容性问题中提到杰克逊2.5

JBoss 7.3 可能已经包含了 jackson 库,因此这就是您受到影响的地方。检查这里如何从 JBoss 7 中排除提供的 Jackson https://stackoverflow.com/questions/38724430/exclude-provided-jackson-version-from-jboss-7-eap

然后使用 2.5 之前的 jackson 库打包您的应用程序并再次部署。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 jBoss 6.2 与 jBoss 7.3 中部署应用程序时的不同响应 的相关文章