我最近将 CXF 库从 2.2.11 升级到了 2.7.5。这是抛出 IllegalAnnotationsException 错误。我在错误下方列出了有关该应用程序的更多详细信息。
我使用 wsdl2java 和 xjc 从 xsd 文件生成绑定类。所以在这之后,我们在不同的包中有多个对象工厂类。一些对象工厂类具有相同的方法名称,但它们位于不同的包中。所以它按照 JAXB 的规范编译得很好。
但是在运行时,我得到以下错误。
org.apache.cxf.service.factory.ServiceConstructionException
Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 34 counts of IllegalAnnotationExceptions
The element name {urn:com.company.myproject.v4}DateEntered has more than one mapping.
this problem is related to the following location:
at public javax.xml.bind.JAXBElement com.company.myproject.specificmodule.v2.ObjectFactory.createDateEntered(javax.xml.datatype.XMLGregorianCalendar)
this problem is related to the following location:
at public javax.xml.bind.JAXBElement com.company.myproject.commontypes.v2.ObjectFactory.createDateEntered(javax.xml.datatype.XMLGregorianCalendar)
这在 CXF 2.2.11 中工作得非常好。不知道为什么这在最新的 CXF 中失败了。我尝试使用 CXF 2.7.5 生成 wsdl2java,但没有运气。通过自定义 JAXB 绑定以具有不同的方法名尝试了几个选项,但这也不起作用。
你能告诉我这里出了什么问题吗?我强烈认为有一些 CXF 设置可以解决问题,因为相同的对象工厂类在旧版本的 CXF 上运行良好。