Как настроить JBOSS для использования библиотеки xml в веб-приложении?

JBOSS бросает:

java.lang.NoSuchMethodError: org.w3c.dom.Document.getDocumentURI()Ljava/lang/String;

Ошибка при загрузке wsdl. Могу ли я настроить его так, чтобы он предпочитал библиотеку в моем WAR, а не системную или серверную библиотеку приложений?


person jon077    schedule 04.02.2009    source источник


Ответы (1)


Сервер приложений должен уже использовать любые JAR-файлы в WEB-INF/lib вместе с путями к системе и библиотеке сервера приложений — стандартный подход к этому заключается в том, что ClassLoader для WEB-INF/lib делегирует загрузку класса в библиотеку сервера приложений, которая делегирует загрузку класса серверной библиотеке, и только если родительский загрузчик классов не может найти класс, он пытается загрузить свои собственные классы.

Другими словами, если вы поместите один и тот же класс в WEB-INF/lib и библиотеку сервера приложений, всегда будет использоваться последний JAR. Это означает, что можно создавать конфликты, имея классы с одинаковыми именами, но разными версиями, доступными как в WEB-INF/lib, так и в библиотеке сервера приложений. Вы уверены, что это не то, что вызывает ваши проблемы? Сможете ли вы разрешить конфликт?

Некоторые серверы приложений (не уверен насчет JBoss, но я знаю, что WebSphere это позволяет) позволяют настроить загрузчик классов так, чтобы дочерний загрузчик проверялся в первую очередь (сначала дочерний, а не родительский), но этот тип конфигурации может вызвать другие проблемы.

person matt b    schedule 05.02.2009
comment
В конце концов я решил проблему, понизив свои библиотеки spring-ws до 1.0.4, которые работают с сервером JBOSS 4.0.2. Я провел много исследований загрузчиков классов в JBOSS: jboss.org/community/docs/DOC-9288. которые помогли понять и решить проблему. - person jon077; 05.02.2009