Hello,
I have a problem with SOAP requests on the RISPORT service (CUCM v6.1).
I developped an application in order to find IpPadresses of the devices on my cluster (about 1400 devices). To do it, I first
execute AXL queries in order to get the devices list (executeSqlQuery...). then, I execute a SOAP request on the RSIPORT for
each device I have in my list.
for each phone (SEPXXXXXXXXXX)the request i send on the RISPORT is like this (on https://" + serveur +
"/realtimeservice/services/RisPort) :
---------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:SelectCmDevice soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" ns:ns1="http://schemas.cisco.com/ast/soap/">
<StateInfo xsi:type="xsd:string"/>
<CmSelectionCriteria href="#id0"/>
</ns1:SelectCmDevice><multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:CmSelectionCriteria" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://schemas.cisco.com/ast/soap/">
<MaxReturnedDevices xsi:type="xsd:unsignedInt">200</MaxReturnedDevices>
<Class xsi:type="xsd:string">Phone</Class>
<Model xsi:type="xsd:unsignedInt">255</Model>
<Status xsi:type="xsd:string">Registered</Status>
<NodeName xsi:type="xsd:string" xsi:nil="true"/>
<SelectBy xsi:type="xsd:string">Name</SelectBy>
<SelectItems soapenc:arrayType="ns2:SelectItem[1]" xsi:type="soapenc:Array"><item href="#id1"/>
</SelectItems>
</multiRef>
<multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:SelectItem" xmlns:ns3="http://schemas.cisco.com/ast/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<Item xsi:type="xsd:string">SEPXXXXXXXXXX</Item>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
--------------------------------------------------This works well for the first devices but an error always appears at an unpredictable moment. This error is "HTTP error
500"... In the SOAP traces on the CUCM, i can read the following text. The last lines refers to an error I don't really
understand :
-------------------------------------------------
2009-03-11 11:45:32,331 ERROR [http-8443-Processor22] risport.RisBindingImpl - DeviceQuery->query error=1
2009-03-11 11:45:33,303 INFO [http-8443-Processor22] security.RequestRateControl - findInCache("SILCAXL")
2009-03-11 11:45:33,304 INFO [http-8443-Processor22] security.RequestRateControl - http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCmDevice2009-03-11 11:45:33,309 INFO [http-8443-Processor22] risport.RisBindingImpl - 0 Last item: SEP0015CAB0CD3
2009-03-11 11:45:33,310 INFO [http-8443-Processor22] risport.RisBindingImpl - selection=SEP0015CAB0CD3 stateinfo= tModel=255 tSubSystem=0 node2search=null maxValues=200 selectBy=Name
2009-03-11 11:45:33,326 ERROR [http-8443-Processor22] risport.RisBindingImpl - DeviceQuery->query error=1
2009-03-11 11:45:34,212 INFO [http-8443-Processor22] security.RequestRateControl - findInCache("SILCAXL")
2009-03-11 11:45:34,213 INFO [http-8443-Processor22] security.RequestRateControl - http://schemas.cisco.com/ast/soap/action/#RisPort#SelectCmDevice2009-03-11 11:45:34,218 INFO [http-8443-Processor22] risport.RisBindingImpl - 0 Last item: SEP0017E0354E46
2009-03-11 11:45:34,219 INFO [http-8443-Processor22] risport.RisBindingImpl - selection=SEP0017E0354E46 stateinfo= tModel=255 tSubSystem=0 node2search=null maxValues=200 selectBy=Name
2009-03-11 11:45:35,222 INFO [http-8443-Processor22] security.RequestRateControl - findInCache("SILCAXL")
2009-03-11 11:45:47,278 INFO [Thread-75] timedcache.MaxTimeToLiveCache - Reaping - com.cisco.ccm.serviceability.soap.security.RequestRateControl
2009-03-11 11:45:47,279 INFO [Thread-75] timedcache.MaxTimeToLiveCache - Cache entries, hits, misses 1:2426:9069
2009-03-11 11:45:52,319 INFO [Thread-76] timedcache.MaxTimeToLiveCache - Reaping - com.cisco.ccm.axl.AXLRouter
2009-03-11 11:45:52,319 INFO [Thread-76] timedcache.MaxTimeToLiveCache - Cache entries, hits, misses 1:263:2184
2009-03-11 11:46:07,647 INFO [TLC_RisPerfmonQueryThread] controller.RisPerfmonQuery - run():wake up from suspend mode.
2009-03-11 11:46:07,648 INFO [TLC_RisPerfmonQueryThread] controller.RisPerfmonQuery - init():Initializing perfmon query handler...
------------------------------------------------- It seems to have a problem of "RateControl". After seeing this, I tried to insert break of 6 seconds between each SOAP
requests and I have no error... But I have a lot of device and the time to get all IpPadresses is up to 3 hours !
So is there an limitation with SOAP request on the RISPORT ? I use the same code for execute AXL request for many
applications and i never had errors like that. I saw the limit of 200 devices maximum by response. So the only way I found to
get the IP Adresses of all my devices is to execute individual SOAP requests. How can i solve my problem ? How do you do the
get Ipadresses when you have more than 200 devices ?
Thank you in advance for your help.
Regards.