I have a webapp that uses Spring web services. It works well when compiled with Java 6 and run in Jboss run with Java 6. However, I am required to support Java 5 and having issues when compiling with Java 5 and running in Java 5 / Jboss. I am using the latest patch of Java 5 (12) and jboss-4.0.5.GA.
I am using a XmlBeansMarshaller to marshal my results. The problem occurs during the marshalling step. I get a different exception depending on whether I attempt to use SOAP 1.1 or 1.2, with either Saaj or Axiom. But I believe all the errors are related because they are similar.
Does anyone have an idea of what may be causing this? I have debugged it and stepped through everything, but I can't figure out why the SOAP is built incorrectly.
Here are the stack traces I've seen:
Here is my spring-ws-servlet.xml file:Code:Axiom, SOAP 1.2 2007-10-17 10:35:47,787 [http-0.0.0.0-18573-2] ERROR org.apache.commons.logging.impl.Log4JLogger - Servlet.service() for servlet spring-ws threw exception org.apache.axiom.soap.SOAPProcessingException: Disallowed element found inside Envelope : {http://schemas.xmlsoap.org/soap/envelope/}Header at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:266) at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:180) at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:163) at org.apache.axiom.om.impl.llom.OMElementImpl.buildNext(OMElementImpl.java:552) at org.apache.axiom.om.impl.llom.OMNodeImpl.getNextOMSibling(OMNodeImpl.java:134) at org.apache.axiom.om.impl.llom.OMElementImpl.getFirstElement(OMElementImpl.java:828) at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.getHeader(SOAPEnvelopeImpl.java:81) at org.springframework.ws.soap.axiom.AxiomSoapEnvelope.getHeader(AxiomSoapEnvelope.java:33) at org.springframework.ws.soap.AbstractSoapMessage.getSoapHeader(AbstractSoapMessage.java:41) at org.springframework.ws.soap.server.SoapMessageDispatcher.handleHeaders(SoapMessageDispatcher.java:102) at org.springframework.ws.soap.server.SoapMessageDispatcher.handleRequest(SoapMessageDispatcher.java:92) at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:195) at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:158) at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:87) at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:57) at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:158) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:475) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:440) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Thread.java:595) Axiom, Soap 1.1 2007-10-17 10:48:57,706 [http-0.0.0.0-18573-2] ERROR org.apache.commons.logging.impl.Log4JLogger - Servlet.service() for servlet spring-ws threw exception java.lang.IllegalArgumentException: Local name may not be null or empty at org.apache.axiom.om.impl.llom.OMAttributeImpl.<init>(OMAttributeImpl.java:52) at org.apache.axiom.om.impl.llom.OMElementImpl.addAttribute(OMElementImpl.java:532) at org.apache.axiom.om.impl.builder.SAXOMBuilder.startElement(SAXOMBuilder.java:111) at org.apache.xmlbeans.impl.store.Saver$SaxSaver.emitElement(Saver.java:3363) at org.apache.xmlbeans.impl.store.Saver.processElement(Saver.java:456) at org.apache.xmlbeans.impl.store.Saver.process(Saver.java:307) at org.apache.xmlbeans.impl.store.Saver$SaxSaver.<init>(Saver.java:3280) at org.apache.xmlbeans.impl.store.Cursor._save(Cursor.java:559) at org.apache.xmlbeans.impl.store.Cursor.save(Cursor.java:2508) at org.apache.xmlbeans.impl.values.XmlObjectBase.save(XmlObjectBase.java:174) at org.springframework.oxm.xmlbeans.XmlBeansMarshaller.marshalSaxHandlers(XmlBeansMarshaller.java:110) at org.springframework.oxm.AbstractMarshaller.marshalSaxResult(AbstractMarshaller.java:231) at org.springframework.oxm.AbstractMarshaller.marshal(AbstractMarshaller.java:94) at org.springframework.ws.support.MarshallingUtils.marshal(MarshallingUtils.java:84) at org.springframework.ws.server.endpoint.adapter.MarshallingMethodEndpointAdapter.marshalResponse(MarshallingMethodEndpointAdapter.java:156) at org.springframework.ws.server.endpoint.adapter.MarshallingMethodEndpointAdapter.invokeInternal(MarshallingMethodEndpointAdapter.java:139) at org.springframework.ws.server.endpoint.adapter.AbstractMethodEndpointAdapter.invoke(AbstractMethodEndpointAdapter.java:58) at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:211) ...same as above from here... Saaj, Soap 1.1 2007-10-17 11:05:21,418 [http-0.0.0.0-18573-2] ERROR org.apache.commons.logging.impl.Log4JLogger - Servlet.service() for servlet spring-ws threw exception java.lang.IllegalArgumentException: SOAPElementImpl expected at org.jboss.ws.soap.SOAPBodyImpl.convertToBodyElement(SOAPBodyImpl.java:97) at org.jboss.ws.soap.SOAPBodyImpl.appendChild(SOAPBodyImpl.java:165) at org.springframework.oxm.xmlbeans.XmlBeansMarshaller.marshalDomNode(XmlBeansMarshaller.java:98) at org.springframework.oxm.AbstractMarshaller.marshalDomResult(AbstractMarshaller.java:192) at org.springframework.oxm.AbstractMarshaller.marshal(AbstractMarshaller.java:88) at org.springframework.ws.support.MarshallingUtils.marshal(MarshallingUtils.java:84) at org.springframework.ws.server.endpoint.adapter.MarshallingMethodEndpointAdapter.marshalResponse(MarshallingMethodEndpointAdapter.java:156) at org.springframework.ws.server.endpoint.adapter.MarshallingMethodEndpointAdapter.invokeInternal(MarshallingMethodEndpointAdapter.java:139) at org.springframework.ws.server.endpoint.adapter.AbstractMethodEndpointAdapter.invoke(AbstractMethodEndpointAdapter.java:58) at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:211) ...same as above from here...
Code:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="xmlbeansMarshaller" class="org.springframework.oxm.xmlbeans.XmlBeansMarshaller"/> <bean id="mapToEntitiesEndpoint" class="mypackage.MapToEntitiesEndpoint"> <property name="mapToEntitiesService" ref="mapToEntitiesService"/> </bean> <bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/> <bean class="org.springframework.ws.server.endpoint.adapter.MarshallingMethodEndpointAdapter"> <property name="marshaller" ref="xmlbeansMarshaller"/> <property name="unmarshaller" ref="xmlbeansMarshaller"/> </bean> <bean class="org.springframework.ws.soap.server.endpoint.mapping.SoapActionAnnotationMethodEndpointMapping"/> <bean id="mapToEntities" class="org.springframework.ws.wsdl.wsdl11.SimpleWsdl11Definition"> <property name="wsdl" value="/WEB-INF/wsdl/MapToEntities.wsdl"/> </bean> <bean class="mypackage.mapToEntities.service.ScriptFaultExceptionResolver"/> </beans>


Reply With Quote