[ 
https://issues.apache.org/jira/browse/AXIS2-2246?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12486888
 ] 

Tim Buss commented on AXIS2-2246:
---------------------------------

I assume you are referring to this paragraph of the WS-I basic profile.

"Conversely, in a rpc-literal SOAP binding, the serialized child element of the 
soap:Body element consists of a wrapper element, whose namespace is the value 
of the namespace attribute of the soapbind:body element and whose local name is 
either the name of the operation or the name of the operation suffixed with 
"Response". The namespace attribute is required, as opposed to being optional, 
to ensure that the children of the soap:Body element are namespace-qualified."

It would be normal to declare the element in the document literal case since 
the document literal message would reference the element as its "document" 
type.  I see no reason why such an element would be illegal in the RPC-literal 
case since no such element actually exists elsewhere in the same namespace in 
the schema or WSDL.  The fact that the WSDL implies the generation of such an 
element in the SOAP message is independent of the schema even if it might 
logically create a conflicting definition. In the rpc literal case the wrapper 
element of an rpc-literal soap message is not technically part of a document 
defined by the schema and can't be validated by it.  I understand your point 
but this worked in Axis 1.X and passes the WS-I check in WTP so I suspect it is 
legal even if it is logically suspect. 

In any case, whether this is illegal or legal and a restriction of Axis2 it 
should not generate code that apparently works but does the wrong thing! At the 
very least it should generate a warning or an error.   Possibly  pre-scanning 
for WS-I compliance such as is done by the eclipse WTP tool would be the only 
easy way to do this. However, since it is known from the WSDL that the service 
is rpc-literal and the WSDL defines what namespace and name the wrapper element 
should have as described above, it seems reasonable to ignore any other 
definitions conflicting or otherwise and just generate code that does the right 
thing.



> Rpc-Literal Client and Server adb codegen create messages that are non WS-I 
> complient 
> --------------------------------------------------------------------------------------
>
>                 Key: AXIS2-2246
>                 URL: https://issues.apache.org/jira/browse/AXIS2-2246
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: adb
>    Affects Versions: 1.1.1
>         Environment: Axis 1.5, Tomcat 5.5, Axis2 1.1.1, Axis2 Eclipse codegen 
> plugin 1.1.1, Eclipse 3.2, WTP 1.5.1, Windows 2003 server
>            Reporter: Tim Buss
>            Priority: Critical
>         Attachments: Axis2RPCLiteralTest.wsdl
>
>
> There appears to be two problems.  The most obvious is that the RPC-literal 
> message sent by the generated client and accepted by the generated service is 
> incorrect .  The following message body  is sent for the various test cases I 
> have tried - string, complex type, nested complex type. 
> <soapenv:Body> 
>     <ns:OperationName> 
>         <ns:PartName> 
> .............content..... 
>         </ns:PartName> 
>     </ns:OperationName> 
> </soapenv:Body> 
> but it should be: 
> <soapenv:Body> 
>     <ns:OperationName> 
>         <PartName> 
> .............content..... 
>         </PartName> 
>     </ns:OperationName> 
> </soapenv:Body> 
> PartName should be a non qualified name.  Axis 1.3 did it this way, and other 
> sources support this as being the correct form for rpc-literal.  In 
> particualr WS-I Basic 1.0 states: 
> "4.7.20 Part Accessors 
> For rpc-literal envelopes, WSDL 1.1 is not clear what namespace, if any, the 
> accessor elements for parameters and return value are a part of. Different 
> implementations make different choices, leading to interoperability problems. 
> R2735 An ENVELOPE described with an rpc-literal binding MUST place the part 
> accessor elements for parameters and return value in no namespace. 
> R2755 The part accessor elements in a MESSAGE described with an rpc-literal 
> binding MUST have a local name of the same value as the name attribute of the 
> corresponding wsdl:part element. 
> Settling on one alternative is crucial to achieving interoperability. The 
> Profile places the part accessor elements in no namespace as doing so is 
> simple, covers all cases, and does not lead to logical inconsistency. " 
> http://www.ws-i.org/Profiles/BasicProfile-1.2.html 
> The second problem that I have yet to narrow down is that with a much more 
> complex type, the generated client sends a message with a body like this 
> where the "part" element is not present: 
> <soapenv:Body> 
>     <ns:OperationName> 
>  .............content..... 
>      </ns:OperationName> 
> </soapenv:Body> 
> One other difference that may be a factor in this case is that my complex 
> service is one way. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to