Содержание

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

Слайды

HTML

Примеры

zip

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

Физические лица
  1. Добавьте к банковскому приложению возможность работы с физическими лицами.
    1. У физического лица (Person) можно запросить имя, фамилию и номер паспорта.
    2. Удалённые физические лица (RemotePerson) должны передаваться при помощи удалённых объектов.
    3. Локальные физические лица (LocalPerson) должны передаваться при помощи механизма сериализации, и при последующем использовании не требовать связи с сервером.
    4. Должна быть возможность поиска физического лица по номеру паспорта, с выбором типа возвращаемого лица.
    5. Должна быть возможность создания записи о физическом лице по его данным.
    6. У физического лица может быть несколько счетов, к которым должен предоставляться доступ.
    7. Счету физического лица с идентификатором subId должен соответствовать банковский счет с id вида passport:subId.
    8. Изменения, производимые со счетом в банке (создание и изменение баланса), должны быть видны всем соответствующим RemotePerson, и только тем LocalPerson, которые были созданы после этого изменения.
    9. Изменения в счетах, производимые через RemotePerson, должны сразу применяться глобально, а производимые через LocalPerson – только локально для этого конкретного LocalPerson.
  2. Реализуйте приложение, демонстрирующее работу с физическим лицами.
    1. Аргументы командной строки: имя, фамилия, номер паспорта физического лица, номер счета, изменение суммы счета.
    2. Если информация об указанном физическом лице отсутствует, то оно должно быть добавлено. В противном случае – должны быть проверены его данные.
    3. Если у физического лица отсутствует счет с указанным номером, то он создается с нулевым балансом.
    4. После обновления суммы счета новый баланс должен выводиться на консоль.
  3. Напишите тесты, проверяющие вышеуказанное поведение как банка, так и приложения.
    • Для реализации тестов рекомендуется использовать JUnit (Tutorial). Множество примеров использования можно найти в тестах.
    • Если вы знакомы с другим тестовым фреймворком (например, TestNG), то можете использовать его.
    • Jar-файлы используемых библиотек надо класть в каталог lib вашего репозитория.
    • Нельзя использовать самописные фреймворки и тесты, запускаемые через main.
  4. Сложный вариант
    1. Тесты не должны рассчитывать на наличие запущенного RMI Registry.
    2. Создайте класс BankTests, запускающий тесты.
    3. Создайте скрипт, запускающий BankTests и возвращающий код (статус) 0 в случае успеха и 1 в случае неудачи.
    4. Создайте скрипт, запускающий тесты с использованием стандартного подхода для вашего тестового фреймворка. Код возврата должен быть как в предыдущем пункте.