Если вы используете Enterprise Java Beans (EJB) и имеете API-интерфейс Session Bean-компонента без состояния, то каждый экземпляр SSB выполняется в одном потоке на одной виртуальной машине Java, а его клиенты работают в разных потоках и, в общем, в разные виртуальные машины на разных компьютерах. Поскольку вы не можете передать ссылку на объект Java из одной JVM в другую, объект должен быть сериализован в строку, отправлен в другую JVM и затем десериализован обратно в объект. Эта сериализация / десериализация происходит как с входящими аргументами, так и с возвращаемым значением.
Если вы используете Java Message Service, объекты, которые вы отправляете в каждом сообщении, сериализуются в строку, сохраняются в базе данных, а затем десериализуются получателем сообщения в другое время и в любом месте.
И, как отмечает Уилл Хартунг, объекты HTTP-сеанса в целом являются общими для JVM. Если у вас есть кластер серверов приложений Glassfish Java EE, на котором запущено приложение электронной коммерции, запросы каждого клиента сбалансированы по нагрузке для любого доступного сервера, и этот сервер должен иметь возможность просматривать состояние сеанса клиента (имя клиента, корзина и т. Д.). ). Он может получить это только через сериализацию. В целях безопасности состояние сеанса также может быть записано на диск (например, в базу данных).