Loading ...
Sorry, an error occurred while loading the content.

3523RE: [soaplite] Strange SOAP envelope results

Expand Messages
  • Joe Breeden
    Apr 22, 2004
      Paul,

      Thanks for the response. I don't know if I can shed any more light on
      the problem, but I'll try. I don't really know the sequence of calls
      before a failure occurs. I can recreate the error with some regularity
      with a test script I have that makes the same calls listed below, but in
      SOAP 1.1. I put the SOAP call into a while(1) loop and let it hit the
      server and then make the call from the .Net client. Unfortunately, the
      error doesn't happen on a regular basis. I thought for a bit that maybe
      the SOAP::Lite module was using a global variable to store the envelope
      and that it wasn't be rewritten because of the persistent nature of the
      Perl interpreter when used with apache/mod_perl. But, if that were the
      case I would expect the problem would be fairly regular and easily
      repeatable.

      Thanks for looking into this for me. I hope this additional info helps.

      Joe

      -----Original Message-----
      From: Paul Kulchenko [mailto:paulclinger@...]
      Sent: Thursday, April 22, 2004 12:29 AM
      To: Joe Breeden; soaplite@yahoogroups.com
      Subject: Re: [soaplite] Strange SOAP envelope results

      Joe,

      I believe you're right about the reason for this behavior -- mixture
      of SOAP1.1 and 1.2 requests. However, I don't see anything that could
      cause this. Do you know the sequence of SOAP1.1 or 1.2 calls before
      the call that fails? For example, SOAP1.1 -- valid fault response,
      SOAP1.2 invalid response.

      One possible reason for that behavior is the lack of ANY elements in
      the response that reference xsi/xsd namespaces, but even in this case
      the default XML Schema (which is 2001) should be used. I'm puzzled by
      this. Any additional info would be very helpful. Thank you.

      Best wishes, Paul.

      --- Joe Breeden <jbreeden@...> wrote:
      > Hello All,
      >
      > I am implementing a SOAP::Lite service that will interact with .Net
      > clients and Apache Axis clients.
      >
      > My configuration is as follows:
      >
      > Apache 1.3.29
      > mod_perl 1.29
      > PERL 5.8.3
      > SOAP::Lite 0.60a (downloaded from CPAN)
      > RedHat 7.3
      >
      > I am using just a basic apache/mod_perl server implementation. My
      > handler module is:
      >
      > package Soap;
      >
      > my $VERSION = do {'$Id: Soap.pm,v 1.1.1.1 2004/04/12 14:44:09
      > jbreeden
      > Exp $' =~ /,v\s(.[^\s]+)\s/g; $1};
      >
      > use strict;
      > use SOAP::Transport::HTTP;
      >
      > use Person;
      > use Community;
      > use Participant;
      > use Service;
      >
      > my $server = SOAP::Transport::HTTP::Apache
      > ->dispatch_to('Person', 'Community', 'Participant',
      > 'Service')
      > ;
      >
      > sub handler { $server->handler(@_) }
      >
      > 1;
      >
      > I don't load SOAP::Lite or any SOAP related modules during server
      > startup (i.e. via startup.pl or some httpd.conf directive).
      >
      > I probably don't have to 'use' my packages that are going to be
      > dispatched to, but it seems to work. My exposed packages are very
      > basic;
      > essentially all they do is pass data back and forth to our MS SQL
      > Server
      > database.
      >
      > The problem is that every once in a while responses from the server
      > do
      > not have all the envelope parts. This seems to happen quite a bit
      > when
      > either a mixture of clients using SOAP v1.1 and SOAP v1.2 call the
      > same
      > exposed methods or when a client sends in a malformed envelope on a
      > request.
      >
      > Here is an example of a failed SOAP exchange (from a .Net client
      > perspective). These have been edited for clarity.
      >
      > Client Sends:
      > <s:Envelope
      > xmlns:SOAP-ENC="http://www.w3.org/2001/06/soap-encoding"
      > s:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
      > xmlns:s="http://www.w3.org/2001/06/soap-envelope"
      > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      > xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      > <s:Body>
      > <m:getRoles xmlns:m="http://devlinux02.ena.com/Person">
      > <c-gensym3 xsi:type="xsd:string">communityId</c-gensym3>
      > <c-gensym5 xsi:type="xsd:int">3277</c-gensym5>
      > </m:getRoles>
      > </s:Body>
      > </s:Envelope>
      >
      > Server responds:
      > <?xml version="1.0" encoding="UTF-8"?>
      > <SOAP-ENV:Envelope
      > xmlns:SOAP-ENC="http://www.w3.org/2001/06/soap-encoding"
      > xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"
      >
      > SOAP-ENV:encodingStyle="http://www.w3.org/2001/06/soap-encoding">
      > <SOAP-ENV:Body>
      >
      <namesp7:getRolesResponsexmlns:namesp7="http://devlinux02.ena.com/Person
      > ">
      > <SOAP-ENC:Array xsi:type="SOAP-ENC:Array"
      > SOAP-ENC:arrayType="xsd:anyType[5]">
      > <item>
      > <name xsi:type="xsd:string">Technology Coordinator</name>
      > <id xsi:type="xsd:int">1</id>
      > <rank xsi:type="xsd:int">7</rank>
      > <description xsi:type="xsd:string">Technology
      > Coordinator</description>
      > </item>
      > </SOAP-ENC:Array>
      > </namesp7:getRolesResponse>
      > </SOAP-ENV:Body>
      > </SOAP-ENV:Envelope>
      >
      > Example successful SOAP exchange:
      >
      > Client Sends:
      > <s:Envelope
      > xmlns:SOAP-ENC="http://www.w3.org/2001/06/soap-encoding"
      > s:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
      > xmlns:s="http://www.w3.org/2001/06/soap-envelope"
      > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      > xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      > <s:Body>
      > <m:getRoles xmlns:m="http://devlinux02.ena.com/Person">
      > <c-gensym3 xsi:type="xsd:string">communityId</c-gensym3>
      > <c-gensym5 xsi:type="xsd:int">3277</c-gensym5>
      > </m:getRoles>
      > </s:Body>
      > </s:Envelope>
      >
      > Server responds:
      > <?xml version="1.0" encoding="UTF-8"?>
      > <SOAP-ENV:Envelope
      > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      > xmlns:SOAP-ENC="http://www.w3.org/2001/06/soap-encoding"
      > xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"
      > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      >
      > SOAP-ENV:encodingStyle="http://www.w3.org/2001/06/soap-encoding">
      > <SOAP-ENV:Body>
      > <namesp8:getRolesResponse
      > xmlns:namesp8="http://devlinux02.ena.com/Person">
      > <SOAP-ENC:Array xsi:type="SOAP-ENC:Array"
      > SOAP-ENC:arrayType="xsd:anyType[5]">
      > <item>
      > <name xsi:type="xsd:string">Technology Coordinator</name>
      > <id xsi:type="xsd:int">1</id>
      > <rank xsi:type="xsd:int">7</rank>
      > <description xsi:type="xsd:string">Technology
      > Coordinator</description>
      > </item>
      > </SOAP-ENC:Array>
      > </namesp8:getRolesResponse>
      > </SOAP-ENV:Body>
      > </SOAP-ENV:Envelope>
      >
      >
      > Points of Interest:
      > Error Response:
      > <SOAP-ENV:Envelope
      > xmlns:SOAP-ENC="http://www.w3.org/2001/06/soap-encoding"
      > xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"
      >
      > SOAP-ENV:encodingStyle="http://www.w3.org/2001/06/soap-encoding">
      >
      > Success Response:
      > <SOAP-ENV:Envelope
      > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      > xmlns:SOAP-ENC="http://www.w3.org/2001/06/soap-encoding"
      > xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"
      > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      >
      > SOAP-ENV:encodingStyle="http://www.w3.org/2001/06/soap-encoding">
      >
      > If you notice in the failed responses, the "xmlns:xsi" and
      > "xmlns:xsd"
      > pieces of the envelope are missing. I guess my question is; what
      > causes
      > this behavior? And, how do I keep it from happening in a system
      > that
      > will in all likelihood be used by clients that are SOAP 1.1 and
      > clients
      > that are SOAP 1.2. Of course, the SOAP version part could be a
      > red-herring and the answer could lie else where.
      >
      > Sorry for the verbosity of this message, but this has really
      > stumped me
      > and I would like to get it solved before the application goes live.
      >
      >
      > Thanks in advanced for the help.
      >
      > Joe Breeden
      > Education Networks of America
      > jbreeden at ena dot com
      >
      >
      >
      >
      > Yahoo! Groups Links
      >
      >
      >
      >
      >
    • Show all 6 messages in this topic