Guice 서블릿이 작동하여 Jetty가 정적 요청에 대해 웹 요청을 처리하는 방법을 구성하는 데 어려움을 겪고 있습니다.web.xml을 사용하지 않고 Jetty에서 Guice Servlet을 사용하여 servlet에 경로 매핑
GuiceServlet을 사용하는 두 개의 다른 요청을 매핑하는 간단한 애플리케이션을 만들었습니다. 후자는 작동하지만 GuiceServlet 매핑 된 404 오류를 반환합니다.
팁이 있습니까? 내가 사용하고있다 : JDK 1.7.0_15; eclipse.jetty.jetty-servlet 8.1.9.v20130131; guice-servlet 3.0. 감사.
public class Main {
public static void main(String... args) {
Guice.createInjector().getInstance(Main.class).start();
}
public void start() {
Server server = new Server(8080);
ServletContextHandler handler = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS);
handler.addEventListener(new MyGuiceServletConfig());
handler.addServlet(MyServlet.class, "/non-guice");
server.setHandler(handler);
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class MyGuiceServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new ServletModule() {
@Override
protected void configureServlets() {
System.out.println("MyGSC->getInjector->configureServlets"); //I'm seeing this in the console...
serve("/guice").with(MyServlet.class);
}
});
}
}
@Singleton
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().print("Hello!\nYour path is: " + request.getServletPath());
}
}
이 외에도 다양한 인젝터를 만드는 가장 좋은 방법은 무엇입니까? 나는 메인 (..) 구조를 가지고 있으므로 다른 모듈을 연결할 수 있으므로 MyServletModule을 MyGuiceServletConfig에 지정하도록 남겨둔다.
그것은이 생각없이 일반적으로 ("/ 비 guice")를 추가 서블릿을 제공을 위해 잘 작동하는 것 같다? 나는 그 질문을 잘못 표기했을지도 모른다. – neuronotic
내가 가지고있는 문제는 Guice 외부에서 프로그래밍 방식으로 지정하면 HelloWorld 스타일 서블릿을 제공 할 수 있지만 Guice 서블릿을 통해 지정된 것은 작동하지 않는다는 것입니다. – neuronotic
아, 그 경우 guiceFilter를 올바르게 설정하십시오. http://code.google.com/p/google-guice/wiki/Servlets –