本文介紹了在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中部署應用時的不同響應的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,