Цель сериализации в веб-приложении

  1. Где использование сериализации в веб-приложении.

  2. Необходимо ли, чтобы компонент формы был сериализуемым.

  3. В Tomcat, что такое использование файла sessions.ser..

Ответ 1

1) Это зависит от приложения, но Servlet Spec говорит, что если контейнер сервлета хочет поддерживать распределенные среды (совместное использование сеансов между экземплярами) и тому подобное, он должен принимать объекты, которые реализуют Serializable и могут их перенести, Tomcat также поддерживает сохранение состояния сеанса во всех перезапусках сервера для объектов сеанса, которые могут быть сериализованы. Вы можете включить или отключить эту функцию Tomcat в файле conf/context.xml(см. Там комментарии).

2) Для формы bean было бы необязательно быть Сериализуемым, если: a) это область сеанса и b) вы используете либо распределенные сеансы, либо такую ​​функцию, как Tomcat, для сохранения требуемого сеанса.

3) Файл session.ser - это файл, содержащий сериализованные объекты из сеанса. Tomcat использует это, чтобы сохранить их через перезагрузки сервера, если вы настроили это для этого (см. Выше). Обычно файл .ser представляет собой сериализованный объект Java, который является двоичным представлением состояния объекта.

Ответ 2

По первому и второму вопросу, посмотрите поток SO. Что касается третьего вопроса, session.ser - сериализованный сеанс. Тем не менее,

  • Да, нам нужна сериализация всякий раз, когда нам нужно сохранять объекты в файловой системе или отправлять объекты по проводу. Вы можете подумать, что в веб-приложении мы не обязательно это делаем. Но сервер обычно требует сериализуемой вещи, если это необходимо в будущем, когда вы переключаетесь в кластерную среду или хотите передать ваш bean на удаленный компонент, т.е. Компонент EJB. Или вы можете захотеть сохранить ваш bean в сеанс, по этой причине ваш beans должен быть сериализуемым.

  • Да, по той же причине, о которой говорилось выше.

  • session.ser - сериализованный сеанс. Томкат упорствовал, поэтому его можно было восстановить позже. Теперь у вас появилась идея, почему нам нужна сериализуемая beans, потому что вы можете захотеть сохранить объекты bean для сеанса и сеанса Tomcat persist в файловой системе, то есть session.ser. Таким образом, ваш beans должен реализовать Serializable, чтобы они могли быть сохранены/восстановлены с помощью сеанса.

Кстати, правильность сохранения и восстановления bean зависит от правильной реализации Serializable. Для этого я бы рекомендовал вам ознакомиться с соответствующими темами в "Эффективной Java".

Ответ 3

Сессии (и все добавленные к нему атрибуты) должны быть сериализованы, если контейнер хочет сохранить сеанс. Это может иметь две причины:

  • сеанс должен быть передан другому node кластера с балансировкой нагрузки
  • сеансы должны быть заменены из-за низкой памяти

Другая возможная причина заключается в передаче атрибутов запроса от одного webapp к другому с использованием перекрестного контекстного диспетчеризации. Оба webapps имеют разные загрузчики классов, поэтому простое выполнение не будет работать.

Итак, ваш tomcat, похоже, пишет сеанс в файл с использованием сериализации. Форма bean обычно также сохраняется в сеансе, поэтому да, она должна быть сериализована.

И, наконец, может быть гораздо больше причин для сериализации, как в любом другом приложении. Кэши могут понадобиться для изменения содержимого кеша (например, ehcache). Любая другая часть данных может быть сериализована для хранения в виде blob в базе данных,...

Ответ 4

Ничего себе, много вопросов без большого контекста.

Для вашего # 1 я предполагаю, что вы говорите о сериализации, в которой вы намекаете в других вопросах о сериализации Java, а не о сериализации и parallelism. Если это так, многие веб-приложения будут сериализовать или сохранить состояние объектов, чтобы сохранить его долговечность. Эта долговечность может использоваться по HTTP-запросам (как в управлении сеансами), для долгосрочного хранения информации или для отправки через "сеть" с точки зрения обеспечения того, чтобы все стороны получили копию указанной информации.

Нужно спросить себя в HTTP, если это действительно хорошая идея, так как по дизайну и шкале апатридов "хорошо", и если у вас есть резервное хранилище, такое как БД, почему БД не выполняет работу. Форма bean Я бы предположила, что она используется в этом качестве, поскольку сервлеты будут передавать информацию о форме как описано.

Ответ 5

  • Хорошее описание из wikipedia:

    Сериализация имеет ряд преимущества. Он обеспечивает:

    • метод сохраняющихся объектов, который более удобен, чем запись их свойств в текст файл на диске и повторная сборка их, читая это снова.
    • способ выдачи удаленных вызовов процедур, например, как в SOAP
    • метод распространения объектов, особенно в программном обеспечении
      комплектующие таких как COM, CORBA и т.д.
    • метод обнаружения изменений во времени изменяющихся данных.

    Пример реального мира (простой): Скажите вы создаете экземпляр пользователя в java. Теперь вы хотите отобразить этот объект в веб-браузере с помощью javascript. Один из вариантов - сериализация объекта таким образом, чтобы javascript может десериализовать объект (используя представление, которое могут понимать как java, так и javascript) и отобразите его.

  • Это зависит от того, что вам нужно сделать с формой bean относительно того, должен быть сериализован или нет.
  • Приложение Tomcat Manager - это веб-сайт приложение, которое поможет вам развернуть и управлять другими веб-приложениями Кот. Я не эксперт по котятам, но Я думаю, что Tomcat Manager пытается запомнить информацию о сеансы, созданные в Интернете приложений, которыми он управляет. Это нужно помнить эту информацию даже когда процесс tomcat перезапущен. Итак, менеджер Tomcat создает файл с именем "Session.ser" который представляет собой сериализованное представление информации, необходимой ей для помните обо всех управляемых приложений.