2017-12-19 3 views
0

web.xml없이 sitebricks로 동적 웹 모듈을 만들려고합니다. (주석 전용.) 나는 그물을 좋은 예제로 찾고 있었지만, 그것들 모두는 임베디드 부두 웹 서버가 들어있는 간단한 자바 어플리케이션이다. 사이트 링크 및 주석이 포함 된 동적 웹 모듈을 만드는 방법은 무엇입니까?

은 이미 단지 테스트를 위해, 컨텍스트 리스너를 만들었습니다

import com.google.inject.Guice; 
import com.google.inject.Injector; 
import com.google.inject.servlet.GuiceServletContextListener; 
import com.google.sitebricks.SitebricksModule; 

public class AppConfig extends GuiceServletContextListener { 

    @Override 
    public Injector getInjector() { 
     return Guice.createInjector(new SitebricksModule() { 
      @Override 
      protected void configureSitebricks() { 
       at("/api/version").serve(APIVersion.class); 
      } 
     }); 
    } 
} 

APIVersion 클래스 :

@Service 
public class APIVersion { 
    public class APIVersionResult { 
     public int major = 1; 
     public int minor = 0; 
    } 

    @Get 
    Reply<APIVersionResult> get() { 
     return Reply.with(new APIVersionResult()).as(Json.class); 
    } 
} 

는 또한 필터를 생성하지만, 어쩌면 내가 필요하지 않습니다

import com.google.inject.servlet.GuiceFilter; 
import java.io.IOException; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.annotation.WebFilter; 

@WebFilter("/*") 
public class AppFilter extends GuiceFilter implements Filter { 

    public AppFilter() { 
     super(); 
    } 

    public void destroy() { 
    } 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     chain.doFilter(request, response); 
    } 

    public void init(FilterConfig fConfig) throws ServletException { 
    } 

} 

프로젝트에 동적 웹 모듈 패싯이 있습니다. 나는 그것을 war 파일로 컴파일 할 수있다. 하지만 항상 404 오류가 발생합니다 http://localhost/api/version

무엇이 누락 되었습니까?

답변

0

여기가 답입니다! 하나의 것이 없어졌습니다 : @WebListener 주석이 내 GuiceServletContextListener에 추가되지 않았습니다!

@WebListener 
public class AppConfig extends GuiceServletContextListener { 

    @Override 
    public Injector getInjector() { 
     return Guice.createInjector(new SitebricksModule() { 
      @Override 
      protected void configureSitebricks() { 
       at("/api/version").serve(APIVersion.class); 
      } 
     }); 
    } 
}