2016-05-27 6 views
0

При запуске моего управляемого сервера я вижу следующее исключение ClassCastException, связанное с log4j, в моем файле управления управляемым сервером WebLogic 12c. У меня есть commons-logging-1.1.1.jar и log4j-1.2.17.jar в папке lib моей WAR и никакой другой версии этих библиотек нет. Я также вставил ошибку файла журнала управляемого сервера, сгенерированную при обработке запроса. Должен ли я использовать log4j и commons logging, который поставляется с WebLogic 12c? Я вижу их в каталоге модулей: com.bea.core.apache.commons.logging_1.1.2.jar и com.bea.core.apache.log4j_1.2.0.0_1-2-15.jar. Раньше у меня не было проблем с log4j и WebLogic.java.lang.ClassCastException - Log4j

из файла:

jadomain.lang.ClassCastException: org.apache.log4j.RollingFileAppender cannot be cast to org.apache.log4j.Appender 
     at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.jadomain:248) 
     at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.jadomain:176) 
     at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.jadomain:191) 
     at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.jadomain:523) 
     at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.jadomain:436) 
     at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.jadomain:1004) 
     at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.jadomain:872) 
     at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.jadomain:778) 
     at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.jadomain:906) 
     at com.domain.d.app.restwrapper.ContextListener.contextInitialized(ContextListener.jadomain:37) 
     at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.jadomain:66 

файл журнала:

]] Root cause of ServletException. 
jadomain.lang.LinkageError: loader constraint violation: when resolving method "org.apache.log4j.LogMF.entering(Lorg/apache/log4j/Logger;Ljadomain/lang/String;Ljadomain/lang/String;)V" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) of the current class, com/domain/d/app/restwrapper/appResource, and the class loader (instance of weblogic/utils/classloaders/GenericClassLoader) for resolved class, org/apache/log4j/LogMF, have different Class objects for the type /lang/String;)V used in the signature 
     at com.domain.d.app.restwrapper.appResource.addQuery(appResource.jadomain:244) 
     at com.domain.d.app.restwrapper.appResource.addQuery(appResource.jadomain:224) 
     at com.domain.d.app.restwrapper.appResource$Proxy$_$$_WeldClientProxy.addQuery(appResource$Proxy$_$$_WeldClientProxy.jadomain) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jadomain:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jadomain:43) 

ответ

1

У вас есть конфликт между буксирными версии log4j. Один загружается из пути к классам сервера, а другой - из класса пути вашего веб-приложения. Чтобы решить эту проблему, вы можете настроить свое веб-приложение на использование только одного приложения. Обновите файл weblogic.xml и добавьте следующий тег:

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