4 Replies Latest reply on Mar 13, 2006 2:18 PM by msell

    Error with new JBossWS

      I recently switched over to using JBossWS from WS4EE to take advantage of the speedier serialization/deserialization. I'm very impressed with the modifications so far. I did however run into an issue with the new soap stack. I have a String property on one of my bean objects that gets returned from a webservice call. The value of that String property can have characters like '&' in it. I did not have any issues with WS4EE, but now I'm getting the following exception:

      12:34:19,853 ERROR [STDERR] [Fatal Error] :1:1014: The entity name must immediately follow the '&' in the entity reference.
      12:34:19,853 ERROR [SOAPFaultExceptionHelper] SOAP request exception
      javax.xml.rpc.JAXRPCException: Cannot create or send response message
       at org.jboss.ws.server.ServiceEndpoint.postProcessResponse(ServiceEndpoint.java:298)
       at org.jboss.ws.server.ServiceEndpoint.handleRequest(ServiceEndpoint.java:228)
       at org.jboss.ws.server.ServiceEndpointServlet.doPost(ServiceEndpointServlet.java:110)
       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.CustomPrincipalValve.invoke(CustomPrincipalValve.java:54)
       at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:174)
       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:868)
       at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
       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)
      Caused by: javax.xml.rpc.JAXRPCException: java.io.IOException: org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.
       at org.jboss.ws.soap.SOAPContentElement.expandToDOM(SOAPContentElement.java:893)
       at org.jboss.ws.soap.SOAPContentElement.getChildNodes(SOAPContentElement.java:761)
       at org.jboss.util.xml.DOMWriter.printInternal(DOMWriter.java:166)
       at org.jboss.util.xml.DOMWriter.printInternal(DOMWriter.java:225)
       at org.jboss.util.xml.DOMWriter.printInternal(DOMWriter.java:225)
       at org.jboss.util.xml.DOMWriter.print(DOMWriter.java:144)
       at org.jboss.util.xml.DOMWriter.printNode(DOMWriter.java:93)
       at org.jboss.ws.server.ServiceEndpoint.postProcessResponse(ServiceEndpoint.java:292)
       ... 23 more
      Caused by: java.io.IOException: org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.
       at org.jboss.util.xml.DOMUtils.parse(DOMUtils.java:117)
       at org.jboss.util.xml.DOMUtils.parse(DOMUtils.java:96)
       at org.jboss.ws.soap.SOAPContentElement.expandToDOM(SOAPContentElement.java:849)
       ... 30 more


      Is there something I have to do to ensure that those invalid XML characters get properly handled?