Spring MVC 3.0.0应用程序不会引导Weblogic Server 11gR1 - ClassCastException [英] Spring MVC 3.0.0 app won't bootstrap on Weblogic Server 11gR1 - ClassCastException

查看:173
本文介绍了Spring MVC 3.0.0应用程序不会引导Weblogic Server 11gR1 - ClassCastException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个基于Spring MVC(3.0.0.RELEASE)的应用程序,我需要部署到Oracle Weblogic Server 11gR1。它在Spring TC Server上工作正常。当我部署我的应用程序WAR文件(通过STS / Eclipse服务器视图或自动部署文件夹,或通过Web管理员手动)我得到以下异常:

 < 2010年2月3日上午9:17:20 GMT> <错误> < org.springframework.web.context.ContextLoader> < BEA-000000> <上下文初始化失败
org.springframework.beans.factory.BeanDefinitionStoreException:意外的异常从ServletContext资源解析XML文档[/WEB-INF/spring/webapp-config.xml];嵌套异常是java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory不能被转换为javax.xml.parsers.DocumentBuilderFactory
在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java: 412)
在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java: 302)
在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java: 178)
在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
在org.springframework.web.context.support .XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
在org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
在org.springframework.context.support.AbstractRefreshableApplicationContext .refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
在org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:458)
在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext .java:388)
在org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:192 )
在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
在weblogic.servlet.internal.EventsManager $ FireContextListene rAction.run(EventsManager.java:481)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager。 java:121)
在weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)
在weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1801)
在weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3045)
在weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1397)
在weblogic.servlet.internal.WebAppModule .start(WebAppModule.java:460)
在weblogic.application.internal.flow.ModuleStateDriver $ 3.next(ModuleStateDriver.java:425)
在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver。 java:83)
在weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
在weblogic.application.interna l.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
在weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
在weblogic.application.internal.flow。 ModuleStateDriver $ 3.next(ModuleStateDriver.java:425)
在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
在weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver .java:119)
在weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
在weblogic.application.internal.BaseDeployment $ 2.next(BaseDeployment.java:1267)
在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
在weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:409)
在weblogic.application .internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:39)
在weblogic.application.internal.DeploymentStateChecker.activate(DeploymentS tateChecker.java:161)
在weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
在weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java: 184)
在weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
在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)
在weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:233)
在weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
在weblogic.management .deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
在weblogic.management。在weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89)中的
在weblogic.t3.srvr.SubsystemRequest中的
部署.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
。 run(SubsystemRequest.java:64)
在weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
在weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

哪些是由:

  Caused By:java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory不能被转换为javax.xml.parsers.DocumentBuilderFactory 
在javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
在org.springframework.beans.factory.xml.DefaultDocumentLoader.createDocumentBuilderFactory(DefaultDocumentLoader.java:89)
在org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:70)
在org.springframework.beans.factory.xml.XmlBean DefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)
在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
在org.springframework.beans.factory.xml。 XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
在org.springframework.beans.factory.support。 AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
在org.springframework.web.context.support。 XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
在org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
在org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
在org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:458)
在org。 springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:388)
在org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)
在org.springframework.web。 context.ContextLoader.initWebApplicationContext(ContextLoader.java:192)
在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
在weblogic.servlet.internal.EventsManager $ FireContextListenerAction。运行(EventsManager.java:481)
在weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
在weblogic.security.service.SecurityManager.runAs(SecurityManager.java: 1 21)
在weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)
在weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1801)
在weblogic .servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3045)
在weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1397)
在weblogic.servlet.internal.WebAppModule.start (WebAppModule.java:460)
在weblogic.application.internal.flow.ModuleStateDriver $ 3.next(ModuleStateDriver.java:425)
在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java: 83)
在weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
在weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
at weblogic.application.internal.flow.Mod uleStateDriver $ 3.next(ModuleStateDriver.java:425)
在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
在weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver .java:119)
在weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
在weblogic.application.internal.BaseDeployment $ 2.next(BaseDeployment.java:1267)
在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
在weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:409)
在weblogic.application .internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:39)
在weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
在weblogic.deploy.internal.targetserver.AppContainerInvoker.activate (AppContainerInvoker.java:79)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployme nt.java:184)
在weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
在weblogic.management.deploy.internal.DeploymentAdapter $ 1.doActivate(DeploymentAdapter.java :51)
在weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:196)
在weblogic.management.deploy.internal.AppTransition $ 2.transitionApp(AppTransition.java:30)
在weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:233)
在weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
在weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
在weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
在weblogic.management .deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89)
在weblogic.t3.sr vr.SubsystemRequest.run(SubsystemRequest.java:64)
在weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

