Hello all,
I am implementing a web service in CXF, but I have met some problems. I have generated my web service from a WSDL. This WSDL defines document/literal style and operations with parameters according to the following structure: <xs:complexType name="AnyType"> <xs:sequence> <xs:any maxOccurs="unbounded" minOccurs="0"/> </xs:sequence> </xs:complexType> Then, my web service is generated. Operation parameters are of Java type AnyType which content is @XmlAnyElement(lax = true) protected List<org.w3c.dom.Element> any; The problems is that, when I try to get operation parameters as a Dom element I found that: 1. I cant find the root element. 2. Some content are re-formatted, so I have problems when dealing it. Next, I try to illustrate the problem. When I invoke my web service, I intercept the soap message, and I can see the following: <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><dss:Sig nRequest Profile="urn:umu:eadmin:services:sign:profiles:simpleSign" RequestID="0001" xmlns:dss="urn:oasis:names:tc:dss:1.0:core:schema" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"><dss:OptionalInputs><dss: ClaimedIdentity><dss:Name>155.54.210.72/aplicacion de prueba</dss:Name></dss:ClaimedIdentity><dss:SignatureType>urn:ietf:rfc:3275< /dss:SignatureType><dss:AddTimestamp Type="urn:ietf:rfc:3161"/><dss:Properties><dss:SignedProperties><dss:Propert y><dss:Identifier>urn:oasis:names:tc:dss:1.0:core:schema:TimeStampTime</dss: Identifier></dss:Property></dss:SignedProperties></dss:Properties></dss:Opti onalInputs><dss:InputDocuments><dss:Document ID="ID00001" RefURI="ID00001"><dss:InlineXML><root> <regla-ipsec> <dir-origen>155.54.0.0</dir-origen> <mascara-origen>255.255.0.0</mascara-origen> <dir-destino>81.65.45.3</dir-destino> <mascara-destino>255.255.255.255</mascara-destino> <puerto-origen>any</puerto-origen> <puerto-destino>80</puerto-destino> <protocolo>tcp</protocolo> <accion>autenticacion</accion> <modo>transporte</modo> <algoritmo-cifrado>3DES</algoritmo-cifrado> <algoritmo-firma>HMAC_WITH_MD5</algoritmo-firma> </regla-ipsec> </root></dss:InlineXML></dss:Document></dss:InputDocuments></dss:SignRequest ></soapenv:Body></soapenv:Envelope> As you can see, the SOAP body contains a root element, called <dss:SignRequest>, which should be processed within the service implementation. However, within the service implementation, when I receive List<org.w3c.dom.Element> and I try to reconstruct the soap body content as a DOM element, I find that <dss:SignRequest> is missing and the content of element <dss:InlineXML> has been re-formatted (missing: tabs, linefeeds, etc.), as it is shown next: <?xml version="1.0" encoding="UTF-8"?> <rootElement><dss:OptionalInputs xmlns:dss="urn:oasis:names:tc:dss:1.0:core:schema" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"><dss:ClaimedIdentity><dss :Name>155.54.210.72/aplicacion de prueba</dss:Name></dss:ClaimedIdentity><dss:SignatureType>urn:ietf:rfc:3275< /dss:SignatureType><dss:AddTimestamp Type="urn:ietf:rfc:3161"/><dss:Properties><dss:SignedProperties><dss:Propert y><dss:Identifier>urn:oasis:names:tc:dss:1.0:core:schema:TimeStampTime</dss: Identifier></dss:Property></dss:SignedProperties></dss:Properties></dss:Opti onalInputs><dss:InputDocuments xmlns:dss="urn:oasis:names:tc:dss:1.0:core:schema" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"><dss:Document ID="ID00001" RefURI="ID00001"><dss:InlineXML><root><regla-ipsec><dir-origen>155.54.0.0</d ir-origen><mascara-origen>255.255.0.0</mascara-origen><dir-destino>81.65.45. 3</dir-destino><mascara-destino>255.255.255.255</mascara-destino><puerto-ori gen>any</puerto-origen><puerto-destino>80</puerto-destino><protocolo>tcp</pr otocolo><accion>autenticacion</accion><modo>transporte</modo><algoritmo-cifr ado>3DES</algoritmo-cifrado><algoritmo-firma>HMAC_WITH_MD5</algoritmo-firma> </regla-ipsec> </root></dss:InlineXML></dss:Document></dss:InputDocuments></rootElement> (In order to reconstruct the soap body content from List<org.w3c.dom.Element>, I have created a new org.w3c.dom.Document, with a root element called <rootElement>, where to append as child node de contents of List<org.w3c.dom.Element>). So I meet two problems: on the one side, I loose some information because the element <dss:SignRequest> is missing, so I am not able to process the request. On the other hand, as the content of the element <dss:InlineXML> is reformatted, when I deal that content, I obtain bad results, as I have to apply cryptographic operations over it, so I need it the same format/structure as it was send by the client (and you can see in the intercepted soap message). As a conclusion, I need to: 1. Get the complete soap content body (including the first element <dss:SignRequest>) within the service implementation. 2. Get the complete soap content body with the same format as it was sent. ¿Could you be so kind as to help me, please? Thank you very much in advance. Regards, Inma.