WebSphere Plants



Начало работы
Расположение таблицы базы данных
Расположение исходного кода
Примечания к коду

Начало работы

Для того чтобы создать отдельный адрес электронной почты и пароль для примера WebSphere Plants, щелкните на ссылке зарегистрировать учетную запись на странице идентификации. В следующей таблице приведены сведения об адресе электронной почты и пароле, установленным для Plants по умолчанию:


Адрес электронной почты plants@plantsbywebsphere.ibm.com
Пароль plants

Расположение таблицы базы данных

В примере используются следующие таблицы баз данных: CUSTOMER, INVENTORY, ORDERINFO, ORDERITEM, IDGENERATOR, BACKORDER и SUPPLIER. Эти таблицы находятся в базе данных PLANTSDB. База данных PLANTSDB расположена в файле PlantsByWebSphere.ear каталога каталог-профайла/installedApps/узел/PlantsByWebSphere.ear/Database/PLANTSDB, где узел - имя узла, на котором установлено приложение.

Структуру таблиц можно представить в виде операторов SQL следующим образом:


	CREATE TABLE CUSTOMER
  	 (  CUSTOMERID VARCHAR(250) NOT NULL,
   	 PASSWORD VARCHAR(250),
   	 FIRSTNAME VARCHAR(250),
   	 LASTNAME VARCHAR(250),
   	 ADDR1 VARCHAR(250),
   	 ADDR2 VARCHAR(250),
   	 ADDRCITY VARCHAR(250),
   	 ADDRSTATE VARCHAR(250),
   	 ADDRZIP VARCHAR(250),
   	 PHONE VARCHAR(250));

ALTER TABLE CUSTOMER ADD CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUSTOMERID); CREATE TABLE INVENTORY ( INVENTORYID VARCHAR(250) NOT NULL, NAME VARCHAR(250), HEADING VARCHAR(250), DESCRIPTION VARCHAR(250), PKGINFO VARCHAR(250), IMAGE VARCHAR(250), IMGBYTES LONG BIT VARYING, PRICE REAL, COST REAL, CATEGORY INTEGER, QUANTITY INTEGER, NOTES VARCHAR(250), ISPUBLIC INTEGER, MINTHRESHOLD INTEGER NOT NULL, MAXTHRESHOLD INTEGER NOT NULL); ALTER TABLE INVENTORY ADD CONSTRAINT PK_INVENTORY PRIMARY KEY (INVENTORYID); CREATE TABLE ORDER1 ( ORDERID VARCHAR(250) NOT NULL, SELLDATE VARCHAR(250), BILLNAME VARCHAR(250), BILLADDR1 VARCHAR(250), BILLADDR2 VARCHAR(250), BILLCITY VARCHAR(250), BILLSTATE VARCHAR(250), BILLZIP VARCHAR(250), BILLPHONE VARCHAR(250), SHIPNAME VARCHAR(250), SHIPADDR1 VARCHAR(250), SHIPADDR2 VARCHAR(250), SHIPCITY VARCHAR(250), SHIPSTATE VARCHAR(250), SHIPZIP VARCHAR(250), SHIPPHONE VARCHAR(250), CREDITCARD VARCHAR(250), CCNUM VARCHAR(250), CCEXPIREMONTH VARCHAR(250), CCEXPIREYEAR VARCHAR(250), CARDHOLDER VARCHAR(250), SHIPPINGMETHOD INTEGER NOT NULL, PROFIT REAL NOT NULL, CUSTOMERID VARCHAR(250)); ALTER TABLE ORDER1 ADD CONSTRAINT PK_ORDER1 PRIMARY KEY (ORDERID); CREATE TABLE ORDERITEM ( INVENTORYID VARCHAR(250) NOT NULL, NAME VARCHAR(250), PKGINFO VARCHAR(250), PRICE REAL NOT NULL, COST REAL NOT NULL, CATEGORY INTEGER NOT NULL, QUANTITY INTEGER NOT NULL, SELLDATE VARCHAR(250), ORDER_ORDERID VARCHAR(250) NOT NULL); ALTER TABLE ORDERITEM ADD CONSTRAINT PK_ORDERITEM PRIMARY KEY (INVENTORYID, ORDER_ORDERID); CREATE TABLE IDGENERATOR ( IDNAME VARCHAR(250) NOT NULL, IDVALUE INTEGER NOT NULL); ALTER TABLE IDGENERATOR ADD CONSTRAINT PK_IDGENERATOR PRIMARY KEY (IDNAME); CREATE TABLE BACKORDER ( BACKORDERID VARCHAR(250) NOT NULL, INVENTORYID VARCHAR(250), QUANTITY INTEGER NOT NULL, STATUS VARCHAR(250), LOWDATE BIGINT NOT NULL, ORDERDATE BIGINT NOT NULL, SUPPLIERORDERID VARCHAR(250) NULL); ALTER TABLE BACKORDER ADD CONSTRAINT PK_BACKORDER PRIMARY KEY (BACKORDERID); CREATE TABLE SUPPLIER ( SUPPLIERID VARCHAR(250) NOT NULL, NAME VARCHAR(250), STREET VARCHAR(250), CITY VARCHAR(250), USSTATE VARCHAR(250), ZIP VARCHAR(250), PHONE VARCHAR(250), URL VARCHAR(250)); ALTER TABLE SUPPLIER ADD CONSTRAINT PK_SUPPLIER PRIMARY KEY (SUPPLIERID);

