有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java CXF服务调用失败,出现意外命名空间上的解组错误

我突然遇到了CXF(2.7.18)的问题。我在Tomcat8.0.28和JDK1.8.0_66下运行

问题是,最近我们开始看到一些问题,它无法接受具有适当头的服务调用。问题是它在某些系统上有效,但在其他系统上无效

故障表现如下:

Unmarshalling Error: unexpected element (uri:"http://www.namedomain.com", local:"loginRequest"). Expected elements are <{https://www.namedomain.com}loginRequest>

请注意,意外元素是正确命名的元素。“预期”元素不正确-CXF或管道中的其他内容正在将命名空间URI重新映射到“https”

有什么线索可能导致这种情况以及如何纠正它吗


共 (1) 个答案

  1. # 1 楼答案

    我能够确定这个问题。这是一个在我们之前的测试中从未出现过的奇怪现象

    这里是总的总结。使用此WSDL的应用程序根据定义生成绑定,并将其放置在包的com中。福'

    该应用程序还依赖于另一个WSDL端点,但该模块是单独构建的,但有一个冲突的包名“com”。福'

    在我们之前的测试中,这从未出现过

    在迁移到Java8&;在Tomcat 8中,这个问题在某些盒子上间歇性出现,但在其他盒子上没有。我们正在使用的VM映像的某些方面会影响加载顺序。这并不是说我们依赖于加载顺序,但我们只是没有看到碰撞

    外部库和应用程序库都有一个包信息。XmlSchema注释的命名空间定义冲突的java。在Java8/Tomcat8下,加载顺序在某个时刻“改变”,从而使冲突变得明显。加载的第一个包信息被缓存,导致错误

    解决方案是改变应用程序生成的WSDL绑定代码,将其放入另一个包中并避免冲突