2 Replies Latest reply on May 15, 2012 4:28 AM by fredand44

    Where is my soap-envelope?

    fredand44

      Hello Guys!

       

      Right now I'm in a project were we uppgrading a java-ee-app from jboss 4 to jboss 5.1.2.

       

      This app is making a webservice call to an other server in a IIS.

      The infrastructure looks something like

       

      Jboss -> black_box_of_firewalls -> Microsoft IIS.

       

      Right now the IIS is down, and that is ok for now.

       

      How ever my intention is that the old-app and the new-app should work in the same way.

       

      We generate the webservice client from the wsdl-file, with maven.

      We have not changed the code in any way. To generate the webservice client we use the jboss-ws-tools.

      The only changes should be that we uses jar from 5.1.2 instead of 4.

       

      But we get different response for the same call.

       

      I have asked the firewall-guys to sniff the traffic after the firewall.

       

      From the old-app we caught this call and response:

       

      POST /xxx/ws_xxx.asmx HTTP/1.1

      SOAPAction: "http://www.xxx.xx/ (...)

      Content-Type: text/xml; charset=UTF-8

      JBoss-Remoting-Version: 22

      User-Agent: JBossRemoting - 2.2.2.SP10

      Host: 1.2.3.4:1234

      Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

      Content-Length: 264

      Connection: Keep-Alive

      X-BlueCoat-Via: 80AF669A73FA896C

       

      <env:Envelope>bla bla bla</env:Envelope>

       

      HTTP/1.1 500 Internal Server Error

      Date: Fri, 11 May 2012 10:38:45 GMT

      Server: Microsoft-IIS/6.0

      X-Powered-By: ASP.NET

      X-AspNet-Version: 2.0.50727

      Cache-Control: private

      Content-Type: application/soap+xml; charset=utf-8

      Content-Length: 493

       

      <?xml version="1.0" encoding="utf-8"?> bla bla bla<soap:Envelope></soap:Envelope>

       

      To me I can see the soap-envelop we sent and that the IIS responded.

       

      But from the new-app we caught this call and response:

       

      POST /xxx/ws_xxx.asmx HTTP/1.1

      SOAPAction: "http://www.xxx.xx/ (...)

      Content-Type: text/xml; charset=UTF-8

      JBoss-Remoting-Version: 22

      User-Agent: JBossRemoting - 2.5.4.SP3 (Flounder)

      remotingContentType: remotingContentTypeNonString

      Host: 1.2.3.4:1234

      Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

      Transfer-Encoding: chunked

      Connection: Keep-Alive

      X-BlueCoat-Via: 80AF669A73FA896C

       

      HTTP/1.1 400 Bad Request

      Content-Type: text/html

      Date: Fri, 11 May 2012 10:34:37 GMT

      Connection: close

      Content-Length: 20

       

      <h1>Bad Request</h1>

       

      As you can se there seems to be no soap-envelop in the request, and there are some different other header like: Transfer-Encoding: chunked, and remotingContentType.

       

      In the response I see nothing about IIS either. So even if my firewall-guys say that I'm wrong I do have some doubt's that the response in fact came from the IIS.

       

      What do you think guys, could this be because of:

       

      1) Bug in new-app because of wrong way of generating the webservice client? (example is most welcome)

      2) Misstake in sniffing, the sniffer missed the envelop in some strange way?

      3) Something in firewall is removing the sending saop-envelope?

      4) The response is from something else, perhaps in our black box of fire walls.

      ...or something else?

       

      All guesses and suggestions are most welcome.

       

      Best regards

      Fredrik

        • 1. Re: Where is my soap-envelope?
          spyhunter99

          Have you tried using something like SoapUi, TcpMon, or Fiddler2 to help troubleshoot this? Are the IIS server logs available?

          Confirm that are you are in fact sending the correct urls. You can also try turning off chunked encoding. Provided you're using JbossWS Native, there's an endpoint config that you can set that will disable it. It's possible the firewall is rejecting it for that reason

          • 2. Re: Where is my soap-envelope?
            fredand44

            Thanks for your help!

             

             

            There seems to be a limit in the firewall, that it do not support Transfer-Encoding: chunked

             

             

            The solution was to add this line of code:
            ((BindingProvider)stub).getRequestContext().put(org.jboss.ws.core.StubExt.PROPERTY_CHUNKED_ENCODING_SIZE, "-1")

             

            But this might be a bad solution if messages are big.
            (In my case they are small)

             

            Best regards
            Fredrik