この問題は、guiceおよびguiceサーブレット3.1.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に変更してください。
なぜこの奇妙な事件が起こっているのか私には分かりません。注:Tomcat6.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>
または、次の場所からjarファイルをダウンロードできます。
GuiceサーブレットJar
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/