2013-05-31 3 views
0

아래 코드에서 "java.lang.ClassCastException"예외가 발생하는 이유를 누구나 볼 수 있는지 궁금합니다.Java ClassCastException이 발생하는 위치를 찾는 방법

RISService, 내가 된 .java 파일

를 생성하기 위해 wsimport의를 사용하여 다음 WSDL 파일에서 가져온 것을 RisPortType에서는 lib하는 나는 어떤 예외 수단을 알고 있지만 나는 그것을 추적하는 방법 단지 모르겠습니다.

// Instantiate the wsimport generated SXML API Service client -- 
    RISService risportService = new RISService(); 
    RisPortType risportPort = risportService.getRisPort(); 

    // Set the URL, user, and password on the JAX-WS client 
    String hostUrl = "https://10.1.1.1:8443/realtimeservice2/services/RISService"; 
    ((BindingProvider) risportPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, hostUrl); 
    ((BindingProvider) risportPort).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, cucmDetails.getAxlUsername()); 
    ((BindingProvider) risportPort).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, cucmDetails.getAxlPassword()); 

    // create and populate the selectCmDevice request 
    SelectCmDevice sxmlParams = new SelectCmDevice(); 
    CmSelectionCriteria criteria = new CmSelectionCriteria(); 
    long maxNum = 200; 
    long modelNum = 255; 
    ArrayOfSelectItem items = new ArrayOfSelectItem(); 

    //create a select item criteria to retrieve devices with names matching "SEP123412341234" 
    SelectItem item = new SelectItem(); 
    item.setItem("SEP123412341234"); 
    items.getItem().add(item); 

    //Search on all nodes 
    criteria.setNodeName("Any"); 
    //get back max 200 phones. 9+ can get upto 1000 
    criteria.setMaxReturnedDevices(maxNum); 
    //get back phones only 
    criteria.setDeviceClass("Phone"); 
    //255 means get back ALL phone models 
    criteria.setModel(modelNum); 
    //get back only Registered phones 
    criteria.setStatus("Registered"); 
    //return results in order of name 
    criteria.setSelectBy("Name"); 
    //array of phones to get results back for 
    criteria.setSelectItems(items); 
    sxmlParams.setCmSelectionCriteria(criteria); 

    //make selectCmDevice request 
    SelectCmDeviceReturn selectResponse = risportPort.selectCmDevice("",criteria); << This is where i get the exception outline below 

예외 스레드에서 "AWT-EventQueue의-0"javax.xml.ws.WebServiceException :

java.lang.ClassCastException: [C cannot be cast to java.lang.String 
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source) 
at  com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source) 
at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(Unknown Source) 
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source) 
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source) 
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source) 
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source) 
at com.sun.xml.internal.ws.client.Stub.process(Unknown Source) 
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(Unknown Source) 
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source) 
at com.sun.proxy.$Proxy40.selectCmDevice(Unknown Source) 
at utils._9.APIRIS9.getPhoneIPadd(APIRIS9.java:66) 

감사 알렉시스

답변

0

나는 암호가 char[] 및 반환되고있다 내기 jaxws는 String을 기다리고 있습니다. 내 경우

Object port = service.getPort(qname, c); 
WSBindingProvider bp = (WSBindingProvider) port; 
// Manually set connection timeouts as we seem to hit them during IT testing 
Map<String, Object> requestContext = bp.getRequestContext(); 

requestContext.put(BindingProviderProperties.REQUEST_TIMEOUT, env.getProperty("timeout")); 

requestContext.put(BindingProviderProperties.CONNECT_TIMEOUT, env.getProperty("timeout")); 

당신이 requestContext.put을 볼 수있다()에서

+0

DOH! ... 위선적 인 말투는 내가 그것을 잊었다라고 생각한다! 고마워, 그게 해결 됐어. – alexis

0

는 문자열 제한 시간 일하는 것이 퍼팅 생각, 문자열 및 객체를 걸리지 만 NO, 자바 WS는 INT를 기대하고있다 .. 이것은 대단한 캐치입니다.