Guice 3.0 request.getRequestDispatcher(..)。forward prepending guice servlet path

时间:2012-02-01 21:11:08

标签: servlets request guice jboss5.x guice-servlet

我们正在使用JBoss 5.1和Guice 3.0,需要使用以下技术从我们的Guice servlet转发到外部Servlet:

@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);
}

在我们的几个开发服务器上,它转发到正确的URL(例如localhost / ourApp / ExternalServlet),但是在我们的生产登台服务器上它是prepend / get / 1234所以url转发到localhost / ourApp / get / 1234 / ExternalServlet。重定向有效。

任何想法为什么前锋都在使用Guice servlet?感谢。

1 个答案:

答案 0 :(得分:0)

我不确定这个的确切原因,但你应该能够使用HttpServletRequestWrapper解决它。您可以覆盖getServletPath()或getContextPath()返回的内容以获得所需的效果。

另一个选择是尝试远程调试您的登台服务器并进入调度程序代码以查看它出错的确切位置。