2016-12-11 7 views
1

私は春のWeb(以下春のドキュメント)で始まり、私は初期化春ウェブ:名前でサーブレットを登録できませんでした「ディスパッチャ」

と小さな問題私は、スタックトレースを持つすべての時間を持っている:「java.langで.IllegalArgumentException:サーブレットを 'ディスパッチャ'という名前で登録するのに失敗しました。同じ名前で登録された別のサーブレットがあるかどうかを確認してください。ここで

は私のファイルは、次のとおりです。

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_3_1.xsd" 
    version="3.1"> 

<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 

<!-- Configure ContextLoaderListener to use AnnotationConfigWebApplicationContext 
instead of the default XmlWebApplicationContext --> 
<context-param> 
    <param-name>contextClass</param-name> 
    <param-value> 
     org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
    </param-value> 
</context-param> 

<!-- Configuration locations must consist of one or more comma- or space-delimited 
fully-qualified @Configuration classes. Fully-qualified packages may also be 
specified for component-scanning --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>com.lacunasaurus.configuration.SpringApplicationConfiguration</param-value> 
</context-param> 

<!-- Bootstrap the root application context as usual using ContextLoaderListener --> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<!-- Declare a Spring MVC DispatcherServlet as usual --> 
<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <!-- Configure DispatcherServlet to use AnnotationConfigWebApplicationContext 
    instead of the default XmlWebApplicationContext --> 
    <init-param> 
     <param-name>contextClass</param-name> 
     <param-value> 
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
     </param-value> 
    </init-param> 
    <!-- Again, config locations must consist of one or more comma- or space-delimited 
    and fully-qualified @Configuration classes --> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>com.lacunasaurus.configuration.SpringWebApplicationInitializer</param-value> 
    </init-param> 
</servlet> 

home.html

<!DOCTYPE html> 
<html> 
<head> 
    <title>Start Page</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 
<body> 
    <h1>Hello World!</h1> 

    Greeting : ${greeting} 
</body> 
</html> 

ControllerHome

package com.lacunasaurus.web.controllers; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
@RequestMapping("/") 
public class ControllerHome { 

    @RequestMapping(method = RequestMethod.GET) 
    public String sayHello(ModelMap model) { 
     model.addAttribute("greeting", "Hello World from Spring 4 MVC"); 
     return "welcome"; 
    } 

    @RequestMapping(value = "/helloagain", method = RequestMethod.GET) 
    public String sayHelloAgain(ModelMap model) { 
     model.addAttribute("greeting", "Hello World Again, from Spring 4 MVC"); 
     return "welcome"; 
    } 

} 

Spring構成

package com.lacunasaurus.configuration; 

import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 

@Configuration 
@ComponentScan(basePackages = {"com.lacunasaurus.service"}) 
public class SpringApplicationConfiguration { 

} 

Webinitializer

package com.lacunasaurus.configuration; 

import  org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; 

public class SpringWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

@Override 
protected Class<?>[] getRootConfigClasses() { 
     return new Class[]{SpringApplicationConfiguration.class}; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class[]{WebConfig.class}; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[]{"/*"}; 
    } 
} 

そして、私のWebConfig

package com.lacunasaurus.configuration; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "com.lacunasaurus.web.controllers") 
public class WebConfig { 

    @Bean 
    public ViewResolver viewResolver() { 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setPrefix("/WEB-INF/views/"); 
     viewResolver.setSuffix(".html"); 

     return viewResolver; 
    } 

} 

私はMavenと "4.3.4.RELEASE" 春バージョン

マイポンポンを使用しています。 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.lacunasaurus.vapologie</groupId> 
<artifactId>test-web</artifactId> 
<packaging>war</packaging> 
<version>0.0.1-SNAPSHOT</version> 
<name>Vapologie Webapp</name> 

<properties> 
    <maven.compiler.target>1.8</maven.compiler.target> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.2.5.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.3.4.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>4.3.4.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.3.4.RELEASE</version> 
    </dependency> 

</dependencies> 

<build> 
    <finalName>test</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.6.0</version> 
      <configuration> 
       <showWarnings>true</showWarnings> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
</project> 

とフルスタックトレース:私は最終的にJavaコードで初期化する方法を見つけるあなたの助けのための

12-Dec-2016 23:16:35.543 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/vapologie-web]] 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:586) 
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1780) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalArgumentException: Failed to register servlet with name 'dispatcher'.Check if there is another servlet registered under the same name. 
at org.springframework.util.Assert.notNull(Assert.java:115) 
at org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.registerDispatcherServlet(AbstractDispatcherServletInitializer.java:98) 
at org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.onStartup(AbstractDispatcherServletInitializer.java:71) 
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5170) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
... 10 more 

