SlideShare uma empresa Scribd logo
1 de 7
Baixar para ler offline
J550

J2EE e
Datasources
Helder da Rocha (helder@acm.org)
www.argonavis.com.br

1
Recursos em servidores J2EE
Servlets rodando em servidores compatíveis J2EE podem
acessar recursos através de JNDI (dominio java:comp/env)
Variáveis (environment entries)
Referências para componentes EJB
Referências para fábricas de recursos (conexões de banco de dados,
URLs, serviço de e-mail, JMS, conectores EIS via JCA)
Serviços

Para usar esses recursos
Servlet deve estar empacotado em um WAR
Nome das variáveis e referências devem ser declarados no web.xml
Servlet deve usar como contexto inicial o domínio java:comp/env

Elementos (filhos de <web-app>) usados no web.xml
<env-entry>
<ejb-ref>
<resource-ref>
2
Environment Entries
Alternativa global (para o WAR) aos <init-param>
São acessíveis dentro de qualquer servlet ou JSP da aplicação WAR
Não são visíveis por outras aplicações do servidor (não é um nome
JNDI global - está abaixo de java:comp/env - é local à aplicação)
Acessíveis via ferramentas de deployment (podem ser redefinidas)

Exemplo de uso dentro do <web-app>
<env-entry>
<env-entry-name>cores/fundo</env-entry-name>
<env-entry-value>rgb(255, 255, 200)</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>

Tipos de dados legais são String e wrappers (Double, Integer, etc.)

Uso dentro do servlet
Context initCtx = new InitialContext();
String fgColor = (String)
initCtx.lookup("java:comp/env/cores/fundo");

