2012-12-06 3 views
2

안녕하세요. 웹 서비스에서 목록을 반환하고 싶습니다. 내 코드축 2 웹 서비스의 목록 반환

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"/> 

와 클라이언트에서이 웹 서비스를 호출에 내가

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 웹 서비스 객체에서 데이터를 반환 할 때 Java Collection 유형을 사용하지 말고 대신 객체 또는 기본 유형의 배열을 반환해야합니다. WSDL은 Java Collection 데이터 구조를 허용하지 않습니다. 웹 서비스는 모든 언어에서 액세스 할 수 있어야하며 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가 문자열 배열로 변환 할 수 없으므로 그렇지 않습니다. 실제로는 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;  

    } 
}