天天看點

Axis2 不能傳遞Map等複雜資料類型解決方案 .

一.用CXF進行服務端釋出,Axis2 XMLBean方式生成用戶端,這種方式安全不太好處理

二.将所有的複雜類型轉換為自定義對象和對象數組,如原本傳回List<Person> 修改為傳回Person[]

Map<String,String>轉換為MyObject[] ,包含兩個字元串類型屬性的自定義類型(MyObject)的數組,然後用XMLBean方式生成用戶端

這個是我在項目中使用的方案

三.使用AXIOM進行XML對象轉換

參考http://www.blogjava.net/libin2722/articles/162163.html

http://warlaze.blog.sohu.com/58477971.html

四.Mule web service調用的複雜類型傳遞

http://www.javaeye.com/topic/300604

五.将複雜對象序列化并傳回為位元組數組 byte[],将對應的類拷貝到用戶端,将得到的位元組數組反序列化轉換為相應對象

服務端:

public byte[] getPersonBytes() throws Exception

{

java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();

java.io.ObjectOutputStream oos = new java.io.ObjectOutputStream(baos);

oos.writeObject(new Person());

return baos.toByteArray();

}

用戶端:

byte[] buffer=...//此處調用webservice用戶端方法擷取傳回值

java.io.ByteArrayInputStream bais=new java.io.ByteArrayInputStream(buffer);

java.io.ObjectInputStream ois = new java.io.ObjectInputStream(bais);

Person person = (Person) ois.readObject();

【轉載位址】http://blog.csdn.net/tf949627780/article/details/6884407

http://www.360doc.com/content/11/0710/23/16915_132798858.shtml