2012-06-05 3 views
0

나는 다음과 같은 웹 서비스가 : 문자열과 두 번째의 형태로 "사례 유형"이름을 가진 첫 번째 차원을 기입하도록되어웹 서비스에서 두 차원 객체 반환 값을 사용할 수 없습니다

@WebMethod(operationName = "getCaseTypeNamesAndIDs") 
public Object [][] getCaseTypeNamesAndIDs() { 
    Object [][] nameIDs; 
    int [] ids; 

    ids = LOKmeth.getAllCaseTypes(); 
    nameIDs = new Object [ids.length][2]; 

    for(int ct = 0; ct < ids.length; ct++) 
    { 
     nameIDs[ct][0] = LOKmeth.getCaseTypeName(ids[ct]); 
    } 

    for(int ct = 0; ct < ids.length; ct++) 
    { 
     nameIDs[ct][1] = ids[ct]; 
    } 

    return nameIDs; 
} 

을 차원에서 int로 만들어진 "case type"ID를 사용합니다. 나는 웹 서비스를 테스트 할 때

는 출력 :

방법 반환

java.util.List : "[[email protected], [email protected], [email protected]]" 

SOAP 응답

나는 방법의 반환 배열에 대한 메모리 참조임을 알
<?xml version="1.0" encoding="UTF-8"?> 
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:getCaseTypeNamesAndIDsResponse xmlns:ns2="http://LOK_WS/"> 
      <return> 
       <item xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Bugg</item> 
       <item xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:int">3</item> 
      </return> 
      <return> 
       <item xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Felrapport</item> 
       <item xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:int">1</item> 
      </return> 
      <return> 
       <item xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Printer on fire</item> 
       <item xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:int">2</item> 
      </return> 
     </ns2:getCaseTypeNamesAndIDsResponse> 
    </S:Body> 
</S:Envelope> 

.

SOAP 응답에 올바른 데이터가 들어 있습니다. 가 어떻게 내 JSP 페이지에서 데이터를 추출 않습니다

내 문제

는 다음과 같다? 나는 A java.lang.ClassCastException while accessing web service method written in java. jaxb을 읽고 자신의 해결 방법을 수행하려하지만 도움이되지 않았다

<% 
try 
{ 
    lok_ws.CaseManagementWs_Service service = new lok_ws.CaseManagementWs_Service(); 
    lok_ws.CaseManagementWs port = service.getCaseManagementWsPort(); 

    java.util.List<net.java.dev.jaxb.array.AnyTypeArray> caseTypeNames = null; 

    caseTypeNames = port.getCaseTypeNamesAndIDs(); 

    Object[][] result = new Object[1][]; 
    result[0] = caseTypeNames.toArray(); 

    out.println("<option value=\"\">"); 
    out.println(result[0][0].toString()); 
    out.println("</option>"); 
} catch (Exception ex) 
{ 
    // TODO handle custom exceptions here 
} 
%> 

:

나는 (일부 변화와 함께) 다음과 같은 뭔가를 시도했습니다.

이 방법이 제공하는 참조를 사용하려면 어떻게해야합니까?

미리 감사드립니다.

답변

0

나는 당신과 같은 문제가 있었는데, 나는 2 차원 배열을 기대하고 있었다. 다행히도 내 친구가 도와 줬어!

StringArray[] user = response.get_return(); 

for(int i = 0; i < user.length; i++){ 
    String[] a = user[i].getItem(); 

    for(String c:a) 
     System.out.println(c); 
} 
1

내가 당신의 웹 서비스가 오히려에게 대신 일반 2 희미한 배열의 응용 프로그램 특정 개체의 목록을 반환해야한다고 생각 :

내 솔루션입니다. 웹 서비스 응답에는 문자열 및 int 필드가 포함 된 "사례 유형"개체 목록이 포함되어 있습니다. 기본적으로 CaseType 객체의리스트 ( List<CaseType>)를 반환해야합니다

class CaseType { 
    private int id; 
    private String name; 
    // getters, setters 
} 

그리고 웹 서비스 : 는 그래서 (웹 서비스 측에서)이 유사한 클래스를 만드는 좋을 것이다. 웹 서비스 문제를 해결할뿐만 아니라 명시 적 및 명명 된 클래스를 사용하면 자체 문서화가 가능하고 읽기 및 유지 관리가 쉬워 지므로 일반 디자인이 향상됩니다.

관련 문제