2 Replies Latest reply on Jul 10, 2007 5:01 PM by djhititup

    Perl SOAP:Lite Client Issues With 4.0.4.GA

    jiwils

      I 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?