2011-10-24 9 views
13

que puede obtener acceso a la HttpServlet solicitud objeto en un servicio web de jabón de la siguiente manera: Declarar un campo privado para el WebServiceContext en la implementación del servicio, y anotar como un recurso:tener acceso a HttpServletRequest objeto en servicio web reparador

@Resource 
private WebServiceContext context; 

para obtener el objeto HttpServletRequet, escribo el código de la siguiente manera:

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

Pero estas cosas no están trabajando en un servicio web reparador. Estoy usando Apache CXF para desarrollar un servicio web tranquilo. Dígame cómo puedo obtener acceso al objeto HttpServletRequest.

Respuesta

14

me gustaría recomendar el uso 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() 

Puede utilizar la anotación @Context para marcar otros tipos (como ServletContext o HttpServletRequest específicamente). Ver Context Annotations.

+4

En la implementación Jersey, 'MessageContext' no funciona. Pero aún puedes usar '@Context HttpServletRequest'. – kxsong

0

uso de este código de solicitud de acceso y la respuesta para cada solicitud:

@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(); 
    } 
... 
} 
Cuestiones relacionadas