لن يقوم تطبيق Spring MVC 3.0.0 بتمهيد على خادم WebLogic 11GR1 - ClassCastException

StackOverflow https://stackoverflow.com/questions/2191092

سؤال

لديّ تطبيق SPRING MVC (3.0.0.RELEASE) ، أحتاج إلى نشره على Oracle WebLogic Server 11GR1. إنه يعمل بشكل جيد على خادم TC Spring. عندما أقوم بنشر ملف حرب التطبيق الخاص بي (إما عبر عرض STS/Eclipse "خوادم" أو إلى مجلد "deploy" ، أو يدويًا عبر مسؤول الويب) أحصل على الاستثناء التالي:

    <Feb 3, 2010 9:17:20 AM GMT> <Error> <org.springframework.web.context.ContextLoader> <BEA-000000> <Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/spring/webapp-config.xml]; nested exception is java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory
 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)
 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
 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.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
 at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
 at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
 at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:458)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:388)
 at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
 at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
 at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
 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:121)
 at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)
 at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1801)
 at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3045)
 at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1397)
 at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:460)
 at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
 at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
 at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
 at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
 at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
 at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
 at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
 at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:1267)
 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
 at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:409)
 at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:39)
 at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
 at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
 at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:184)
 at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
 at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51)
 at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:196)
 at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
 at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:233)
 at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
 at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
 at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
 at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89)
 at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
 at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

الذي يسببه:

Caused By: java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory
 at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
 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:388)
 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
 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.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
 at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
 at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
 at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:458)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:388)
 at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
 at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
 at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
 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:121)
 at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)
 at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1801)
 at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3045)
 at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1397)
 at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:460)
 at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
 at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
 at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
 at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
 at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
 at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
 at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
 at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:1267)
 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
 at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:409)
 at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:39)
 at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
 at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
 at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:184)
 at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
 at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51)
 at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:196)
 at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
 at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:233)
 at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
 at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
 at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
 at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89)
 at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

الآن هذا بعد أن اكتشفت بالفعل الحاجة إلى ضبط:

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

في WebLogic.xml (الذي تم إصلاح عدد لا يحصى من المشكلات السابقة - كان Classpath مشدودًا تمامًا وكنت أحصل على مشاكل "GetBeanDefaultitions في" Nosuchmethoderror "في دليل" GetBeanDefaults "الخاص بـ Spring (...).

أظهر التحقيق ذلك javax.xml.parsers.DocumentBuilderFactory يأتي من XML-APIS-1.0.B2.JAR الذي يتم إحضاره بواسطة Maven من Commons-Digester و DOM4J و JDOM. باختصار ، أحتاجه لتشغيل تطبيق الربيع الخاص بي.

لقد راجعت (وفحص مزدوج) وأنا ليس تجميع فصل مدونات الويب مع حربتي ، لذلك أنا لا أطلق النار على قدمي.

لقد رأيت أيضًا هذا المنشور في منتديات Java.net: http://forums.java.net/jive/thread.jspa؟messageid=216363 - لم ينجح الحل البديل log4j (أفترض لأن جذر المشكلة ليس log4j) وملاحظة إصلاح الأخطاء هذه على Oracle.com (ابحث عن "CR172469") http://download-llnw.oracle.com/docs/cd/e13222_01/wls/docs81/notes/resolved_sp03.html يبدو أن هذا لا يفعل شيئًا أيضًا.

ما لا أفهمه هو ، أنا أخبر WebLogic أن تفضل الجرار في الويب/lib ، والجرار الذي أحتاجه موجود هناك ، والخطأ يأتي من الربيع ، وليس Weblogic (أي أنا لا أؤسس الخادم نفسه لاستخدام جرة لا يمكنه التعامل معه.)

لقد توقفت عن إضافة المزيد من تكوين الربيع الخاص بي إلى هذا السؤال لأنني لست متأكدًا من صلةه. ومع ذلك ، إذا كان هذا سيساعد ، فيرجى إبلاغي وسأضيفه.

آمل أن بعض واحدة يمكن أن تساعد.

ريجس ، أندرو

هل كانت مفيدة؟

المحلول

من المؤكد أن طلبك يجب أن لا يشمل أي شيء javax.* الفصول داخل نفسها - عادة ما يتم التعامل معها بواسطة AppServer. إذا قمت بذلك ، ينتهي بك الأمر ClassCastExceptions تماما مثل هذا.

تحتاج إلى منع Maven من السحب في أشياء مثل xml-apis-1.0.b2.jar, ، لا ينتمي داخل التطبيق الخاص بك.

إذا قمت بإصلاح ذلك ، فلن داعي للقلق بشأن إعدادات صناديق Classloader الخاصة بالمدونة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top