Я создал простой сервис RESTful для Spring3, Hibernate3 / (JPA2), размещенный на Tomcat6, который использует JAXB2 для упорядочения результатов. (Он использует аннотированные pojos.) Мне нужно было использовать определенные префиксы пространства имен, поэтому я написал собственный com.sun.xml.bind.marshaller.NamespacePrefixMapper. Я включил банки JAXB2 RI в свое приложение и все работало нормально.
Тогда кто-то сказал, что это здорово, нам нужно разместить его и под WebLogic 11g (10.3.3). Нет проблем, я создал специальные дескрипторы развертывания weblogic, чтобы предпочесть jar приложения, переименовал мой persistence.xml и обернул WAR в EAR с jar JPA2. Работало отлично, почти.
К сожалению, наш сервер WebLogic использует пользовательскую область безопасности, которая также использует JAXB и вызывает конфликты с моим приложением. Поэтому я удалил баночки JAXB из приложения, и он отлично работает в WebLogic. Конечно, он больше не работает под Tomcat, если я не добавлю банки JAXB в Tomcat. Я бы хотел этого избежать.
Итак, мои вопросы ... Я прочитал довольно много постов о stackoverflow, которые содержат множество мнений / разногласий относительно использования "внутренней" реализации JAXB2 от sun против упаковки RI с вашим приложением. Нет ли еще чистого решения этой проблемы? Поддерживает ли мой стек другой способ пользовательского сопоставления моих префиксов пространства имен без включения RI JAXB2? Могу ли я безопасно использовать «внутренний» Java6 JAXB NamespacePrefixMapper, или он будет приходить и уходить с различными выпусками Java? Spring3 предлагает другое решение? Какова реальная история реализации Java6 JAXB2? Это только для внутреннего использования Sun (Oracle)?
Спасибо.