You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2002/11/18 16:36:18 UTC
DO NOT REPLY [Bug 14638] New: -
Axis unwraps document/literal request elements as server method arguments.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14638>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14638
Axis unwraps document/literal request elements as server method arguments.
Summary: Axis unwraps document/literal request elements as server
method arguments.
Product: Axis
Version: 1.0
Platform: Other
OS/Version: Other
Status: NEW
Severity: Normal
Priority: Other
Component: Basic Architecture
AssignedTo: axis-dev@xml.apache.org
ReportedBy: Andre.Kramer@computer.org
For a wsdl in document/literal style Axis generates Server implementation
classes that take the request element's sub elements as arguments. This is ok
for rpc style but causes mulitple problems when the request element is a
complex XML element.
1) Axis sends elements with xsi:isnil="true" even if req element is optional
because of use of <choice/>
2) Axis expects others to send empty isnil="true" elements whereas .NET just
drops sub-elements when not present in the request doc (e.g. if minOccurs="0").
3) Axis does not like attributes on the request element.
Unwrapping and isnil seem rpc type of things to be doing and Axis should
accept as broad a set of values for the input request document as possible for
document/literal style.
Example:
<element name="getServiceDescription">
<complexType>
<sequence>
<element name="registrationContext"
type="types:RegistrationContext" minOccurs="0"/>
<element name="userContext" type="types:UserContext"/>
</sequence>
</complexType>
</element>
<element name="getServiceDescriptionResponse"
type="types:ServiceDescription"/>
<wsdl:message name="getServiceDescription">
<wsdl:part name="getServiceDescription"
element="types:getServiceDescription"/>
</wsdl:message>
<wsdl:message name="getServiceDescriptionResponse">
<wsdl:part name="getServiceDescriptionResponse"
element="types:getServiceDescriptionResponse"/>
</wsdl:message>
generates:
public void getServiceDescription(org.oasis_open.www.RegistrationContext
registrationContext, org.oasis_open.www.UserContext userContext,
org.oasis_open.www.holders.ExtensionArrayHolder extension) throws
java.rmi.RemoteException {
...
}
It would be much better to produce:
public void getServiceDescription(GetServiceDescription request)
as well as a new GetServiceDescription serialization class that can
deal with missing fields, attributes, choices etc which the current
method argument logic seems to have (mulitple) problems with.
Cheers,
Andre