Расположение исходного кода

Исходный код находится в каталогах
каталог-профайла/samples/src/PlantsByWebSphere.

Пользователи z/OS: Исходный код примеров недоступен для платформы z/OS, т.к. компоновка демонстрационных приложений на этой платформе не предусмотрена.

Примечания к коду

Обзор
Сервлеты
Объекты EJB

Обзор

Пример WebSphere Plants демонстрирует следующие технологии:

Приложение Plants WebSphere включает набор страниц JSP и HTML. Эти страницы взаимодействуют со следующими сервлетами: AccountServlet, ShoppingServlet, ImageServlet и AdminServlet. Сервлеты используют различные методы объектов EJB, которые, в свою очередь, при необходимости получают данные из баз данных. В целом, сеансовые объекты EJB без сохранения состояния используются в качестве средства доступа к сущностным объектам, что уменьшает количество транзакций.

Сервлеты

Ниже описаны используемые в приложении сервлеты.

ShoppingServlet

Сервлет ShoppingServlet управляет большей частью взаимодействий между браузером и объектами EJB. Сюда входят управление товарами, корзиной и заказами. Сеансовый объект Catalog используется для просмотра различных категорий товаров, для поиска и отображения всех найденных объектов Inventory. Информацию по выбранному товару сеансовый объект Catalog запрашивает у сущностного объекта Inventory CMP.

При добавлении товара в корзину создается сущностный объект ShoppingCart, работающий с сохранением сеанса. Сеансовый объект Catalog получает данные от объектов Inventory и помещает выбранный товар в корзину and places the item (объект ShoppingCart). Отображение и обновление содержимого корзины также осуществляются объектом ShoppingCart.

После вывода сведений о стоимости и способе доставки объект ShoppingCart создает сущностный объект Order CMP. После завершения процедуры проверки для отправки электронного письма с подтверждением (с помощью API JavaMail) создается сеансовый объект Mailer (работает без сохранения сеанса).

ImageServlet

Сервлет ImageServlet получает и размещает изображения товаров, находящиеся в базе данных. Сервлет помещает изображения из базы данных в страницы JSP и HTML и передает их браузеру.

AdminServlet

Сервлет AdminServlet обрабатывает запросы от пользователя (браузера) на обновление базы данных.

При обработке запроса на обновление базы данных, поступившего от страницы help.jsp, сервлет AdminServlet создает управляемое объектом хранилище (BMP) ResetDB. Этот объект полностью очищает таблицы баз данных и вносит в них значения, указанные в файле параметров pbw.properties.

Объекты EJB

Ниже описаны используемые в приложении объекты EJB.

Catalog

Catalog является сеансовым объектом, не сохраняющим состояние. Он предоставляет возможность обращения к CMP-объекту Inventory. Обычно сеансовые объекты, не сохраняющие состояние, служат для обращения к данным сущностных объектов EJB, при этом уменьшается количество используемых транзакций. Сеансовый объект EJB Catalog способен получать информацию от одного или нескольких объектов Inventory. Он содержит методы для добавления и удаления экземпляров Inventory. Методы сеансового объекта EJB Catalog также позволяют изменять существующие объекты Inventory.

Customer

Customer - сущностный CMP-объект EJB. Он содержит и обрабатывает данные учетных записей клиентов. Сущностный объект EJB Customer включает методы для создания, поиска и обновления информации и клиенте, а также для проверки пароля и получения значений собственных полей.

Inventory

Inventory - сущностный CMP-объект EJB. Этот объект содержит и обрабатывает данные о товарах. Существующие методы позволяют создавать, получать и изменять значения полей, а также выполнять поиск.

Login

Login является сеансовым объектом EJB, не сохраняющим состояние. Этот объект использует методы сущностного CMP-объекта Customer для создания и обновления учетных записей клиентов.

Mailer

Mailer является сеансовым объектом EJB, не сохраняющим состояние. Этот объект создает и отправляет электронное письмо с подтверждением, используя функции API JavaMail.

Order

Order - сущностный CMP-объект EJB. Этот объект содержит и обрабатывает данные о заказах. Существующие методы позволяют создавать поля и получать значения полей, а также выполнять поиск.

OrderItem - сущностный CMP-объект EJB. Этот документ содержит и обрабатывает данные об одном заказанном товаре. Существующие методы позволяют создавать поля и получать значения полей, а также выполнять поиск.

ReportGenerator

ReportGenerator - сеансовый объект EJB, не сохраняющий состояние. Этот объект создает отчеты на основе информации о заказах. ReportGenerator использует методы сущностного CMP-объекта EJB Order. В отчет входят сведения о том, какой товар чаще всего покупали в течение определенного периода времени и в какие регионы (в отчете указываются почтовые индексы) было отправлено наибольшее количество товаров в течение определенного периода времени.

ShoppingCart

ShoppingCart - сеансовый объект EJB, сохраняющий состояние. Этот объект хранит список товаров, заказанных в течение сеанса HTTP. Методы объекта ShoppingCart позволяют добавлять, удалять товары и обновлять сведения о них. ShoppingCart также включает метод для создания нового сущностного CMP-объекта EJB Order (вызывается при осуществлении заказа).

ResetDB

ResetDB - сущностный BMP-объект EJB. Этот объект удаляет все строки в таблицах баз данных.