Я ищу обновить версию jaxb нашего проекта от 1 до 2. Кто-нибудь пытался сделать это в своих проектах и есть ли какие-либо советы, которые кто-то хочет сделать это? Я понимаю, что каждый проект уникален, я просто ищу общие советы.Обновление от Jaxb 1 до Jaxb 2
ответ
JAXB2 будет генерировать классы enum для простых ограничений типа. Любой Java-код, который опирается на установку строковых значений для использования этих типов, потребует использования соответствующего перечисления. Я думаю, что это здорово, так как вы получаете проверку типов при компиляции, а не во время проверки.
JABX2 использует типизированные списки вместо нетипизированных списков, поэтому вы можете удалить много кастингов из своего java-кода.
Поддержка даты значительно улучшена. IIRC, большинство типов дат в JAXB1 генерируют календарь, тогда как в JAXB2 они генерируют XMLGregorianCalendar.
Сегодня я читал учебное пособие по 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 генерирует только класс журнала. Это происходит регулярно во всех тегах этого примера, поэтому я предполагаю, что это происходит довольно регулярно в таких случаях. Однако было достаточно удалить суффикс «Тип», чтобы исправить компиляцию, без каких-либо изменений.