2008-09-25 14 views
2

У меня есть веб-приложение, использующее JAXB 2. При развертывании на сервере приложений Oracle 10g я получаю ошибки, как только пытаюсь маршалировать XML-файл. Оказывается, Oracle включает JAXB 1 в банку, тайно переименованную в «xml.jar». Кто-нибудь знает, как я могу заставить мой webapp использовать версию jaxb jars, которую я развернул в web-inf/lib, по сравнению с тем, что Oracle запустило в путь к классам, в идеале - через конфигурацию, а не в том, чтобы путаться с загрузчиками классов в моем коде ,JAXB 2 в Oracle 10g Webapp

ответ

0

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

+0

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

2

Предполагаете, вы используете бывший сервер 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 ад, потому что это «все или ничего». Кажется, что есть другой, более условный способ, описанный here. Не пробовал это сам, хотя ...

+0

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

+0

Хорошо, чтобы противоречить самому себе, я попытался настроить 10g, чтобы предпочесть мои классы webapp, а теперь получить другую ошибку - см. Этот вопрос: http://stackoverflow.com/questions/133993/loader-constraints-violated-when-linking -javaxxmlnamespaceqname-класса из-Weba – alexmcchessers

1

Если вы все еще используете OC4J от Oracle, включите их 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> 

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