在 jBoss 6.2 与 jBoss 7.3 中部署应用程序时的不同响应
Posted
技术标签:
【中文标题】在 jBoss 6.2 与 jBoss 7.3 中部署应用程序时的不同响应【英文标题】:Different response when application deployed in jBoss 6.2 vs 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版本。
任何人都遇到过类似的问题,请评论/建议解决方案。
【问题讨论】:
如果你不能改变你的代码,那么唯一的选择就是使用一个不同的 jboss 版本,你的代码仍然可以工作。不完全确定版本之间发生了什么变化。但我假设spring(或jboss)使用了一个新的jackson版本,他们明确地将Map.Entry
转换为[key]: [value]
而不是"key": [key], "value": [value]
另请参阅:Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers?
感谢@Lino 指出问题中的问题 - 无需在问题中添加“紧急/尽快”等形容词。我将立即编辑我的问题,并牢记以后不要这样做。
还有一个相关的问题:Issue when serializing Map.Entry using jackson,如果你可以将jackson-databind
版本调整为以前使用的版本,那么你可以留在jboss 7上
【参考方案1】:
这是杰克逊默认用于序列化的问题。
这里是 release 当更改被带到杰克逊时。 Jackson 2.5
的兼容性问题中也提到了您面临的问题JBoss 7.3 可能带有一个已经包含的 jackson 库,所以这就是您受到影响的地方。在这里查看如何exclude provided Jackson from JBoss 7
然后用早于 2.5 的 jackson 库打包您的应用程序并再次部署它。
【讨论】:
以上是关于在 jBoss 6.2 与 jBoss 7.3 中部署应用程序时的不同响应的主要内容,如果未能解决你的问题,请参考以下文章
在 JBoss EAP 6.2 中无法通过 SSL 连接到 SOAP 服务
如何更新jboss EAP -6.2中的JSP / JS而无需重新启动或重新部署构建
JBoss EAP 7.3 上的 Primefaces 6 文件上传问题
javax.jms.TransactionInProgressException: 无法在 JBoss EAP 6.2 和 Active MQ 5.10.0 上的 XASession 中回滚()