Переадресация URL Джерси - PullRequest
7 голосов
/ 23 ноября 2011

В методе 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 "";
    }
}

EDIT:

Я получаю ошибку 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);

Ответы [ 3 ]

8 голосов
/ 30 ноября 2013
public Response foo()
{
    URI uri = UriBuilder.fromUri(<ur url> ).build();
    return Response.seeOther( uri ).build();
}

Я использовал приведенный выше код в своем приложении, и он работает.

3 голосов
/ 18 марта 2013

Попробуйте, у меня это сработало:

public String getForwardNews(

@Context final HttpServletRequest request,

@Context final HttpServletResponse response) throws Exception

{

System.out.println("CMSredirecting... ");

response.sendRedirect("YourUrlSite");

return "";

}
2 голосов
/ 23 ноября 2011

Я не могу проверить это прямо сейчас. Но почему бы и нет ...

Шаг 1. Получите доступ к HttpServletResponse. Для этого объявите в вашем сервисе что-то вроде:

@Context
HttpServletResponse _currentResponse;

Шаг 2. сделать перенаправление

...
_currentResponse.sendRedirect(redirect2Url);

EDIT

Ну, для вызова метода пересылки вам нужно получить ServletContext. Это может быть решено так же, как ответ:

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

Теперь _context.forward доступен

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