JAXB 2 в Oracle 10g Webapp

У меня есть веб-приложение, использующее JAXB 2. При развертывании на Сервер приложений Oracle 10g я получаю ошибки, как только пытаюсь маршалировать файл XML. Оказывается, Oracle включает JAXB 1 в банку, скрытно переименованную в «xml.jar».

Как я могу заставить мое веб-приложение использовать версию jaxb jar-файлов, которые я развернул в WEB-INF/lib, вместо той, которую Oracle ввел в путь к классам, в идеале через конфигурацию, а не возиться с загрузчиками классов в моем коде?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
1 458
3

Ответы 3

Используйте JVM, отличную от вашего экземпляра Oracle, и убедитесь, что их библиотеки не находятся в вашем пути к классам.

Не думайте, что это действительно вариант - веб-приложение развертывается в контейнере приложений Oracle 10g и поэтому привязано к этой JVM.

alexmcchessers 25.09.2008 14:02

Я полагаю, вы используете бывший сервер BEA Weblogic Server?

Вы можете добавить файл weblogic.xml в свой WEB-INF, который выглядит следующим образом:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
    <container-descriptor>
   <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
</weblogic-web-app>

(в ответ на комментарий, репутации мне пока не хватает :-))

Действительно, DLL ад, потому что это «все или ничего». Кажется, есть другой, более условный способ, описанный здесь. Хотя сам не пробовал ...

Хороший ответ, который, вероятно, решил бы мою проблему в любом нормальном мире. Оказывается, раньше у нас была такая настройка (я не понимал, что 10g был основан на Weblogic), но один из моей команды сказал мне, что он был отключен, потому что он что-то сломал. DLL ад сначала. Вздох. Спасибо, в любом случае.

alexmcchessers 25.09.2008 14:31

Хорошо, чтобы противоречить себе, я попытался настроить 10g, чтобы предпочитать мои классы webapp, и теперь получаю другую ошибку - см. Этот вопрос: stackoverflow.com/questions/133993/…

alexmcchessers 25.09.2008 19:30

Если вы все еще используете Oracle OC4J, включите его orion-application.xml в файл META-INF вашего EAR. Это должно выглядеть примерно так ...

<?xml version = "1.0" encoding = "UTF-8"?>
<orion-application>
    <imported-shared-libraries>
        <remove-inherited name = "skip.this.package"/>
    </imported-shared-libraries>
</orion-application>

... с пакетом, который нужно пропустить.

Другие вопросы по теме