Pergunta

Eu estou olhando para atualizar a versão jaxb do nosso projeto de 1 a 2. Alguém já tentou fazer isso em seus projetos e existem quaisquer dicas que qualquer pessoa que queira fazer isso? Eu entendo que cada projeto é único, só estou procurando dicas gerais.

Foi útil?

Solução

JAXB2 vai gerar classes enum para as restrições simpleType. Qualquer código Java que se baseia na definição de valores de cadeia para usos destes tipos exigirá que você use a enumeração adequado em vez. Eu acho que isso é ótimo, desde que você obter o typechecking ao compilar em vez de um aviso de validação em tempo de execução.

usos JABX2 digitado listas em vez de listas sem tipo, para que possa remover um monte de vazamento do seu código Java.

Suporte Data é muito melhorada. IIRC, a maioria dos tipos de data em JAXB1 gerar Calendar, enquanto que em JAXB2 geram XMLGregorianCalendar.

Outras dicas

Hoje eu estava lendo um tutorial sobre JAXB 1, e tentou compilar o exemplo usando JAXB 2.1 (como incluído no JavaSE 6). Os elementos no XSD usados ??tipos não identificadas, tais como:

<xs:element name="logging">
        <xs:complexType>
                <xs:attribute name="debug" type="xs:boolean" use="required"/>
                <xs:attribute name="file" type="xs:string" use="required"/>
        </xs:complexType>
</xs:element>

Para o que eu vejo, JAXB 1.0 gerou uma classe de log e uma classe LoggingType (referindo-se ao tipo sem nome do elemento logging), enquanto JAXB 2 gera apenas uma classe de log. Isso acontece regularmente em todas as tags deste exemplo, então eu acho que isso acontece com bastante regularidade em tais casos. No entanto, é suficiente para remover o sufixo "Type" para corrigir a compilação, sem qualquer necessidade de outras alterações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top