首页 文章

无法打开ServletContext资源[/WEB-INF/dispatcher-servlet.xml]

提问于
浏览
0

我的 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>

项目结构

enter image description here

当我在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 回答

  • 0

    尝试添加以下参数:

    即:

    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/DispatcherServlet-servlet.xml
            </param-value>
        </init-param>
    </servlet>
    

    如果Servlet被称为DispatcherServlet,那么xml必须基于Spring定义调用DispatcherServlet-servlet.xml

  • -1

    所以,问题出在Weblogic上 . 我重新安装它,问题消失了

相关问题