Java - невозможно использовать методы HttpServlet для получения данных для запроса при использовании @Stateless - PullRequest
0 голосов
/ 23 ноября 2018

Я создал веб-сервис, на котором использовал аннотацию @Stateless, т.е.

 @Stateless
 @Path("/boo/too")
 public class RestController {

@Context 
private HttpServletRequest request;

@Context
private ServletContext context;


@GET
@Path("/coo")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public GetResObj getFuncName(
        @HeaderParam("foo") String foo,
        @QueryParam("boo") String boo
        ) throws Exception{ 

    MyClass className =(ClassCast) request.getSession().getAttribute("myClassInstance");
}

Теперь, прочитав некоторые материалы, я получил точный ответ на этот вопрос: вопрос

, я понимаю, что объект без состояния - это объект, который может иметь переменные, но он неизменен (не может содержать любое состояние).При использовании аннотации @Stateless часть кода request.getSession() выдает исключение nullPointerException.Когда я удаляю аннотацию @Stateless, request.getSession() работает нормально.

Вы видите, почему это происходит?

1 Ответ

0 голосов
/ 23 ноября 2018

Кажется, что экземпляр HttpServletRequest никогда не вставлялся в поле запроса.

Можете ли вы проверить вставку HttpServletRequest в список параметров метода ресурса, например, окончательный запрос @Context HttpServletRequest.

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