TDD. Se você é leitor da MundoJ ou alguma outra revista, em aplicações Java EE com JBoss Arquillian

Tamanho: px
Começar a partir da página:

Download "TDD. Se você é leitor da MundoJ ou alguma outra revista, em aplicações Java EE com JBoss Arquillian"

Transcrição

1 capa_ TDD em aplicações Java EE com JBoss Arquillian Passo-a-passo completo para testar seus EJBs sem Mocks Gabriel Ozeas Bacharel em Ciência da Computação pela Universidade de Franca. Tem contato com Java há mais de 5 anos, possui as certificações SCJP, SCWCD, SCBCD, OCE-EJB, OCMJD, CSM. Trabalha atualmente como desenvolvedor e consultor na equipe de portais da 4Linux, ajudando outras equipes em projetos de órgãos públicos e privados. Ronaldo Florence Bacharel em Ciências da Computação pela Faculdade Ruy Barbosa, sócio-diretor da empresa RD Tecnologia da Informação e trabalha com Java há 12 anos desenvolvendo aplicações corporativas. Criar uma suíte de testes para uma aplicação que depende de containers pode ser trabalhoso e cansativo. Testes de integração sempre foram difíceis de escrever e lentos de executar, mas isso mudou. Com o JBoss Arquillian testes de integração ficaram tão fáceis que viabilizou o desenvolvimento Java EE utilizando TDD. Neste artigo caminhamos passo-a-passo na criação de um EJB através do ciclo de TDD, mostrando como configurar o Arquillian e como tirar proveito da sua simplicidade na construção de testes de Integração. Se você é leitor da MundoJ ou alguma outra revista, blog ou fórum referente a desenvolvimento, já deve ter notado a quantidade de artigos e comentários sobre testes de software. O quanto eles nos ajudam a proteger a qualidade do nosso código do caos do trabalho em equipe, atualizações, desvio da especificação e outras questões tiradas da lista de problemas no desenvolvimento. Por estes motivos, a fama dos testes não é passageira, ela está mergulhando no dia-a-dia do processo de desenvolvimento das equipes junto às metodologias ágeis. E dentro do processo de desenvolvimento voltado a testes, os testes de integração sempre foram considerados um mal necessário. Eles são mais lentos que os testes de uni-

