Archive for March 23rd, 2007

Quando eu trabalhei em um grande projeto na Caixa em Brasília, usavamos o JAXB 1.x para fazer o data binding(marshall/unmarshall) de objetos Java para XML e vice-versa.

Componentes como o XStream da CodeHaus, facilitam bastante a vida, mas ainda é complicado dependendo do cliente homologar uma solução como esta. Sendo assim, vamos ao padrão, já que o JAXB faz parter do WebService Developer Pack, ou seja: Padrão estabelecidos em JSR e controlado pelos mebros no JCP, entre as principais melhorias, podemos citar:

  • Bibliotecas de Runtime menores economizando assim no uso de memória.
  • Muito menos classes são geradas se compararmos com o JAXB1.0. Para cada tipo complexo, a nova versão gera uma classe para direto ao invés de criar uma interface e uma implementação.
  • Suporte a todos os tipos de XML Schema.
  • Adição de tipos parametrizados.
  • Suporte a bind Java-to-XML com as anotações do pacote: javax.xml.bind.annotation package.

Sendo assim, vamos a um pequeno tutorial, para mostrar como pode ser simples realizar o binding de objeto para XML e vice versa.

  1. Faça o Downlaod do JAXB no site: http://jaxb.dev.java.net
  2. Execute o JAR que é o instalador: java -jar jaxb.jar e instale num lugar do tipo /opt/java/jaxb ou c:/java/jaxb
  3. Não vou citar IDE’s, por isso criei toda uma estrutura baseada em ANT, sendo assim criei um arquivo chamdo de build.properties[1] que fornece informações para o build.xml, já que há uma TASK do JAXB, entao vamos usá-la para que esta realize as tarefas que desejamos, que é gerar as classes que vão estar visíveis pro contexto do JAXB[2].
  4. A Estrutura do projeto é simples:
  1. src (pasta com fontes)
  2. gen-src (pasta com os fontes gerados pelo JAXB)
  3. classes (pasta com as classes compiladas)
  4. schema (caso você queira guardar os XSD’s aqui[3])
  5. lib (pasta com bibliotecas)
  • Rode o Script ant
  • Veja os Arquivos gerados [4]
  • Execute a Classe Main [5]
  • Referências

    (more…)