【发布时间】:2013-07-13 07:22:24
【问题描述】:
我想将 REST 请求转发到另一台服务器。
我将 JAX-RS 与 Jersey 和 Tomcat 一起使用。我尝试设置See Other 响应并添加Location 标头,但这并不是真正的转发。
如果我使用:
request.getRequestDispatcher(url).forward(request, response);
我明白了:
-
java.lang.StackOverflowError: 如果url是相对路径 -
java.lang.IllegalArgumentException:路径http://website.com 不以/字符开头(我认为转发仅在相同的servlet 上下文中是合法的)。
如何转发请求?
【问题讨论】:
-
您可能应该发送重定向。
HttpServletResponse#sendRedirect(String) -
@SotiriosDelimanolis 但是这个 HttpServletResponse#sendRedirect(String) 方法基本上发送一个 302 HTTP 响应代码,我认为 URL 在 LOCATION 标头中。所以和我的SEE_OTHER“解决方案”差不多,但不是真正的前锋。还是我错了?
-
除了使用
302重定向之外,您是否找到了解决方案?使用 RequestDispatcher.forward 时,我得到一个java.lang.ClassCastException: org.glassfish.jersey.message.internal.TracingLogger$1 cannot be cast to org.glassfish.jersey.message.internal.TracingLogger
标签: java http servlets jax-rs forward