现在我已经发现需要设置:

 < wls :喜欢-WEB-INF类>真< / WLS:喜欢-WEB-INF类> weblogic.xml中的

(这固定了我前所未有的各种问题 - 类路径完全搞砸了,在我的WAR的WEB-INF / lib目录中绑定了Spring的getBeanDefinitionDefaults(...)的NoSuchMethodError问题。



调查显示 javax.xml.parsers.DocumentBuilderFactory 来自maven从commons-digester,dom4j和jdom引入的xml-apis-1.0.b2.jar简而言之,我需要它对于我的Spring应用程序运行。



我已经检查过(和双重检查),而我不是将weblogic类与我的战争捆绑在一起所以我没有用自己的脚射击自己。



我也在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 这似乎什么都不做。 p>

我不明白的是,我告诉Weblogic喜欢我的WEB-INF / lib中的jar,我需要的jar在那里,错误是来自Spring,而不是Weblogic(即我不是强迫服务器本身使用一个它无法处理的jar。)



我已经禁止将更多的我的Spring配置添加到这个问题我不知道它的相关。如果这有帮助,请让我知道,我会添加它。



希望有人可以帮助。



Regs,Andrew

解决方案

你的应用程序几乎肯定不会包含任何 javax。 code>它们本身的类 - 这些通常由appserver处理。如果你这样做,你最终会得到这样的 ClassCastExceptions



你需要阻止maven拖动像 xml-apis-1.0.b2.jar 的东西,它不属于你的应用程序。



如果您修复了这一点,那么您不需要担心weblogic特定的类加载器设置。


I have a Spring MVC (3.0.0.RELEASE) based application I need to deploy to Oracle Weblogic Server 11gR1. It works fine on Spring TC Server. When I deploy my application WAR file (either via STS/Eclipse "Servers" view or to the "auto-deploy" folder, or manually via the web admin) I get the following exception:

    <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)

Which is caused by:

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)

Now this is after I have already discovered the need to set:

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

in weblogic.xml (that fixed my myriad of earlier problems - the classpath was totally screwed and I was getting "NoSuchMethodError" problems for Spring's "getBeanDefinitionDefaults(...) which was bundled in my WAR's WEB-INF/lib directory).

Investigation has shown that javax.xml.parsers.DocumentBuilderFactory comes from xml-apis-1.0.b2.jar which is being brought in by maven from commons-digester, dom4j and jdom. In short, I need it for my Spring App to run.

I've checked (and double checked) and I'm not bundling the weblogic class with my war so I'm not shooting myself in my own foot.

I've also seen this post on the java.net forums: http://forums.java.net/jive/thread.jspa?messageID=216363 - the Log4J workaround didn't work (I presume because the root of the problem isn't Log4J) and this bug fix note on oracle.com (search for "CR172469") http://download-llnw.oracle.com/docs/cd/E13222_01/wls/docs81/notes/resolved_sp03.html This seems to do nothing either.

What I don't understand is, I'm telling Weblogic to prefer the jars in my WEB-INF/lib, the jar I need is in there, and the error is coming from Spring, not Weblogic (i.e. I'm not forcing the server itself to use a jar it can't handle.)

I've held off from adding more of my Spring config to this question as I'm not sure its relevant. If however this would help, please let me know and I'll add it.

Hope someone can help.

Regs, Andrew

解决方案

Your application should almost certainly not be including any javax.* classes within itself - these are usually handled by the appserver. If you do this, you end up with ClassCastExceptions just like this.

You need to stop maven from dragging in stuff like xml-apis-1.0.b2.jar, it doesn't belong inside your application.

If you fix that, then you won't need to worry about weblogic-specific classloader settings.

这篇关于Spring MVC 3.0.0应用程序不会引导Weblogic Server 11gR1 - ClassCastException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