2012-02-01 2 views
0

Мы используем JBoss 5.1 с Guice 3.0 и необходимо переслать с нашего Guice сервлета к внешнему Servlet, используя следующую методику:.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), но на нашем промежуточном сервере производства он добавляет/get/1234, поэтому URL-адрес перенаправляется на localhost/ourApp/get/1234/ExternalServlet , Работает перенаправление.

Любая идея, почему форвард ожидает серфинг Guice? Благодарю.

ответ

0

Я не уверен в конкретной причине этого, но вы должны иметь возможность обойти его с помощью HttpServletRequestWrapper. Вероятно, вы можете переопределить возвращаемые getServletPath() или getContextPath(), чтобы получить желаемый эффект.

Другим вариантом является попытка удаленной отладки вашего промежуточного сервера и перехода в код диспетчера, чтобы увидеть, где именно происходит ошибка.

Смежные вопросы