Plants by WebSphere



Introdução
Localizando Tabelas de Banco de Dados
Localizando Código-fonte
Revendo Notas de Codificação

Introdução

Você pode criar um único endereço de e-mail e senha para a Amostra Plants by WebSphere clicando em registrar aqui em sua própria conta na página de Login. Além disso, há um endereço de e-mail e senha padrão para a Amostra Plants by WebSphere, apresentado na tabela a seguir:


Endereço de E-mail plants@plantsbywebsphere.ibm.com
Senha plants

Localizando Tabelas de Banco de Dados

As tabelas do banco de dados para esta amostra são CUSTOMER, INVENTORY, ORDERINFO, ORDERITEM, IDGENERATOR, BACKORDER e SUPPLIER. Estas tabelas são localizadas no banco de dados PLANTSDB. O banco de dados PLANTSDB está no arquivo PlantsByWebSphere.ear e está localizado no diretório raiz_do_perfil/installedApps/nome_da_célula/PlantsByWebSphere.ear/Database/PLANTSDB, em que nome_da_célula é o nome da célula na qual seu aplicativo está instalado.

Exiba o layout da tabela nas seguintes instruções 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);

Localizando Código-fonte

Localize o código-fonte no diretório
raiz_do_perfil/samples/src/PlantsByWebSphere.

Clientes do z/OS: A árvore de códigos fonte para as Amostras não é fornecida na plataforma z/OS, pois os aplicativos de Amostra não são construídos na plataforma z/OS.

Revendo Notas de Codificação

Visão Geral
Servlets
Beans Corporativos

Visão Geral

A Amostra Plants by WebSphere incorpora as seguintes tecnologias:

O aplicativo Plants by WebSphere é suportado através de uma série de páginas JSP e páginas HTML. Essas páginas se comunicam com os seguintes servlets: AccountServlet, ShoppingServlet, ImageServlet e AdminServlet. Os servlets utilizam os vários métodos de negócios do bean corporativo, o qual por sua vez, acessam os dados a partir de um banco de dados, se necessário. Em geral, os beans da sessão sem estado são utilizados para a interface com os beans de entidade, de forma a reduzir o número de transações.

Servlets

A seguinte seção fornece as informações nos servlets utilizados neste aplicativo.

ShoppingServlet

O servlet ShoppingServlet processa a maioria das interações entre o navegador e os beans corporativos. Essa interação inclui o inventário, o carrinho de compras e funções de pedidos. A seleção de uma categoria de compras para procurar utilizará um bean de sessão Catalog, para localizar e exibir todos os objetos relevantes do objeto Inventory. A exibição de detalhes de um item também é executada utilizando um bean de sessão Catalog para obter informações de um bean de entidade CMP Inventory.

A inclusão de um item no carrinho de compras cria um bean de sessão com estado ShoppingCart. Um bean de sessão do Catalog obtém os dados do Inventory e coloca o item no bean ShoppingCart. A exibição e a atualização do carrinho de compras é feita utilizando o bean de sessão com estado ShoppingCart.

Após digitar as informações de cobrança e envio, o bean ShoppingCart cria um novo bean de entidade CMP Order. Ao concluir o procedimento de registro de saída, um bean de sessão sem estado Mailer é criado para enviar um e-mail de confirmação, utilizando a API JavaMail.

ImageServlet

O servlet ImageServlet obtém e coloca as imagens do produto no banco de dados. O servlet obtém imagens das páginas JSP e HTML a partir do banco de dados e serve de volta para o navegador por meio de resposta HTTP.

AdminServlet

O servlet do AdminServlet processa os pedidos de um usuário (navegador) para preencher novamente o banco de dados.

Ao processar pedidos de reocupação a partir da página help.jsp, o servlet AdminServlet cria um bean BMP (Bean-Managed Persistence) chamado ResetDB. Esse bean exclui todas as tabelas de banco de dados e as ocupa novamente com valores de dados iniciais do arquivo de propriedades pbw.properties.

Beans Corporativos

A seção a seguir descreve os beans corporativos utilizados neste aplicativo.

Catalog

O Catalog é um bean de sessão sem estado. É o acesso primário ao bean de entidade CMP (container-managed persistance) Inventory. Os beans de sessão sem estado geralmente acessam os dados do bean da entidade, enquanto limitam o número de transações utilizadas. O bean de sessão Catalog possui métodos de negócios para obter informações sobre um ou mais beans Inventory. Existem métodos para incluir e remover um item de Inventory. O bean de sessão Catalog também possui métodos para modificar os beans Inventory existentes.

Customer

O Customer é um bean de entidade CMP. Ele contém e gerencia os dados da conta necessários para um cliente. O bean de entidade Customer possui métodos de criação, localização e atualização de clientes, bem como de verificação de senha e obtenção de campos no bean de entidade Customer.

Inventory

O Inventory é um bean de entidade CMP. Esse bean de entidade contém e gerencia dados de itens do inventário. Os métodos estão disponíveis para a localização, criação, obtenção e definição de campos de dados.

Login

O Login é um bean de sessão sem estado. Esse bean de sessão faz interface com o bean de entidade CMP Customer para criar e atualizar as contas de clientes.

Mailer

O Mailer é um bean de sessão sem estado. Esse bean de sessão cria e envia um e-mail de confirmação de pedido utilizando a API JavaMail.

Order

O Order é um bean de entidade CMP. Esse bean contém e gerencia dados do pedido. Os métodos são disponíveis para localização, criação e obtenção campos de dados.

OrderItem é um bean de entidade CMP. Esse bean de entidade contém e gerencia um único item do pedido. Os métodos são disponíveis para localização, criação e obtenção campos de dados.

ReportGenerator

O ReportGenerator é um bean de sessão sem estado. Esse bean de sessão gera relatórios com base em informações localizadas em pedidos. O bean de sessão ReportGenerator faz interface com o bean de entidade CMP Order. Os relatórios são formados de itens mais vendidos para um intervalo de data definido e códigos postais mais vendidos para um intervalo de data definido.

ShoppingCart

O ShoppingCart é um bean de sessão com estado. Esse bean de sessão mantém uma lista de itens de inventário para serem adquiridos em toda a sessão HTTP. O bean de sessão ShoppingCart possui métodos de negócios para incluir, remover e atualizar os itens do inventário. O bean de sessão ShoppingCart também tem um método para criar um novo bean de entidade CMP Order quando o cliente estiver pronto para concluir uma compra.

ResetDB

O ResetDB é um bean de entidade BMP. Esse bean de entidade exclui todas as linhas nas tabelas do banco de dados.