0

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

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

Project structure
enter image description here
When I'm deploying my app on Weblogic, it crushes with following error

<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: IOException parsing XML document from ServletContext resource [/WEB-INF/dispatcher-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml] at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:343) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:223) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:194) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:133) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:621) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:522) at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:672) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:638) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:686) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:554) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:499) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:172) at javax.servlet.GenericServlet.init(GenericServlet.java:244) at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:343) 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.runAsForUserCode(WlsSecurityProvider.java:203) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71) at weblogic.servlet.internal.StubSecurityHelper.initServletInstance(StubSecurityHelper.java:99) at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:87) at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:71) at weblogic.servlet.internal.StubLifecycleHelper.(StubLifecycleHelper.java:57) at weblogic.servlet.internal.StubLifecycleHelper.(StubLifecycleHelper.java:31) at weblogic.servlet.internal.ServletStubImpl.initStubLifecycleHelper(ServletStubImpl.java:673) at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:612) at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:2064) at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:2041) at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1930) at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3101) at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1843) at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:884) at 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$3.next(ModuleStateDriver.java:233) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:78) at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:52) at weblogic.application.internal.BaseDeployment$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.EarDeployment.activate(EarDeployment.java:66) at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165) at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:90) at weblogic.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.internal.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.ConfiguredDeployments.deploy(ConfiguredDeployments.java:233) at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:219) at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:133) at weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:76) at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1287) at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:333) at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:375) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487) at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305) at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85) at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2126) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:116) at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:698) at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:78) at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:212) at org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:235) at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:358) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487) at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305) at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85) at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2126) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:116) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:90) at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1237) at org.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.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41) at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:644) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:415) at weblogic.work.ExecuteThread.run(ExecuteThread.java:355)

Full log here

I tried to add this

<init-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>

and then this

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/dispatcher-servlet.xml</param-value>
</context-param>

to web.xml, but didn't help

EDIT

I renamed servlet to DispatcherServlet and dispatcher-servlet.xml to DispatcherServlet-servlet.xml, but error stil says Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]

EDIT 2

I created new clean Spring MVC project and the problem remains. I think that the problem could be in Weblogic, I'll try to reinstall it

  • You are using maven, judging from the `pom.xml` however your structure isn't according to the structure maven expects. Fix your project structure or modify everything in your `pom.xml` to match your structure. (Generally the first thing is the easiest to do). – M. Deinum Jul 11 '18 at 05:37
  • @M.Deinum, I changed project structure to this, problem stil the same https://i.gyazo.com/7becbe007b4ea194572fc42b8a467342.png – SummertimeSadness Jul 11 '18 at 08:02
  • Which is still the wrong structure... `WEB-INF` must be in `webapp` not in `webapp/web`. – M. Deinum Jul 11 '18 at 09:05
  • @M.Deinum, sure, I'll try as soon as reinstall Weblogic – SummertimeSadness Jul 11 '18 at 09:12

2 Answers2

0

Try adding the following param's :

i.e.:

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

if the Servlet is called DispatcherServlet then then xml must be called DispatcherServlet-servlet.xml based on Spring definition

devwebcl
  • 2,866
  • 3
  • 27
  • 46
  • As i mentioned in my question, I already tried to add this to web.xml, and this didn't help – SummertimeSadness Jul 10 '18 at 21:58
  • assuming you added in the correct position inside . Is your war well-formed ? – devwebcl Jul 10 '18 at 22:12
  • ok. probably this is a duplicated question, the name of the xml must have suffix -servlet https://stackoverflow.com/questions/14954931/my-application-could-not-open-servletcontext-resource you need to rename the xml as well – devwebcl Jul 10 '18 at 22:20
  • I added into tag, I changed in to DispatcherServlet, I changed in to DispatcherServlet, I changed dispatcher-servlet.xml to DispatcherServlet-servlet.xml and error stil says "Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]" – SummertimeSadness Jul 11 '18 at 07:12
  • if the Servlet is called DispatcherServlet then then xml must be called DispatcherServlet-servlet.xml based on Spring definition – devwebcl Jul 11 '18 at 14:27
  • As i said: " I changed dispatcher-servlet.xml to DispatcherServlet-servlet.xml". Btw, I solved my problem with reinstalletion of Weblogic – SummertimeSadness Jul 11 '18 at 14:45
-1

So, the problem was in Weblogic. I reinstalled it and the problem dissapeared