2 dade, demoram mais e geram erros muito mais complexos de se identificar, já que envolvem a interação entre componentes que podem estar em diferentes camadas e até escritos em diferentes tecnologias. Alguns projetos, especialmente os que tangem o mundo Java EE, como o JBoss Arquillian, JSFUnit, OpenEJB e Selenium, estão facilitando a implementação de testes de integração, diminuindo o esforço necessário para elaborar um bom arsenal de testes mais real. Vamos voltar nossa atenção ao JBoss Arquillian. Neste artigo, você vai passar por um passo-a-passo na criação de testes com o Arquillian, conhecendo os aspectos mais importantes desta ferramenta. Você também irá conhecer o projeto ShrinkWrap, que permite ao desenvolvedor montar pacotes em tempo de execução, focando somente nas classes que devem ser testadas. Está fora do escopo deste artigo a discussão se testes de unidade podem ou não ser substituídos por testes de integração com a utilização de uma ferramenta como o JBoss Arquillian, mas o fato é que com servidores minimalistas como o Glassfish Embedded e JBoss Embedded os teste de integração se tornaram mais rápidos, chegando a rodar em segundos. Unindo-se isso ao enriquecimento dos testes que o Arquillian traz, escrever um teste de integração ficou tão simples quanto escrever um teste de unidade. Arquillian Durante a implementação dos testes para sua aplicação, o uso de mocks e objetos que simulam o comportamento de outros componentes estão extensamente distribuídos pelo suíte de teste. O uso exaustivo deles pode distorcer o teste de integração a ponto de não conseguir avaliar todos os comportamentos do componente testado quando está interagindo com suas dependências, não reproduzindo exatamente as interações que acontecem em ambientes reais. Outro problema encontrado pelos desenvolvedores quando estão implementando testes que empregam recursos externos é a dependência entre testes e ferramentas de build como Maven, Gradle e Ant. Durante o desenvolvimento, é comum os testes de regressão serem executados pelas ferramentas de build, porque são, na maioria das vezes, elas que possuem a integração com os containers através de plugins. Todavia, isso impossibilita o desenvolvedor de utilizar sua IDE como o Eclipse para executar os testes, devido ela não respeitar as pré e pós-fases de testes de integração da ferramenta de build. Para o Arquillian, o ato de gerenciar a integração dos testes com o container em uma aplicação Java EE não deve ser árduo para você, desenvolvedor. Os testes não devem dar voltar e voltas tentando ajustar a infraestrutura para que o cenário faça sentido. O Arquillian prevê um trabalho maior na configuração inicial, livrando os testes de repetirem estes passos dentro de si mesmos. A Listagem 1 mostra um caso de teste para um bean de sessão chamado GerenciadorLivros que utiliza o Arquillian. Para seu funcionamento, ele espera quatro coisas de seu caso de teste: 1. Pelo menos um método anotado com no caso do JUnit. 2. Que o caso de teste seja indicado para executar com o Arquillian, utilizando a RunWith(Arquillian.class). 3. Um método que retorne uma classe que representa o pacote com as classes que serão instaladas no container. Este pacote é montado pelo projeto JBoss ShrinkWrap que será abordado nas próximas sessões. Este método deve ser estático e anotado 4. Por último, um container onde será instalada a aplicação, podendo ser desde um container embutido e leve como Tomcat, Jetty, até servidores de aplicação completos como JBoss e Glassfish. O Arquillian possui alguns adaptadores para a maioria dos containers, e tanto o adaptador quanto o container embutido podem ser declarados no pom.xml do Maven. Veremos mais a frente no artigo como configurar um container. Listagem 1. Teste com o mínimo necessário do public class GerenciadorLivrosIT private GerenciadorLivros livros; public void avaliarlivrosemnotadevetervalorinicial() throws Exception { livros.adicionarlivro(new Livro( Senhor dos Anéis, A Sociedade do Anel )); livros.avaliarlivro( , 9f); Livro persistido = livros.getlivroporisbn( ); assertequals(float.valueof(9f), new public static WebArchive createdeployment() throws Exception { return ShrinkWrap.create(WebArchive.class, teste.war ).addclasses(gerenciadorlivros.class, Livro.class); / 16

3 Configurando o ambiente Para fins deste artigo, utilizaremos a IDE Eclipse, em sua versão Indigo, com os plugins m2e Maven Integration for Eclipse e Maven Integration for WTP, para integração com Maven. Através do Maven configuraremos todas as dependências e servidores que precisamos para nosso teste (ver seção configurando o Arquillian). O nosso cenário de teste é uma simples aplicação JEE 6 com um módulo EJB, um projeto JAR simples para armazenarmos entidades e nosso persistence. xml e um módulo EAR para agrupar os dois. A nossa aplicação não possui uma camada de visão, ela é uma prestadora de serviços, e para nosso teste vai possuir apenas um serviço, um CRUD de Clientes. Vamos considerar ainda que nossa aplicação possua uma camada DAO, implementada através de uma interface IClienteDAO e um serviço ClienteDAO, que implementa essa interface utilizando a API JPA. Lembre-se que o Arquillian não se limita a testes na camada de negócios ou persistência, mas pode ser utilizado para realizar testes entre todas as camadas de uma aplicação, como será mostrado. Nós iremos desenvolver o serviço ClienteDAO utilizando TDD, porém no lugar de um teste de unidade utilizaremos um teste de integração com JBoss Arquillian. E executaremos os mesmos em um servidor Glassfish Embedded, através do Eclipse e do Maven inserindo dados em um banco HSQLDB in memory. Vamos então ver como configurar o JBoss Arquillian no nosso projeto. Montando os projetos Para montarmos nossa simulação vamos utilizar um archtype do Maven, disponível em: google.com/p/open-archetypes. Com o Maven disponível no seu path vá para o diretório que deseja criar os projetos e digite a seguinte linha: mvn archetype:generate -DarchetypeCatalog=http:// open-archetypes.github.com/maven-repo/snapshots/ archetype-catalog.xml Após todo o processamento necessário, o Maven solicitará uma opção numérica, selecione a opção 3. Informe como groupid MundoJ, e como artifactid mundoj-arquillian, dê um Enter na opção version e package e confirme as propriedades com um Y. O Maven irá gerar toda a estrutura que precisamos e além, essa é uma excelente forma de começar rapidamente novos projetos. Ficamos então com a seguinte estrutura de diretório: mundoj-arquillian \_ mundoj-arquillian-ear \_ mundoj-arquillian-ejb \_ mundoj-arquillian-util \_ mundoj-arquillian-web Vamos excluir o projeto web e renomear o projeto util para jar ficando mundoj-arquillian-jar. Esse projeto jar será o local onde vamos criar nossa entidade, e o projeto ejb o local onde iremos criar o nosso DAO. O projeto EAR não será utilizado neste artigo, mas vamos deixá-lo para fins de simulação de uma estrutura de projeto realista. Para desenvolver testes queremos o conforto de nossa IDE, e para tanto basta importarmos os projetos gerados para o Eclipse. Para tanto basta abrir o Eclipse, e clicar em File->Import->Existing Maven Projects, selecionar o diretório-raiz onde foram gerados os projetos e pronto, eles são importados e configurados para dentro do Eclipse. Configurando o Arquillian JBoss Arquillian não depende de nenhuma ferramenta de build ou gerência de dependência, podendo ser utilizado adicionando diretamente seus JARs. Mas a maneira simples e recomendada pela comunidade do Arquillian é utilizando a gerência de dependências do Maven e importando as dependências transitivas dele. Mas você ainda pode utilizar com qualquer outra ferramenta de build que deseje. Para seguir este exemplo você deve ter configurado o Maven 3. Na Listagem 2 você pode observar as dependências utilizadas no projeto. Tivemos que configurar o repositório do JBoss, para que as versões mais recentes possam ser usadas. O artefato arquillian-bom é um POM com as dependências necessárias do Arquillian que você pode importar para seu projeto. Aqui estamos utilizando JUnit, então o Arquillian possui um artefato (arquillian-junit-container) para fazer sua integração com ele. Fora isso, o que falta é definir qual adaptador de container utilizaremos. Como dito antes, há uma vasta quantidade de adaptares para containers como JBoss, Glassfish, Tomcat, Jetty, OpenEJB, Google AppEngine, Weld, entre outros. Seguem os tipos de containers que o Arquillian dá suporte: Containers Remotos: containers que já estão iniciados e os adaptadores do Arquillian utilizarão um cliente para se comunicar com eles. Através desse cliente, o Arquillian irá adicionar a aplicação, realizar os testes e desinstalar a aplicação. Ótimo para testar em servidores de aplicação completos que demoram a serem iniciados, já que você pode executar todos os Test Cases sem reiniciar o servidor.

4 Containers Gerenciados: são os mesmos que os containers remotos, mas são iniciados pelo próprio Arquillian, que permite a você especificar a localização deles para que ele cuide de toda a tarefa de gerenciar e testar através dos clientes. Containers Embutidos: são containers que podem ser iniciados dentro do código da sua aplicação através de uma API. Normalmente iniciam mais rápido por conter somente os recursos essenciais. Utilizaremos aqui o Glassfish Embedded, devido sua facilidade de uso. O que precisamos é do artefato arquillian-glassfish-embedded-3.1 que faz a integração com o GlasshFish e o próprio Glassfish Embedded, aqui sendo a dependência glassfish-embedded-all. Quando se está trabalhando com outros containers, basicamente são estas duas últimas dependências que variam. Listagem 2. Dependências do Arquillian e Glassfish Embedded. <project...> <groupid>br.com.mundoj</groupid> <artifactid>hotel-arquiliano</artifactid> <version>1.0</version> <packaging>war</packaging> <name>hotel Arquiliano</name> <dependencies> <groupid>org.jboss.arquillian</groupid> <artifactid>arquillian-bom</artifactid> <version>1.0.0.final</version> <type>pom</type> <scope>test</scope> <groupid>org.jboss.arquillian.junit</groupid> <artifactid>arquillian-junit-container</artifactid> <version>1.0.0.final</version> <scope>test</scope> <groupid>org.jboss.arquillian.container</groupid> <artifactid>arquillian-glassfish-embedded-3.1 </artifactid> <version>1.0.0.cr3</version> <scope>test</scope> <groupid>org.glassfish.extras</groupid> <artifactid>glassfish-embedded-all</artifactid> <version>3.2-b06</version> <scope>test</scope> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.10</version> <scope>test</scope>... </dependencies> <repositories> <repository> <id>jboss-public-repository-group</id> <name>jboss Public Maven Repository Group </name> <url>https://repository.jboss.org/nexus/content/ groups/public/</url> </repository> </repositories>... </project> Desenvolvendo o teste Com as dependências definidas, precisamos de um DAO (Data Access Object) para nosso cadastro de clientes. Seguindo as práticas do TDD, vamos então criar o primeiro teste. No pacote br.com.mundoj. arquillian.dao, adicionaremos a classe ClienteDAO- Test. Vamos modificá-la adicionando a RunWith, e parametrizando essa anotação com o Arquillian.class. Também vamos aproveitar a injeção de dependência para adicionar nossa implementação de IClienteDAO na classe de teste, utilizando a Vamos criar nosso primeiro método salvando- ClienteValido que irá testar a inserção de um cliente com sucesso. A classe fica como exibido na Listagem 3. Listagem 3. Testando persistência de uma instância válida de cliente. package br.com.mundoj.arquillian.dao; public class ClienteDAOTest private IClienteDAO public static JavaArchive criandopacote() { return ShrinkWrap.create(JavaArchive.class, test.jar ).addclass(clientedao.class).addclass(iclientedao.class).addclass(cliente.class).addasmanifestresource( test-persistence.xml, ArchivePaths.create( persistence.xml )); public void salvandoclientevalido() { Cliente cliente = new Cliente(); cliente.setnome( Mundo J Cliente ); / 16

5 cliente.setendereco( Intenet Brasil ); cliente.setcpf( ); cliente.settelefone( ); clientedao.save(cliente); asserttrue(cliente.getid()!= null); Cliente persistido = clientedao.findbyid(id); assertnotnull(persistido); assertequals(persistido.getid(), cliente.getid()); assertequals( Mundo J Cliente, persistido.getnome()); assertequals( Intenet Brasil, persistido.getendereco()); assertequals( , persistido.getcpf()); assertequals( , persistido.gettelefone()); Montando pacotes com JBoss ShrinkWrap ShrinkWrap é um projeto independente, mas que anda junto ao Arquillian. Seu propósito é facilitar a montagem de pacotes através de código. Ou seja, se sua aplicação precisa gerar algum EAR, WAR ou JAR em tempo de execução, pode utilizar o ShrinkWrap, que provê uma interface muito intuitiva para adicionar classes, pacotes, arquivos de configuração, bibliotecas ou qualquer outro tipo de recurso necessário. Depois disso, é possível exportá-lo para o sistema de arquivos ou transformá-lo em um fluxo de bytes. O foco do Arquillian é minimizar o esforço para testar, e nada mais simplista do que montar pacotes somente com as classes que estão no contexto do teste. Deve-se notar, olhando para a Listagem 4, que devemos incluir todas as classes que vão ser utilizadas no teste, no nosso caso incluímos a interface IClienteDAO, sua implementação ClienteDAO e a entidade Cliente. Porém, caso a entidade Cliente possuísse algum atributo de uma classe específica, ou o método a ser testado fizesse uso de alguma classe além da Cliente, essa classe teria que ser inserida no deployment também. Não inserir todas as classes gera exceções no servidor de aplicação e impede a execução do teste. Você também pode manter arquivos de configuração padrões da sua aplicação separados dos arquivos de configuração personalizados para os testes. Na Listagem 4, adicionamos um persistence.xml no pacote, sendo utilizado como fonte o test-persistence.xml achado no classpath. Ter a opção de escolher qual descritor empacotar durante os testes permite que você configure recursos para substituir aqueles em produção, como qual datasource utilizar ou o nível de log da camada de persistência, por exemplo. Listagem 4. Método public static JavaArchive criandopacote() { return ShrinkWrap.create(JavaArchive.class, test.jar ).addclass(clientedao.class).addclass(iclientedao.class).addclass(cliente.class).addasmanifestresource( test-persistence.xml, ArchivePaths.create( persistence.xml )); ShrinkWrap resolver Uma pausa no passo-a-passo para falarmos do ShrinkWrap Resolver. Com a API do ShrinkWrap, já é possível abranger os cenários de testes mais comuns. Porém, há ocasiões nas quais é necessário adicionar ao pacote algum projeto externo como o driver JDBC de banco de dados ou biblioteca de log. Para estes casos, existe o ShrinkWrap resolver. Ele é capaz de adicionar aos seus pacotes personalizados de tempo execução, dependências descritas no seu pom.xml. Para utilizá-lo você precisa de mais três dependências no seu POM: org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api-maven org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven. A Listagem 5 mostra como obter uma instância de MavenDepencyResolver e adicionar o artefato que deseja ao pacote. Na linha 1, é recuperado o pacote seguindo o padrão groupid:artifactid:versão e na linha 2, o artefato é adicionado ao pacote como uma biblioteca. Listagem 5. Recuperando e adicionando dependências do pom.xml ao pacote. // Adicionando dependencias do Maven MavenDependencyResolver resolver = DependencyResolvers.use( MavenDependencyResolver.class); MavenDependencyBuilder dominio = resolver.artifact( br.com.mundoj:carrinho-dominio:1.0 ); //1 carrinho.addaslibraries(dominio.resolveas( GenericArchive.class)); //2 Usando o ShrinkWrap e o ShrinkWrap resolver para construir pacotes personalizados, permite mandar para o servidor de aplicações ou containers

6 somente as classes que interessam para o teste, diminuindo significativamente o seu tempo de deploy. Fazendo o teste compilar Voltando ao passo-a-passo, a nossa classe de teste nem sequer compila, tudo bem, segundo o TDD ela não deveria compilar mesmo. Agora é hora de buscarmos a compilação dessa classe através dos passos mais simples possíveis. Primeiro, vamos criar nossa entidade Cliente, com os atributos que precisamos para que o nosso teste compile. Como falamos no início, nossa aplicação utilizará JPA para persistência, e queremos que nossos testes realizem verdadeiras inserções no banco, sem objetos Mock. Para tanto, a entidade Cliente, da Listagem 6, ficará no nosso módulo de classe de domínio. Listagem 6. Classe que representa um public class Cliente implements Serializable private Integer id; private String nome; private String telefone; private String cpf; private String endereco; private static final long serialversionuid = 1L; //construtores, getters e setters omitidos Com essa entidade demos o primeiro passo para compilar nosso teste. Agora vamos criar o DAO que fará a persistência dessa entidade em um banco de dados. Seguindo as boas práticas de design o DAO é um serviço, e como tal deve ter uma interface que representa esse serviço. As interfaces EJB são interfaces comuns com um adicional que é a o que denota se a interface é local ou remota. No nosso caso vamos criar uma interface local. Vamos adicionar a nela e o método que precisamos. Nesse momento é comum querermos criar todos os métodos da interface, mas devemos nos lembrar do TDD, devemos criar apenas os métodos para fazer com que nosso teste compile. Sendo assim vamos criar os métodos save e findbyid. A interface deve ficar como exibida na Listagem 7. Listagem 7. Interface public interface IClienteDAO { public void save(cliente cliente); public Cliente findbyid(integer id); A interface ainda não compila já que Cliente e IClienteDAO estão em módulos separados. Para corrigir isso basta adicionar a dependência descrita na Listagem 8 ao POM.XML do projeto EJB, clicar com botão direito no projeto EJB, clicar em Maven -> Update Project Dependencies. Depois basta pedir ao Eclipse para organizar seus imports e ele deve adicionar a classe Cliente à lista de imports da interface IClienteDAO. Listagem 8. Dependência do Projeto JAR. <groupid>mundoj</groupid> <artifactid>mundoj-arquillian-jar</artifactid> <version>1.0-snapshot</version> <type>jar</type> <scope>provided</scope> Com a interface e a entidade criadas, nosso teste já compila, demos mais um passo no ciclo TDD. Vamos então executar nosso teste. Para tanto basta abrir a classe de teste no Eclipse, e clicar com o botão direito e selecionar Run As.. -> JUnit Test. Se observarmos o console, veremos que o teste nem mesmo chega a ser executado. Isso ocorre porque o Arquillian ainda precisa de algumas configurações para saber o que e como executar. Seguindo o nosso ciclo TDD essa é a fase do fazer o que for preciso para o teste aparecer verde. Iniciamos então a parte de configurar o Arquillian. Configurando recursos e containers A adição de recursos dentro do container como datasources, fábrica de conexões e filas ainda é um Um bom lugar para utilizá-lo sem o ShrinkWrap é em testes de container de servlets embutidos como o Tomcat e Jetty, que possuem uma API menos trivial para adicionar as classes e arquivos de descrição necessários para o teste. O ShrinkWrap também possui outro subprojeto, que recebeu o nome de ShrinkWrap Descriptors, onde você pode criar arquivos descritores, como beans.xml, web.xml e ejb-jar. xml, utilizando uma API trivial. O projeto ainda está em alpha e com pouca documentação, mas você pode seguir os testes do projeto encontrado no Github como referência para aprender e colaborar com ele. / 16

7 pouco confusa dentro do Arquillian, pois variam muito de container para container. Por exemplo, no momento em que este artigo é escrito, o adaptador que permite adicionar recursos de forma mais simples é para Glassfish embutido. Os adaptadores para outros servidores de aplicações, como JBoss remoto e gerenciado, ainda não possuem formas práticas para configuração de recursos em suas instâncias. Enquanto isso, o JBoss 7.1 permite que você adicione recursos através de descritores dentro do próprio pacote, adicionando-os ao META-INF. O Glassfish espera um glassfish-resources.xml com a descrição dos recursos que devem ser criados Para fazer o teste funcionar precisamos informar o datasource através do glassfish-resources.xml, e vamos colocar esse arquivo dentro do nosso diretório src/test/resources do projeto EJB, onde ficarão todos os recursos de configuração que vamos utilizar. A Listagem 9 mostra um exemplo de configuração de um datasource no Glassfish embutido. Listagem 9. glassfish-resources.xml. <resources> <jdbc-connection-pool name= mundojpool datasource-classname= org.hsqldb.jdbc.jdbcdatasource res-type= javax.sql.datasource ping= true > <property name= User value= sa /> <property name= Password value= /> <property name= databasename value= jdbc:hsqldb:mem:mundoj /> <property name= driverclass value= org.hsqldb.jdbcdriver /> <property name= PortNumber value= 9001 /> <property name= servername value= localhost /> </jdbc-connection-pool> <jdbc-resource jndi-name= jdbc/mundoj pool-name= mundojpool ></jdbc-resource> </resources> Precisamos dizer ao Arquillian onde se encontra o arquivo glassfish-resources.xml, fazemos isso criando o arquivo de configuração arquillian.xml, e colocando-o no diretório src/test/resources do projeto EJB. Um exemplo do conteúdo do arquillian. xml está detalhado na Listagem 9. Ele é um descritor onde se pode configurar tanto o funcionamento do Arquillian como dos adaptadores do container. Ele permite especificar a localização dos arquivos de configuração dos adaptadores, qual protocolo utilizar para se comunicar com o container, portas do container, qual adaptador utilizar por padrão, entre outras coisas. Na Listagem 10, estamos dizendo em qual arquivo o Arquillian deve ler as configurações de recursos (datasources, filas de mensageria, configuração de segurança) para adicionar no Glassfish Embutido. Listagem 10. Arquillian.xml. <arquillian xmlns=http://www.jboss.org/arquillian-1.0 xmlns:xsi= XMLSchema-instance xsi:schemalocation= arquillian xsd > <container qualifier= glassfish default= true > <configuration> <property name= sunresourcesxml > src/test/resources/glassfish-resources.xml </property> </configuration> </container> </arquillian> E para finalizar a nossa configuração de conexão ao banco de dados, criamos um arquivo test-persistence.xml, referenciado nas listagens anteriores, no nosso src/test/resources, esse arquivo vai definir a nossa persistence-unit, e configurar o eclipselink (ou hibernate, OpenJPA etc.) para criar o banco assim que a aplicação for ao ar. Essa configuração é necessária, pois utilizamos um banco em memória, o HSQLDB, e que assim que nosso teste acabar ele some, levando consigo o nosso Schema bem como os dados de teste. O uso dos chamados in-memory database tem sido bastante interessante nos testes de integração. Acaba-se com a dependência de qualquer banco externo, ao mesmo tempo em que tem um custo de processamento bem menor. Após essas configurações, que serão utilizadas em todos os testes daqui para frente, vamos escrever a classe que falta, a implementação do serviço DAO, ClienteDAO. No módulo EJB, crie uma nova classe que será um bean de sessão como a Listagem 11. Nele é injetado um EntittyManager utilizado para persistir e procurar clientes por ID, por enquanto. Listagem 11. public class ClienteDAO implements EntityManager public void save(cliente cliente) { public Cliente findbyid(integer id) { Cliente cliente = em.find(cliente.class, id); return cliente;

8 Agora nós executamos o teste novamente, e vemos o verde novamente ser exibido. Deve-se notar que nesse momento nós já inserimos um dado no banco de dados, esse dado não pode ser verificado porque o HSQLDB vive apenas no período de execução do teste. Vamos então validar se o dado foi realmente inserido. Adicionando funcionalidade ao DAO Vamos ampliar nosso teste com um segundo método, o delete, que vamos utilizar para remover clientes do banco de dados. Para testar o delete nós precisamos primeiro inserir um registro, verificar sua inserção e depois excluir o mesmo e confirmar sua exclusão. Para isso vamos adicionar mais um método na nossa classe de teste o método deletandocliente- PersistidoSucesso, que é exibido na Listagem 12. Listagem 12. Testando remoção de cliente com sucesso. public void deletandoclientepersistidosucesso(){ Cliente cliente = new Cliente( João José Maria ); clientedao.save(cliente); Long clienteid = cliente.getid(); clientedao.delete(cliente); assertnull(clientedao.findbyid(clienteid)); Como estamos no começo do ciclo, o nosso código ainda não compila, vamos buscar compilar o método, para tanto precisamos adicionar o delete na nossa interface de DAO, como mostra a Listagem 13. Listagem 13. Interface IClienteDAO com método public interface IClienteDAO { public void save(cliente cliente); public Cliente findbyid(integer id); public void delete(cliente cliente); Com a adição do novo método, nosso código compila, mas ele não retorna verde. Nesse caso, o método mais rápido de fazer um verde ser retornado é implementando devidamente o método delete. Vamos então alterar nossa classe ClienteDAO para adicionar o método como na Listagem 14. Listagem 14. Implementação do método public void delete(cliente cliente){ em.remove(cliente); Quando vamos executar o nosso teste, eis que o Eclipse nos exibe uma surpresa, o teste retorna vermelho. Ao que tudo parece a nossa implementação está perfeita, nosso teste certamente está correto, no entanto recebemos uma exceção da camada JPA nos informando que a entidade que tentamos remover não está no contexto de persistência. Não precisamos ficar alarmados, essa é uma das grandes vantagens dos testes de integração, se tivéssemos feito um mock da classes da JPA, provavelmente não teríamos esse erro. O erro ocorre porque o objeto que estamos removendo não está no nosso contexto de persistência, sendo assim devemos modificar a implementação do nosso método delete para garantir que, caso o objeto não seja gerenciado, ele passe a ser antes de executarmos sua exclusão. O método delete em sua versão final está na Listagem 15. Listagem 15. Método delete versão public void delete(cliente cliente){ cliente = em.find(cliente.class, cliente.getid()); if (cliente!= null) { em.remove(cliente); Ao executarmos o nosso teste novamente, a barra verde aparece e podemos respirar aliviados. Deve-se Quando o container é iniciado Uma peculiaridade não muito boa do Arquillian relacionada à camada de persistência é o fato de que o container é iniciado uma vez a cada Test Case, como o método anotado do JUnit. Isto faz com que os testes do TestCase compartilhem suas alterações, e que a alteração de um teste, se não desfeita nos refletirá nos outros testes. Então sempre se lembre de desfazer as alterações dos testes, para que elas não interfiram, fazendo com que os testes subsequentes que deveriam passar, não passem. O agrupamento de Test Cases em Test Suites não modificará este comportamento, sendo um ciclo de start/deploy/undeploy/stop para cada Test Case (deploy/undeploy em casos de containers remotos). / 16

9 notar como o ciclo TDD para desenvolver o método delete foi consideravelmente menor do que o primeiro ciclo, isso porque já tínhamos todo o processo de configuração do ambiente integrado que estamos testando, resolvido. Pode-se notar, também, como foi importante nos valermos do ciclo TDD para criação do método delete, que apresentou um erro extremamente comum em implementações DAO que utilizam JPA, caso fosse um teste de unidade dificilmente esse erro teria sido identificado. Concluímos o nosso segundo ciclo TDD, como se pode notar o processo se torna rápido e intuitivo à medida que reutilizamos configurações e classes já testadas. Encerramos assim o desenvolvimento do nosso DAO, ele possui um método save, um método findbyid e um método delete. É claro que um DAO na vida real poderia possuir uma complexidade muito superior ao aqui apresentado, porém o foco do artigo era apresentar a ferramenta JBoss Arquillian dentro de um ciclo TDD de desenvolvimento. Testando com Arquillian Persistence Extension Fugindo um pouco do passo-a-passo apresentado nas sessões anteriores, criar uma suíte de teste para a camada de persistência ou para outras camadas que interajam com ela pode ser trabalhoso durante o processo de teste. Você precisa gerenciar o que está sendo colocado no banco para não se perder, já que os testes podem ser isolados, mas o banco de dados é compartilhado entre eles. Para agilizar a escrita destes tipos de teste, o Arquillian possui uma extensão chamada Arquillian Persistence Extension que ajuda a minimizar o trabalho necessário para interação com o banco e propõe algumas anotações que vão auxiliar em isolar cada teste do TestCase. Para utilizar o Arquillian Persistence Extension, basta adicionar sua API e implementação como dependências do Maven, de acordo com a Listagem 16. Listagem 16. Dependências para o Arquillian Persistence Extension. <groupid>org.jboss.arquillian.extension</groupid> <artifactid>arquillian-persistence-api</artifactid> <version>1.0.0.alpha4</version> <groupid>org.jboss.arquillian.extension</groupid> <artifactid>arquillian-persistence-impl</artifactid> <version>1.0.0.alpha4</version> Como você pode ver, a versão mais recente é a 1.0.0Alpha4, lançada em abril, e possui algumas inconsistências que podem variar um pouco até sua versão final. Esta extensão faz grande uso do DBUnit, possibilitando que você especifique scripts que irão executar antes e depois de cada teste. Você também pode adicionar DataSets no formato YML, XML e JSON. A Listagem 17 mostra um exemplo de DataSet com XML. O DBUnit permite você adicionar dados a várias tabelas a partir de um mesmo DataSet. Aqui estamos separando em arquivo para cada entidade, assim podemos escolher quais DataSets persistiremos para satisfazer o teste em questão. Mais a frente, você verá como o Arquillian permite que você escolha qual DataSet usar, através de anotações. O arquivo clientes.xml descreve alguns clientes que serão persistidos. O arquivo quartos.xml também descreve alguns quartos que serão persistidos e que poderão ser alugados pelos clientes. Listagem 17. DataSets para iniciar os testes. <!-- src/test/resources/datasets/clientes.xml --> <dataset> <cliente id= 1 nome= João José telefone= cpf= endereco= Rua 7 de Setembro /> <cliente id= 2 nome= Maira José telefone= cpf= endereco= Rua 15 de Novembro /> <cliente id= 3 nome= Roberto José telefone= cpf= endereco= Rua 13 de Maio /> </dataset> <!-- src/test/resources/datasets/quartos.xml --> <dataset> <quarto id= 1 numero= 12A andar= 2 diaria= /> <quarto id= 2 numero= 13A andar= 2 diaria= /> <quarto id= 3 numero= 14A andar= 2 diaria= /> <quarto id= 4 numero= 15A andar= 2 diaria= /> </dataset> Aqui estão algumas das anotações oferecidas pelo Arquillian permite a você escolher quando e o tipo de estratégia utilizada para limpar as alterações do banco a cada teste. Você pode escolher entre limpá-lo antes de o teste iniciar ou quando ele finalizar (TestExecutionPhase. BEFORE ou TestExecutionPhase.AFTER, respectivamente). É possível especificar o que será apagado, com as opções de apagar todo o banco, somente as linhas inseridas ou somente as tabelas permite a você especificar datasets que serão adicionados ao banco antes do teste em permite a você espe-

10 cificar como as tabelas sendo testadas devem se encontrar no final do você também pode executar qualquer script em seu banco antes de iniciar o teste. A Listagem 18 mostra um pouco da utilização do Persistence Extension. Diferente do passo-a-passo onde era injetado um EJB no teste, aqui estamos injetando o EntityManager diretamente no teste. Assim você pode testar se está utilizando o mapeamento corretamente nas classes de entidade, sem ter que escrever mais código para isso. O método adicionandoreservavalida possui duas anotações extras. A especifica que utilizaremos os DataSets dos arquivos clientes.xml e permite indicar o DataSet em que algumas tabelas do banco de dados devem se parecer depois que o teste for executado. Ou seja, a tabela de reservas deve ter os mesmos dados que o DataSet de reservas. Na segunda linha da Listagem 18 indicamos como o Arquillian irá restaurar a base de dados depois que o teste for executado. A limpeza será executada depois que cada teste for executado e irá truncar somente as tabelas alteradas pelo teste. Listagem 18. DataSets para iniciar = TestExecutionPhase.AFTER, strategy = CleanupStrategy.USED_TABLES_ONLY) public class ReservaPersistenciaIT public static JavaArchive criandopacote() throws Exception { return ShrinkWrap.create(JavaArchive.class, hotel-dominio.jar ).addpackage(reserva.class.getpackage()).addasmanifestresource(emptyasset.instance, beans.xml ).addasmanifestresource( test-persistence.xml, persistence.xml = hotel-pu ) private EntityManager clientes.xml, quartos.xml reservas-esperadas.xml ) public void adicionandoreservavalida() throws Exception {... Realizando testes fora do container Para escrever testes funcionais, utilizar o Arquillian também ajuda a diminuir o esforço. Por exemplo, você pode utilizar o ShrinkWrap para montar os pacotes personalizados, excluindo os arquivos css, html, javascript e imagens que não são necessários para o teste. Como mostra a Listagem 19, a possui um atributo testable que, quando setado para false, faz com que os testes daquele TestCase sejam executados na JVM onde os testes do JUnit ou TestNG foram iniciados, como se fossem clientes do container. Neste exemplo estamos gerando um pacote WAR com o ShrinkWrap e precisamos testar se a interface Web realmente está funcional. Então, adicionamos as classes do pacote br.com.mundoj.hotel e a página JSP formulário.jsp. A partir disso, o método adicionando- Reserva utiliza o Selenium WebDriver para navegar até a página correta e observar se o título da página é realmente o que esperamos que seja. Assim, o Arquillian pode ser utilizado para um propósito bastante diferente do que foi apresentado até aqui, que são os testes funcionais. O Arquillian em conjunto com Selenium, HtmlUnit ou JSFUnit, torna-o muito flexível para testes de interface, mas não vamos entrar em detalhes de como utilizar o Selenium, pois estenderia muito o artigo. Listagem 19. Executando testes fora do public class ReservasServletIT = false) public static WebArchive criandopacote() throws Exception { WebArchive pacote = ShrinkWrap.create( WebArchive.class, hotel-web.war ); pacote.addpackages(true, br.com.mundoj.hotel ); pacote.addaswebresource(new File( src/main/webapp/formulario.jsp ), formulario.jsp ); return pacote; public void adicionandoreserva() throws Exception { WebDriver navegador = new HtmlUnitDriver(); navegador.manage().timeouts().implicitlywait(10, TimeUnit.SECONDS); navegador.get( ); String titulo = navegador.gettitle(); assertequals( Gerenciamento de Reservas, titulo); Em casos mais específicos você pode misturar a execução de testes dentro e fora do container no mesmo TestCase. Como na Listagem 20, basta retirar o parâmetro testable da e uti- / 16

11 Arquillian + Maven Profiles Um recurso muito interessante que pode ser aproveitado do Maven é a configuração de diferentes profiles. Você pode criar um profile para cada container que deseja testar, e nele adicionar as dependências necessárias para cada um. Com o Arquillian, você será capaz de escrever testes que não são dependentes de um container específico. Seus testes ainda irão funcionar na sua IDE, basta que você configure qual profile deseja executar nas configurações dela. Tome cuidado, pois o Arquillian não permite dois adaptadores no mesmo classpath. lizar a para cada teste que deva rodar fora do container. Novamente utilizamos o WebDriver para navegar através da aplicação pela interface Web. Listagem 20. Teste executando fora do public void listarreservasfeitas() throws Exception { WebDriver navegador = new HtmlUnitDriver(); navegador.manage().timeouts().implicitlywait(10, TimeUnit.SECONDS); navegador.get( hotel-web/reservas?acao=listar );... Observe que os recursos disponíveis para os testes que rodam dentro do container não estão disponíveis para os testes marcados Desta forma se você utilizar as para realizar alguma tarefa entre os testes, você não terá acesso aos recursos que estariam presentes via injeção de dependência, nem neles, nem nos próprios testes out container. Considerações finais O TDD mudou a forma de programar, trouxe segurança e provou ao longo da sua década de existência oficial que o custo de desenvolver teste é muito menor do que o custo de erros em códigos não testado. O JBoss Arquillian simplificou a tal nível os teste de integração, como mostramos neste artigo, que podemos passar a inserir testes de integração no ciclo TDD, com grandes ganhos de segurança e produtividade no desenvolvimento de aplicações JEE. Ele obriga a ter um trabalho extra no início da implementação da suíte de testes, mas minimiza muito o esforço durante a escrita dos testes, gerenciado o ciclo de vida dos testes e dos containers envolvidos. Como você viu, ele ajuda a gerenciar o ciclo de vida dos testes e do container, podendo ser utilizado em testes de integração e funcionais. Junto com outros projetos como ShrinkWrap, permite que foquemos nas classes que realmente precisam ser testadas. Alguns dos projetos apresentados aqui, como o Arquillian Persistence Extension e o ShrinkWrap Descriptors, ainda se encontram em versão alpha. Sendo assim, podemos esperar muito deles nos próximos meses. Alguns pontos do Arquillian ficaram fora do escopo deste artigo, como deploys múltiplos, testes de grid, Arquillian Drone, entre outras coisas. Mas sinta-se à vontade para consultar as referências, ou aguarde os artigos das próximas edições. Consulte o artigo Testes Automatizados, publicado na edição 47 da revista MundoJ, para uma referência adicional sobre ferramentas utilizadas em automatização de testes. /referências Test Driven Development: By Example, Kent Beck, Addison- Wesley Longman, 2002, ISBN , ISBN https://docs.jboss.org/author/display/arq/ Reference+Guide, Guia de referência do Arquillian. Arquillian Persistence Extension Alpha4 Released. guia inicial oficial do Arquillian. https://community.jboss.org/wiki/shrinkwrap, Wiki ShrinkWrap. Mocks are a Mockery, post sobre a utilização de Mocks. tutorial sobre Arquillian Persistence. exemplos de utilização do Arquillian. /para saber mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Fundamentos da Plataforma Java EE Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Como a plataforma Java EE trata o SERVIÇO DE NOMES Serviço de Nomes Num sistema distribuído os componentes necessitam

Leia mais

Evolução do Design através de Testes e o TDD

Evolução do Design através de Testes e o TDD c a p a Lucas Souza (lucas.souza@caelum.com.br): é bacharel em Engenharia da Computação pela Universidade de Ribeirão Preto, possui a certificação SCJP e trabalha com Java há 4 anos. Atualmente é desenvolvedor

Leia mais

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira ENTERPRISE JAVABEANS 3 Msc. Daniele Carvalho Oliveira Apostila Servlets e JSP www.argonavis.com.br/cursos/java/j550/index.html INTRODUÇÃO Introdução Enterprise JavaBeans é um padrão de modelo de componentes

Leia mais

Java e Banco de Dados: JDBC, Hibernate e JPA

Java e Banco de Dados: JDBC, Hibernate e JPA Java e Banco de Dados: JDBC, Hibernate e JPA 1 Objetivos Apresentar de forma progressiva as diversas alternativas de persistência de dados que foram evoluindo na tecnologia Java, desde o JDBC, passando

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informações Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 7 JPA A Persistência com JPA Para configurar o JPA

Leia mais

Laboratório EJB e J2EE Uma aplicação completa

Laboratório EJB e J2EE Uma aplicação completa J530 - Enterprise JavaBeans Laboratório EJB e J2EE Uma aplicação completa Helder da Rocha (helder@acm.org) argonavis.com.br 1 Objetivos O objetivo deste módulo é construir e implantar uma aplicação J2EE

Leia mais

Tércio Oliveira de Almeida. TCC - Nexus - RAS

Tércio Oliveira de Almeida. TCC - Nexus - RAS Tércio Oliveira de Almeida TCC - Nexus - RAS Porto Alegre 12 de novembro de 2009 Tércio Oliveira de Almeida TCC - Nexus - RAS Trabalho de Graduação Orientador: Prof. Dr. Marcelo Soares Pimenta UNIVERSIDADE

Leia mais

Integrando Eclipse e Websphere Application Server Community Edition

Integrando Eclipse e Websphere Application Server Community Edition 1 Integrando Eclipse e Websphere Application Server Community Edition Sobre o Autor Carlos Eduardo G. Tosin (carlos@tosin.com.br) é formado em Ciência da Computação pela PUC-PR, pós-graduado em Desenvolvimento

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

SCC-0263. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br

SCC-0263. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br SCC-0263 Técnicas de Programação para WEB Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br 1 Cronograma Fundamentos sobre servidores e clientes Linguagens Server e Client side

Leia mais

ARQUITETURA DO SISTEMA ERP PEGASUS

ARQUITETURA DO SISTEMA ERP PEGASUS ARQUITETURA DO SISTEMA ERP PEGASUS Elaborado por: Bruno Duarte Nogueira Arquiteto de Software Data: 05/03/2012 1 Sumário 1. Introdução... 3 2. Tecnologias... 3 2.1. Web Tier... 3 2.1.1. Facelets 1.1.14...

Leia mais

Java 2 Enterprise Edition Uma aplicação J2EE completa

Java 2 Enterprise Edition Uma aplicação J2EE completa Java 2 Enterprise Edition Uma aplicação J2EE completa Helder da Rocha www.argonavis.com.br 1 Objetivos O objetivo deste módulo é construir e implantar uma aplicação J2EE completa Inicialmente, será mostrada

Leia mais

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. JDBC CRIANDO O BANCO DE DADOS: Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. CRIANDO O PROJETO JAVA PARA DESKTOP: Crie um projeto Java chamado Prograd Crie um pacote chamado

Leia mais

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado ARQUITETURA SISGRAD Manual de Utilização Versão: 2.0 Criação: 05 de julho de 2007 Autor: André Penteado Última Revisão: 09 de outubro de 2009 Autor: Alessandro Moraes Controle Acadêmico - Arquitetura SISGRAD

Leia mais

Ambientação JAVA. Versão 0.1 MICHEL CORDEIRO ANALISTA DE NEGÓCIO (NTI 2014) 1 UNIVERSIDADE CEUMA 08/01/2014

Ambientação JAVA. Versão 0.1 MICHEL CORDEIRO ANALISTA DE NEGÓCIO (NTI 2014) 1 UNIVERSIDADE CEUMA 08/01/2014 UNIVERSIDADE CEUMA Ambientação JAVA Versão 0.1 08/01/2014 Este é um modelo de configuração para desenvolvimento no ambiente Java. MICHEL CORDEIRO ANALISTA DE NEGÓCIO (NTI 2014) 1 Sumário Sumário... 2 1

Leia mais

Auditoria Avançada de Persistência com Hibernate, JPA e Envers

Auditoria Avançada de Persistência com Hibernate, JPA e Envers a r t i g o José Yoshiriro Ajisaka Ramos (jyoshiriro@gmail.com): bacharel em Sistema de Informação (IESAM). Mestrando em Ciência da Computação (UFPA). Instrutor na Equilibrium Web e na UAB. Engenheiro

Leia mais

Lidando de Forma Eficiente com Validações Locais de Objetos

Lidando de Forma Eficiente com Validações Locais de Objetos Lidando de Forma Eficiente com Validações Locais de Objetos Aprenda a construir um mini-framework para validar objetos locais sem afetar a complexidade do código. Autor Paulo César M. N. A. Coutinho (pcmnac@gmail.com):

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

Criação de um novo projeto no Eclipse utilizando Maven

Criação de um novo projeto no Eclipse utilizando Maven 1. Faça o download da versão mais atual do Eclipse IDE for Java EE Developers em https://www.eclipse.org/downloads/. 2. No Eclipse, crie um novo projeto Maven, em File >> New >> Maven Project 3. Marque

Leia mais

ruirossi@ruirossi.pro.br

ruirossi@ruirossi.pro.br Persistência Com JPA & Hibernate Rui Rossi dos Santos ruirossi@ruirossi.pro.br Mediador: Rui Rossi dos Santos Slide 1 Mapeamento Objeto-Relacional Contexto: Linguagem de programação orientada a objetos

Leia mais

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

TUTORIAL SISTEMA DE CONTROLE DE ACESSO FACULDADE DE TECNOLOGIA SENAC GOIÁS GESTÃO EM TECNOLOGIA DA INFORMAÇÃO WISLIY LOPES JULIANO PIROZZELLI TULIO TSURUDA LUIZ GUILHERME MENDES TUTORIAL SISTEMA DE CONTROLE DE ACESSO GOIÂNIA JUNHO DE 2014 Sumário

Leia mais

UNIDADE IV ENTERPRISE JAVABEANS

UNIDADE IV ENTERPRISE JAVABEANS UNIDADE IV ENTERPRISE JAVABEANS MODELO J2EE COMPONENTES DE Camada de Negócios NEGÓCIOS JAVA SERVLET, JSP E EJB Nos capítulos anteriores, foi mostrado como desenvolver e distribuir aplicações servlet e

Leia mais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos

Leia mais

EJB 3.1: A Community Update

EJB 3.1: A Community Update EJB 3.1: A Community Update Reza Rahman Autor, EJB 3 in Action Expert Group Member, Java EE 6 and EJB 3.1 Fundador, Cognicellence Julho de 2008 1 EJB 3.0: Revisão Breve > As grandes mudanças > EJB simplificado

Leia mais

Criar uma aplicação JPA2 com EclipseLink e H2

Criar uma aplicação JPA2 com EclipseLink e H2 Criar uma aplicação JPA2 com EclipseLink e H2 1) Criar uma aplicação Java no NetBeans. File > New Project > Java, Java Application > Project name: JPA2 Finish. 2) Acrescentar ao Projeto NetBeans a biblioteca

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

Leia mais

TUTORIAL DE INTRODUÇÃO AO CEWOLF

TUTORIAL DE INTRODUÇÃO AO CEWOLF 1 TUTORIAL DE INTRODUÇÃO AO CEWOLF CRIANDO GRÁFICOS COM JSP, CEWOLF/JFREECHART E MYSQL 1. Introdução O Cewolf (http://cewolf.sourceforge.net/) é uma biblioteca que facilita a criação de gráficos dinâmicos

Leia mais

Associação Carioca de Ensino Superior Centro Universitário Carioca

Associação Carioca de Ensino Superior Centro Universitário Carioca Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos

Leia mais

Java EE 6. A revolução do. Um overview sobre as novidades da JSR 316. a r t i g o

Java EE 6. A revolução do. Um overview sobre as novidades da JSR 316. a r t i g o a r t i g o Pedro Henrique S. Mariano (pedro.mariano@caelum.com.br) técnologo em Análise e Desenvolvimento de Sofware pela FIAP, possui as certificações SCJP 6 e SCRUM master.trabalha como consultor e

Leia mais

Heroku. Implantando Aplicações Java no. heroku_. Descubra como é fácil ter sua aplicação rodando em Cloud Computing

Heroku. Implantando Aplicações Java no. heroku_. Descubra como é fácil ter sua aplicação rodando em Cloud Computing heroku_ Implantando Aplicações Java no Heroku Descubra como é fácil ter sua aplicação rodando em Cloud Computing O que é o Heroku? Heroku é uma plataforma de cloud computing que foi criada para facilitar

Leia mais

TDC2012. EJB simples e descomplicado, na prática. Slide 1

TDC2012. EJB simples e descomplicado, na prática. Slide 1 TDC2012 EJB simples e descomplicado, na prática Slide 1 Palestrantes Kleber Xavier Arquiteto Senior / Globalcode kleber@globalcode.com.br Vinicius Senger Arquiteto Senior / Globalcode vinicius@globalcode.com.br

Leia mais

Introdução ao Maven. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Introdução ao Maven. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Introdução ao Maven Leonardo Gresta Paulino Murta leomurta@ic.uff.br Sistemas de Gestão de Construção Controla a transformação de itens fonte em itens derivados Faz a gestão de dependências dos módulos

Leia mais

Prova Específica Cargo Desenvolvimento

Prova Específica Cargo Desenvolvimento UNIVERSIDADE FEDERAL DO PIAUÍ Centro de Educação Aberta e a Distância CEAD/UFPI Rua Olavo Bilac 1148 - Centro CEP 64.280-001 Teresina PI Brasil Fones (86) 3215-4101/ 3221-6227 ; Internet: www.uapi.edu.br

Leia mais

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO. Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO. Robson Adão Fagundes http://robsonfagundes.blogspot.com/ Mini curso Desenvolvimento de aplicação

Leia mais

Desenvolvimento Flex com Maven

Desenvolvimento Flex com Maven Desenvolvimento Flex com Maven Marvin H Froeder Julho 2009 Eu Desenvolvedor 5 anos Java 4 anos Flex 3 anos Maven -0 anos Flash O que é Maven? É uma ferramenta de gestão de projetos de Software. Automatiza

Leia mais

J2EE. J2EE - Surgimento

J2EE. J2EE - Surgimento J2EE Java 2 Enterprise Edition Objetivo: Definir uma plataforma padrão para aplicações distribuídas Simplificar o desenvolvimento de um modelo de aplicações baseadas em componentes J2EE - Surgimento Início:

Leia mais

Tutorial Módulo 06 - Segurança

Tutorial Módulo 06 - Segurança LABORATÓRIO 06 Segurança Este laboratório tem por objetivo exercitar o uso do componente de segurança do Framework e uso da especificação JAAS. Objetivos: Uso do Login Module do Componente de Segurança

Leia mais

Introdução. Tutorial do Xdoclet. Resumo

Introdução. Tutorial do Xdoclet. Resumo Tutorial do Xdoclet Resumo Apresentar a ferramenta XDoclet uma ferramenta utilizada como tarefa (task) do Jakarta Ant que permite executar e criar templates para gerar arquivos, inclusive código Java,

Leia mais

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB Testes de Software 1 AULA 04 FERRAMENTAS DE AUTOMAÇÃO DE TESTES FUNCIONAIS Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB Conteúdo Programático Aula 04 Automação de testes funcionais Ferramentas

Leia mais

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério.

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério. EDSON GONÇALVES Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério. AGRADECIMENTOS Primeiramente gostaria de agradecer

Leia mais

Persistindo dados com TopLink no NetBeans

Persistindo dados com TopLink no NetBeans Persistindo dados com TopLink no NetBeans O que é TopLink? O TopLink é uma ferramenta de mapeamento objeto/relacional para Java. Ela transforma os dados tabulares de um banco de dados em um grafo de objetos

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

Auditando persistência com JPA

Auditando persistência com JPA a r t i g o Em ambientes corporativos, a auditoria sobre as operações de banco de dados é importantíssima, quando não, indispensável. Essa importância surge a partir de um conjunto de necessidades, como:

Leia mais

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64 direcionados por comportamento 64 5 Estudo de caso Neste capítulo serão apresentadas as aplicações web utilizadas na aplicação da abordagem proposta, bem como a tecnologia em que foram desenvolvidas, o

Leia mais

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES Conteúdo O Projeto... 2 Criação de Pacotes... 4 Factory:... 6 DAO:... 15 GUI (Graphical User Interface ou Interface Gráfica de Cadastro)... 18 Evento SAIR... 23 Evento CADASTRAR... 24 1 O Projeto Arquivo

Leia mais

Fundação Universidade Estadual de Maringá

Fundação Universidade Estadual de Maringá Fundação Universidade Estadual de Maringá PAD/DIRETORIA DE MATERIAL E PATRIMÔNIO AVISO DE LICITAÇÃO EDITAL 485/2007 CONCORRÊNCIA PÚBLICA - PROC.: N 15344/2007 OBJETO: CONTRATAÇÃO DE UMA EMPRESA ESPECIALIZADA

Leia mais

Classes de Entidades Persistentes JDB

Classes de Entidades Persistentes JDB Classes de Entidades Persistentes JDB Brasil, Natal-RN, 07 de setembro de 2011 Welbson Siqueira Costa www.jdbframework.com Nota de Retificação: em 11/12/2011 a Listagem 3 desse tutorial sofreu uma pequena

Leia mais

Documentação Usando o Javadoc

Documentação Usando o Javadoc Documentação Usando o Javadoc Prof. MSc. João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão 2.1 Última Atualização: 04/2005 1 Comentários e Documentação Comentários em Java Existem três tipos de comentários

Leia mais

Framework Demoiselle 2.3.0 QuickStart Emerson Oliveira Emerson Saito Luciano Borges Marlon Carvalho Rodrigo Hjort Serge Rehem

Framework Demoiselle 2.3.0 QuickStart Emerson Oliveira Emerson Saito Luciano Borges Marlon Carvalho Rodrigo Hjort Serge Rehem Framework Demoiselle 2.3.0 QuickStart Emerson Oliveira Emerson Saito Luciano Borges Marlon Carvalho Rodrigo Hjort Serge Rehem Sobre o QuickStart... v 1. Instalação... 1 1.1. Ambiente recomendado... 1

Leia mais

Programação e Configuração de Aplicações JEE. Edilmar Alves

Programação e Configuração de Aplicações JEE. Edilmar Alves Programação e Configuração de Aplicações JEE Edilmar Alves Palestrante Sócio da InterSite Informática Professor Universitário Coordenador do JUGMS e membro do BrazilJUGs Fã de Linux, Java e outros softwares

Leia mais

Artigo JavaMagazine (edição 58)

Artigo JavaMagazine (edição 58) 1 / JBoss Seam Simplicidade e produtividade no desenvolvimento de aplicações Web Aprenda a desenvolver aplicações Web utilizando a integração perfeita entre JSF e EJB 3 FÁBIO AUGUSTO FALAVINHA O JBoss

Leia mais

Criando um CRUD RESTful com Jersey, JPA e MySQL

Criando um CRUD RESTful com Jersey, JPA e MySQL www.devmedia.com.br [versão para impressão] Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=33273 Criando um CRUD RESTful com Jersey, JPA e MySQL Aprenda neste artigo a implementar

Leia mais

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

TESTES AUTOMATIZADOS COM JUNITE MOCKITO TESTES AUTOMATIZADOS COM JUNITE MOCKITO Jaime William Dias 12, Dener Barranco 1, Douglas Delapria 1 1 Universidade Paranaense (Unipar) 2 Universidade Estadual de Maringá (UEM) Paranavaí PR Brasil dener_barranco@hotmail.com,

Leia mais

5 Derivando Aplicações Baseadas em Spring e OSGi

5 Derivando Aplicações Baseadas em Spring e OSGi 69 5 Derivando Aplicações Baseadas em Spring e OSGi O capítulo 3 apresentou como um conjunto de artefatos (classes, interfaces, aspectos e arquivos extras) de uma arquitetura de LPS pode ser modelado na

Leia mais

Framework Demoiselle 2.0 QuickStart Emerson Saito Marlon Carvalho Rodrigo Hjort Serge Rehem

Framework Demoiselle 2.0 QuickStart Emerson Saito Marlon Carvalho Rodrigo Hjort Serge Rehem Framework Demoiselle 2.0 QuickStart Emerson Saito Marlon Carvalho Rodrigo Hjort Serge Rehem Sobre o QuickStart... v 1. Instalação... 1 1.1. Pré-requisitos... 1 1.2. Demoiselle Infra... 1 2. Criação da

Leia mais

Desmistificando o Hibernate Envers em 10 passos

Desmistificando o Hibernate Envers em 10 passos _envers Desmistificando o Hibernate Envers em 10 passos Auditoria de dados? Registro de Log? Trilha de auditoria? Descubra como é fácil, através do Hibernate Envers, rastrear o histórico de mudanças e

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

Integração Contínua com Jenkins

Integração Contínua com Jenkins Integração Contínua com Jenkins DevOps para desenvolvedores Java Camilo Lopes Esse livro está à venda em http://leanpub.com/integracaocontinuacomjenkins Essa versão foi publicada em 2015-04-05 Todos os

Leia mais

Tutorial: Criando aplicações J2EE com Eclipse e jboss-ide

Tutorial: Criando aplicações J2EE com Eclipse e jboss-ide Tutorial: Criando aplicações J2EE com Eclipse e jboss-ide Para criar uma aplicação J2EE, utilizando Eclipse e jboss-ide, é necessário ter instalado em seu computador o JDK 1.5 (versão atual). Abaixo seguem

Leia mais

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux lozano@4linux.com.br

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux lozano@4linux.com.br EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux lozano@4linux.com.br Você Gosta do EJB? O EJB esteve por muito tempo na berlinda do mundo Java É pesado... É complicado... Código muito

Leia mais

Mapeamento Lógico/Relacional com JPA

Mapeamento Lógico/Relacional com JPA Mapeamento Lógico/Relacional com JPA Elaine Quintino da Silva Doutora em Ciência da Computação pelo ICMC-USP/São Carlos Analista de Sistemas UOL PagSeguro Instrutora Globalcode Agenda! Persistência de

Leia mais

Demoiselle Tutorial Módulo 1 Arquitetura

Demoiselle Tutorial Módulo 1 Arquitetura Demoiselle Tutorial Módulo 1 Arquitetura Vanderson Botelho da Silva (SERPRO/SUPST/STCTA) Emerson Sachio Saito (SERPRO/CETEC/CTCTA) Flávio Gomes da Silva Lisboa (SERPRO/CETEC/CTCTA) Serge Normando Rehem

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM MARÇO / 2015 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

Persistência de Classes em Tabelas de Banco de Dados

Persistência de Classes em Tabelas de Banco de Dados UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Persistência de Classes em Tabelas de Banco de Dados 1) Introdução! Em algumas situações, pode ser necessário preservar os objetos

Leia mais

Web-Services com JAX-WS. Capítulo. Introdução aos Web-Services via JAX-WS. - Um breve histórico sobre Web-Services. - SOAP x REST. Provendo um Serviço

Web-Services com JAX-WS. Capítulo. Introdução aos Web-Services via JAX-WS. - Um breve histórico sobre Web-Services. - SOAP x REST. Provendo um Serviço A1Provendo e Consumindo Web-Services com JAX-WS Capítulo 22 Introdução aos Web-Services via JAX-WS - Um breve histórico sobre Web-Services Os Web-Services são uma tecnologia popular para apoiar iniciativas

Leia mais

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M JAVA Marcio de Carvalho Victorino 1 Servlets 2 1 Plataforma WEB Baseada em HTTP (RFC 2068): Protocolo simples de transferência de arquivos Sem estado (não mantém sessão aberta) Funcionamento (simplificado):

Leia mais

JPA: Persistência padronizada em Java

JPA: Persistência padronizada em Java JPA: Persistência padronizada em Java FLÁVIO HENRIQUE CURTE Bacharel em Engenharia de Computação flaviocurte.java@gmail.com Programação Orientada a Objetos X Banco de Dados Relacionais = Paradigmas diferentes

Leia mais

Builds com Gradle: programativo e declarativo. Conheça a ferramenta de build para a JVM que está ganhando muita popularidade.

Builds com Gradle: programativo e declarativo. Conheça a ferramenta de build para a JVM que está ganhando muita popularidade. : : www.mundoj.com.br : : Cecilia Fernandes (cecilia.fernandes@caelum.com.br): desenvolvedora, instrutora e consultora pela Caelum, cursa Ciência da Computação na USP e estagiou na IBM Research em Nova

Leia mais

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education JPA Passo a Passo Henrique Eduardo M. Oliveira henrique@voffice.com.br 1 Palestrante Henrique Eduardo M. Oliveira (henrique@voffice.com.br) > Trabalha: Arquiteto JEE / Instrutor Java > Formação: Ciências

Leia mais

Manual de Atualização de Versão Fornece as orientações necessárias para efetuar a atualização da versão do Citsmart no ambiente Linux.

Manual de Atualização de Versão Fornece as orientações necessárias para efetuar a atualização da versão do Citsmart no ambiente Linux. Fornece as orientações necessárias para efetuar a atualização da versão do Citsmart no ambiente Linux. Versão 2.5 10/03/2015 Visão Resumida Data Criação 10/03/2015 Versão Documento 2.5 Projeto Responsáveis

Leia mais

Google App Engine. André Gustavo Duarte de Almeida. Computação Ubíqua e Nuvens. Natal, 24 de maio de 2012 andregustavoo@gmail.com

Google App Engine. André Gustavo Duarte de Almeida. Computação Ubíqua e Nuvens. Natal, 24 de maio de 2012 andregustavoo@gmail.com Google App Engine Natal, 24 de maio de 2012 andregustavoo@gmail.com Sumário Introdução Instalação Aplicação Exemplo Implantação Conclusão Introdução Google App Engine developers.google.com/appaengine Permite

Leia mais

Instalação do IBM SPSS Modeler Server Adapter

Instalação do IBM SPSS Modeler Server Adapter Instalação do IBM SPSS Modeler Server Adapter Índice Instalação do IBM SPSS Modeler Server Adapter............... 1 Sobre a Instalação do IBM SPSS Modeler Server Adapter................ 1 Requisitos de

Leia mais

Unidade 9: Middleware JDBC para Criação de Beans

Unidade 9: Middleware JDBC para Criação de Beans Programação Servidor para Sistemas Web 1 Unidade 9: Middleware JDBC para Criação de Beans Implementando MVC Nível 1 Prof. Daniel Caetano Objetivo: Preparar o aluno para construir classes de entidade com

Leia mais

Parte I. Demoiselle Vaadin

Parte I. Demoiselle Vaadin Parte I. Demoiselle Vaadin O Vaadin é um framework para construção de interfaces web que aplica ideias inovadoras. Apesar de usar o GWT como mecanismo para a exibição de seus componentes, eles tem características

Leia mais

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java Web Arquitetura Aplicações web são basicamente constituídas de: Requisições Respostas Model View Controller (MVC) O que é MVC? Padrão

Leia mais

PROGRAMANDO ANDROID NA IDE ECLIPSE GABRIEL NUNES, JEAN CARVALHO TURMA TI7

PROGRAMANDO ANDROID NA IDE ECLIPSE GABRIEL NUNES, JEAN CARVALHO TURMA TI7 Serviço Nacional de Aprendizagem Comercial do Rio Grande do Sul Informação e Comunicação: Habilitação Técnica de Nível Médio Técnico em Informática Programação Android na IDE Eclipse PROGRAMANDO ANDROID

Leia mais

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

J820. Integração Contínua. com CVS, CruiseControl, Cruise Control. argonavis.com.br. AntHill Gump e Helder da Rocha (helder@acm.

J820. Integração Contínua. com CVS, CruiseControl, Cruise Control. argonavis.com.br. AntHill Gump e Helder da Rocha (helder@acm. J820 Integração Contínua com CVS, CruiseControl, Cruise Control AntHill Gump e Helder da Rocha (helder@acm.org) Integração contínua Um dos requisitos para implementar a integração contínua é ter um sistema

Leia mais

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com Persistência de dados com JPA Hélder Antero Amaral Nunes haanunes@gmail.com O que é persistência? A persistência de dados é o fato de pegar um dado e torná-lo persistente, ou seja, salvar em algum banco

Leia mais

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Software cliente: browser e outros Protocolo HTTP Infraestrutura de transporte

Leia mais

Plugins para Integração

Plugins para Integração : : www.mundoj.com.br : : Adriano Di Foggi Oliveira (adriano.oliveira@venturus.org.br): é formado em Tecnologia em Processamento de Dados, pela FATEC-SP, e pós-graduado MBA em Gestão de TI, pela UNISA.

Leia mais

NOME DA APRESENTAÇÃO

NOME DA APRESENTAÇÃO 25 DE MAIO @MICROSOFT Novidades de Java EE 7 Ernest Duarte NOME DA APRESENTAÇÃO Nome (Nick no Fórum) About me! Nickname na Comunidade Ernest Duarte Profissão Instrutor em Ciências e Tecnologias Numéricas

Leia mais

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Tecnologia Java Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Origem da Tecnologia Java Projeto inicial: Oak (liderado por James Gosling) Lançada em 1995 (Java) Tecnologia

Leia mais

Arquitetura JEE Introdução à Camada de Negócios: Enterprise Java Beans (EJB) Marcos Kalinowski (kalinowski@ic.uff.br)

Arquitetura JEE Introdução à Camada de Negócios: Enterprise Java Beans (EJB) Marcos Kalinowski (kalinowski@ic.uff.br) Arquitetura JEE Introdução à Camada de Negócios: Enterprise Java Beans (EJB) (kalinowski@ic.uff.br) Agenda Arquiteturas Web em Java (Relembrando) Arquitetura Java EE Introdução a Enterprise Java Beans

Leia mais

J2EE TM Java 2 Plataform, Enterprise Edition

J2EE TM Java 2 Plataform, Enterprise Edition CURSO DE GRADUAÇÃO J2EE TM Java 2 Plataform, Enterprise Edition Antonio Benedito Coimbra Sampaio Junior abc@unama.br OBJETIVOS DO CURSO Capacitar os alunos no desenvolvimento de aplicações para a WEB com

Leia mais

Persistência de Dados em Java com JPA e Toplink

Persistência de Dados em Java com JPA e Toplink Persistência de Dados em Java com JPA e Toplink Vinicius Teixeira Dallacqua Curso de Tecnologia em Sistemas para Internet Instituto Federal de Educação, Ciência e Tecnologia - IFTO AE 310 Sul, Avenida

Leia mais

Arquitetura de uma Webapp

Arquitetura de uma Webapp Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação

Leia mais

Transaction Scripts: Uma Forma mais Simples de Organizar Lógica de Domínio

Transaction Scripts: Uma Forma mais Simples de Organizar Lógica de Domínio Roberto Perillo (jrcperillo@yahoo.com.br) é bacharel em Ciência da Computação e está atualmente cursando mestrado no ITA, onde já concluiu o curso de especialização em Engenharia de Software. Trabalha

Leia mais

SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS

SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS Rodrigo das Neves Wagner Luiz Gustavo Galves Mählmann Resumo: O presente artigo trata de um projeto de desenvolvimento de uma aplicação para uma produtora de eventos,

Leia mais

Desenvolvimento Web com Framework Demoiselle versão 1.0

Desenvolvimento Web com Framework Demoiselle versão 1.0 Desenvolvimento Web com Framework Demoiselle versão 1.0 Módulo 07: Outros Componentes Autor: Rodrigo Hjort Serpro / Coordenação Estratégica de Tecnologia / Curitiba www.frameworkdemoiselle.org.br Modificado

Leia mais

MAN001 Atualização Protocolo e Ação Social Versão 2 Cliente: Duralex Sistemas

MAN001 Atualização Protocolo e Ação Social Versão 2 Cliente: Duralex Sistemas MAN001 Atualização Protocolo e Ação Social Versão 2 Autor Data Versão Boby Mayky 18/06/2014 1.0 Diego Hordi 18/06/2014 1.1 1. Objetivo O objetivo deste manual é apresentar as rotinas necessárias para atualização

Leia mais