Posted on 2008-08-05 20:09
Coolfiry 閱讀(4956)
評(píng)論(1) 編輯 收藏 所屬分類:
Java
在項(xiàng)目使用CXF的過(guò)程中,遇到了有關(guān)List作為傳輸參數(shù)的時(shí)候,如果WebService端沒有明確給出List的泛型類型會(huì)報(bào)錯(cuò)。
例如
CXF的WebService端口接口的一個(gè)方法為為:
1 public boolean updateMessageStatus(List batchIds);
客戶端的的調(diào)用為:
1 //預(yù)先初始化cxf對(duì)象cxfObj
2 List<String> list=new ArrayList<String>();
3 list.add("1");
4 cxfObj.updateMessageStatus(list);
在客戶端進(jìn)行調(diào)用WebService時(shí)會(huì)發(fā)生錯(cuò)誤,錯(cuò)誤為:unexpected element (uri:"", local:"arg0")等,據(jù)分析生成的wsdl,這是因?yàn)镃XF在進(jìn)行數(shù)據(jù)marshal時(shí)不知道要將要轉(zhuǎn)換的類型。
解決辦法是:在WebService端的接口必須用List的泛型類型參數(shù),如:
1 public boolean updateMessageStatus(List<String> batchIds);
這樣就完全解決問(wèn)題了。