我知道这是JDK的错误吗?这个破坏了我的整个代码..。没有其他的参考,也没有任何提示..有人能帮我一下吗?
我正在向web服务端点发送消息,然后..代码/类是自动生成的。我使用的是OpenJDK 1.8
从上下文中获取消息时,我在handleMessage中获取它。
@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();
看起来是这样的:
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)
我看到了其他一些帖子:Latest Open JDK 8 JAXB library fails to unmarshal objects with properties that contain new line characters和一个Jira问题https://bugs.openjdk.java.net/browse/JDK-8210144,所以我已经将Java版本降级为jdk1.8.0_152,但仍然发生了这个错误。
有没有人?什么都行?
发布于 2021-06-14 23:44:14
我正在工作的.Net服务,它希望处理指令,如:在中间的SoapBody作为一种方式,以传递一个通用的有效负载时,它解组由他们的企业服务总线。
<xmlRequest><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PayloadXml/>
</xmlRequest>
这是非法的。我怀疑这种情况会发生在你身上。
在我的例子中,他们应该使用CDATA
<xmlRequest><![CDATA[
<PayloadXml/>]]>
</xmlRequest>
https://stackoverflow.com/questions/63685269
复制