I am getting this intermittent hard to reproduce error from my multi-threaded program on a few of the Windows 2000 machines. This time, the error is on an element called wlseID of the WlseVersion object returned by the getWlseVersion() method in the 'config' service. I have examined all options, and I am not able to find the cause as it is very intermittent.
Last time I ran into this kind of error, it was on a different element called "deviceType" of the DeviceDetail object returned by the getDeviceDetail() method in the inventory service. This time I have turned on log4j debugging and captured the exact soap request/responses that are being sent and received. The wsdl file was generated using the java2wsdl axis utility. The error (stack trace): ======================== 2005-07-22 16:19:54,531 [_WlseProcessors:Pooled Thread:5] ERROR org.apache.axis.client.Call.invoke() - Exception: org.xml.sax.SAXException: Invalid element in com.cisco.nm.wlse.xmlapi.WLSEVersion - wlseID at org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeseriali zer.java:252) at org.apache.axis.encoding.DeserializationContextImpl.startElement(Deseria lizationContextImpl.java:893) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java: 200) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j ava:684) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:241) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:265) at org.apache.axis.client.Call.invoke(Call.java:1871) at org.apache.axis.client.Call.invoke(Call.java:1777) at org.apache.axis.client.Call.invoke(Call.java:1315) at com.cisco.nm.wlse.xmlapi.config.gencode.ConfigSoapBindingStub.getVersion (ConfigSoapBindingStub.java:126) at com.cisco.nm.mom.wlsess.WlseDevice.getWlseInfo(WlseDevice.java:786) at com.cisco.nm.mom.wlsess.WlseDevice.updateWlseInfo(WlseDevice.java:664) at com.cisco.nm.mom.wlsess.WlseDevice.updateWlse(WlseDevice.java:554) at com.cisco.nm.mom.wlsess.RedundancyProcessor.processDcrAddModPingEvent(Re dundancyProcessor.java:224) at com.cisco.nm.mom.wlsess.WlseDCREventProcessor.processUpdateEvent(WlseDCR EventProcessor.java:254) at com.cisco.nm.mom.wlsess.WlseDCREventProcessor.run(WlseDCREventProcessor. java:144) at com.cisco.nm.mom.util.ThreadPool$1.run(ThreadPool.java:181) The soap request: ================= <?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:getVersion soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:com.cisco.nm.wlse.xmlapi.config"/> </soapenv:Body> </soapenv:Envelope> The soap Response: ================== <?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:getVersionResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:com.cisco.nm.wlse.xmlapi.config"> <getVersionReturn xsi:type="ns2:WLSEVersion" xmlns:ns2="urn:com.cisco.nm.wlse.xmlapi"> <wlseID xsi:type="xsd:int">6</wlseID> <hostname xsi:type="xsd:string">172.19.27.195</hostname> <ip xsi:type="xsd:string">172.19.27.195</ip> <mode xsi:type="xsd:int">0</mode> <ipStandby xsi:type="xsd:string" xsi:nil="true"/> <sysOID xsi:type="xsd:string">1.3.6.1.4.1.9.1.630</sysOID> <versionHardware xsi:type="xsd:string">1130</versionHardware> <versionSoftware xsi:type="xsd:string">2.12FCS</versionSoftware> <managedDeviceCount xsi:type="xsd:int">4</managedDeviceCount> <maxDevicesAllowed xsi:type="xsd:int">2550</maxDevicesAllowed> <configIdentifier xsi:type="xsd:long">0</configIdentifier> <configChecksum xsi:type="xsd:string">2ca232c4dc36d9ab7708c3fccc11a3e6</configChecksum> </getVersionReturn> </ns1:getVersionResponse> </soapenv:Body> </soapenv:Envelope> The java object: ============================ package com.cisco.nm.wlse.xmlapi.src; import java.io.Serializable; public class WLSEVersion implements Serializable { public int wlseID; public String hostname; public String ip; public int mode; public String[] ipVirtual; public String ipStandby; public String sysOID; public String versionHardware; public String versionSoftware; public int managedDeviceCount; public int maxDevicesAllowed; public long configIdentifier; public String configChecksum; } Generated WSDL file: (Config.wsdl) ================================== <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="urn:com.cisco.nm.wlse.xmlapi.config" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:com.cisco.nm.wlse.xmlapi.config" xmlns:intf="urn:com.cisco.nm.wlse.xmlapi.config" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns2="urn:com.cisco.nm.wlse.xmlapi" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <schema targetNamespace="urn:com.cisco.nm.wlse.xmlapi" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <complexType name="WLSEVersion"> <sequence> <element name="wlseID" type="xsd:int"/> <element name="hostname" nillable="true" type="xsd:string"/> <element name="ip" nillable="true" type="xsd:string"/> <element name="mode" type="xsd:int"/> <element maxOccurs="unbounded" name="ipVirtual" nillable="true" type="xsd:string"/> <element name="ipStandby" nillable="true" type="xsd:string"/> <element name="sysOID" nillable="true" type="xsd:string"/> <element name="versionHardware" nillable="true" type="xsd:string"/> <element name="versionSoftware" nillable="true" type="xsd:string"/> <element name="managedDeviceCount" type="xsd:int"/> <element name="maxDevicesAllowed" type="xsd:int"/> <element name="configIdentifier" type="xsd:long"/> <element name="configChecksum" nillable="true" type="xsd:string"/> </sequence> </complexType> <element name="WLSEVersion" nillable="true" type="tns2:WLSEVersion"/> </schema> <schema targetNamespace="urn:com.cisco.nm.wlse.xmlapi.config" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <complexType name="Result"> <sequence> <element name="code" type="xsd:int"/> <element name="log" nillable="true" type="xsd:string"/> </sequence> </complexType> <element name="Result" nillable="true" type="impl:Result"/> </schema> </wsdl:types> <wsdl:message name="getConfigRequest"> </wsdl:message> <wsdl:message name="setConfigRequest"> <wsdl:part name="in0" type="xsd:string"/> </wsdl:message> <wsdl:message name="getConfigIdentifierRequest"> </wsdl:message> <wsdl:message name="getConfigChecksumResponse"> <wsdl:part name="getConfigChecksumReturn" type="xsd:string"/> </wsdl:message> <wsdl:message name="setConfigResponse"> <wsdl:part name="setConfigReturn" type="impl:Result"/> </wsdl:message> <wsdl:message name="getConfigChecksumRequest"> </wsdl:message> <wsdl:message name="updateConfigResponse"> <wsdl:part name="updateConfigReturn" type="impl:Result"/> </wsdl:message> <wsdl:message name="updateConfigRequest"> <wsdl:part name="in0" type="xsd:string"/> </wsdl:message> <wsdl:message name="getVersionRequest"> </wsdl:message> <wsdl:message name="getConfigIdentifierResponse"> <wsdl:part name="getConfigIdentifierReturn" type="xsd:long"/> </wsdl:message> <wsdl:message name="getVersionResponse"> <wsdl:part name="getVersionReturn" type="tns2:WLSEVersion"/> </wsdl:message> <wsdl:message name="getConfigResponse"> <wsdl:part name="getConfigReturn" type="xsd:string"/> </wsdl:message> <wsdl:portType name="Config"> <wsdl:operation name="getVersion"> <wsdl:input message="impl:getVersionRequest" name="getVersionRequest"/> <wsdl:output message="impl:getVersionResponse" name="getVersionResponse"/> </wsdl:operation> <wsdl:operation name="getConfig"> <wsdl:input message="impl:getConfigRequest" name="getConfigRequest"/> <wsdl:output message="impl:getConfigResponse" name="getConfigResponse"/> </wsdl:operation> <wsdl:operation name="setConfig" parameterOrder="in0"> <wsdl:input message="impl:setConfigRequest" name="setConfigRequest"/> <wsdl:output message="impl:setConfigResponse" name="setConfigResponse"/> </wsdl:operation> <wsdl:operation name="updateConfig" parameterOrder="in0"> <wsdl:input message="impl:updateConfigRequest" name="updateConfigRequest"/> <wsdl:output message="impl:updateConfigResponse" name="updateConfigResponse"/> </wsdl:operation> <wsdl:operation name="getConfigIdentifier"> <wsdl:input message="impl:getConfigIdentifierRequest" name="getConfigIdentifierRequest"/> <wsdl:output message="impl:getConfigIdentifierResponse" name="getConfigIdentifierResponse"/> </wsdl:operation> <wsdl:operation name="getConfigChecksum"> <wsdl:input message="impl:getConfigChecksumRequest" name="getConfigChecksumRequest"/> <wsdl:output message="impl:getConfigChecksumResponse" name="getConfigChecksumResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="ConfigSoapBinding" type="impl:Config"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getVersion"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getVersionRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:input> <wsdl:output name="getVersionResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getConfig"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getConfigRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:input> <wsdl:output name="getConfigResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="setConfig"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="setConfigRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:input> <wsdl:output name="setConfigResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="updateConfig"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="updateConfigRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:input> <wsdl:output name="updateConfigResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getConfigIdentifier"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getConfigIdentifierRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:input> <wsdl:output name="getConfigIdentifierResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getConfigChecksum"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getConfigChecksumRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:input> <wsdl:output name="getConfigChecksumResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:com.cisco.nm.wlse.xmlapi.config" use="encoded"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="ConfigService"> <wsdl:port binding="impl:ConfigSoapBinding" name="Config"> <wsdlsoap:address location="http://localhost/services/Config"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
