泽西URL转发

在Jersey REST方法中,我想转发到另一个网站。 我怎样才能做到这一点?

@Path("/") public class News { @GET @Produces(MediaType.TEXT_HTML) @Path("go/{news_id}") public String getForwardNews( @PathParam("news_id") String id) throws Exception { //how can I make here a forward to "http://somesite.com/news/id" (not redirect)? return ""; } } 

编辑:

尝试执行以下操作时,我No thread local value in scope for proxy of class $Proxy78错误的No thread local value in scope for proxy of class $Proxy78

 @Context HttpServletRequest request; @Context HttpServletResponse response; @Context ServletContext context; ... RequestDispatcher dispatcher = context.getRequestDispatcher("url"); dispatcher.forward(request, response); 

 public Response foo() { URI uri = UriBuilder.fromUri( ).build(); return Response.seeOther( uri ).build(); } 

我在我的应用程序中使用上面的代码,它的工作原

试试这个,它对我有用:

 public String getForwardNews( @Context final HttpServletRequest request, @Context final HttpServletResponse response) throws Exception { System.out.println("CMSredirecting... "); response.sendRedirect("YourUrlSite"); return ""; } 

我现在无法测试它。 但为什么不……

步骤1.访问HttpServletResponse。 为此,在您的服务中声明如下:

 @Context HttpServletResponse _currentResponse; 

第2步。进行重定向

 ... _currentResponse.sendRedirect(redirect2Url); 

编辑

好吧,要调用forward方法,您需要访问ServletContext。 它可以像响应一样解决:

 @javax.ws.rs.core.Context ServletContext _context; 

现在_context.forward可用

Interesting Posts