The SOAP 1.2 spec makes it mandatory for any XML Text field to have a xml:lang attribute specifying the native language of the contained text, however the SOAP error I am returning to my .NET client is missing this attribute, causing the client to complain. The message is below:
<HttpResponse xmlns=" http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace"> <StatusCode>InternalServerError</StatusCode> <StatusDescription>Internal Server Error</StatusDescription> <WebHeaders> <Transfer-Encoding>chunked</Transfer-Encoding> <Connection>close</Connection> <Content-Type>application/soap+xml;charset=UTF-8</Content-Type> <Date>Wed, 17 Jan 2007 13:29:12 GMT</Date> <Server>Apache-Coyote/1.1</Server> </WebHeaders> </HttpResponse> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <s:Header xmlns:s="http://www.w3.org/2003/05/soap-envelope"></s:Header<http://www.w3.org/2003/05/soap-envelope%22%3E%3C/s:Header>
<soap:Body> <soap:Fault> <soap:Code> <soap:Value>soap:Sender</soap:Value> </soap:Code> <soap:Reason> *<soap:Text>Action ' http://me.com/myproject/project/Service/IMyService/GetAll' was not found for service **http://172.17.100.76:8080/project/services/MyService</soap:Text*<http://172.17.100.76:8080/project/services/MyService</soap:Text> *>* </soap:Reason> </soap:Fault> </soap:Body> </soap:Envelope> I believe the tag above should look like *<soap:Text xml:lang="en">* if, for example, the following text is in English. A cursosry look at the code seems to show this attribute can never be present (see Soap12FaultSerializer.java writeMessage()). Is this the case? It seems strange no-one else has encountered this, which makes me think perhaps it's me that's missed something. Phil B.