首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SOAP Web Services - java.lang.UnsupportedOperationException: SOAP文档中不允许实体引用

SOAP Web Services - java.lang.UnsupportedOperationException: SOAP文档中不允许实体引用
EN

Stack Overflow用户
提问于 2020-09-01 17:47:01
回答 1查看 493关注 0票数 1

我知道这是JDK的错误吗?这个破坏了我的整个代码..。没有其他的参考,也没有任何提示..有人能帮我一下吗?

我正在向web服务端点发送消息,然后..代码/类是自动生成的。我使用的是OpenJDK 1.8

从上下文中获取消息时,我在handleMessage中获取它。

代码语言:javascript
代码运行次数:0
运行
复制
@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();

看起来是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
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,但仍然发生了这个错误。

有没有人?什么都行?

EN

回答 1

Stack Overflow用户

发布于 2021-06-15 07:44:14

我正在工作的.Net服务,它希望处理指令,如:在中间的SoapBody作为一种方式,以传递一个通用的有效负载时,它解组由他们的企业服务总线。

代码语言:javascript
代码运行次数:0
运行
复制
<xmlRequest><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <PayloadXml/>
</xmlRequest>

这是非法的。我怀疑这种情况会发生在你身上。

在我的例子中,他们应该使用CDATA

代码语言:javascript
代码运行次数:0
运行
复制
<xmlRequest><![CDATA[
   <PayloadXml/>]]>
</xmlRequest>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63685269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档