2015-10-26 16 views
6

seguente XSD (parziale):Come dire JAXB non generare @XmlSchemaType Annotazione

<xs:complexType name="Fruit"> 
    <xs:sequence> 
     <xs:element name="type" type="FruitType"/> 
    </xs:sequence> 
</xs:complexType> 
<xs:simpleType name="FruitType"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="ABC"> 
     </xs:enumeration> 
     <xs:enumeration value="DEF"> 
     </xs:enumeration> 
     <xs:enumeration value="GHI"> 
     </xs:enumeration> 
     <xs:enumeration value="JKL"> 
     </xs:enumeration> 
    </xs:restriction> 
</xs:simpleType> 

codice Generazione con xjc genererà il seguente codice Java (FruitType è un Enum):

@XmlElement(required = true) 
    @XmlSchemaType(name = "string") 
    protected FruitType fruit; 

quando si genera un WebService SOAP con JAX-WS seguente elemento verrà generato:

<xs:element name="type" type="xs:string"/> 

Quale ist ovviamente sbagliato. Mi aspetto che questo sia

<xs:element name="type" type="FruitType"/> 

Se elimino questa linea a mano

@XmlSchemaType(name = "string") 

nel mio tutto codice Java nel WSDL va bene:

<xs:element name="type" type="tns:FruitType"/> 

Quindi la domanda è : Come posso dire a JAXB di non generare @XmlSchemaType?

+3

prega scrivi la tua soluzione come risposta, è difficilmente percepibile all'interno della domanda. – Lia

+0

@dbaer La soluzione funziona per me. Si prega di trasformare questo in una risposta e otterrete upvotes. –

risposta

1

Invece di riferimento FruitType con il tipo di

<xs:complexType name="Fruit"> 
    <xs:sequence> 
     <xs:element name="type" type="FruitType"/> 
    </xs:sequence> 
</xs:complexType> 

il trucco ist di avere una linea simpleType:

<xs:complexType name="Fruit"> 
    <xs:sequence> 
     <xs:element name="type"> 
      <xs:simpleType> 
       <xs:restriction base="FruitType"/> 
      </xs:simpleType> 
     </xs:element> 
    </xs:sequence> 
</xs:complexType> 

questo genererà il file Java corretto e WSDL:

<xs:element name="type" type="tns:FruitType"/> 
Problemi correlati