1

I see that this is some JDK bug? This one breaks my whole code... There are no other references nor any hints.. Can someone help me with this?

I am sending message to a web service endpoint and boom.. The code/classes were automatically generated. I am using OpenJDK 1.8

I am getting it in handleMessage when obtaining message from context.

@Override
    public synchronized boolean handleMessage(SOAPMessageContext context) {
        HttpSession session = ((javax.servlet.http.HttpServletRequest) context.get(MessageContext.SERVLET_REQUEST))
                .getSession();
        boolean isREsponse = false;
        SOAPMessage soapMsg = null;
        String messageId = null;
        Node docBody = null;
        try {
            soapMsg = context.getMessage();

It looks like:

java.lang.UnsupportedOperationException: Entity References are not allowed in SOAP documents
    at com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl.createEntityReference(SOAPDocumentImpl.java:148)
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.createEntityReference(SOAPPartImpl.java:437)
    at com.sun.xml.ws.api.message.saaj.SaajStaxWriter.writeEntityRef(SaajStaxWriter.java:237)
    at com.sun.xml.bind.v2.runtime.output.XMLStreamWriterOutput$XmlStreamOutWriterAdapter.writeEntityRef(XMLStreamWriterOutput.java:291)
    at com.sun.xml.bind.v2.runtime.output.XMLStreamWriterOutput$NewLineEscapeHandler.escape(XMLStreamWriterOutput.java:255)
    at com.sun.xml.bind.v2.runtime.output.XMLStreamWriterOutput.text(XMLStreamWriterOutput.java:165)
    at com.sun.xml.bind.v2.runtime.XMLSerializer.leafElement(XMLSerializer.java:328)
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$StringImplImpl.writeLeafElement(RuntimeBuiltinLeafInfoImpl.java:1070)
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$StringImplImpl.writeLeafElement(RuntimeBuiltinLeafInfoImpl.java:1049)
    at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.writeLeafElement(TransducedAccessor.java:254)
    at com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody(SingleElementLeafProperty.java:130)
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:360)
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696)
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:276)
    at com.sun.xml.bind.v2.runtime.BridgeImpl.marshal(BridgeImpl.java:94)
    at com.sun.xml.bind.api.Bridge.marshal(Bridge.java:111)
    at com.sun.xml.ws.db.glassfish.BridgeWrapper.marshal(BridgeWrapper.java:162)
    at com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:387)
    at com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:162)
    at com.sun.xml.ws.api.message.MessageWrapper.writeTo(MessageWrapper.java:196)
    at com.sun.xml.ws.api.message.saaj.SAAJFactory.readAsSOAPMessage(SAAJFactory.java:265)
    at com.sun.xml.ws.api.message.saaj.SAAJFactory.readAsSAAJ(SAAJFactory.java:192)
    at com.sun.xml.ws.api.message.saaj.SAAJFactory.read(SAAJFactory.java:181)
    at com.sun.xml.ws.message.AbstractMessageImpl.toSAAJ(AbstractMessageImpl.java:206)
    at com.sun.xml.ws.api.message.MessageWrapper.readAsSOAPMessage(MessageWrapper.java:146)
    at com.sun.xml.ws.handler.SOAPMessageContextImpl.getMessage(SOAPMessageContextImpl.java:55)
    at pl.sygnity.common.SisHandle.handleMessage(SisHandle.java:84)
    at pl.sygnity.common.SisHandle.handleMessage(SisHandle.java:1)
    at com.sun.xml.ws.handler.HandlerProcessor.callHandleMessageReverse(HandlerProcessor.java:311)
    at com.sun.xml.ws.handler.HandlerProcessor.callHandlersResponse(HandlerProcessor.java:182)
    at com.sun.xml.ws.handler.ServerSOAPHandlerTube.callHandlersOnResponse(ServerSOAPHandlerTube.java:136)
    at com.sun.xml.ws.handler.HandlerTube.processResponse(HandlerTube.java:144)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1117)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1020)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:989)
    at com.sun.xml.ws.api.pipe.Fiber.run(Fiber.java:783)
    at com.sun.xml.ws.api.pipe.Fiber.start(Fiber.java:390)
    at com.sun.xml.ws.server.WSEndpointImpl.processAsync(WSEndpointImpl.java:338)
    at com.sun.xml.ws.server.WSEndpointImpl.process(WSEndpointImpl.java:368)
    at com.sun.xml.ws.transport.http.HttpAdapter.invokeAsync(HttpAdapter.java:704)
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.invokeAsync(ServletAdapter.java:182)
    at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:131)
    at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:167)
    at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:51)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

I saw some other post: Latest Open JDK 8 JAXB library fails to unmarshal objects with properties that contain new line characters and also a Jira issue https://bugs.openjdk.java.net/browse/JDK-8210144 so I have downgraded Java version to jdk1.8.0_152 but still this bug occurs..

Anyone? Anything?

Mateusz Gebroski
  • 1,274
  • 3
  • 26
  • 57

1 Answers1

0

I am working .Net service which expects processing instructions such as : <?xml version="1.0" encoding="UTF-8" standalone="yes"?> to be in the middle of the SoapBody as a way to pass a generic payload when its unmarshalled by their ESB.

<xmlRequest><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <PayloadXml/>
</xmlRequest>

This is illegal. I suspect this migth be happening in your case.

In my case they should have used CDATA

<xmlRequest><![CDATA[
   <PayloadXml/>]]>
</xmlRequest>