2012-02-01 8 views
0

を転送する私たちは、Guiceの3.0とJBossの5.1を使用して、以下の技術を使用して外部のサーブレットに私たちのGuiceのサーブレットから転送する必要がされています。Guiceの3.0 request.getRequestDispatcher(..)先頭に追加Guiceのサーブレットパス

@Inject HttpServletRequest request; 
@Inject HttpServletResponse response; 

@GET 
@Produces("application/octet-stream") 
@Path("/get/1234") 
public void fwd() throws ServletException, IOException { 
    String newURL = "/ExternalServlet?action=1234"; 
    RequestDispatcher dispatcher = request.getRequestDispatcher(newURL);   
    dispatcher.forward(request, response); 
} 

私たちのdevサーバのいくつかでは、これは正しいurl(例えばlocalhost/ourApp/ExternalServlet)に転送されますが、プロダクションステージングサーバ上ではprepend/get/1234ですので、URLはlocalhost/ourApp/get/1234/ExternalServlet 。リダイレクトが機能します。

フォワードがGuiceサーブレットの前にある理由は何ですか?ありがとう。

答えて

0

正確な原因は不明ですが、HttpServletRequestWrapperを使用して回避することができます。おそらく、目的の効果を得るためにgetServletPath()またはgetContextPath()が返すものを上書きすることができます。

もう1つの方法は、ステージングサーバーをリモートでデバッグし、ディスパッチャのコードにアクセスして、どこが間違っているのかを正確に確認することです。