Получение доступа к объекту HttpServletRequest в отдыхающем веб-сервисе - PullRequest
13 голосов
/ 24 октября 2011

Я могу получить доступ к объекту HttpServlet Request в мыльном веб-сервисе следующим образом: Объявление частного поля для WebServiceContext в реализации службы и аннотирование его как ресурса:

@Resource
private WebServiceContext context;

Чтобы получить объект HttpServletRequet, я пишу код как показано ниже:

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

Но эти вещи не работают в спокойном веб-сервисе. Я использую Apache CXF для разработки полноценного веб-сервиса. Подскажите пожалуйста, как мне получить доступ к объекту HttpServletRequest.

Ответы [ 2 ]

14 голосов
/ 28 октября 2011

Я бы рекомендовал использовать 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()

. Вы можете использовать аннотацию @Context для пометки других типов (например, ServletContext или HttpServletRequest).См. Контекстные аннотации.

1 голос
/ 25 ноября 2017

используйте этот код для запроса доступа и ответа на каждый запрос:

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