Created by: john katsavras on 31-05-2013 05:23:33 AM Hi there, Just wondering if anyone can see why i am getting the exception "java.lang.ClassCastException" from the code below: // 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 Exception in thread "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) Thanks Alexis
Subject: RE: Java java.lang.ClassCastException with selectCmDevice Replied by: David Staudt on 31-05-2013 05:57:36 PM I'm thinking that perhaps the service URL being specified here should be: https://<server name>/realtimeservice/services/RisPort70 vs. https://<ServerName>:8443/realtimeservice2/services/RISService70 The latter is the URL for the newer version of the service which provides the SelectCmDeviceExt request. Probably when the response is returned, the XML does not match up with the schema-generated code from the SelectCmDevice request and there is a cast exception.
Subject: RE: Java java.lang.ClassCastException with selectCmDevice Replied by: john katsavras on 03-06-2013 05:44:35 AM Hi David,
Thanks for the reply. it turns out the issue was with line: ((BindingProvider) risportPort).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, cucmDetails.getAxlPassword());
Password are stored as char arrays in java. The solution was: ((BindingProvider) risportPort).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, String.valueOf(cucmDetails.getAxlPassword()));
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: