4 Replies Latest reply on Jan 21, 2013 7:19 AM by flp05

    Content root name does not match element name

    flp05

      Hi all,

       

      During the migration from Jboss AS 4.0.2 to Jboss AS 7.1.1, I'm getting an exception when using a web service. The application is both client and server of the webservice.

       

      Has anyone got this error before?

      Is there an option on Jboss to disable the XML validation?

       

      Stacktrace:

      10:12:52,948 ERROR [org.jboss.ws.core.jaxrpc.SOAPFaultHelperJAXRPC] (http-localhost-127.0.0.1-8080-1) SOAP request exception: org.jboss.ws.WSException: Content root name does not match element name: {http://address.example.com/}UploadImagesTO_1 != UploadImagesTO_1

          at org.jboss.ws.core.soap.XMLContent.expandContainerChildren(XMLContent.java:314)

          at org.jboss.ws.core.soap.XMLContent.transitionTo(XMLContent.java:108)

          at org.jboss.ws.core.soap.SOAPContentElement.transitionTo(SOAPContentElement.java:146)

          at org.jboss.ws.core.soap.SOAPContentElement.expandToDOM(SOAPContentElement.java:535)

          at org.jboss.ws.core.soap.SOAPContentElement.getChildNodes(SOAPContentElement.java:484)

          at org.jboss.ws.common.DOMWriter.printInternal(DOMWriter.java:264)

          at org.jboss.ws.common.DOMWriter.printInternal(DOMWriter.java:388)

          at org.jboss.ws.common.DOMWriter.printInternal(DOMWriter.java:388)

          at org.jboss.ws.common.DOMWriter.print(DOMWriter.java:236)

          at org.jboss.ws.common.DOMWriter.printNode(DOMWriter.java:155)

          at org.jboss.ws.core.soap.HRefInlineHandler.processHRefs(HRefInlineHandler.java:63)

          at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPBody(EnvelopeBuilderDOM.java:281)

          at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:172)

          at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:101)

          at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:309)

          at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:196)

          at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:512)

          at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:318)

          at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:224)

          at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:149)

          at org.jboss.ws.common.servlet.AbstractEndpointServlet.service(AbstractEndpointServlet.java:91)

          at org.jboss.wsf.stack.jbws.EndpointServlet.service(EndpointServlet.java:162)

          at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140) [jbossws-spi-2.0.3.GA.jar:2.0.3.GA]

          at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]

          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]

          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]

          at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]

          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]

          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]

          at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:397) [jbossweb-7.0.13.Final.jar:]

          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]

          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]

          at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]

          at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]

          at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]

          at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_07]

       

      Thanks

        • 1. Re: Content root name does not match element name
          nickarls

          Can you use SoapUI or something to grab a sample request/response?

          • 2. Re: Content root name does not match element name
            flp05

            Thanks Nicklas.

             

            I'm on it. I will post the results in a few minutes.

             

            By the fact that the same web service was working on Jboss 4, I was hoping more on a Jboss configuration which enables/disables xml validation on SOAP requests/responses. Am I wrong?

             

            Thanks

            • 3. Re: Content root name does not match element name
              nickarls

              Hard to tell but the information might be more informative to someone else who've done more migrations.

               

              Sometimes the AS has been slack and allowed stuff that really shouldn't pass and later versions have become more stringent

              • 4. Re: Content root name does not match element name
                flp05

                So, using SoapUI I was able to detect that my request was being badly constructed.

                 

                My WSDL defines one single operation named "upload".

                 

                So, my request should be something like this:

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

                <env:Envelope ...>

                <env:Header/>

                <env:Body>

                <web:upload>

                ....       

                </web:upload>

                </env:Body>

                </env:Envelope>

                 

                But, instead, he request is being built like this>

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

                <env:Envelope ...>

                <env:Header/>

                <env:Body>

                <UploadImagesService xmlns="http://address.example.com/">

                ....       

                </UploadImagesService>

                </env:Body>

                </env:Envelope>

                So, the request is being built using the service name (UploadImagesService) instead of the operation name (upload).

                Any ideas how was this working on Jboss 4? Is there a way to put it to work without changing the request?

                 

                Thanks