2012-02-01 2 views
0

우리는 Guice 3.0 제이 보스 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)로 전달하지만 프로덕션 스테이징 서버에서는 prepending/get/1234이므로 url은 localhost/ourApp/get/1234/ExternalServlet으로 전달됩니다. . 리디렉션이 작동합니다.

전달이 Guice 서블릿보다 우선하는 이유는 무엇입니까? 감사.

답변

0

정확한 원인은 확실하지 않지만 HttpServletRequestWrapper를 사용하여 문제를 해결할 수 있어야합니다. getServletPath() 또는 getContextPath()가 원하는 효과를 얻기 위해 리턴하는 것을 대체 할 수 있습니다.

또 다른 옵션은 준비 서버를 원격 디버깅하고 디스패처 코드로 이동하여 오류가 어디에서 발생하는지 정확히 확인하는 것입니다.