2013-11-15 13 views
6

Weblogic 서버를 9에서 10.3.6으로 업그레이드 중입니다. 내 귀에 응용 프로그램을 배포하려고 할 때 예외가 발생했습니다..ClassCastException : org.apache.xerces.jaxp.DocumentBuilderFactoryImpl을 javax.xml.parsers.DocumentBuilderFactory로 캐스팅 할 수 없습니다.

Caused By: java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to javax.xml.parsers.DocumentBuilderFactory 
    at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:123) 
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.createDocumentBuilderFactory(DefaultDocumentLoader.java:89) 
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:70) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113) 
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123) 
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:423) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:353) 
    at org.springframework.context.access.ContextSingletonBeanFactoryLocator.initializeDefinition(ContextSingletonBeanFactoryLocator.java:141) 
    at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:384) 
    at org.springframework.web.context.ContextLoader.loadParentContext(ContextLoader.java:341) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:195) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) 
    at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
    at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181) 
    at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1868) 

weblogic-application.xml 추가 등 모든 작업을 시도했지만 여전히 작동하지 않습니다.

<dependency> 
<groupId>xerces</groupId> 
<artifactId>xercesImpl</artifactId> 
<version>2.8.1</version> 
<scope>runtime</scope> 
</dependency> 

이 도와주세요 :

<?xml version="1.0" encoding="UTF-8"?> 
    <weblogic-application> 
<xml> 
<parser-factory> 
    <saxparser-factory> 
     org.apache.xerces.jaxp.SAXParserFactoryImpl 
    </saxparser-factory> 
    <document-builder-factory> 
     org.apache.xerces.jaxp.DocumentBuilderFactoryImpl 
    </document-builder-factory> 
    <transformer-factory> 
     org.apache.xalan.processor.TransformerFactoryImpl 
    </transformer-factory> 
    </parser-factory> 
</xml> 

<prefer-application-packages> 
<package-name>org.apache.xerces.parsers.*</package-name> 
</prefer-application-packages> 
</weblogic-application> 

내 weblogic.xml의는

<prefer-web-inf-classes>true</prefer-web-inf-classes> 

이 내 pom.xml 파일의 일부를 가지고있다. 감사!

답변

12

나는 내 자신의 질문에 대답 : 아래 링크를

이 문제를 해결 나에게 영감 :

Dealing with "Xerces hell" in Java/Maven?

Basiclly 나는 XML-API와의 pom.xml에 xmlParserAPIs의 모든 종속성을 제거했습니다. 문제가 해결되었습니다. 근본적인 원인은 내 클래스 경로가 Weblogic 앱 서버와 라이브러리 충돌을 일으키는 javax 라이브러리를 포함해서는 안된다는 것입니다. 희망이 도움이됩니다.

+0

내가 한 일을 보여줄 수 있습니까? WL 애플리케이션에 Spring MDP를 추가했는데 이제는 동일한 오류로 배포하지 않습니다. –