AppEngine и сессии - PullRequest
       1

AppEngine и сессии

0 голосов
/ 22 декабря 2011

Мне сложно работать с Google AppEngine и сессиями.

У меня есть приложение Java GAE, которое работает на моем локальном хосте, но как только я разверну его в GAE, коллекция переменной сеанса станет пустой.

Рабочий процесс выглядит следующим образом: у меня есть данные, хранящиеся в классе в сеансе, затем прочитайте, что это страница JSP.Отправьте ответ сервлету, измените его там, сохраните и покажите другой JSP.

Я проверил его: данные (коллекция) все еще находятся в переменной в сервлете, но когда дело доходит доJSP, коллекция пустая.

У вас есть идеи, почему она так странно себя ведет?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 22 декабря 2011

Включили ли вы сеансы в файле appengine-web.xml?
Посмотрите на
http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions

1 голос
/ 01 мая 2012

Вы должны сделать две вещи, чтобы включить сеанс:

1 На войне / WEB-INF / appengine-web.xml

<sessions-enabled>true</sessions-enabled>

2 Все объекты, которые вы храните в сеансе, должны реализовывать java.lang.Serializable

public class ParameterForSession implements Serializable {
    // Your code here
}
0 голосов
/ 30 апреля 2012

Можете ли вы опубликовать модель данных, которую вы помещаете в коллекцию сеансов? Некоторые объекты, которые, хотя и являются сериализуемыми java, не являются сериализуемыми в memcache / session; GXT модели, например, приходят на ум. Объекты, которые улучшены или которые в конечном итоге зависят от переходной карты, не могут быть сохранены в сеансе или в кэше памяти. Попробуйте сохранить только сами объекты, а затем проверьте свои результаты или наличие стековых трасс, которые прямо сообщат вам, если есть проблема с сериализацией.

Если вы не можете сериализовать модель как есть, рассмотрите возможность использования ObjectOutputStream для преобразования ваших объектов в сериализуемый байт [], или используйте другой механизм сериализации, такой как сериализатор GWT RPC, для преобразования в строку.

0 голосов
/ 16 февраля 2012

Убедитесь, что все объекты, хранящиеся в сеансе, реализуют интерфейс java.io.Serializable.

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