CXF处理形参,返回值类型:

1:当形参,返回值的类型是String,基本数据类型时,CXF可以处理。

2:当形参,返回值类型是JavaBean式的复合类,List集合,数组等时,CXF可以处理

3:当形参返回值是Map,非JavaBean式的复合类,CXF自身不会按原来的类型返回,会经过转换来处理。

@XmlJavaTypeAdapter来注释到不能处理的类型

例如:

1:

@WebServicepublicinterfaceTestWebservice{publicabstractvoidsay();publicStringlogin(StringuserName,Stringpassword);//@XmlJavaTypeAdapter来注释到不能处理的类型AdapterListMap类为转换处理的类public@XmlJavaTypeAdapter(AdapterListMap.class)List<Map<String,Object>>selectProjectInfo(Stringparam);}

2:

importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjavax.xml.bind.annotation.adapters.XmlAdapter;importdj.log.controller.MapEntry.Entry;//需要继承XmlAdapter类publicclassAdapterListMapextendsXmlAdapter<ListMap,List<Map<String,Object>>>{@OverridepublicList<Map<String,Object>>unmarshal(ListMapv)throwsException{List<Map<String,Object>>list=newArrayList<Map<String,Object>>();for(MapEntrymapEntry:v.getList()){Map<String,Object>map=newHashMap<String,Object>();for(Entryentry:mapEntry.getEntries()){map.put(entry.getKey(),entry.getValue());}list.add(map);}returnlist;}@OverridepublicListMapmarshal(List<Map<String,Object>>v)throwsException{ListMaplistMap=newListMap();for(Map<String,Object>map:v){MapEntrymapEntry=newMapEntry();for(Stringkey:map.keySet()){Entryentry=newEntry();entry.setKey(key);entry.setValue(map.get("key"));mapEntry.getEntries().add(entry);}}returnlistMap;}}

3:其他相关的类根据具体的逻辑来处理

packagedj.log.controller;importjava.util.List;publicclassMapEntry{privateList<Entry>entries;publicList<Entry>getEntries(){returnentries;}publicvoidsetEntries(List<Entry>entries){this.entries=entries;}publicstaticclassEntry{privateStringkey;privateObjectvalue;publicStringgetKey(){returnkey;}publicvoidsetKey(Stringkey){this.key=key;}publicObjectgetValue(){returnvalue;}publicvoidsetValue(Objectvalue){this.value=value;}}}

packagedj.log.controller;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importdj.log.controller.MapEntry.Entry;publicclassListMap{privateList<MapEntry>list;publicList<MapEntry>getList(){returnlist;}publicvoidsetList(List<MapEntry>list){this.list=list;}publicList<Map<String,Object>>unmarshal(ListMapv)throwsException{List<Map<String,Object>>list=newArrayList<Map<String,Object>>();for(MapEntrymapEntry:v.getList()){Map<String,Object>map=newHashMap<String,Object>();for(Entryentry:mapEntry.getEntries()){map.put(entry.getKey(),entry.getValue());}list.add(map);}returnlist;}publicListMapmarshal(List<Map<String,Object>>v)throwsException{ListMaplistMap=newListMap();for(Map<String,Object>map:v){MapEntrymapEntry=newMapEntry();for(Stringkey:map.keySet()){Entryentry=newEntry();entry.setKey(key);entry.setValue(map.get(key));mapEntry.getEntries().add(entry);}}returnlistMap;}}