3
Componentes EJB
Servlets e JSPs podem se comunicar com EJBs da aplicação
declarando uma referência associada ao bean chamado
A referência deve informar o tipo do bean (Session, Entity ou
MessageDriven e suas interfaces remota e home.
<ejb-ref>
<description>Cruise ship cabin</description>
<ejb-ref-name>ejb/CabinHome</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.titan.cabin.CabinHome</home>
<remote>com.titan.cabin.Cabin</remote>
</ejb-ref>

Componentes EJB são retornados como objetos CORBA que
precisam ser reduzidos através da função narrow.
InitialContext initCtx = new InitialContext();
Object ref = initCtx.lookup("java:comp/env/ejb/CabinHome");
CabinHome home = (CabinHome)
PortableRemoteObject.narrow(ref, CabinHome.class);

4
Conexões de banco de dados
Fábricas de objetos são acessíveis via <resource-ref>. A
mais comum é a fábrica de conexões de banco de dados
<resource-ref>
<description>Cloudscape database</description>
<res-ref-name>jdbc/BankDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>SERVLET</res-auth>
</resource-ref>

<res-auth> informa quem é responsável pela autenticação

Através da DataSource, obtém-se uma conexão.
InitialContext initCtx = new InitialContext();
DataSource ds = (DataSource)
initCtx.lookup("java:comp/env/jdbc/BankDB");
Connection con1 = ds.getConnection();// res-auth: CONTAINER
Connection con2 =
source.getConnection("user","pass"); // res-auth: SERVLET

5
Exercício
1. Altere o exercício onde usamos banco de dados
(DAO) e faça com que ele use um DataSource em
vez da conexão JDBC usual
Se possível, use o mesmo banco (se não, crie uma base
de dados e a tabela no novo banco)
Não precisa mexer no SQL.
Mude apenas a chamada para obter a conexão: obtenha
a conexão com Connection con = ds.getConnection()
em cada método e libere-a no final com con.close();

2. Grave algumas variáveis como no ambiente do
servidor usando <env-entry> e leia-as de um
servlet usando JNDI
6
helder@acm.org

argonavis.com.br
7

Mais conteúdo relacionado

Semelhante a J2EE e Datasources

Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusDenis L Presciliano
 
Resumo Anotacoes Certificacao SCBCD 5
Resumo Anotacoes Certificacao SCBCD 5Resumo Anotacoes Certificacao SCBCD 5
Resumo Anotacoes Certificacao SCBCD 5Gilberto Holms
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireportfpsgyn
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.Rogério Napoleão Jr.
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntDenis L Presciliano
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivityffeitosa
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Revisao Geral
Revisao GeralRevisao Geral
Revisao GeralOscar
 
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeRepensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeAdriano Tavares
 
Enterprise Java Beans
Enterprise Java BeansEnterprise Java Beans
Enterprise Java BeansRubem Azenha
 

Semelhante a J2EE e Datasources (20)

Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta Cactus
 
Resumo Anotacoes Certificacao SCBCD 5
Resumo Anotacoes Certificacao SCBCD 5Resumo Anotacoes Certificacao SCBCD 5
Resumo Anotacoes Certificacao SCBCD 5
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireport
 
Java 08
Java 08Java 08
Java 08
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.
 
Maverick v1.0
Maverick v1.0Maverick v1.0
Maverick v1.0
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando Ant
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivity
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Revisao Geral
Revisao GeralRevisao Geral
Revisao Geral
 
Introdução ao Apache Ant
Introdução ao Apache AntIntrodução ao Apache Ant
Introdução ao Apache Ant
 
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeRepensando padrões e boas práticas java ee
Repensando padrões e boas práticas java ee
 
Enterprise Java Beans
Enterprise Java BeansEnterprise Java Beans
Enterprise Java Beans
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 

Mais de Denis L Presciliano

Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsDenis L Presciliano
 
Funcamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteFuncamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteDenis L Presciliano
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e ComposiçãoDenis L Presciliano
 
Tipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxoTipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxoDenis L Presciliano
 
Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Denis L Presciliano
 
Configuração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntConfiguração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntDenis L Presciliano
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Autenticação e Controle de Acesso
Autenticação e Controle de AcessoAutenticação e Controle de Acesso
Autenticação e Controle de AcessoDenis L Presciliano
 

Mais de Denis L Presciliano (20)

Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Classes internas
Classes internasClasses internas
Classes internas
 
Entrada e Saída
Entrada e SaídaEntrada e Saída
Entrada e Saída
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e Strings
 
Funcamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteFuncamentos de Programação Concorrente
Funcamentos de Programação Concorrente
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Interfaces e Porlimosfismo
Interfaces e PorlimosfismoInterfaces e Porlimosfismo
Interfaces e Porlimosfismo
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e Composição
 
Pacotes e Encapsulamento
Pacotes e EncapsulamentoPacotes e Encapsulamento
Pacotes e Encapsulamento
 
Como criar classes e objetos
Como criar classes e objetosComo criar classes e objetos
Como criar classes e objetos
 
Tipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxoTipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxo
 
Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2
 
Configuração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntConfiguração do ambiente JEdit + Ant
Configuração do ambiente JEdit + Ant
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
J530 15 workshop
J530 15 workshopJ530 15 workshop
J530 15 workshop
 
J530 14 xdoclet
J530 14 xdocletJ530 14 xdoclet
J530 14 xdoclet
 
Autenticação e Controle de Acesso
Autenticação e Controle de AcessoAutenticação e Controle de Acesso
Autenticação e Controle de Acesso
 

J2EE e Datasources

  • 1. J550 J2EE e Datasources Helder da Rocha (helder@acm.org) www.argonavis.com.br 1
  • 2. Recursos em servidores J2EE Servlets rodando em servidores compatíveis J2EE podem acessar recursos através de JNDI (dominio java:comp/env) Variáveis (environment entries) Referências para componentes EJB Referências para fábricas de recursos (conexões de banco de dados, URLs, serviço de e-mail, JMS, conectores EIS via JCA) Serviços Para usar esses recursos Servlet deve estar empacotado em um WAR Nome das variáveis e referências devem ser declarados no web.xml Servlet deve usar como contexto inicial o domínio java:comp/env Elementos (filhos de <web-app>) usados no web.xml <env-entry> <ejb-ref> <resource-ref> 2
  • 3. Environment Entries Alternativa global (para o WAR) aos <init-param> São acessíveis dentro de qualquer servlet ou JSP da aplicação WAR Não são visíveis por outras aplicações do servidor (não é um nome JNDI global - está abaixo de java:comp/env - é local à aplicação) Acessíveis via ferramentas de deployment (podem ser redefinidas) Exemplo de uso dentro do <web-app> <env-entry> <env-entry-name>cores/fundo</env-entry-name> <env-entry-value>rgb(255, 255, 200)</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> Tipos de dados legais são String e wrappers (Double, Integer, etc.) Uso dentro do servlet Context initCtx = new InitialContext(); String fgColor = (String) initCtx.lookup("java:comp/env/cores/fundo"); 3
  • 4. Componentes EJB Servlets e JSPs podem se comunicar com EJBs da aplicação declarando uma referência associada ao bean chamado A referência deve informar o tipo do bean (Session, Entity ou MessageDriven e suas interfaces remota e home. <ejb-ref> <description>Cruise ship cabin</description> <ejb-ref-name>ejb/CabinHome</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <home>com.titan.cabin.CabinHome</home> <remote>com.titan.cabin.Cabin</remote> </ejb-ref> Componentes EJB são retornados como objetos CORBA que precisam ser reduzidos através da função narrow. InitialContext initCtx = new InitialContext(); Object ref = initCtx.lookup("java:comp/env/ejb/CabinHome"); CabinHome home = (CabinHome) PortableRemoteObject.narrow(ref, CabinHome.class); 4
  • 5. Conexões de banco de dados Fábricas de objetos são acessíveis via <resource-ref>. A mais comum é a fábrica de conexões de banco de dados <resource-ref> <description>Cloudscape database</description> <res-ref-name>jdbc/BankDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>SERVLET</res-auth> </resource-ref> <res-auth> informa quem é responsável pela autenticação Através da DataSource, obtém-se uma conexão. InitialContext initCtx = new InitialContext(); DataSource ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/BankDB"); Connection con1 = ds.getConnection();// res-auth: CONTAINER Connection con2 = source.getConnection("user","pass"); // res-auth: SERVLET 5
  • 6. Exercício 1. Altere o exercício onde usamos banco de dados (DAO) e faça com que ele use um DataSource em vez da conexão JDBC usual Se possível, use o mesmo banco (se não, crie uma base de dados e a tabela no novo banco) Não precisa mexer no SQL. Mude apenas a chamada para obter a conexão: obtenha a conexão com Connection con = ds.getConnection() em cada método e libere-a no final com con.close(); 2. Grave algumas variáveis como no ambiente do servidor usando <env-entry> e leia-as de um servlet usando JNDI 6