Как обрабатывать com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 7 случаев исключения IllegalAnnotationException - PullRequest
0 голосов
/ 03 сентября 2018

Я создал проект SOAP API на основе maven, но когда я пытаюсь запустить этот проект на сервере tomcat, получаю исключение ниже.

Exception Details

Согласно моему пониманию, я наблюдал что-то в XSD. XSD имеет 1 пространство имен dtv , и если в основном XSD есть какая-либо ссылка, которая имеет тип String и используется под тегом <xs:choice maxOccurs="unbounded">, то это вызывает эту проблему. Ниже приведен фрагмент XSD

<xs:element name="Layaway">
<xs:complexType>
  <xs:sequence>
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="ixretail:AccountNumber"/>
      <xs:element ref="ixretail:ItemID"/>
      <xs:element ref="ixretail:Description"/>
      <xs:element ref="ixretail:RegularSalesUnitPrice"/>
      <xs:element ref="ixretail:ActualSalesUnitPrice"/>
      <xs:element ref="ixretail:ExtendedAmount"/>
      <xs:element ref="ixretail:Quantity"/>
      <xs:element ref="dtv:OrderType"/>
      <xs:element ref="ixretail:MerchandiseHierarchy"/>
      <xs:element ref="ixretail:Associate"/>
      <xs:element ref="dtv:PercentageOfItem"/>
      <xs:element ref="ixretail:RetailPriceModifier"/>
      <xs:element ref="ixretail:Tax"/>
      <xs:element ref="ixretail:GiftReceiptFlag"/>
    </xs:choice>
  </xs:sequence>
  <xs:attribute name="ItemType" use="required" type="xs:NCName"/>
  <xs:attribute ref="dtv:Status" use="required"/>
</xs:complexType>

и определение переменной для пространства имен

<xs:element name="OrderType" type="xs:NCName"/>

Фрагмент кода класса ObjectFactory

private final static QName _OrderType_QNAME = new QName("http://www.datavantagecorp.com/xstore/", "OrderType");

 @XmlElementDecl(namespace = "http://www.datavantagecorp.com/xstore/", name = "OrderType")
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
public JAXBElement<String> createOrderType(String value) {
    return new JAXBElement<String>(_OrderType_QNAME, String.class, null, value);
* *} Тысяча двадцать-один

Ниже приведен фрагмент кода Layaway

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"accountNumberOrItemIDOrDescription"})
@XmlRootElement(name = "Layaway")
public class Layaway {
@XmlElementRefs({
    @XmlElementRef(name = "Associate", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = Associate.class),
    @XmlElementRef(name = "Description", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = JAXBElement.class),
    @XmlElementRef(name = "ActualSalesUnitPrice", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = JAXBElement.class),
    @XmlElementRef(name = "RetailPriceModifier", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = RetailPriceModifier.class),
    @XmlElementRef(name = "Tax", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = Tax.class),
    @XmlElementRef(name = "PercentageOfItem", namespace = "http://www.datavantagecorp.com/xstore/", type = PercentageOfItem.class),
    @XmlElementRef(name = "MerchandiseHierarchy", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = MerchandiseHierarchy.class),
    @XmlElementRef(name = "RegularSalesUnitPrice", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = JAXBElement.class),
    @XmlElementRef(name = "GiftReceiptFlag", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = JAXBElement.class),
    @XmlElementRef(name = "ItemID", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = JAXBElement.class),
    @XmlElementRef(name = "OrderType", namespace = "http://www.datavantagecorp.com/xstore/", type = JAXBElement.class),
    @XmlElementRef(name = "Quantity", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = JAXBElement.class),
    @XmlElementRef(name = "ExtendedAmount", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = JAXBElement.class),
    @XmlElementRef(name = "AccountNumber", namespace = "http://www.nrf-arts.org/IXRetail/namespace/", type = JAXBElement.class)
})
protected List<Object> accountNumberOrItemIDOrDescription;
public List<Object> getAccountNumberOrItemIDOrDescription() {
    if (accountNumberOrItemIDOrDescription == null) {
        accountNumberOrItemIDOrDescription = new ArrayList<Object>();
    }
    return this.accountNumberOrItemIDOrDescription;
}

Пожалуйста, прокомментируйте, если требуется какая-либо дополнительная информация. Я пробовал так много решений от StackOverflow, но у меня ничего не работает.

Пожалуйста, помогите решить эту проблему.

...