If you want to be a student, Web services is the place to be.  SOAP 1.2 makes SOAP 1.1 
look like kindergarten reading, the WSDL specs make me nauseous, and things like 
WS-Security are almost enough to make me want to pursue a career at McDonald's.

Scott Nichol

Do not send e-mail directly to this e-mail address,
because it is filtered to accept only mail from
specific mail lists.
----- Original Message ----- 
From: "Steve Pruitt" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, July 24, 2003 11:02 AM
Subject: RE: TargetObjectURI


Anne,

Agreed.  I might have exaggerated a bit when I said "obvious to me".  Let me downgrade 
that a little to "its a bit clearer now".  But, yours and Scott's responses did help a 
lot.  I remain a student of SOAP for the forseeable future.


-Steve


Steve,

I don't think this issue is obvious at all. The SOAP encoding model is a
very complicated system. Scott's been doing SOAP for a long time, but I
don't think he fully groked it's implications until you raised the question.

Anne

----- Original Message -----
From: "Steve Pruitt" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, July 22, 2003 6:14 PM
Subject: RE: TargetObjectURI


I would like to thank both Scott and Anne for making what is probably
obvious to many, finally obvious to me.

-Steve Pruitt


Anne,

Thanks for this clarification.  It got me to read section 3.5 of the WSDL
1.1 spec more closely.  Given that the "encoded" style implies that all part
types must be interpretted as abstract, I finally understand why its use is
being discouraged!

Scott Nichol

Do not send e-mail directly to this e-mail address,
because it is filtered to accept only mail from
specific mail lists.

----- Original Message -----
From: "Anne Thomas Manes" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, July 21, 2003 9:43 PM
Subject: Re: TargetObjectURI


> A SOAP runtime system uses the QName of the child element of the
> soap-env:body to determine what type of SOAP message it has received and
> what to do with it. The TargetObjectURI defines the namespace for that
> QName. That combined with the element's local name specifies the complete
> QName.
>
> When using document literal, the child element of the soap-env:body has a
> predefined QName. It is specified in the schema definition in the
wsdl:types
> section. Hence the TargetObjectURI should be the same as the
targetNamespace
> in the <schema> section in the <types> section.
>
> If you are using rpc/encoded, then the SOAP runtime dynamically constructs
> the SOAP message using the SOAP encoding data model, and it uses the
> wsdl:operation name (the method name) as the child element of the
> soap-env:body. There is no schema that defines this element, and no
> predefined namespace. Therefore you should specify a namespace attribute
in
> the soap:input and soap:output elements in the wsdl:binding definition,
> e.g.,
>
>  <wsdl:binding name="foo" type="tns:bar">
>     <soap:binding style="rpc"
>             transport="http://schemas.xmlsoap.org/soap/http"/>
>     <wsdl:operation name="foobar">
>       <soap:operation soapAction="" style="rpc"/>
>       <wsdl:input>
>         <soap:body
>           namespace="urn:foobar"
>           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>           use="encoded"/>
>       </wsdl:input>
>       <wsdl:output>
>         <soap:body
>           namespace="urn:foobar"
>           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>           use="encoded"/>
>       </wsdl:output>
>     </wsdl:operation>
> </wsdl:binding>
>
> That namespace can be the same as your wsdl targetNamespace, but it
doesn't
> need to be. It can be any namespace you want it to be. You just want to
make
> sure that your QName provides enough information to your SOAP server to
> indicate how to process the message.
>
> Best regards,
> Anne
>
>
> ----- Original Message -----
> From: "Steve Pruitt" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Friday, July 18, 2003 10:31 AM
> Subject: RE: TargetObjectURI
>
>
> The heart of my question is basically interoperability.  I am trying to
> compose a SOAP message by parsing a WSDL file and without any specific
soap
> platform knowledge.  I have not seen any sort of matrix specifying what
the
> various platform vendors require.  If the WSDL has the SOAP Action set,
then
> naturally I assume this required.  But, the TargetObjectURI remains
> problematic to me. I have been using the namespace URI of the first child
> element of the body.  But this seems "squishy" in light of Scott's
response
> below.
>
> From the response below...
>
> If the soap:body namespace is of no use, then I am a bit confused about
what
> to do.  Not sure where a namespace can be explicitly specified in a
message
> definition?  The soap:body and soap:header are the only tags with a
> namespace attribute.  Should I always use the wsdl:definition
> targetNamespace attribute?  I have found wsdls where the wsdl:definition
> targetNamespace and the soap:body namespace attibutes are different, so I
am
> a bit confused about that.
>
> Hopefully, I am not the only one clueless about this and others face the
> same issue or similar issue.
>
>
> Steve Pruitt
>
>
>
>
> The TargetObjectURI is always the namespace of the element representing
the
> SOAP call.  For example, in the envelope
>
>
> <?xml version='1.0' encoding='UTF-8'?>
> <SOAP-ENV:Envelope
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
>
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance";
>                       xmlns:xsd="http://www.w3.org/1999/XMLSchema";>
> <SOAP-ENV:Body>
> <ns1:helloString xmlns:ns1="urn:hello1"
>
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
> <name xsi:type="xsd:string">Bill</name>
> </ns1:helloString>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
> the TargetObjectURI is "urn:hello1".
>
> In WSDL, the namespace attribute of the soap:body element for a binding
> *may* be supplied, although the WSDL 1.1 spec says "the namespace
attribute
> only applies to content not explicitly defined by the abstract types".
> Therefore, in most WSDL, I do not think this should be of use, because the
> messages for operations are themselves in namespaces, which are the
> TargetObjectURI.  The namespace may be explicitly specified in the message
> definition, or it may be implied by the targetNamespace attribute on an
> enclosing element, typically the wsdl:definition element.
>
> Scott Nichol
>
> Do not send e-mail directly to this e-mail address,
> because it is filtered to accept only mail from
> specific mail lists.
> ----- Original Message -----
> From: "Steve Pruitt" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, July 15, 2003 9:54 AM
> Subject: TargetObjectURI
>
>
> All,
>
> How do you determine what WSDL value to use for setting the
TargetObjectURI?
> I am parsing a WSDL file at runtime and dynamically building the call.
With
> Apache I have been using the namespace from the soap body extension.  But,
> what if the SOAP platform is unknown?  I have looked at various WSDL
files.
> Sometimes the namespace attibute is not provided.  What is used in this
> case?  Are there any conventions?  This is all still murky to me.
>
>
> -Steve Pruitt
> [EMAIL PROTECTED]
>
>
>


Reply via email to