Исключение с EAR в WebLogic 9.2 и Xerces144.jar

Я использую приложение, в котором я поместил файл xerces144.jar в папку WEB-INF/lib файла войны внутри файла EAR. Когда я развертываю этот файл EAR на WebLogic Server и запускаю приложение, я получаю следующее исключение. Мы используем Spring MVC. Однако, если я разверну одно и то же приложение, используя только файл WAR, все будет работать нормально. Я также заметил, что если я удалю файлы xerces144.jar из файла EAR и разверну EAR, он будет развернут без каких-либо проблем. В чем разница между этим файлом xerces144.jar, когда он включен в WAR, и тем же WAR, включенным в EAR и развернутым.

2009-10-27 21:05:50,468 ERROR - Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: Parser configuration exception parsing XML from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is javax.xml.parsers.ParserConfigurationException: Unable to validate using XSD: Your JAXP provider [org.apache.xerces.jaxp.Document BuilderFactoryImpl@19b5ed8] does not support XML Schema. Are you running on Java
 1.4 with Apache Crimson? Upgrade to Apache Xerces (or Java 1.5) for full XSD support.
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadB 

person Community    schedule 28.10.2009    source источник


Ответы (2)


В чем разница между этим файлом xerces144.jar, когда он включен в WAR, и тем же WAR, включенным в EAR и развернутым.

Я думаю, что это как-то связано с загрузкой классов. При развертывании WAR или развертывании того же самого WAR внутри EAR Weblogic не создает одинаковую иерархию загрузчиков классов.

Самое странное, что Weblogic 9.x поставляется с Xerces 1.4.4 в 3rdparty.jar (по крайней мере, это верно для 9.1, было бы интересно проверить версию для 9.2). В этом легко убедиться, выполнив следующую команду в командной строке:

$ java -cp 3rdparty.jar org.apache.xerces.framework.Version

Честно говоря, я не знаю, что именно происходит и в чем на самом деле проблема, когда вы развертываете WAR внутри EAR с Xerces, упакованными в WAR. Насколько я понимаю, во всех сценариях, которые вы описали, где-то на пути к классам есть jar Xerces.

Если вы действительно хотите развернуть Xerces-144.jar в WAR, не могли бы вы попробовать установить prefer-web-inf-classes в weblogic.xml и проверить эту конфигурацию?

person Pascal Thivent    schedule 28.10.2009

Поскольку weblogic имеет ту же версию xerces, я считаю, что нет необходимости упаковывать ее в ваше приложение.

person Shreeni    schedule 10.11.2009