12-Dec-2016 23:16:35.544 SEVERE [localhost-startStop-1]  org.apache.catalina.startup.HostConfig.deployDescriptor Erreur lors du déploiement du descripteur de configuration  C:\Users\Aurélien\AppData\Roaming\NetBeans\8.2\apache-tomcat-8.0.27.0_base\conf\Catalina\localhost\tes-web.xml 
java.lang.IllegalStateException: ContainerBase.addChild: start:  org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/vapologie-web]] 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:586) 
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1780) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

感謝:)

+0

を見つけるためには、スタックトレースとあなたのpom.xml – wcislo

+0

を投稿してくださいあなたがJavaやXMLの初期化 – jlumietu

+0

まず両方を混合しているようだ、あなたは:) を助けるために感謝私はpom.xmlとスタックトレースを追加しました。 @jlumietu:はい、私は問題に光を当てると思いますが、私は春のドキュメントで解決策を見つけることができません。 – Lacunasaurus

答えて

2

:)

私の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_3_1.xsd" 
    version="3.1"> 

    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 

    <welcome-file-list> 
     <welcome-file>/</welcome-file> 
    </welcome-file-list> 
</web-app> 

私はWebConfigを変更して

public class VapologieWebConfig extends WebMvcConfigurerAdapter 

WebMvcConfigurerAdapterしかし、今、私は春が私の見解:(

[2016-12-13 03:38:10,170] Artifact test-web:war exploded: Artifact is being deployed, please wait... 
    13-Dec-2016 15:38:12.283 INFOS [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 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. 
    13-Dec-2016 15:38:12.523 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext: initialization started 
    13-Dec-2016 15:38:12.672 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.support.AnnotationConfigWebApplicationContext.prepareRefresh Refreshing Root WebApplicationContext: startup date [Tue Dec 13 15:38:12 CET 2016]; root of context hierarchy 
    13-Dec-2016 15:38:12.782 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.support.AnnotationConfigWebApplicationContext.loadBeanDefinitions Registering annotated classes: [class com.lacunasaurus.test.configuration.SpringApplicationConfiguration] 
    13-Dec-2016 15:38:13.213 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.<init> JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 
    13-Dec-2016 15:38:13.350 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext: initialization completed in 826 ms 
    13-Dec-2016 15:38:13.363 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.DispatcherServlet.initServletBean FrameworkServlet 'dispatcher': initialization started 
    13-Dec-2016 15:38:13.371 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.support.AnnotationConfigWebApplicationContext.prepareRefresh Refreshing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Tue Dec 13 15:38:13 CET 2016]; parent: Root WebApplicationContext 
    13-Dec-2016 15:38:13.373 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.support.AnnotationConfigWebApplicationContext.loadBeanDefinitions Registering annotated classes: [class com.lacunasaurus.test.configuration.testWebConfig] 
    13-Dec-2016 15:38:13.568 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.<init> JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 
    13-Dec-2016 15:38:14.108 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.register Mapped "{[/],methods=[GET]}" onto public java.lang.String com.lacunasaurus.test.web.controllers.ControllerHome.sayHello(org.springframework.ui.ModelMap) 
    13-Dec-2016 15:38:14.110 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.register Mapped "{[/helloagain],methods=[GET]}" onto public java.lang.String com.lacunasaurus.test.web.controllers.ControllerHome.sayHelloAgain(org.springframework.ui.ModelMap) 
    13-Dec-2016 15:38:14.167 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcher-servlet': startup date [Tue Dec 13 15:38:13 CET 2016]; parent: Root WebApplicationContext 
    13-Dec-2016 15:38:14.436 INFOS [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.DispatcherServlet.initServletBean FrameworkServlet 'dispatcher': initialization completed in 1072 ms 
    [2016-12-13 03:38:14,456] Artifact test-web:war exploded: Artifact is deployed successfully 
    [2016-12-13 03:38:14,456] Artifact test-web:war exploded: Deploy took 4 286 milliseconds 
    13-Dec-2016 15:38:14.865 AVERTISSEMENT [http-nio-8080-exec-1] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/test/WEB-INF/views/home.html] in DispatcherServlet with name 'dispatcher' 
    13-Dec-2016 15:38:15.785 AVERTISSEMENT [http-nio-8080-exec-3] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/test/WEB-INF/views/home.html] in DispatcherServlet with name 'dispatcher' 
    13-Dec-2016 15:38:19.982 INFOS [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Déploiement du répertoire D:\Serveurs\apache-tomcat-8.5.9\webapps\manager de l'application web 
    13-Dec-2016 15:38:20.086 INFOS [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory D:\Serveurs\apache-tomcat-8.5.9\webapps\manager has finished in 103 ms 

----------------- EDITに私をリダイレクトすることはできませんので、警告を持っています------------------------

私は解決策を見つけました!完全なJava構成で

、Web構成クラスは、今、私は私のホームページを表示することができますコンフィギュラに

@Override 
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
} 

を有効にする方法を処理するサーブレットを実装する必要があります:)私を助けてみんなに

感謝ソリューション

関連する問題