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

Java CXF服务调用失败,出现意外命名空间上的解组错误,java,web-services,wsdl,cxf,Java,Web Services,Wsdl,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:/

我突然遇到了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”


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

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

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

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

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

在迁移到Java8和Tomcat8的过程中,这个问题有时会在某些机器上出现,但在其他机器上不会。我们正在使用的VM映像的某些方面会影响加载顺序。这并不是说我们依赖于加载顺序,但我们只是没有看到碰撞

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


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

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

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

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

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

在迁移到Java8和Tomcat8的过程中,这个问题有时会在某些机器上出现,但在其他机器上不会。我们正在使用的VM映像的某些方面会影响加载顺序。这并不是说我们依赖于加载顺序,但我们只是没有看到碰撞

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

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