Создание системы электронной коммерции

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

µтствует счету, эти методы генерируют IllegalAccountTypeException. Если операция расходования денег может привести к негативному балансу, метод withdraw генерирует InsufficientFundsException. Если сумма обязательства превышает величину кредитной линии для счета, метод makeCharge генерирует InsufficientCreditException.

Метод transferFunds также проверяет тип счета и новый баланс; если необходимо, он генерирует те же самые исключительные ситуации, что и методы withdraw и makeCharge. Метод transferFunds вычитает из баланса одного экземпляра AccountEJB и добавляет такое же количество к другому экземпляру. Поскольку оба этих шага должны завершиться, метод transferFunds имеет атрибут транзакции Required. Если какой-либо из шагов заканчивается неудачно, происходит откат всей операции, и балансы остаются неизмененными.

 

3 Компоненты управления данными

 

Для каждого бизнес-субъекта, представленного в нашем простом банке, приложение Duke's Bank имеет соответствующий компонент управления данными:

-AccountEJB;

-CustomerEJB;

TxEJB.

Целью этих компонентов является обеспечение объектного представления следующих таблиц базы данных: account, customer и tx. Для каждого столбца в таблице соответствующий компонент управления данными имеет переменную экземпляра. Поскольку они используют управляемую компонентом персистенцию, компоненты управления данными содержат SQL-операторы, обращающиеся к базе данных. Например, метод create компонента управления данными CustomerEJB вызывает SQL-команду INSERT.

В отличие от сессионных компонентов компоненты управления данными не проверяют параметры методов (за исключением параметра с первичным ключом в ejbCreate). Во время фазы проектирования мы решили, что сессионные компоненты должны проверять параметры и генерировать исключительные ситуации, такие как CustomerNotInAccountException и IllegalAccountTypeException. Следовательно, если какое-либо другое приложение собиралось бы использовать эти компоненты управления данными, его сессионные компоненты должны были бы тоже проверять параметры методов.

 

4 Вспомогательные классы

 

Файлы EJB JAR включают несколько вспомогательных классов, используемых корпоративными компонентами. В таблице 1 кратко описываются вспомогательные классы.

 

Таблица 1 Вспомогательные классы для корпоративных компонентов приложения

Имя классаОписаниеAccountsDetailОбъединяет в себе состояние экземпляра AccountEJB. Возвращается методами getDetails компонентов AccountControllerEJB и AccountEJB.CodedNamesОпределяет строки, являющиеся логическими именами в вызовах метода lookup. (Например: java:comp/env/ejb/account). Класс EJBGetter ссылается на эти строки.CustomerDetailsОбъединяет в себе состояние экземпляра CustomerEJB. Возвращается методами getDetails компонентов CustomerControllerEJB и CustomerEJB.DBHelperОбеспечивает методы, которые генерируют следующие первичные ключи (например, getNextAccountId).DebugИмеет простые методы для вывода отладочных сообщений корпоративного компонента. Эти сообщения появляются на стандартном устройстве вывода J2EE-сервера, если он был запущен с ключом -verbose.DomainUtilСодержит проверочные методы: getAccountTypes, checkAccountType и isCreditAccount.EJBGetterИмеет методы, определяющие (путем вызова lookup) и возвращающие домашние интерфейсы (например, getAccountControllerHome).TxDetailsОбъединяет в себе состояние экземпляра TxEJB. Возвращается методами getDetails компонентов TxControllerEJB и TxEJB.

5 Таблицы базы данных

 

Таблица базы данных приложения Duke's Bank может быть классифицирована в соответствии со своим назначением: представление бизнес-сущностей и хранение следующего первичного ключа.

 

5.1 Таблицы, представляющие бизнес-сущности

 

На рисунке 3 показаны отношения между таблицами базы данных. Таблицы customer и account имеют отношения многие ко многим: пользователь может иметь несколько банковских счетов, и каждый счет может принадлежать более чем одному пользователю. Эти отношения реализуются при помощи таблицы перекрестных ссылок с именем customer_account_xref. Таблицы account и tx имеют отношения один ко многим: банковский счет может иметь много транзакций, но каждая транзакция относится только к одному счету.

 

Рисунок 3 Таблицы базы данных приложения Duke's Bank

 

Рисунок 3 использует несколько аббревиатур. PK обозначает первичный ключ - значение, уникально идентифицирующее строку в таблице. FK обозначает внешний ключ, являющийся первичным ключом связанной таблицы. Tx является сокращением для транзакции, такой как пополнение или расходование денежных средств.

 

.2 Таблицы, содержащие следующий первичный ключ

 

Эти таблицы имеют следующие имена:

-next_account_id;

-next_customer_id;

next_tx_id.

Каждая из этих таблиц имеет один столбец с именем id. Значение id представляет собой следующий первичный ключ, передаваемый в метод create компонента управления данными. Например, перед созданием нового компонента управления данными AccountsEJB сессионный компонент AccountControllerEJB должен получить уникальный ключ путем вызова метода getNextAccountId класса DBHelper. Метод getNextAccountId читает id из таблицы next_account_id, инкрементирует значение id в таблице и возвращает id.

 

6 Защита корпоративных компонентов

 

В платформе J2EE вы можете защитить корпоративный компонент, указав роли безопасности, которые могут обращаться к его методам (см. раздел Безопасность на уровне EJB). В приложении Duke's Bank определены две роли (BankCustomer и BankAdmin), поскольку корпоративными компонентами определяются две категории операций.

Пользователь с ролью BankAdmin может выполнять административные функции: создание и удаление счета, добавление или удаление пользователя счета, установку к