Тема 13. Сериализация и RMI

Содержание

  1. Сериализация
    1. Сериализация и десериализация
    2. Объектные потоки
    3. Автоматическая сериализация
    4. Ручная сериализация
    5. Настраиваемая сериализация
    6. Сериализация и версионирование
    7. Сериализация и дескрипторы
  2. Концепции RMI
    1. Предназначение
    2. Схема работы и стек протоколов
    3. Удаленные интерфейсы
    4. Stub и Skeleton
    5. Распределенная сборка мусора
    6. RMI Registry
  3. Применение RMI

Слайды

HTML

Примеры

zip

Домашнее задание 12. Физические лица

  1. Добавьте к банковскому приложению возможность работы с физическими лицами.
    1. У физического лица (Person) можно запросить имя, фамилию и номер паспорта.
    2. Удалённые физические лица (RemotePerson) должны передаваться при помощи удалённых объектов.
    3. Локальные физические лица (LocalPerson) должны передаваться при помощи механизма сериализации, и при последующем использовании не требовать связи с сервером.
    4. Должна быть возможность поиска физического лица по номеру паспорта, с выбором типа возвращаемого лица.
    5. Должна быть возможность создания записи о физическом лице по его данным.
  2. У физического лица может быть несколько счетов, к которым должен предоставляться доступ через Person.
    1. Счёту физического лица с идентификатором subId должен соответствовать банковский счёт с id вида personId:subId.
    2. Изменения, производимые со счётом в банке (создание и изменение баланса), должны быть видны всем соответствующим RemotePerson, и только тем LocalPerson, которые были созданы после этого изменения.
    3. Изменения в счетах, производимые через RemotePerson, должны сразу применяться глобально, а производимые через LocalPerson – только локально для этого конкретного LocalPerson.
  3. Реализуйте приложение, демонстрирующее работу с физическим лицами.
    1. Аргументы командной строки: имя, фамилия, номер паспорта физического лица, номер счёта, изменение суммы счёта.
    2. Если информация об указанном физическом лице отсутствует, то оно должно быть добавлено. В противном случае – должны быть проверены его данные.
    3. Если у физического лица отсутствует счёт с указанным номером, то он создается с нулевым балансом.
    4. После обновления суммы счёта новый баланс должен выводиться на консоль.
  4. Сложный вариант
    1. На каждом счету всегда должно быть неотрицательное количество денег.
  5. Приложение должно находится в пакете info.kgeorgiy.ja.*.bank и его подпакетах.

Домашнее задание 13. Физические лица (тесты)

  1. Напишите тесты, проверяющие поведение банка и приложения из домашнего задания Физические лица.
    • Для реализации тестов рекомендуется использовать JUnit (Tutorial). Множество примеров использования можно найти в тестах.
    • Если вы знакомы с другим тестовым фреймворком (например, TestNG), то можете использовать его.
    • Добавьте jar-файлы используемых библиотек в каталог lib вашего репозитория.
    • Нельзя использовать самописные фреймворки и тесты, запускаемые через main.
  2. Сложный вариант
    1. Тесты не должны рассчитывать на наличие запущенного RMI Registry.
    2. Создайте класс BankTests, запускающий тесты.
    3. Создайте скрипт, запускающий BankTests и возвращающий код (статус) 0 в случае успеха и 1 в случае неудачи.
    4. Создайте скрипт, запускающий тесты с использованием стандартного подхода для вашего тестового фреймворка. Код возврата должен быть как в предыдущем пункте.
  3. Тесты должны находится в пакете info.kgeorgiy.ja.*.bank и его подпакетах.
  4. При сдаче вам нужно будет продемонстрировать работу тестов на вашем компьютере.

Это домашнее задание связано с домашним заданием Физические лица и будет приниматься только с ним.