2008-09-25 9 views
5

У нас есть веб-приложение, которое можно развернуть на многих серверах приложений, включая Oracle 10g. Однако на этой платформе мы сталкиваемся с проблемами класса. Webapp использует JAXB 2, но Oracle 10g поставляется с JAXB 1, и это вызывает ошибки. Чтобы обойти это, мы настроили Oracle, чтобы предпочесть классы в нашем веб-приложении, но теперь мы получаем вышеупомянутую ошибку при попытке создать экземпляр контекста JAXB.«Ограничения загрузчика, которые были нарушены при связывании javax/xml/namespace/QName class» из webapp на Oracle 10g

Исследуя исключение «ограничений, связанных с загрузчиком», похоже, оно бросается, когда класс, который был загружен одним загрузчиком классов, пытается получить доступ к тому, что является приватным пакетом в том же пакете, но загружен другим загрузчиком классов. Я попытался удалить все банки в нашем webapp, которые включают javax.xml.namespace.QName, и проверили, что это экземпляр, включенный в Oracle, который подбирается, но ошибка все еще происходит. Есть идеи?

(Это является продолжением на из earlier question относительно 10г и JAXB 2.)

+0

Я знаю, что это происходит, но нашли ли вы работоспособное решение? – jlpp 2011-01-31 23:56:17

+0

Что вы нашли? – 2013-06-12 13:23:11

ответ

1

Какую версию Java вы используете? Новейшие версии поставляются с этим классом в rt.jar.

0

Может быть, это совершенно не связано, но я помню проблему, с которой был связан Weblogic с тем же классом. Причиной проблемы был измененный серийный идентификатор класса (Sun случайно изменил его). Обходной путь состоял в предоставлении в JVM -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID = 1.0.

Не может быть такой же проблемы, просто заблуждение? Попробуй.

Смотрите здесь: http://forums.bea.com/thread.jspa?threadID=600014563

3

Этот класс в половине библиотек WS Java там. Очень легко загрузить его из нескольких загрузчиков классов, а затем сравнить их, вызвав LinkageError.

Одним из эффективного (но кувалда) метод для отслеживания этого вниз, чтобы изменить ClassLoader из источника Java дамп, который баночкой этого конкретный класс загружается из во время загрузки, то снабдите ваши загрузочный путь к классам с модифицированной версией:

-Xbootclasspath/p:/path/to/hackedBin

0

Можете ли вы просто обновить банку JAXB под папкой lib сервера приложений?