Проблема была частично исправлена в guice и guice servlet 3.1.1, при этом одна проблема все еще имеет место:
При отображении сервлета с использованием шаблона звездочки '/ *', как показано ниже:
serve("/myservlet/*").with(MyServlet.class);
И если MyServlet.java перенаправит на страницу jsp, то forward () будет работать только в том случае, если на странице jsp нет подчеркивания (поэтому myservlet.jsp будет работать, my_servlet.jsp не будет работать).
// This WORKS
req.getRequestDispatcher("/myservlet.jsp").forward(req,resp);
// These DONT WORK (any file having _ or - characetsrs wont work)
req.getRequestDispatcher("/my_servlet.jsp").forward(req,resp);
req.getRequestDispatcher("/my-servlet.jsp").forward(req,resp);
req.getRequestDispatcher("/WEB-INF/myservlet.jsp").forward(req,resp);
Теперь это объясняет, почему пересылка WEB-INF не работает для сервлета, отображенного с / *. Причина в том, что WEB-INF содержит символ тире, который по какой-то причине создает проблему для сервлета guice.
При попытке выполнить приведенный выше пример обязательно переименуйте файл myservlet.jsp в my_servlet.jsp, когда пытаетесь проверить случаи, описанные выше.
Я понятия не имею, почему происходит этот странный случай.
ПРИМЕЧАНИЕ: я использую Tomcat 6.0.35
Чтобы Guice 3.1.1 добавил их в свой pom.xml
<dependency>
<groupId>org.sonatype.sisu</groupId>
<artifactId>sisu-guice</artifactId>
<version>3.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.sonatype.sisu.inject</groupId>
<artifactId>guice-servlet</artifactId>
<version>3.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.sonatype.sisu.inject</groupId>
<artifactId>guice-assistedinject</artifactId>
<version>3.1.1</version>
<scope>compile</scope>
</dependency>
Или вы можете скачать банки с:
Баночка с сервлетом
http://repo1.maven.org/maven2/org/sonatype/sisu/inject/guice-servlet/3.1.1/
Guice Jar
http://repo1.maven.org/maven2/org/sonatype/sisu/sisu-guice/3.1.1/