简体   繁体   中英

Soap Web Service migration from tomcat to Jboss 4.2.3

I have web service which is using JAXB as marshaller. When i was deplaying it on Tomcat server everything was ok, parsing, sending response - all good. When i changed to Jboss 4.2.3 i got following exception:

java.lang.ClassCastException: org.jboss.ws.core.soap.TextImpl cannot be cast to org.w3c.dom.Comment
    at org.apache.xml.serializer.TreeWalker.startNode(TreeWalker.java:287) ~[na:2.7.0]
    at org.apache.xml.serializer.TreeWalker.traverse(TreeWalker.java:143) ~[na:2.7.0]
    at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:389) ~[na:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.springframework.ws.server.endpoint.AbstractLoggingInterceptor.logMessageSource(AbstractLoggingInterceptor.java:149) ~[spring-ws-core-2.1.1.RELEASE.jar:na]
    at org.springframework.ws.server.endpoint.AbstractLoggingInterceptor.handleRequest(AbstractLoggingInterceptor.java:89) ~[spring-ws-core-2.1.1.RELEASE.jar:na]
    at org.springframework.ws.server.endpoint.interceptor.DelegatingSmartEndpointInterceptor.handleRequest(DelegatingSmartEndpointInterceptor.java:78) ~[spring-ws-core-2.1.1.RELEASE.jar:na]
    at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:224) [spring-ws-core-2.1.1.RELEASE.jar:na]
    at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:173) [spring-ws-core-2.1.1.RELEASE.jar:na]
    at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88) [spring-ws-core-2.1.1.RELEASE.jar:na]
    at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:59) [spring-ws-core-2.1.1.RELEASE.jar:na]
    at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:221) [spring-ws-core-2.1.1.RELEASE.jar:na]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) [spring-webmvc-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) [spring-webmvc-3.1.2.RELEASE.jar:3.1.2.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) [servlet-api.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) [servlet-api.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) [tmp124843923712011984jbossweb-service.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) [tmp124843923712011984jbossweb-service.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) [tmp124843923712011984jbossweb-service.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) [tmp124843923712011984jbossweb-service.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) [tmp1688167291209800062jbossweb.jar:4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181439)]
    at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]

Source Endpoint

@PayloadRoot(localPart = "chain", namespace = "http://jakisadres.com/caservice")
    @ResponsePayload
    public ChainResponse getChain(@RequestPayload Chain param) {

        ChainResponse response = new ChainResponse();
        response.setChainResult("cos");
        return response;
    }

DispatcherServlet

<sws:annotation-driven/>

    <context:annotation-config  />

    <bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
        <description>An endpoint mapping strategy that looks for @Endpoint and @PayloadRoot annotations.</description>
    </bean>

    <sws:interceptors>
        <bean class="org.springframework.ws.soap.server.endpoint.interceptor.SoapEnvelopeLoggingInterceptor"/>
    </sws:interceptors>


    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
            <property name="contextPath" value="pl.signet.famoc.ws.jaxb.marshaller" /> 
    </bean>
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>

    <bean class="org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter"
            p:messageFactory-ref="messageFactory"/>

    <bean class="org.springframework.ws.transport.http.WsdlDefinitionHandlerAdapter"/>

any clue what am i missing?

Ok, so i got answer, problem lies in Classloader of JBOSS. Implementation of server contains some of the classes which are used before my project dependencies, thats why JBOSS use default parser insteed of javax.xml.bind to parse JAXB.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM