WebApplicationInitializer未加载

时间:2016-11-15 11:48:32

标签: spring hibernate model-view-controller

我正在使用maven创建一个spring mvc应用程序。它使用WebApplicationInitializer进行初始化。现在我试图添加hibernate依赖。当我添加它时,WebApplicationInitializer的onStartup不会被调用。我正在使用tomcat 7.即使我删除了hibernate依赖项并更新项目,问题仍然存在。可能是什么问题?

的pom.xml

<project    xmlns="http://maven.apache.org/POM/4.0.0" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                                http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.pdma</groupId>
  <artifactId>dmapp</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>dmapp Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.framework.version>4.3.1.RELEASE</spring.framework.version>
        <jackson-version>2.7.5</jackson-version>
        <javax-servlet-api-version>3.1.0</javax-servlet-api-version>
        <javax-servlet-jstl-version>1.2</javax-servlet-jstl-version>
        <maven-compiler-plugin-version>3.2</maven-compiler-plugin-version>
        <maven-war-plugin-version>2.4</maven-war-plugin-version>
        <source-jdk>1.7</source-jdk>
        <target-jdk>1.7</target-jdk>
        <war-source-directory>src/main/webapp</war-source-directory>
        <war-name>dmapp</war-name>
        <final-name>dmapp</final-name>
  </properties> 

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.framework.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.framework.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.framework.version}</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.6.Final</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${javax-servlet-api-version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${javax-servlet-jstl-version}</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven-compiler-plugin-version}</version>
            <configuration>
                <source>${source-jdk}</source>
                <target>${target-jdk}</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>${maven-war-plugin-version}</version>
            <configuration>
                <warSourceDirectory>${war-source-directory}</warSourceDirectory>
                <warName>${war-name}</warName>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
    <finalName>${final-name}</finalName>
  </build>

</project>

AppConfig.java

package com.pdma.dmapp.configuration;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.pdma.dmapp")
public class AppConfig extends WebMvcConfigurerAdapter{

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        registry.viewResolver(viewResolver);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry){
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
        registry.addResourceHandler("/angularApps/**").addResourceLocations("/angularApps/");
    }

}

AppInitializer.java

package com.pdma.dmapp.configuration;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

public class AppInitializer implements WebApplicationInitializer{

    public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(AppConfig.class);
        ctx.setServletContext(container);

        ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.setLoadOnStartup(1);
        servlet.addMapping("*.html");
        servlet.addMapping("*.htm");
        servlet.addMapping("*.ajax");
    }

}

WebApplication未初始化时的控制台

Nov 15, 2016 7:57:47 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:dmapp' did not find a matching property.
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/8.0.28
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Oct 7 2015 18:25:21 UTC
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         8.0.28.0
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 10
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            10.0
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             C:\Program Files\Java\jre1.8.0_101
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.8.0_101-b13
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         E:\Resources\tomcat\apache-tomcat-8.0.28
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=E:\Resources\tomcat\apache-tomcat-8.0.28
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=E:\Resources\tomcat\apache-tomcat-8.0.28\endorsed
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1252
Nov 15, 2016 7:57:47 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_101\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_101/bin/server;C:/Program Files/Java/jre1.8.0_101/bin;C:/Program Files/Java/jre1.8.0_101/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5\Doctrine extensions for PHP\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;;C:\eclipse;;.
Nov 15, 2016 7:57:47 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Nov 15, 2016 7:57:47 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Nov 15, 2016 7:57:47 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
Nov 15, 2016 7:57:47 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 793 ms
Nov 15, 2016 7:57:47 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Nov 15, 2016 7:57:47 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.0.28
Nov 15, 2016 7:57:48 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Nov 15, 2016 7:57:48 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
Nov 15, 2016 7:57:48 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 380 ms
WebApplicationInitializer启动时

控制台

Nov 15, 2016 7:48:35 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:dmapp' did not find a matching property.
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/8.0.28
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Oct 7 2015 18:25:21 UTC
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         8.0.28.0
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 10
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            10.0
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             C:\Program Files\Java\jre1.8.0_101
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.8.0_101-b13
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         E:\Resources\tomcat\apache-tomcat-8.0.28
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=E:\Resources\tomcat\apache-tomcat-8.0.28
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=E:\Resources\tomcat\apache-tomcat-8.0.28\endorsed
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1252
Nov 15, 2016 7:48:35 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_101\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_101/bin/server;C:/Program Files/Java/jre1.8.0_101/bin;C:/Program Files/Java/jre1.8.0_101/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5\Doctrine extensions for PHP\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;;C:\eclipse;;.
Nov 15, 2016 7:48:35 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Nov 15, 2016 7:48:35 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Nov 15, 2016 7:48:35 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
Nov 15, 2016 7:48:35 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1005 ms
Nov 15, 2016 7:48:35 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Nov 15, 2016 7:48:35 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.0.28
Nov 15, 2016 7:48:36 PM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Nov 15, 2016 7:48:37 PM org.apache.catalina.core.ApplicationContext log
INFO: 1 Spring WebApplicationInitializers detected on classpath
Nov 15, 2016 7:48:37 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
Nov 15, 2016 7:48:37 PM org.springframework.web.servlet.DispatcherServlet initServletBean
INFO: FrameworkServlet 'dispatcher': initialization started
Nov 15, 2016 7:48:37 PM org.springframework.web.context.support.AnnotationConfigWebApplicationContext prepareRefresh
INFO: Refreshing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Tue Nov 15 19:48:37 PKT 2016]; root of context hierarchy
Nov 15, 2016 7:48:37 PM org.springframework.web.context.support.AnnotationConfigWebApplicationContext loadBeanDefinitions
INFO: Registering annotated classes: [class com.pdma.dmapp.configuration.AppConfig]
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
INFO: Mapped URL path [/resources/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
INFO: Mapped URL path [/angularApps/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register
INFO: Mapped "{[/surveys/uploadSurvey],methods=[GET]}" onto public java.lang.String com.pdma.dmapp.module.surveys.controller.SurveysController.getSurveyExcel(org.springframework.ui.ModelMap)
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter initControllerAdviceCache
INFO: Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcher-servlet': startup date [Tue Nov 15 19:48:37 PKT 2016]; root of context hierarchy
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.DispatcherServlet initServletBean
INFO: FrameworkServlet 'dispatcher': initialization completed in 1761 ms
Nov 15, 2016 7:48:39 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Nov 15, 2016 7:48:39 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
Nov 15, 2016 7:48:39 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3486 ms
Nov 15, 2016 7:48:39 PM org.springframework.web.servlet.PageNotFound noHandlerFound
WARNING: No mapping found for HTTP request with URI [/dmapp/] in DispatcherServlet with name 'dispatcher'

3 个答案:

答案 0 :(得分:2)

我按照以下链接创建了tomcat服务器,现在运行正常。

http://websystique.com/misc/how-to-setup-tomcat-with-eclipse/

如果有人能解释这与仅仅创建一个tomcat服务器并运行它而不修改Location等有什么不同。?

更新

事实证明,在更新pom.xml并更新maven项目之后,eclipse会从类路径中删除maven依赖项...再次添加它们是正确的解决方案。

答案 1 :(得分:0)

对我来说,解决该问题的方法是删除项目的.classpath文件,然后将项目重新导入Eclipse。

答案 2 :(得分:0)

Intellij中遇到了同样的问题。 IDE不会自动将jar文件复制到/WEB-INF/lib。需要在"File-->Project Structure --> Artifacts处做些事情。