Hello list,
I’m running into a crash running a
web service at a customer in vw 7.7.
Our application acts as a client, the other
company’s application acts as a server.
To reproduce this crash I have set up a mock
service acting as a server, which returns following SOAP when invoking a
request “getCutlist” (this is the SOAP I
get as result from our customer’s service):
<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>
<soapenv:Fault>
<faultcode>soapenv:Server.generalException</faultcode>
<faultstring/>
<detail>
<ns1:EssenceAccessException
xmlns:ns1="http://cutlistControl.essencewebservice.dmm.s4m.de">
<errorcode>421</errorcode>
<msg>java.util.NoSuchElementException: There is no CutList with
ID=11291</msg>
</ns1:EssenceAccessException>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
To simulate the “getCutlist”
request I set up a client in VisualWorks 7.7:
1.
In a vanilla 7.7 image, load parcel
Web Services/WSDLWizard.
2.
Generate WS client classes
using the Web Services Wizard and enclosed WSDL (no server, no services classes)
3.
Start the client:
"Start the client"
client := CutlistControlClient new.
client start.
4.
Do request:
"Services invocation"
[value := client getCutlist: ‘1’]
on:
EssenceAccessException
do: [ :exception | Dialog
warn: exception errorString ].
I then get the following UHE while unmarshalling
(full stack enclosed):
Unhandled exception: Complex type: {detail} is missing mandatory
node: <body>
Protocols.TimedPromise>>value
optimized [] in Opentalk.RemoteRequest>>waitForReply:
[…]
When I change the namespace of the SOAP
response to something else, the request does not crash and correctly throws a
SOAPFault.
E.g. <ns1:EssenceAccessException
xmlns:ns1="XXX">
Is this a bug or am I missing
something?
I’d appreciate any insights.
Thanks,
Philippe