2011-11-23 14 views
7

Bir Jersey REST yönteminin içinde başka bir web sitesine yönlendirmek istiyorum. Bunu nasıl başarabilirim?Jersey URL yönlendirme

@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 ""; 
    } 
} 

DÜZENLEME:

böyle bir şey yapmak için çalışırken No thread local value in scope for proxy of class $Proxy78 hatayı alıyorum:

@Context 
HttpServletRequest request; 
@Context 
HttpServletResponse response; 
@Context 
ServletContext context; 

... 

RequestDispatcher dispatcher = context.getRequestDispatcher("url"); 
dispatcher.forward(request, response); 

cevap

2

Bunu hemen test edemezsiniz. Ama neden olmasın ...

Adım 1. HttpServletResponse'ye erişin. 2. make ServletContext'te almak gerek yöntemini ileri çağırmak için,

... 
_currentResponse.sendRedirect(redirect2Url); 

DÜZENLEME

Peki yönlendirme

@Context 
HttpServletResponse _currentResponse; 

Adım: yapmak için neye servis şey beyan ederiz. Bu tepki aynı şekilde çözülebilir olduğu:

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

Şimdi _context.forward benim için çalıştı,

+0

Yönlendirmeyle ilgili değil, bir yönlendirmeyle ilgileniyorum. –

+0

@DorinGrecu, içeriğe nasıl gidilir? – Dewfy

+0

@Derwy Lütfen düzenlenmiş soruma bakın, hemen işe yaramıyor. –

3

bu deneyin mevcuttur:

public String getForwardNews(

@Context final HttpServletRequest request, 

@Context final HttpServletResponse response) throws Exception 

{ 

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

response.sendRedirect("YourUrlSite"); 

return ""; 

} 
8
public Response foo() 
{ 
    URI uri = UriBuilder.fromUri(<ur url>).build(); 
    return Response.seeOther(uri).build(); 
} 

ben kod yukarıda kullanılan benim uygulama ve çalışır.

+1

Response.temporaryRedirect (location) .build(); tam örneğe bakın http://www.javaproficiency.com/2015/04/redirect-in-jersey.html –

+0

http://stackoverflow.com/a/25332038/419348 'seeOther',' temporaryRedirect ile farklıdır '. Biri 301' ve bir tanesi 302’dir. – AechoLiu

+1

Bu yönlendirmek ileri değil. – Monir