2008-11-06 3 views
3

Я ищу обновить версию jaxb нашего проекта от 1 до 2. Кто-нибудь пытался сделать это в своих проектах и ​​есть ли какие-либо советы, которые кто-то хочет сделать это? Я понимаю, что каждый проект уникален, я просто ищу общие советы.Обновление от Jaxb 1 до Jaxb 2

ответ

4

JAXB2 будет генерировать классы enum для простых ограничений типа. Любой Java-код, который опирается на установку строковых значений для использования этих типов, потребует использования соответствующего перечисления. Я думаю, что это здорово, так как вы получаете проверку типов при компиляции, а не во время проверки.

JABX2 использует типизированные списки вместо нетипизированных списков, поэтому вы можете удалить много кастингов из своего java-кода.

Поддержка даты значительно улучшена. IIRC, большинство типов дат в JAXB1 генерируют календарь, тогда как в JAXB2 они генерируют XMLGregorianCalendar.

1

Сегодня я читал учебное пособие по JAXB 1 и пытался скомпилировать пример с использованием JAXB 2.1 (как указано в JavaSE 6). Элементы в XSD используются неназванные типы, такие как:

<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> 

Для того, что я вижу, JAXB 1.0 генерируется класс Logging и класс LoggingType (со ссылкой на неназванного типа элемента каротажа), в то время как JAXB 2 генерирует только класс журнала. Это происходит регулярно во всех тегах этого примера, поэтому я предполагаю, что это происходит довольно регулярно в таких случаях. Однако было достаточно удалить суффикс «Тип», чтобы исправить компиляцию, без каких-либо изменений.