Perl SOAP:Lite Client Issues With 4.0.4.GA
jiwils May 30, 2006 6:12 PMI have a J2EE 1.4-based webservice (backed by an EJB). I have been using this same EJB since JBoss 4.0.2. With JBoss 4.0.2/4.0.3, Perl SOAP clients using SOAP:Lite could talk to my web service. With JBoss 4.0.4, the Perl SOAP clients no longer work.
Using JBoss 4.0.2 (with TCPMon inbetween the client/server), I can see that the Perl SOAP client posts the following message:
POST /j2eehello/1.0?wsdl HTTP/1.1 TE: deflate,gzip;q=0.3 Connection: TE, close Accept: text/xml Accept: multipart/* Accept: application/soap Host: mwood0205:8080 User-Agent: SOAP::Lite/Perl/0.66.1 Content-Length: 432 Content-Type: text/xml; charset=utf-8 SOAPAction: "#hello" <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <hello> <String_1 xsi:type="xsd:string">Melinda</String_1> </hello> </soap:Body> </soap:Envelope>
With this request, the 4.0.2-backed request behaves as expected. When changing to JBoss 4.0.4.GA, the same client sending posting exactly the same thing receives the following error response:
HTTP/1.1 500 Internal Server Error Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)/Tomcat-5.5 Set-Cookie: JSESSIONID=9075EE0705C5B3C8648C57AB6EFEB619; Path=/ Content-Type: text/xml;charset=UTF-8 Date: Tue, 30 May 2006 21:08:18 GMT Connection: close <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> <env:Header/> <env:Body> <env:Fault> <faultcode>env:Client</faultcode> <faultstring>Endpoint {http://acxiom.com/j2eehello/1.0}J2EEHelloPort does not contain operation meta data for: hello</faultstring> </env:Fault> </env:Body> </env:Envelope>
In contrast, a Java client, which works with both JBoss 4.0.2 and 4.0.4.GA, posts the following:
POST /j2eehello/1.0 HTTP/1.1 Content-Type: text/xml; charset=utf-8 Content-Length: 392 SOAPAction: "" User-Agent: Java/1.4.2_11 Host: mwood0205:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://acxiom.com/j2eehello/1.0"> <env:Body> <ns0:hello> <String_1>Melinda</String_1> </ns0:hello> </env:Body> </env:Envelope>
The extra namespace definition on the hello object appears to be the answer to the immediate problem, but does this mean that JBoss 4.0.4 is more strict than the JBoss 4.0.2 version? Furthermore, does anyone have any suggestions on how I might find a work around for the Perl client when using JBoss 4.0.4.GA?