簡體   English   中英

JAXB,CXF:沒有ObjectFactory和元素的@XmlElementDecl ...

[英]JAXB, CXF: There's no ObjectFactory with an @XmlElementDecl for the element … with

我正在使用JAXB和CXF創建WSDL第一個Web服務。 我沒有WSDL,所以我不能對它進行更改。 我使用ftp://ftp.ihe.net/TF_Implementation_Material/ITI/wsdl/PIXManager.wsdl作為我的WSDL。 我使用CXF 2.3.0生成Java類。

Java類生成很順利,但是當我嘗試在Web應用程序中運行它時,我收到錯誤

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 17 counts of IllegalAnnotationExceptions

17個計數的格式

There's no ObjectFactory with an @XmlElementDecl for the element {urn:hl7-org:v3}assignedDevice.
        this problem is related to the following location:
            at protected javax.xml.bind.JAXBElement org.hl7.v3.QUQIMT021001UV01AuthorOrPerformer.assignedDevice

當我去上面提到的類,即QUQIMT021001UV01AuthorOrPerformer並查看已分配設備的字段時,我看到了這個

@XmlElementRef(name = "assignedDevice", namespace = "urn:hl7-org:v3", type = JAXBElement.class)
protected JAXBElement<COCTMT090300UV01AssignedDevice> assignedDevice;

當我查看包的ObjectFactory時,我看到了這一點

private final static QName _COCTMT090303UV01AssignedDeviceAssignedDevice_QNAME = new QName("urn:hl7-org:v3", "assignedDevice");

我的所有17個錯誤都是相似的。 在我的codegen或運行時期間我可以做些什么來使我的服務工作?

您在運行時使用的Java版本是什么? 在使用Java 6運行時,我遇到了與OTA架構類似的問題。我通過對Maven配置進行以下更改來消除此問題:

  1. 使用帶有provided范圍的JAXB impl 2.1。*(而不是2.2)來匹配Java 6中包含的JAXB版本。
  2. 使用JAX-WS 2.1(而不是2.2)來匹配Java 6和JAXB 2.1.x.
  3. 將選項frontEnd添加到Maven cxf-codegen-plugin插件並將其設置為jaxws21 (或者如果在命令行上使用wsdl2java ,請使用“ -fe jaxws21 ”選項)。

生成類時,還會生成一個名為jaxb.properties的文件。 確保應用程序在運行時可以訪問此文件。 我有同樣的問題,這是由於maven打包:maven將不包括在src / main / java樹下面的包資源文件(如jaxb.properties),除非特別指示這樣做。 我使用帶有add-resource目標的org.codehaus.mojo:build-helper-maven-plugin做到了這一點。 希望這可以幫助

我遇到了這個類似的錯誤,原因是webservices生成的存根java類之間存在沖突。

如果以上答案不起作用,請嘗試尋找沖突。

一次添加一個存根並逐步添加。

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM