You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Davanum Srinivas <di...@yahoo.com> on 2003/05/22 23:16:03 UTC

RE: Odd behavior using SignedSOAPEnvelope (empty namespaces inser ted)

See http://ws.apache.org/axis/bugs.html on how to submit bugs.

-- dims

--- "SECRIST,MARK S (HP-FtCollins,ex1)" <ma...@hp.com> wrote:
> I ran into an issue that is documented in an earlier query sent to
> axis-user.  Since then, I've been able to isolate the problem (or address
> the symptom) with the ns="" problem.  I have just verified that it still
> exists with the most recent 5/22 nightly build.  It seems to have to do with
> the way I declare my schema.  If I follow the WS-I basic profile
> recommendation, I declare my schema as follows:
> 
>   <xs:schema targetNamespace="uri:supplier.daredevil.atc.hp.com" 
>              xmlns:xs="http://www.w3.org/2001/XMLSchema" 
>              xmlns:sup="uri:supplier.daredevil.atc.hp.com" 
>              elementFormDefault="qualified"
> attributeFormDefault="unqualified">
> 
> The expected behavior is that the root element of my message will reference
> the namespace as:
>     <QuoteRequest xmlns="uri:supplier.daredevil.atc.hp.com">
> 
> and the child elements will inherit that namespace without explicitly
> referencing it.  However, Axis seems to loose that part of the WSDL
> definition when being deployed to the server.  As a result, the dynamic WSDL
> document returned is missing the elementFormDefault and attributeFormDefault
> attributes in the schema tag.  This can be compensated for by explicitly
> adding form="unqualified" to the child elements of the root of the request
> and response elements in the original WSDL file used to generate the server
> deployment.  However, this seems like a bit of a hack, but it does make
> things work.
> 
> I have the full WSDL file if someone is interested in having a look at it,
> but it appears that Axis is still broken in this regard.  I can't say when,
> but I believe this did work as expected once upon a time around the 1.1.
> beta timeframe.
> 
> What I found is that the problem seems to manifest itself in the helper
> classes that are generated.  The server side helper class for QuoteRequest
> has the following static declaration for itself and its child elements:
> 
>     static {
>         typeDesc.setXmlType(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "QuoteRequestType"));
>         org.apache.axis.description.ElementDesc elemField = new
> org.apache.axis.description.ElementDesc();
>         elemField.setFieldName("documentInfo");
>         elemField.setXmlName(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "DocumentInfo"));
>         elemField.setXmlType(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "DocumentInfoType"));
>         typeDesc.addFieldDesc(elemField);
>         elemField = new org.apache.axis.description.ElementDesc();
>         elemField.setFieldName("customerDetails");
>         elemField.setXmlName(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "CustomerDetails"));
>         elemField.setXmlType(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "OwnerDetails"));
>         typeDesc.addFieldDesc(elemField);
>         elemField = new org.apache.axis.description.ElementDesc();
>         elemField.setFieldName("partList");
>         elemField.setXmlName(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com", "PartList"));
>         elemField.setXmlType(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "PartListType"));
>         typeDesc.addFieldDesc(elemField);
>     }
> 
> while the client helper class generated from the deployed service has the
> following static declaration:
> 
>     static {
>         typeDesc.setXmlType(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "QuoteRequestType"));
>         org.apache.axis.description.ElementDesc elemField = new
> org.apache.axis.description.ElementDesc();
>         elemField.setFieldName("documentInfo");
>         elemField.setXmlName(new javax.xml.namespace.QName("",
> "DocumentInfo"));
>         elemField.setXmlType(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "DocumentInfoType"));
>         typeDesc.addFieldDesc(elemField);
>         elemField = new org.apache.axis.description.ElementDesc();
>         elemField.setFieldName("customerDetails");
>         elemField.setXmlName(new javax.xml.namespace.QName("",
> "CustomerDetails"));
>         elemField.setXmlType(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "OwnerDetails"));
>         typeDesc.addFieldDesc(elemField);
>         elemField = new org.apache.axis.description.ElementDesc();
>         elemField.setFieldName("partList");
>         elemField.setXmlName(new javax.xml.namespace.QName("", "PartList"));
>         elemField.setXmlType(new
> javax.xml.namespace.QName("uri:supplier.daredevil.atc.hp.com",
> "PartListType"));
>         typeDesc.addFieldDesc(elemField);
>     }
> 
> I've found through experimentation that if I add the
> "uri:supplier.daredevil.atc.hp.com" value to the client side static
> declaration, that it works as expected.  So, somewhere along this
> development, deployment route, something is breaking down.  This may be
> related to bug 10566, which claims to have been fixed.
> 
> It isn't clear how these issues get submitted to the developer team.  I'm
> going to try to send this also to the axis-dev mailing list in hopes that it
> shows up there.
> 
> Any thoughts or similar experiences from folks out there?
> 
> Thanks,
> 
> Mark
> 
> ____________________________________________
> Mark Secrist, Senior Software Consultant
> HP Developer Resources Organization (DRO) 
> AppDev Advanced Technology Center
> mark.secrist@hp.com  Tel: (970) 898-7490  
> 
> 
> -----Original Message-----
> From: SECRIST,MARK S (HP-FtCollins,ex1) [mailto:mark.secrist@hp.com]
> Sent: Tuesday, May 20, 2003 5:12 PM
> To: 'axis-user@ws.apache.org'
> Subject: Odd behavior using SignedSOAPEnvelope (empty namespaces
> inserted)
> 
> 
> I seem to have a problem with the getSOAPEnvelopeAsDocument method of the
> SignedSOAPEnvelop sample class associated with the Axis samples.  I've built
> a document style web service in which I want to simply sign the body and
> send it on.  Using the ClientSigningHandler and the SignedSOAPEnvelope
> classes were very helpful.  I notices after moving to versions of Axis 1.1
> that this now breaks my document being sent.  I start with a simple document
> as follows:
>  
>  <soapenv:Body>
>   <QuoteRequest xmlns="uri:supplier.daredevil.atc.hp.com">
>    <DocumentInfo Date="05/19/2003"/>
>    <CustomerDetails ContactEmail="buyer@hp.com" Name="Hewlett-Packard"
> Id="12345-56789"/>
>    <PartList>
>     <PartItem QuotedPrice="0.0" SupplierPartSKU="SKU-1" PartDescription="1.7
> Ghz CPU Box, 80GB HD" Quantity="5"/>
>     <PartItem QuotedPrice="0.0" SupplierPartSKU="SKU-2" PartDescription="17
> inch Monitor" Quantity="5"/>
>     <PartItem QuotedPrice="0.0" SupplierPartSKU="SKU-3"
> PartDescription="Really Fancy Printer" Quantity="5"/>
>    </PartList>
>   </QuoteRequest>
>  </soapenv:Body>
> 
> When passed through the getSOAPEnvelopeAsDocument method, I get empty
> namespaces in many of my subordinate elements as follows:
> 
>  <soapenv:Body>
>   <QuoteRequest xsi:type="ns1:QuoteRequestType"
> xmlns="uri:supplier.daredevil.atc.hp.com"
> xmlns:ns1="uri:supplier.daredevil.atc.hp.com">
>    <DocumentInfo Date="05/19/2003" xsi:type="ns1:DocumentInfoType"
> xmlns=""/>
>    <CustomerDetails ContactEmail="buyer@hp.com" Id="12345-56789"
> Name="Hewlett-Packard" xsi:type="ns1:OwnerDetails" xmlns=""/>
>    <PartList xsi:type="ns1:PartListType" xmlns="">
>     <PartItem PartDescription="1.7 Ghz CPU Box, 80GB HD" Quantity="5"
> QuotedPrice="0.0" SupplierPartSKU="SKU-1" xsi:type="ns1:PartItemType"/>
>     <PartItem PartDescription="17 inch Monitor" Quantity="5"
> QuotedPrice="0.0" SupplierPartSKU="SKU-2" xsi:type="ns1:PartItemType"/>
>     <PartItem PartDescription="Really Fancy Printer" Quantity="5"
> QuotedPrice="0.0" SupplierPartSKU="SKU-3" xsi:type="ns1:PartItemType"/>
>    </PartList>
>   </QuoteRequest>
>  </soapenv:Body>
> 
> Does anyone have ideas as to what causes this and what I can do to eliminate
> the problem?
> 
> I've also noticed that when I generate the server deployment from a static
> WSDL and then try to generate a client from the deployed dynamic WSDL file
> that I have the same problem.  Is this in fact an Axis problem or am I not
> being specific enough in the WSDL schema definition?
> 
> Thanks,
> 
> Mark
> ____________________________________________
> Mark Secrist, Senior Software Consultant
> HP Developer Resources Organization (DRO) 
> AppDev Advanced Technology Center
> mark.secrist@hp.com  Tel: (970) 898-7490  


=====
Davanum Srinivas - http://webservices.apache.org/~dims/

__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com