Ola ! Este é o POC do KWIK-EMART feito por Nelson Fernando da Silva Menetti
0- A solução implementada 1- Ambiente 2- Configuração 3- Como testar ?
Diante dos requisitos da POC o seguinte foi feito :
Cadastro de clientes -
Foi criado um serviço Rest com RESTEASY que é ativado via AJAX por uma tela de cadastro , este serviço invoca um EJB que grava os dados no banco ( JPA- Hibernate)
Cadastro de produtos -
Foi criado um serviço Rest com RESTEASY que é ativado via AJAX por uma tela de cadastro , este serviço invoca um EJB que grava os dados no banco ( JPA- Hibernate)
Busca de produtos -
Foi criado uma tela de busca que ativa via AJAX um serviço REST que via Hibernate-Search (LUCENE) busca produtos por suas Descrições , nomes e categorias
Tela de Login e Segurança-
Uma tela de login foi criada porem não fiz nenhuma implementação de fundo para a mesma.
O plano inicial era que a segurança ( e consequentemente o Login de usuarios) fosse realizado via OAuth com Token + Sessoes Web via Shiro mas o tempo para desenvolver tal solução é maior do que o que posso fazer no momento até o fim de segunda-feira meu quinto dia. (Pois tenho que conciliar esse POC com meu trabalho). Caso esse seja um critero eliminatorio PARE DE LER AGORA , EU JA ESTOU REPROVADO.
Cache - EhCache é usado como 2 nivel de cache para o hibernate e todas as querys sao cacheadas pelo proprio HIBERNATE
Testes Unitarios - Não ouve tempo para criar uma suite de testes unitarios Caso esse seja um critero eliminatorio PARE DE LER AGORA , EU JA ESTOU REPROVADO.
Sobre a estrutura das paginas e CSS - Eu tomei as estruturas HTML com template do BLOG http://www.webdezign.co.uk/blog/
Container JBOSS EAP
A aplicação Kwik-E-Mart deste POC foi construida para rodar em Jboss EAP 6.1. A versão utilizada no desenvolvimento pode ser obtida em: http://www.jboss.org/products/eap
Banco de dados relacional - MySQL
Como banco de dados foi utilizado o MySQL Community Edition , o mesmo pode ser obtido em http://dev.mysql.com/downloads/
Build da solução - MAVEN
O build da solução foi feito com MAVEN , o mesmo pode ser encontrado aqui http://maven.apache.org/
Antes de realizar testes nesta solução é preciso realizar a configuração do JBOSS e do MySQL :
MySQL
A-) Criação do banco de dados e carga inicial de dados
No projeto partindo da pasta raiz acesse a pasta: \kemart-ecommerce-solution\persistence\src\main\sql\mysql
Execute os scripts : dbschema.sql & data.sql ( NESTA ORDEM)
JBOSS
A-) Crie o modulo MySQL para o driver de banco de dados
Na pasta raiz da instalação do JBOSS va ate a pasta /modules: Crie a seguinte estrutura de pastas com/mysql/main Na pasta /main crie um XML com o nome "module" com o seguinte conteudo:
Va até o site do MySQL ( ou baixe via Maven) o jar do conector MySQL versao 5.1.6 e coloque o mesmo na pasta /main Sua estrura deve ficar assim: [JBOSS_HOME]/Module/com/mysql/main -> module.xml & mysql-connector-java-5.1.6.jar
B-)Crie o Datasource da Aplicação no dominio standalone
Agora vamos criar o datasource da aplicação , va até a pasta [JBOSS_HOME]/Standalone/Configurations . Edite o arquivo standalone.xml Procure pela palavra "datasource" , logo abaixo do datasource de exemplo cole a configuração abaixo:
<datasource jta="true" jndi-name="java:jboss/datasources/KemartDS" pool-name="KemartDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql://localhost:3306/kemart</connection-url>
<driver>mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>20</min-pool-size>
<max-pool-size>100</max-pool-size>
<prefill>true</prefill>
<use-strict-min>false</use-strict-min>
</pool>
<security>
<user-name>USUARIO_BANCO_MYSQL</user-name>
<password>SENHA_DO_BANCO_MYSQL</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<prepared-statement-cache-size>100</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
Altere o usuario e senha para os configurados na sua instalação de banco de dados.
Procure pela palavra "drivers" e logo apos o driver de exemplo cole a configuração abaixo:
C-)Faça a instalação da solução no Jboss
Execute o script standalone.bat ( ou standalone.sh se estiver em ambiente Unix) situados na pasta [JBOSS_HOME]/bin para subir a instancia do JBOSS. Acesse a pagina http://localhost:9990/console/App.html#deployments e faça o deploy do war da solução ** **(Se este for seu primeiro acesso precisará cadastrar um usuario usando o script add-user também presente na pasta [JBOSS_HOME]/bin)
Você já esta pronto para testar!
A-) Cadastro de Usuario :
Acesse http://localhost:8080/kwikemart-online-store/clientRegister.html Preencha todos os campos e clique em Create Account.
B-) Cadastro de Produto:
Acesse http://localhost:8080/kwikemart-online-store/productRegister.html Preencha todos os campos e clique em Save Product.
C-) Busca de Produto:
Crie os indices do lucene invocando o seguinte serviço REST no browser: http://localhost:8080/kwikemart-online-store/services/lucene/create
Observe que os indices serao criados na pasta C:\var\lucene\indexes
Acesse a pagina http://localhost:8080/kwikemart-online-store/search.html
Faça sua busca .
D-) Login
A pagina de login nao funcional pode ser acessada pelo link: