在JBoss 6.2和JBoss 7.3中部署应用时的不同响应 [英] Different response when application deployed in jBoss 6.2 vs jBoss 7.3

查看:49
本文介绍了在JBoss 6.2和JBoss 7.3中部署应用时的不同响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们最近已将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
}
]

正如您所看到的,上面两个回答有细微的差别。这破坏了我的前端代码,因为现在在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将更改带给杰克逊的时候。您面临的问题也在Jackson 2.5

的兼容性问题中提到

JBoss 7.3可能附带了一个已经包含的Jackson库,所以这就是您会受到影响的地方。选中此处如何exclude provided Jackson from JBoss 7

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

这篇关于在JBoss 6.2和JBoss 7.3中部署应用时的不同响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