【问题标题】:WSO2 ESB 4.8.1 ERROR White spaces are required between publicId and systemIdWSO2 ESB 4.8.1 错误 publicId 和 systemId 之间需要空格
【发布时间】:2016-02-19 17:45:39
【问题描述】:

我们正在使用 WSO2 ESB 4.8.1 和 JAVA 1.7.0_55。总是,当我们启动 ESB 并发出第一个请求时,我们会收到此错误:

TID: [0] [ESB] [2015-04-22 10:51:31,067] 错误 {org.apache.synapse.transport.passthru.util.RelayUtils} - 构建直通流时出错 {org.apache. synapse.transport.passthru.util.RelayUtils}
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,62]
消息:publicId 和 systemId 之间需要空格。
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
                在 org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
                在 org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:129)
                在 org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:107)
                在 org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:82)
                在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:68)
                在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
                在 org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
                在 org.apache.synapse.rest.Resource.process(Resource.java:297)
                在 org.apache.synapse.rest.API.process(API.java:298)
                在 org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76)
                在 org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:50)
                在 org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
                在 org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:488)
                在 org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:170)
                在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
                在 org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:225)
                在 org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
                在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
                在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
                在 java.lang.Thread.run(Thread.java:745)
引起:javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,62]
消息:publicId 和 systemId 之间需要空格。
                在 com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:598)
                在 org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
                在 org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34)
                在 org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
                在 org.apache.axiom.util.stax.dialect.SJSXPStreamReaderWrapper.next(SJSXPStreamReaderWrapper.java:138)
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
                ... 22 更多
TID:[0] [ESB] [2015-04-22 10:51:31,073] 错误 {org.apache.synapse.mediators.base.SequenceMediator} - 构建消息时出错 {org.apache.synapse.mediators.base.序列中介}
org.apache.axis2.AxisFault:构建直通流时出错
                在 org.apache.synapse.transport.passthru.util.RelayUtils.handleException(RelayUtils.java:236)
                在 org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:111)
                在 org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:82)
                在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:68)
                在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
                在 org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
                在 org.apache.synapse.rest.Resource.process(Resource.java:297)
                在 org.apache.synapse.rest.API.process(API.java:298)
                在 org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76)
                在 org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:50)
                在 org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
                在 org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:488)
                在 org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:170)
                在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
                在 org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:225)
                在 org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
                在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
                在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
                在 java.lang.Thread.run(Thread.java:745)
引起:org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,62]
消息:publicId 和 systemId 之间需要空格。
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
                在 org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
                在 org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:129)
                在 org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:107)
                ... 17 更多
引起:javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,62]
消息:publicId 和 systemId 之间需要空格。
                在 com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:598)
                在 org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
                在 org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34)
                在 org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
                在 org.apache.axiom.util.stax.dialect.SJSXPStreamReaderWrapper.next(SJSXPStreamReaderWrapper.java:138)
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
                在 org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
                ... 22 更多

在此之后,我们提出同样的要求,一切正常......

有什么建议可以避免这个错误吗?

【问题讨论】:

    标签: wso2 axis2 doctype synapse axiom


    【解决方案1】:

    分析带有此错误的响应,我们看到带有此消息的响应:

    "Error Code: 502 Proxy Error. The ISA Server denied the specified Uniform Resource Locator (URL).
    

    在调试源代码 ESB 后,我们在 'synapse-nhttp-transport' 类中看到了一个错误,虽然文件 /repository/conf/axis2/axis2.xml 的值包含在 'nonProxyHosts' 中,但第一次调用是总是通过代理发送。

    代理本身是切断流量的人,产生的错误是由它的响应引起的。

    为了修复已经创建了一个补丁,改变了它的类,如下所示:

    public HttpHost selectProxy(final HttpHost target) {
      if (this.proxy != null) {
        if (knownProxyHosts.contains(target.getHostName().toLowerCase(Locale.US))) {
          return this.proxy;
        } else if (knownProxyHosts.contains(target,getHostName().toLowerCase(Locale.US))) {
          return null;
        } else {
          // we are encountering this host for the first time
          if (!isByPass(target.getHostName().toLowerCase(Locale.US))) {
            return this.proxy;
          } else {
            return null;
          }   
        }
      }
      return this.proxy;
    }
    

    此外,已通知 WSO2 更正此错误。

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 2015-04-14
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多