Хранение переменной в веб-приложении Джерси - PullRequest
1 голос
/ 03 апреля 2012

Вопрос касается веб-приложения, использующего Jersey / JAX-RS.

В приведенном ниже коде я хочу, чтобы у каждого пользователя был свой отдельный экземпляр переменной x, чтобы он мог установить для него новое значение и затем получить это новое значение.Как сейчас значение не сохраняется.

(Кажется необходимым хранить переменную в Java, а не в HTTP-сессии, так как я хочу сделать то же самое для другого экземпляра класса, который не может быть сохранен в HTTP-сессии.)

Пример кода:

@ Путь ("/") открытый класс Web реализует Web_Interface {

private int x = 9;

public Response getValue() {
    Gson gson = new Gson();
    String gsonString = gson.toJson("X = " + x);
    return Response
            .ok(gsonString)
            .build();
}

public Response setValue(int newX) {
    x = newX;
    Gson gson = new Gson();
    String gsonString = gson.toJson("X was set to " + newX);
    return Response
            .ok(gsonString)
            .build();
}

}

Ответы [ 2 ]

0 голосов
/ 04 апреля 2012

Джерси не имеет сессий. Остальной протокол не имеет состояния. Не совсем понятно, в чем ваш вопрос, но если вы хотите связать переменную с пользователем и позволить ему изменить его, у вас действительно есть 3 варианта

1) Не обращайте внимания на то, что остальной протокол не имеет состояния, и подключите httpsession в Джерси (он не существует по умолчанию, но это можно сделать, вам придется заставить его работать, прикрепив сеанс к контексту и вернув его обратно самостоятельно. ).

2) Положите его в печенье

3) Поместите его в какую-либо базу данных и извлеките его для пользователя (для идентификации вашего пользователя вам понадобится cookie или какая-то другая аутентификация)

0 голосов
/ 03 апреля 2012

Когда вы используете HTTP, вам нужно сначала выяснить, что HTTP - StateLess,

когда вы вызываете setValue (), чем он устанавливает значение

но при вызове getValue () создается новый сеанс, поэтому старое значение сбрасывается.

...