2014-04-28 7 views
0

새로운 spring mvc 프로젝트를 시작하고 주석을 사용하여 모든 구성 작업을 수행하려고합니다. 내가 생각하는 문제는 AppInitializer로 web.xml을 마이그레이션하는 것입니다. 변경 사항을 적용하고 새 구성으로 앱을 배포 할 때 변경까지 제대로 작동하는 URL에 대해 404를 얻었습니다.web.xml에서 JavaConfig 로의 마이그레이션

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 

    <servlet> 
     <servlet-name>sample</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextClass</param-name> 
      <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
     </init-param> 

     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>ar.com.orangebit.springMvcQuickstart.config</param-value> 
     </init-param> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>sample</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

</web-app> 

그리고는 그 잘못 뭔가를 생각하는 AppInitializer : 내 현재의 web.xml은 내가 만든 경우 위의 클래스와

public class AppInitializer implements WebApplicationInitializer { 

    @Override 
    public void onStartup(ServletContext servletContext) 
      throws ServletException { 
     WebApplicationContext context = getContext(); 
     servletContext.addListener(new ContextLoaderListener(context)); 
     ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
       "DispatcherServlet", new DispatcherServlet(context)); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/*"); 
    } 

    private AnnotationConfigWebApplicationContext getContext() { 
     AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); 
     context.setConfigLocation("ar.com.orangebit.springMvcQuickstart.config"); 
     return context; 
    } 

} 

하는 gradle jettyRunWar를 입력 localhost:8080 나는 디렉토리를 참조 META-INF 및 WEB-INF 대신 webapp의 홈 페이지.

당신이 부두 플러그인을 사용할 때 문제 만 나오면 프로젝트

+0

AppInitializer 내부의 addMapping은/* –

+0

대신 @ /를 사용해야합니다. @KaribasappaGC 방금 시도했지만 결과는 동일합니다. – Rumal

+0

http://stackoverflow.com/questions/13222071/spring-3-1- webapplicationinitializer-embedded-jetty-8- 주석 구성 –

답변

0

의 나머지 부분을보고 싶은 경우가 github에있어 현재 코드입니다. Tomcat으로 IDE에서 응용 프로그램을 실행하거나 전쟁에서 패키지로 만들어 Tomcat에 배포하면 잘 작동합니다.

부두 플러그인이 Servlet 3 초기화 프로그램과 잘 맞지 않는다고 생각합니다.

코드를 살펴보면 스프링 4를 사용했기 때문에 Spring Boot을 살펴 보라고 권합니다.

이것을 사용하면 대부분의 Spring 구성 파일을 삭제할 수 있으며 또한 Embedded Tomcat 및 Jetty (실제로이 옵션을 사용하지 않음)를 지원하며 IDE 및 빌드 모두에서 완벽하게 작동합니다 Maven 및 Gradle과 같은 도구.