微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在应该继承命名空间时,cxf 会在没有命名空间前缀的元素上抛出解组错误

如何解决为什么在应该继承命名空间时,cxf 会在没有命名空间前缀的元素上抛出解组错误

我正在创建一个 SOAP 客户端,它在 Java 11 Spring Boot 服务器中运行并向 Java 8 服务器发出请求。我在带有 com.github.bjornvester.wsdl2java Gradle 插件版本 1.1 的 Gradle 6.9 版本中使用 cxf-rt-frontend-jaxws:3.4.3 和 cxf-rt-transports:3.4.3。

我的客户可以毫无问题地调用简单的回声测试 SOAP 操作。该服务传递包含单个字符串的请求对象并获取包含该字符串的响应对象。所以我知道基本连接正常,另一端正在响应。

当我调用一个没有输入的操作并在响应中返回一个对象列表时,我的问题就出现了。我收到此错误

org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"",local:"ProposalInfo"). Expected elements are <{http://V2.pub.proposal.server.ws.cayuse.com/}ProposalInfo>

我被告知其他系统调用这些操作没有问题。

我已经逐步完成了 cxf 和 JAXB 代码,并注意到 IntelliJ 显示了与 BranchingReaderSource 关联的文本。不确定这是一个真正的错误还是调试器试图在这个类上调用 toString() 的副作用(它没有这样的方法)。

Method threw 'java.lang.NullPointerException' exception. Cannot evaluate com.ctc.wstx.io.BranchingReaderSource.toString()

我还注意到一个名为 ValidationEventLocatorImpl 的类在这一行得到一个 NullPointerException,因为“toURL”为空。我认为这是因为 toURL 来自响应中的空前缀。

this.url = toURL(loc.getSystemId());

我曾尝试使用包装样式“false”,但这并没有改变任何东西。

我还尝试使用 TransformInInterceptor 将没有前缀的元素映射到所需的前缀,但这不起作用。似乎在拦截器运行之前会抛出解组错误

这是用于此服务的 WSDL;我正在调用的操作是 getUnpairedProposals。我还将 response 的副本附加到此操作 - 未正确解组的操作。我对这个响应的解读是,在 ns2:getUnPairedProposalsResponse 标签上定义的命名空间应该应用于诸如 .

之类的子元素

附加信息:

我多次尝试使用 TransformInterceptor 来映射元素:

  1. 为“getUnPairedProposalsResponse -> {http://V2.pub.proposal.server.ws.cayuse.com/}getUnPairedProposalsResponse”添加一个地图条目。这没有任何作用。

  2. 在 Phase.PRE_STREAM 插入 TransformInterceptor。也没有效果

  3. 将映射从 #1 更改为相同但添加了前缀 {},如 {}getUnPairedProposalsResponse -> {http://V2.pub.proposal.server.ws.cayuse.com/}getUnPairedProposalsResponse .这让我在 convertToqnamesMap 方法中 TransformUtils 第 128 行的 cxf 中出现了空指针异常。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?