You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Han Hong Fang (JIRA)" <ji...@apache.org> on 2012/11/26 06:58:58 UTC

[jira] [Updated] (CXF-4652) Additional namespace is added when web servcie provider implements Provider

     [ https://issues.apache.org/jira/browse/CXF-4652?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Han Hong Fang updated CXF-4652:
-------------------------------

    Description: 
In the invoke method of web service provider which implements Provider<DOMSource>, using the following code to return a response DOMSource,

    DOMSource response = new DOMSource();
    DocumentBuilderFactory documentFacory = DocumentBuilderFactory.newInstance();
    DocumentBuilder documentBuilder = null;
    try {
    documentBuilder = documentFacory.newDocumentBuilder();
    } catch (ParserConfigurationException e) {
        throw new RuntimeException(e);
    }
    Document doc;
    try {
        doc = documentBuilder.parse(new InputSource(
        new ByteArrayInputStream(message.getBytes("UTF-8"))));
    } catch (Exception e) {
        throw new RuntimeException("error parse: " + str, e);
    }
    response.setNode(doc);

In above code, if message string is:

 "ns2:echoResponse xmlns:ns2="annotations.webserviceprovider.fq"><return>Hello world</return></ns2:echoResponse>", 

but the soapMessage body will be:

 "ns2:echoResponse xmlns:ns2="annotations.webserviceprovider.fq" xmlns="annotations.webserviceprovider.fq"><return>Hello world</return></ns2:echoResponse>"

Additional attribute xmlns="annotations.webserviceprovider.fq" is added by cxf. This additional attribute causes the unmarshal issue at client side.

  was:
In the invoke method of web service provider which implements Provider<DOMSource>, using the following code to return a response DOMSource,

    DOMSource response = new DOMSource();
    DocumentBuilderFactory documentFacory = DocumentBuilderFactory.newInstance();
    DocumentBuilder documentBuilder = null;
    try {
        documentBuilder = documentFacory.newDocumentBuilder();
    } catch (ParserConfigurationException e) {
        throw new RuntimeException(e);
    }
    Document doc;
    try {
        doc = documentBuilder.parse(new InputSource(
        new ByteArrayInputStream(message.getBytes("UTF-8"))));
    } catch (Exception e) {
        throw new RuntimeException("error parse: " + str, e);
    }
    response.setNode(doc);

In above code, if message string is:

 "ns2:echoResponse xmlns:ns2="annotations.webserviceprovider.fq"><return>Hello world</return></ns2:echoResponse>", 

but the soapMessage body will be:

 "ns2:echoResponse xmlns:ns2="annotations.webserviceprovider.fq" xmlns="annotations.webserviceprovider.fq"><return>Hello world</return></ns2:echoResponse>"

Additional attribute xmlns="annotations.webserviceprovider.fq" is added by cxf. This additional attribute causes the unmarshal issue at client side.

    
> Additional namespace is added when web servcie provider implements Provider<DOMSource>
> --------------------------------------------------------------------------------------
>
>                 Key: CXF-4652
>                 URL: https://issues.apache.org/jira/browse/CXF-4652
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.6.2
>         Environment: win7 + oracle jdk 1.6.0_29-b11
>            Reporter: Han Hong Fang
>             Fix For: 2.6.4
>
>
> In the invoke method of web service provider which implements Provider<DOMSource>, using the following code to return a response DOMSource,
>     DOMSource response = new DOMSource();
>     DocumentBuilderFactory documentFacory = DocumentBuilderFactory.newInstance();
>     DocumentBuilder documentBuilder = null;
>     try {
>     documentBuilder = documentFacory.newDocumentBuilder();
>     } catch (ParserConfigurationException e) {
>         throw new RuntimeException(e);
>     }
>     Document doc;
>     try {
>         doc = documentBuilder.parse(new InputSource(
>         new ByteArrayInputStream(message.getBytes("UTF-8"))));
>     } catch (Exception e) {
>         throw new RuntimeException("error parse: " + str, e);
>     }
>     response.setNode(doc);
> In above code, if message string is:
>  "ns2:echoResponse xmlns:ns2="annotations.webserviceprovider.fq"><return>Hello world</return></ns2:echoResponse>", 
> but the soapMessage body will be:
>  "ns2:echoResponse xmlns:ns2="annotations.webserviceprovider.fq" xmlns="annotations.webserviceprovider.fq"><return>Hello world</return></ns2:echoResponse>"
> Additional attribute xmlns="annotations.webserviceprovider.fq" is added by cxf. This additional attribute causes the unmarshal issue at client side.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira