当我尝试在RAD中发布我的工作区时,我收到此错误“两个类具有相同的xml类型名称”,可能是因为相同的类名存在于同一个包中,但存在于两个不同的jar中。并且看起来@XmlType注释需要在这些类的源中具有其属性名称和命名空间的不同值。我尝试在Apache CXF中使用wsdl2java,但我无法使其生成此命名空间属性。我试着摆弄-p package选项,但这只是将生成的源放在指定的包中。
如何为wsdl中遇到的每个元素生成此命名空间属性? TIA。
答案 0 :(得分:9)
CXF JAXB JAXBEncoderDecoder unmarshalling error : unexpected element when having qualified elements
我知道wsdl2java有一个参数-xjc-npa帮助了我。 这会将XmlType.name和XmlType.namespace注释添加到生成的类中,因此如果您具有相同的类名但在不同的名称空间中它将不会成为问题
答案 1 :(得分:1)
我遇到了一个名为“SubmitDataResponse”的对象,我将其用作名为“submitData”的Web服务方法的返回对象。当我尝试重命名对象时,错误就消失了。在我看来,CXF正在根据方法名称创建自己的返回对象(在本例中为submitData() - >“SubmitDataResponse”)。您可能想尝试重命名该类,看看您是否遇到同样的问题。也许有人可以通过一种方式来保持我们的类以我们想要的方式命名(可能带有一些注释)。
我希望这会有所帮助。