当前位置: 首页 > 知识库问答 >
问题:

SOAP错误的detail元素中的结束信封标记有效吗?

吕嘉荣
2023-03-14

我们正在将一个应用程序从Oracle Weblogic Portal10.3.6转移到Jetty。在此过程中,jaxws-rt已经升级到2.2.8版本。以前,我们使用的是Weblogic嵌入的版本,我相信它是基于2.1.6或2.1.7版本的。

当JAX-WS试图解析来自我们正在使用的服务总线的一些SOAP错误时,我们现在遇到的问题是NullPointerExceptions。解析失败的原因是SOAP Fault包含包装在Fault detail元素中的整个原始响应消息,从而使SOAP消息带有两个信封标记。当解析器到达第一个soap:envelope的末尾并试图获取父节点时,它只返回null。它返回null,因为存在对“父节点instanceof SOAPDocument”的检查,即使parentNode是request元素,也返回true。

根据http://schemas.xmlsoap.org/soap/envelope/上的定义,detail元素可以包含任何内容。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header/>
  <soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Fault>
      <faultcode>soapenv:Server</faultcode>
      <faultstring>BEA-380001: Internal Server Error</faultstring>
      <faultactor>dummy-code</faultactor>
      <detail>
        <mock>
          <request>
            <soap:Envelope>
              <S:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
              </S:Header>
              <S:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
              </S:Body>
            </soap:Envelope>
          </request>
          <response>
            <ns4:responseState xmlns:ns2="urn:srv.sag.enterprise.fs.edb.com:domain:element:v13_1" xmlns:ns4="urn:enterprise.fs.edb.com:domain:common:v1" xmlns:ns3="urn:srv.sag.enterprise.fs.edb.com:ws:element:v13_1" xmlns:ns9="urn:srv.agr.enterprise.fs.edb.com:domain:engagement:v14:2" xmlns:ns5="urn:srv.agr.enterprise.fs.edb.com:domain:engagement:v14:3" xmlns:ns6="urn:srv.agr.enterprise.fs.edb.com:domain:alertcodes:v1" xmlns:ns7="urn:srv.agr.enterprise.fs.edb.com:ws:engagement:v14_3" xmlns:ns8="urn:corews.enterprise.fs.edb.com:domain:common:v1">
              <wsc:ErrorCode xmlns:wsc="http://mock.url/">68</wsc:ErrorCode>
              <wsc:Severity xmlns:wsc="http://mock.url">2</wsc:Severity>
              <wsc:ComponentId xmlns:wsc="http://mock.url">852</wsc:ComponentId>
              <wsc:StrErrorCode xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsc="http://mock.url"/>
              <wsc:Message xmlns:wsc="http://mock.url">Test message</wsc:Message>
              <wsc:NativeError xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsc="http://mock.url"/>
              <wsc:LogSequence xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsc="http://mock.url"/>
              <wsc:errorItem key="LogRef" value="1425988364991" xmlns:wsc="http://mock.url"/>
            </ns4:responseState>
          </response>
        </mock>
      </detail>
    </soap:Fault>
  </soap:Body>
</soapenv:Envelope>

共有1个答案

施敏达
2023-03-14

我不相信问题出在嵌套体上。这根本不是 ,而是一个响应体。您只能有 ,而不是两者兼而有之,或者在本例中,中的 使这成为一个非错误的SOAP响应,对于成功的(非错误的)响应,这可能不符合WSDL的模式。

作为 的子级和/或

的兄弟级,在架构方面应该会好得多。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header/>
  <soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Fault> <!-- This is the problem - Fault is nested below Body -->
      <faultcode>soapenv:Server</faultcode>

 类似资料:
  • 我试图打印道具的反应组件,但得到一个错误。请帮助: 片段: 我在等“你好,亲爱的!”然后下一行是“蓝色”。但是,我得到了这个错误。 错误:

  • 我有一个正在构建的用于访问Web服务的客户端。我正在使用一些JAXB生成的类(Netbean 6.9)来散集我的xml数据。 当试图从这个Web服务解组InputStream响应时,我会遇到意外的元素错误,如果我将响应保存到文件中,我也会遇到同样的意外元素错误。 使用保存到文件中的数据,我可以进入并删除SOAP标签(信封、正文、标头),然后毫无问题地运行解组。 我还没有真正找到一种方法让未婚夫忽略

  • 我试图用Python GEKKO解决一个最小线性规划优化问题。有两件事我想问你。 首先;我仔细检查了下面的链接,并试图理解Hedengren先生所做的更改。 Python-GEKKO-MINLP能源系统优化:如何构建二维阵列的中间产物 在这个例子的带有文本编辑器的. apm模型文件中;有“连接”。我理解那里的操作,但是我不知道代码中的哪一部分带来了这些连接。我试着遵循这个例子;我使用了类似的中间结

  • 我有下面的代码是react.js这是抛出一个错误 “相邻的JSX元素必须包装在一个封闭的标记中”。看起来React不接受相邻的相同标记如何显示表格数据?

  • Eclipse Java EE IDE Apache Tomcat V9.0 我通过new->Maven project创建了项目,并选择Maven原型作为maven-archetype-webapp。 web.xml内容如下所示。 eclipse中的项目结构如下所示

  • 当我为我的反应应用程序构建反应路线时,错误出现了 分析错误:相邻的JSX元素必须包装在封闭标记中。 下面是我的代码 谢谢