我的 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
我的 dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package = "mvc"/>
<mvc:annotation-driven/>
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value = "/WEB-INF/pages/" />
<property name = "suffix" value = ".jsp" />
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"/>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${database.driver}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.user}"/>
<property name="password" value="${database.password}"/>
</bean>
<bean id = "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate">
<property name = "dataSource" ref = "dataSource"/>
</bean>
<bean id = "dao" class = "mvc.dao.DAOImpl">
<property name = "template" ref = "jdbcTemplate"/>
</bean>
<bean id = "daoStudent" class = "mvc.dao.daoimplementation.DAOStudentImpl">
<property name = "template" ref = "jdbcTemplate"/>
</bean>
<bean id = "daoObject" class = "mvc.dao.daoimplementation.DAOObjectImpl">
<property name = "template" ref = "jdbcTemplate"/>
</bean>
<bean id = "daoLecturer" class = "mvc.dao.daoimplementation.DAOLecturerImpl">
<property name = "template" ref = "jdbcTemplate"/>
</bean>
<bean id = "daoMark" class = "mvc.dao.daoimplementation.DAOMarkImpl">
<property name = "template" ref = "jdbcTemplate"/>
</bean>
<bean id = "daoSubject" class = "mvc.dao.daoimplementation.DAOSubjectImpl">
<property name = "template" ref = "jdbcTemplate"/>
</bean>
<bean id = "daoLesson" class = "mvc.dao.daoimplementation.DAOLessonImpl">
<property name = "template" ref = "jdbcTemplate"/>
</bean>
</beans>
项目结构
当我在Weblogic上部署我的应用程序时,它会出现以下错误
<11.07.2018 0:11:29,387 EEST> <[STANDBY] ExecuteThread:'4' for queue:'weblogic.kernel.Default (self-tuning)'> <> <> <5f96a035-f431-4eb1-8b1e-92458ce46cdd-00000007> <1531257089387> <[severity-value:8 ] [rid:0] [partition-id:0] [partition-name:DOMAIN]>
org.springframework.beans.factory.BeanDefinitionStoreException:从ServletContext资源[/WEB-INF/dispatcher-servlet.xml]解析XML文档的IOException;嵌套异常是java.io.FileNotFoundException:无法在org中的org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:343)中打开ServletContext资源[/WEB-INF/dispatcher-servlet.xml] . springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)位于org.springframework.beans.factory.support的org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187) . org.springframework.beb上的AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:223)org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions( 125)at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.jav) a:94)atg.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:133)org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:621)at org.springframework.context.support .AbstractApplicationContext.refresh(AbstractApplicationContext.java:522)在org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:672)在org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:638)在org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:686)位于org.springframework.web.servlet.FrameworkServlet.initServletBean上的org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:554) FrameworkServlet.java:499)org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:17 2)at weblogic.servlet.internal.StubSecurityHelper $ ServletInitAction.run(StubSecurityHelper.java:343)中的javax.servlet.GenericServlet.init(GenericServlet.java:244)at weblogic.servlet.internal.StubSecurityHelper $ ServletInitAction.run(StubSecurityHelper) .java:294)at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)at weblogic.servlet.provider.WlsSecurityProvider . weblogic.servlet.inub上的weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)中的runAsForUserCode(WlsSecurityProvider.java:203)位于weblogic.servlet.inub.StubSecurityHelper的weblogic.servlet.internal.StubSecurityHelper.initServletInstance(StubSecurityHelper.java:99) .logateServlet(StubSecurityHelper.java:87)位于weblogic.servlet.Stub上的weblogic.servlet.StubLifeperHerper.StubLifeperHelper . (StubLifecycleHelper.java:57)中的weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:71) . nal.StubLifecycleHelper . (StubLifecycleHelper.java:31)位于weblogic.servlet上的weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:612)的weblogic.servlet.internal.ServletStubImpl.initStubLifecycleHelper(ServletStubImpl.java:673) . weblogic.servlet上的weblogic.servlet.internal.Web上的weblogic.servlet.internal.Web上的weblogic.servlet.internal.Web上的weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1930)中的web.WebAppServletContext.preloadServlet(WebAppServletContext.java:2064) .internal.WebAppServletContext.start(WebAppServletContext.java:3101),位于weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:884)的weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1843)weblogic.application.internal.ExtensibleModuleWrapper $ StartStateChange.next(ExtensibleModuleWrapper.java:360)at weblogic.application.internal.ExtensibleModuleWrapper $ StartStateChange.next(ExtensibleModuleWrapper.java:356)at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver . java:45)at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)at weblogic.application.internal.flow.ModuleStateDriver位于weblogic的weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)的weblogic.application.internal.flow.ModuleStateDriver $ 3.next(ModuleStateDriver.java:228)$ 3.next(ModuleStateDriver.java:233) . weblogic.application.internal.BaseDeployment上的weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:52)中的application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:78) $ 2.next(BaseDeployment.java:752)at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:262)at weblogic.application.internal位于weblogic的weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:90)的weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)中的.EarDeployment.activate(EarDeployment.java:66) . deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:274)at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:507)at weblogic.management.deploy.internal.DeploymentAdapter $ 1.doActivate(DeploymentAdapter) .java:53)at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:202)at weblogic.management.deploy.internal.AppTransition $ 2.transitionApp(AppTransition.java:52)at weblogic.management.deploy . 实习生al.ConfiguredDeployments $ 2.doItem(ConfiguredDeployments.java:741)at weblogic.management.deploy.internal.parallel.BucketInvoker.invoke(BucketInvoker.java:138)at weblogic.management.deploy.internal.ConfiguredDeployments.transitionAppsParallel(ConfiguredDeployments.java) :749)at weblogic.management.deploy.internal.ConfiguredDeployments.transitionAppsParallel(ConfiguredDeployments.java:702)at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:381)at weblogic.management.deploy.internal . 在weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:133)的weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:219)中配置了Disdloyments.deploy(ConfiguredDeployments.java:233) .server.AbstractServerService.postConstruct(AbstractServerService.java:76)at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43)在org.jvnet.hk2的org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1287)的java.lang.reflect.Method.invoke(Method.java:498) .internal.ClazzCreator.postConstructMe(ClazzCreator.java:333)org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:375)at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487) )org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305)at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85)org.jvnet.hk2.internal . org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:116)中的Utilities.createService(Utilities.java:2126)位于org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:698)的org org.jvnet的org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:212)上的.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:78)位于org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:358)的.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:235)org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java) :487)org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305)org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85)org.jvnet.hk2 . internal.Utilities.createService(Utilities.java:2126)atorg.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:116)org.glassfish.hk2.runlevel.internal.CurrentTaskFuture $ org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:90) QueueRunner.oneJob(CurrentTaskFuture.java:1237)atg.glassfish.hk2.runlevel.internal.CurrentTaskFuture $ QueueRunner.run(CurrentTaskFuture.java:1168)at weblogic.work.SelfTuningWorkManagerImpl $ WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:670) at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)at weblogic.work . weblogic.work.ExecuteThread.execute(ExecuteTh)中的weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:644)中的PartitionUtility.runWorkUnderContext(PartitionUtility.java:41) read.java:415)at weblogic.work.ExecuteThread.run(ExecuteThread.java:355)
Full log here
我试着添加这个
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
然后这个
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/dispatcher-servlet.xml</param-value>
</context-param>
到 web.xml ,但没有帮助
EDIT
我将servlet重命名为DispatcherServlet,将 dispatcher-servlet.xml 重命名为 DispatcherServlet-servlet.xml ,但是错误stil说 Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
EDIT 2
我创建了新的干净的Spring MVC项目,问题仍然存在 . 我认为问题可能在Weblogic中,我会尝试重新安装它
2 回答
尝试添加以下参数:
即:
如果Servlet被称为DispatcherServlet,那么xml必须基于Spring定义调用DispatcherServlet-servlet.xml
所以,问题出在Weblogic上 . 我重新安装它,问题消失了