在wso2 ei我得到org.apache.axiom.om.OMException:javax.xml.stream.XMLStreamException:不允许DOCTYPE异常

时间:2018-05-24 07:50:52

标签: wso2 wso2esb

在调用端点后,我得到了响应

<!DOCTYPE html>
<.
..>

所以,它正在抛出异常

org.apache.axis2.AxisFault: Error while building Passthrough stream
        at org.apache.synapse.transport.passthru.util.RelayUtils.handleException(RelayUtils.java:384)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:196)
        at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:113)
        at org.apache.synapse.mediators.AbstractListMediator.buildMessage(AbstractListMediator.java:145)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:94)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:260)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.mediateFromContinuationStateStack(Axis2SynapseEnvironment.java:774)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:281)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:570)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:193)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:263)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
        at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
        at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:165)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:160)
        ... 14 more
Caused by: javax.xml.stream.XMLStreamException: DOCTYPE is not allowed
        at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:36)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
        ... 19 more

我认为在处理html主体时它正在处理为xml,因此它会抛出异常。

如何解决这个问题

1 个答案:

答案 0 :(得分:0)

在axis2.xml文件中,通过更新以下消息构建器和消息格式化程序,解决了上述问题。

  

消息构建器

 <messageBuilder contentType="text/html"
                        class="org.wso2.carbon.relay.BinaryRelayBuilder"/>
  

邮件格式化程序

<messageFormatter contentType="text/html"
                        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>