Você está na página 1de 9

Implementação de Componentes

Utilizando CDI em projetos web (Servlet/JSP)

Pré-requisitos

 IDE Eclipse com plugin do Maven


 Tomcat 7 ou 8
 PostgreSQL

1. Crie um banco de dados no PostgreSQL chamado dbprojeto e a tabela projeto com o


script abaixo:

CREATE TABLE projeto(


id serial Primary Key,
nome varchar(255),
descricao text,
dataInicio date,
dataFim date
);

2. Vamos criar um novo projeto no Eclipse com o Maven.


a. Acesse menu File > New > Other … ou com o atalho Ctrl +N
b. No campo de pesquisa do wizard digite: maven
c. Selecione Maven Project

d. Clique em Next>
e. Na próxima janela, marque a opção “Create a simple Project (skip archetype
selection)”

Prof. Wolley W. Silva


Implementação de Componentes

f. Clique em Next >


g. Na próxima janela, preencha os campos Group Id e Artifact Id como o exemplo
da figura abaixo e selecione em Packaging a opção war.

h. Por último, clique em Finish.

Prof. Wolley W. Silva


Implementação de Componentes

3. Criando o arquivo web.xml


a.Clique com botão direito do mouse sobre o ícone Deployment Descriptor e
selecione Generate Deployment Descriptor Stub.

b. Certifique-se de que no diretório src / main / webapp / WEB-INF, o arquivo


web.xml foi criado.

4. Adicionando as Dependências no pom.xml

a. Abra o arquivo pom.xml do projeto e adicione as dependências a seguir.

<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>

<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>2.1.1.Final</version>
</dependency>

<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>

Prof. Wolley W. Silva


Implementação de Componentes

<version>9.4.1207.jre7</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

</dependencies>

b. Clique com o botão direito do mouse sobre o nome do projeto, selecione


Maven > Update Project ... ou pelo atalho Alt + F5. A atualização garantir que
o Maven fará o download de todos os arquivos jars declarados para sua
maquina local.

5. Habilitando o CDI no projeto


a.No arquivo web.xml adicione a configuração abaixo:

<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>

<resource-env-ref>
<resource-env-ref-name>BeanManager</resource-env-ref-name>
<resource-env-ref-type>
javax.enterprise.inject.spi.BeanManager
</resource-env-ref-type>
</resource-env-ref>

b. Copie META-INF disponível no FTP para o diretório src/main/resources. Nesta


pasta se encontram os arquivos beans.xml e contexto.xml, reesposáveis por
configurações do CDI.

6. Adicionando as classes do projeto


a. Vamos adicionar as classes modeladas abaixo no projeto, além de uma Servlet
como controller da aplicação.

Prof. Wolley W. Silva


Implementação de Componentes

b. Copie os pacotes br.umc.projetocdi.controller, br.umc.projetocdi.dao,


br.umc.projetocdi.model, br.umc.projetocdi.util, para o pacote
src/main/java do projeto. Os arquivos estão disponível no FTP.
c. Copie também o arquivo index.jsp para o diretório src/main/webapp.

Prof. Wolley W. Silva


Implementação de Componentes

7. Testando a aplicação
a. Adicione o Tomcat na aplicação. Na aba Server do Eclipse, clique no link para
criar um novo servidor.
b. Selecione Apache e o Temcat 7.

c. Adicione o projeto no Tomcat e finalize.


d. Ainda na aba Server, inicie o serviço do Tomcat
e. Acesse a url: http://localhost:8080/projetoCDI/ , a página index deve ser
carrega.

Prof. Wolley W. Silva


Implementação de Componentes

f. Teste o cadastro de um novo projeto. A data de inicio e fim deve ser inserida no
formato dd/mm/yyyy.

8. Alterando as classes para utilizar o CDI


a. Na classe ProjetoDAO, crie um novo construtor que receba a conexão por
injeção. Anote este construtor com @Inject do pacote javax.inject.Inject.

b. Connection do pacote java.sql não é um objeto simples, ele representa um


recurso externo e precisamos gerenciar a abertura e fechamento conexão.
Para isto, criaremos um classe especifica para o CDI injetar um Connection.
Esta classe é um Producer.
c. Crie um novo pacote em src/main/java, chamado br.umc.projetocdi.producer
d. Dentro deste pacote, crie uma classe chamada ConexaoProducer

Prof. Wolley W. Silva


Implementação de Componentes

e. Precisamos alterar também a Servlet, criando ProjetoDAO e Projeto como


atributo privado da classe e anotando as mesmas com @Inject. Assim, não é
mais necessário criar os objetos com o operador new.

Prof. Wolley W. Silva


Implementação de Componentes

9. Testando a aplicação
a.Reinicie o Tomcat
b. Acesso a url: http://localhost:8080/projetoCDI/
c. Preencha o formulário e teste o cadastro

d. Registro no banco de dados

e. O Log na console da IDE demostra que a conexão foi aberta e fechada durante o
atendimento da requisição.

Prof. Wolley W. Silva