2013-05-31 2 views
0

Просто интересно, может ли кто-нибудь понять, почему я получаю исключение «java.lang.ClassCastException» из кода ниже.Как найти, где происходит java ClassCastException

RISService, RisPortType являются импровизировать, что я получил из файла WSDL, а затем использовать wsimport для создания .java файлов

Я знаю, что такое средство исключения, но я просто не знаю, как отслеживать его вниз.

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

Исключение в потоке "АВТ-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) 

Благодаря Alexis

ответ

0

Держу пари, ваш пароль возвращается в char[] и jaxws ожидает строку.

+0

DOH! ... не могу поверить, что я забыл это! Спасибо, это разрешило это. – alexis

0

в моем случае

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() принимает строку и объект, вы думали, что ввод тайм-аут Строка будет работать, но НЕТ, Java WS ожидает Int .. Это массивный улов.

 Смежные вопросы

  • Нет связанных вопросов^_^