Duplicate default namespace declaration - CXF is adding undesired markup to 
inline XML
--------------------------------------------------------------------------------------

                 Key: CXF-3652
                 URL: https://issues.apache.org/jira/browse/CXF-3652
             Project: CXF
          Issue Type: Bug
    Affects Versions: 2.2.10
         Environment: jdk1.6.0_24 Windows XP SP3
            Reporter: Haroldo de Oliveira Pinheiro


Basically, CXF is turning this:

<http://www.portalfiscal.inf.br/nfe"; versao="2.00"> 

Into this:

<consStatServ 
xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"; xmlns="" 
xmlns="" xmlns:ns5="http://www.portalfiscal.inf.br/nfe"; versao="2.00">

Causing an "Duplicate default namespace declaration" exception.

This is my Spring configuration:

    <?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:jaxws="http://cxf.apache.org/jaxws";
        xmlns:sec="http://cxf.apache.org/configuration/security"; 
xmlns:http="http://cxf.apache.org/transports/http/configuration";
        xmlns:context="http://www.springframework.org/schema/context"; 
xmlns:tx="http://www.springframework.org/schema/tx";
        xmlns:cxf="http://cxf.apache.org/core";
        xsi:schemaLocation="http://www.springframework.org/schema/beans  
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context 
           http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/tx 
           http://www.springframework.org/schema/tx/spring-tx.xsd
           http://cxf.apache.org/configuration/security
           http://cxf.apache.org/schemas/configuration/security.xsd
           http://cxf.apache.org/jaxws 
           http://cxf.apache.org/schemas/jaxws.xsd
           http://cxf.apache.org/transports/http/configuration
           http://cxf.apache.org/schemas/configuration/http-conf.xsd
           http://cxf.apache.org/core 
           http://cxf.apache.org/schemas/core.xsd";>

        <jaxws:client id="nfeStatusServicoMGWebService"
                serviceClass="com.ats.nfe.webservice.mg.NfeStatusServico2Soap12"
                
address="https://hnfe.fazenda.mg.gov.br/nfe2/services/NfeStatus2";>
                <jaxws:inInterceptors>
                        <bean 
class="org.apache.cxf.interceptor.LoggingInInterceptor">
                        </bean>
                </jaxws:inInterceptors>
                <jaxws:outInterceptors>
                        <bean 
class="org.apache.cxf.interceptor.LoggingOutInterceptor">
                        </bean>
                </jaxws:outInterceptors>
        </jaxws:client>


        <http:conduit
                
name="{http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2}NfeStatusServico2Soap12Port.http-conduit";>

                <http:tlsClientParameters>
                        <sec:keyManagers keyPassword="password">
                                <sec:keyStore type="JKS" password="123456"
                                        file="C:/Documents and 
Settings/HaroldoOliveira/teste.jks" />
                        </sec:keyManagers>
                        <sec:trustManagers>
                                <sec:keyStore type="JKS" password="123456"
                                        file="C:/Documents and 
Settings/HaroldoOliveira/truststore_nfe.jks" />
                        </sec:trustManagers>
                        <sec:cipherSuitesFilter>
                                <!-- these filters ensure that a ciphersuite 
with export-suitable or 
                                        null encryption is used, but exclude 
anonymous Diffie-Hellman key change 
                                        as this is vulnerable to 
man-in-the-middle attacks -->
                                <sec:include>.*_EXPORT_.*</sec:include>
                                <sec:include>.*_EXPORT1024_.*</sec:include>
                                <sec:include>.*_WITH_DES_.*</sec:include>
                                <sec:include>.*_WITH_NULL_.*</sec:include>
                                <sec:exclude>.*_DH_anon_.*</sec:exclude>
                        </sec:cipherSuitesFilter>
                </http:tlsClientParameters>
                <http:client AutoRedirect="true" Connection="Keep-Alive" />

        </http:conduit>

    <cxf:bus>
        <cxf:features>
            <cxf:logging/>
        </cxf:features>
    </cxf:bus> 
</beans>

And this is my test code:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations={"spring-context-cxf.xml"})
    public class NFeCXFTest {
        
        private static String XML_TESTE_STATUS =
                "<consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\"; 
versao=\"2.00\">" +
                "    <tpAmb>2</tpAmb>" +
                "    <cUF>31</cUF>" +
                "    <xServ>STATUS</xServ>" +
                "</consStatServ>";

        
        private NfeStatusServico2Soap12 statusServ;

        @Test
        public void commitNfeStatusServicoNF() {
                NfeCabecMsg cabec = new NfeCabecMsg();
                cabec.setCUF("31");
                cabec.setVersaoDados("2.00");
                
                NfeDadosMsg dados = new NfeDadosMsg();
        try {
                DocumentBuilderFactory dbf = 
DocumentBuilderFactory.newInstance();
                        DocumentBuilder db = dbf.newDocumentBuilder();
                InputSource is = new InputSource();
                is.setCharacterStream(new StringReader(XML_TESTE_STATUS));
                Document contentDoc = db.parse(is);
                dados.getContent().add(contentDoc.getDocumentElement());
                } catch (ParserConfigurationException e) {
                        throw new IllegalArgumentException("Erro ao empacotar o 
conteúdo, ", e);
                } catch (SAXException e) {
                        throw new IllegalArgumentException("Erro ao empacotar o 
conteúdo, ", e);
                } catch (IOException e) {
                        throw new IllegalArgumentException("Erro ao empacotar o 
conteúdo, ", e);
                }                       
                
                NfeStatusServicoNF2Result ret = 
this.statusServ.nfeStatusServicoNF2(dados, cabec);
                Object retVal = ret.getContent().iterator().next();
                System.out.println(retVal.getClass());
                System.out.println("***.***.***");

                try {
                        Result stringResult = new StringResult();
                        TransformerFactory tFactory = 
TransformerFactory.newInstance();
                        Transformer transformer = tFactory.newTransformer();
                        transformer.transform(new DOMSource((Node)retVal), 
stringResult);
                        System.out.println("O retorno é: " + stringResult);
                } catch (TransformerException e) {
                        throw new IllegalArgumentException("Impossível gerar 
nova requisição, ", e);
                }
        }
        
        @Resource(name="nfeStatusServicoMGWebService")
        public void setStatusServ(NfeStatusServico2Soap12 statusServ) {
                this.statusServ = statusServ;
        }

    }


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to