2012-12-06 156 views
2

嗨我想從web服務返回一個列表。我的代碼是在axis2 web服務中返回列表

public class WebListTest { 
    public List serviceFunction(String arg1,String arg2) 
    { 
    List list=new ArrayList(); 
     list.add(arg1); 
     list.add(arg2); 
      return list;  

     } 
} 

但在WSDL創作,我發現

<xs:element minOccurs="0" name="return" nillable="true" type="xs:anyType"/> 

而當從客戶端調用此WebService我得到異常

org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Any type element type has not been given 
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) 
    at webservice1.WebListTestStub.fromOM(WebListTestStub.java:1622) 
    at webservice1.WebListTestStub.serviceFunction(WebListTestStub.java:191) 
    at webservice1.ServiceTest.main(ServiceTest.java:24) 
Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Any type element type has not been given 
    at webservice1.WebListTestStub$ServiceFunctionResponse$Factory.parse(WebListTestStub.java:917) 
    at webservice1.WebListTestStub.fromOM(WebListTestStub.java:1616) 
    ... 2 more 
Caused by: org.apache.axis2.databinding.ADBException: Any type element type has not been given 
    at org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(ConverterUtil.java:1612) 
    at webservice1.WebListTestStub$ServiceFunctionResponse$Factory.parse(WebListTestStub.java:895) 
    ... 3 more 

現在我do.please幫助。

回答

6

從Axis2 POJO Web服務對象返回數據時,您不應該使用Java集合類型,而應該返回對象或基本類型的數組。 WSDL不允許Java集合數據結構。請記住,Web服務需要可以從任何語言訪問,並且不會像Java一樣使用相同的集合框架。

所以,做這樣的事情:

public class WebListTest { 
    public String[] serviceFunction(String arg1,String arg2) { 

    List<String> stringList=new ArrayList<String>(); 

    stringList.add(arg1); 
    stringList.add(arg2); 

    return stringList.toArray(new String[stringList.size()]); 
    } 
} 
+0

它無法投射到數組。其顯示錯誤。花花公子。 – Krishna

+0

不知道爲什麼,爲我工作。也許更改不同的版本? – Wrench

+0

不要因爲Arraylist無法投射到String數組中。 bcoz其實你不能使用集合類,因爲它不支持SOAP服務。我們必須使用數組或字符串數​​據類型 – Krishna

0

您可以從「列表」更改返回類型「列表<字符串>」,它會正常工作。

public class WebListTest { 
    public List<String> serviceFunction(String arg1,String arg2) 
    { 
     List<String> list=new ArrayList(); 
     list.add(arg1); 
     list.add(arg2); 
     return list;  

    } 
}