Как сделать отображение фильтра с именем сервлета в Guice Servlet? - PullRequest
2 голосов
/ 28 августа 2011

В моем файле web.xml у меня есть

<filter>
    <filter-name>authFilter</filter-name>
    <filter-class>com.mystuff.AuthFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>authFilter</filter-name>
    <servlet-name>requestFactoryServlet</servlet-name>
</filter-mapping>

<!-- Servlets -->
<servlet>
    <servlet-name>requestFactoryServlet</servlet-name>
    <servlet-class>com.google.web.bindery.requestfactory.server.RequestFactoryServlet</servlet-class>
    <init-param>
        <param-name>symbolMapsDirectory</param-name>
        <!-- You'll need to compile with -extras and move the symbolMaps directory 
            to this location if you want stack trace deobfuscation to work -->
        <param-value>WEB-INF/classes/symbolMaps/</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>requestFactoryServlet</servlet-name>
    <url-pattern>/gwtRequest</url-pattern>
</servlet-mapping>

, и я пытаюсь преобразовать его в конфигурацию Guice Servlet вместо конфигурации web.xml.

Я не могу понять, как сделать эквивалент в Guice.Я вижу только примеры фильтрации шаблонов, а не конкретных сервлетов.

1 Ответ

6 голосов
/ 26 сентября 2011

Определите слушателя Guice в web.xml:

<listener>
    <listener-class>xxx.GuiceServletConfig</listener-class>
</listener>

И реализуйте этот слушатель:

public class GuiceServletConfig extends GuiceServletContextListener {

    @Override
    protected Injector getInjector() {
        return Guice.createInjector(new ServletModule() {

            @Override
            protected void configureServlets() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("symbolMapsDirectory", "WEB-INF/classes/symbolMaps/");
                serve("/gwtRequest").with(RequestFactoryServlet.class, params);


            }

        });
    }

}
...