2011-10-24 11 views
13

posso ottenere l'accesso alla richiesta oggetto HttpServlet in un servizio web sapone come segue: Dichiarare un campo privato per la WebServiceContext nella implementazione del servizio, e annotare come una risorsa:ottenere l'accesso a HttpServletRequest oggetto nel servizio web riposante

@Resource 
private WebServiceContext context; 

per ottenere l'oggetto HttpServletRequet, scrivo il codice, come di seguito:

MessageContext ctx = context.getMessageContext(); 
HttpServletRequest request =(HttpServletRequest)ctx.get(AbstractHTTPDestination.HTTP_REQUEST); 

Ma queste cose non si lavora in un servizio web riposante. Sto usando Apache CXF per lo sviluppo di un servizio web riposante. Per favore dimmi come posso ottenere l'accesso a HttpServletRequest Object.

risposta

14

Mi consiglia di utilizzare org.apache.cxf.jaxrs.ext.MessageContext

import javax.ws.rs.core.Context; 
import org.apache.cxf.jaxrs.ext.MessageContext; 

... 
// add the attribute to your implementation 
@Context 
private MessageContext context; 

... 
// then you can access the request/response/session etc in your methods 
HttpServletRequest req = context.getHttpServletRequest(); 
HttpServletResponse res = context.getHttpServletResponse() 

È possibile utilizzare il @Context annotazione bandiera di altri tipi (come ServletContext o HttpServletRequest specifico). Vedere Context Annotations.

+4

Nell'implementazione Jersey, 'MessageContext' non funziona. Ma puoi comunque usare '@Context HttpServletRequest'. – kxsong

0

utilizzare questo codice per richiesta di accesso e di risposta per ogni richiesta:

@Path("/User") 
public class RestClass{ 

    @GET 
    @Path("/getUserInfo") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response getUserrDetails(@Context HttpServletRequest request, 
      @Context HttpServletResponse response) { 
     String username = request.getParameter("txt_username"); 
     String password = request.getParameter("txt_password"); 
     System.out.println(username); 
     System.out.println(password); 

     User user = new User(username, password); 

     return Response.ok().status(200).entity(user).build(); 
    } 
... 
} 
Problemi correlati