Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo JavaEE

Dicas para a Certificação OCM Java EE Enterprise Architect

Olá pessoal, hoje irei postar e comentar algumas dicas para quem tem interesse em adquirir a certificação OCM Java EE 6 Enterprise Architect. A Certificação Esta certificação se enquadra no titulo Master da Oracle , por esta razão ela é mais complexa do que as outras Certificações do mundo Java, para mais detalhes consulte a página oficial da certificação. Fases da Certificação A certificação é composta por 5 fases, sendo 3 exames, 1 treinamento oficial e o envio de documentos, na seguinte ordem: Realização de Curso Oficial; Exame 1Z0-807; Exame 1Z0-895; Exame 1Z0-866; Envio do curso oficial ( Course Submission Form). Realização do Curso Oficial Esta etapa é uma exigência que a Oracle faz principalmente para os exames OCM , onde cada candidato deve ter concluído um curso oficial, cada exame tem uma relação de cursos que podem ser realizados, onde você deve realizar pelo menos um curso, não sendo necessário realizar vários . Você pode realizar o curso antes de c...

Criando Módulos e DataSources no Wildfly

Hoje iremos ver como criar um Módulos e DataSources no Wildfly Application Server. O que é um Módulo ? Módulos no Wildfly são recursos que podem ser utilizados em diversos lugares dentro da instância em execução do Container, eles podem ser reaproveitados em diversos lugares, tais como: artefatos, datasources, entre outros. Criando um novo Módulo A criação de módulos no Wildfly é uma tarefa simples, em nosso exemplo, iremos criar um módulo referente ao  Driver JDBC do PostgreSQL , para isso deve-se executar os seguintes passos: 1- Acessar o diretório: {WILDFLY_HOME}/modules/system/layers/base: Diretório base. 2- Criar a estrutura  org/postgresql/main,  e adicionar   o driver(.jar) do PostgreSQL dentro do diretório main: Driver do banco de dados PostgreSQL. 3- Ainda no diretório main , criar o arquivo module.xml  com o seguinte conteúdo: <?xml version="1.0" encoding="UTF-8"?> <module xmlns...

Injeção de dependências em Java EE usando @Inject, @EJB e @Resource ?

Olá pessoal, hoje iremos analisar o uso das annotations  @Inject , @EJB e  @Resource , na injeção de componentes gerenciados. Componentes  Gerenciados  Componentes gerenciados são objetos que possuem seu ciclo de vida gerenciado por um ambiente, ou seja, nos desenvolvedores não temos que se preocupar com lógicas de criação, infraestrutura e destruição dos objetos. Na plataforma Java, é muito comum o trabalho com objetos gerenciados, um exemplo são os famosos EJBs, estes objetos possuem seu ciclo de vida controlado pelo Contêiner Java EE, os EJBs possuem uma infraestrutura complexa, com Segurança, Acesso Distribuído, Thread Safe, Transações, entre outras funcionalidades. Além dos EJBs, temos vários outros objetos e componentes que são gerenciados pelo Contêiner, vamos listar alguns exemplos: JMS:  A trabalhar com fila de mensagens em um ambiente Java EE, temos a fila disponibiliza e gerenciada pelo Contêiner, e nós somos responsáveis...

Como escolher um Framework para o meu projeto ?

Olá pessoal, hoje iremos abordar um assunto muito interessante, que é a escolha de um Framework , com certeza muitos desenvolvedores e arquitetos já ficaram com dúvidas na hora de tomar esta decisão tão importante, e que pode influenciar no sucesso do projeto. Vou listar algumas práticas e experiências que adquiri nesses últimos anos, onde fui responsável por estas escolhas, iremos focar na plataforma Java, mas o processo de definição e escolha de APIs e Frameworks,   pode ser adotado em qualquer outra linguagem, pois são passos que independente de tecnologia, ajudam a tomar as melhores decisões. Devemos Usar um Framework ? A necessidade do mercado por softwares  evoluiu muito com o passar dos anos, hoje temos sistemas operando em quase todas as áreas: Financeira, Médica, Jurídica, entre outras, com toda essa demanda, o setor de desenvolvimento teve que evoluir para acompanhar a alta procura por sistemas em um curto prazo. Os Frameworks entram nesse ponto...

Versionamento de Sistemas, Artefatos e Componentes

Olá pessoal, hoje iremos abordar um assunto voltado para arquitetura de sistemas, onde vamos analisar como realizar um bom versionamento de artefatos e componentes utilizando o Maven. Os Artefatos Quando desenvolvemos um sistema Java, iremos ao final gerar algum tipo de artefato para a implantação, seja ele um  JAR , WAR , ou EAR . Ao utilizar o Maven em nossos projetos, temos o chamado  GAV  no arquivo pom.xml , que são itens obrigatórios para todo tipo de artefato, o GAV é a abreviação de: G (<groupId>): Grupo de trabalho, aqui é um local onde podemos armazenar um grupo artefatos, que fazem parte de um sistema final, exemplo: br.com.cvinicius.erp; A (<artifactId>): Identificação do artefato gerado, este é o nome que terá o artefato, exemplo: erp-web; V (<version>): Versão do artefato, define a versão do artefato gerado, geralmente representado por casas decimais, exemplo: 1.0.0. O Que é Versionamento O versionamen...

Compressão de CSS e JavaScript utilizando YuiCompressor e Maven

Olá pessoal, hoje iremos abordar um assunto muito interessante que é a compressão de    recursos   estáticos de uma aplicação web. O que são Recursos Estáticos Em quase todas as aplicações web sempre há os arquivos   estáticos, eles são principalmente HTML, CSS e JavaScript, estes tipos de arquivos não mudam seu estado entre as chamadas ao servidor, ou seja, eles são sempre os mesmo independente do número de  requests  que sejam feitos ao servidor Web. Antes de detalhar a compressão dos arquivos estáticos, vamos analisar alguns pontos importantes ao importar e utilizar códigos JavaScript e CSS em nossas páginas: Arquivos CSS externos devem ser importados dentro da tag  <head> , assim evitamos o problema de  flash effect ; Arquivos JavaScript externos devem ser importados antes do fechamento da tag  <body> , assim não temos problemas no momento da renderização da tela; Sempre que possível agrupe seus arquivos, para evitar ...

Replicação de sessão com VRaptor 3.5 e Cluster de Tomcat 7

Olá pessoal, hoje vou mostrar detalhes de uma aplicação desenvolvida com VRaptor rodando em um cluster de Tomcat 7. Características da Aplicação A aplicação foi desenvolvida utilizando: JDK 6; VRaptor 3.5.3; Spring 3.0.5, como provider de IoC/DI; Banco de dados PostgreSQL. Características do Ambiente O ambiente foi projetado com:  Apache Web Server 2.2.22; Sendo responsável pelo balanceamento de carga; Tomcat 7.0.54; JVM versão 6; Sendo este um cluster de 2 nós. Regras para replicação de sessão em Java EE Para que possamos trabalhar com cluster em um ambiente Java EE, a aplicação deve seguir algumas regras, que são as seguintes: A aplicação deve ter a tag <distributable /> no deployment descriptor ; Todos os dados que serão replicados, devem implementar a interface java.io.Serializable ; Para armazenar ou alterar um objeto na sessão, sempre devemos invocar o método setAttribute .  Seguindo estas regras, podemos afirm...

Maven 3 com Java EE - ClassFormatError: Absent Code attribute in method that is not native or abstract in class file

Olá pessoal, hoje iremos aprender a solucionar um erro estranho que acontece quando trabalhamos com projetos Maven e Java EE. Especificação Java EE Como já sabemos, no Java EE tudo segue uma especificação, e cada uma delas possui uma identificação que é chamada de JSR (Java Specification Requests) , elas possuem implementações de diferentes fornecedores, um exemplo disso é a JPA (Java Persistence API) , que é uma especificação para mapeamento e persistência de objetos relacionais, ela possui várias implementações diferentes, entre elas estão: Hibernate, TopLink, EclipseLink, etc. Maven e Projetos Java EE Como vimos nos outros tutoriais sobre o Maven, o desenvolvimento e as configurações do projeto ficam muito simples quando o utilizamos, c om Maven podemos setar várias configurações diferentes como:  versão de compilação, dependências, plugin para automatizar processos, etc. Dependência do Java EE Em um projeto Java EE geralmente trabalhamos com várias...

Gerenciamento de Transações com EJB - Parte 2

Olá pessoal, continuando a falar sobre transações, agora iremos ver como aplicar transações nos objetos EJB. Visão Geral sobre EJB Os EJBs são objetos que tem seu ciclo de vida gerenciados pelo Container, ou seja, ele é o responsável por criar, gerenciar, e encerrar este tipo de objeto, o Container prove vários serviços para objetos EJBs, tais como: transações, segurança, acesso concorrente, acesso remoto, entre outros. Os EJBs estão divididos basicamente em 2 tipo: Session Beans:  Este tipo expõem métodos para serem acessados local ou remotamente, eles são divididos em 3 subtipos: Stateless: Este não armazena estado entre as chamadas, ou seja, quando o cliente faz uma chamada a um método de um EJB Stateless, a instância que será disponibilizada pelo Container veem de um pool de objetos, onde a cada chamada um objeto diferente pode atender a solicitação; Stateful: Este armazena estado entre as chamadas, ou seja, quando um cliente faz uma chamada a um método de ...

Gerenciamento de Transações com EJB - Parte 1

Olá pessoal, hoje iremos abordar um assunto muito importante dentro do mundo de aplicativos corporativos, que é o gerenciamento de transações. Todo sistema de informação pode ter ou não necessidades de contextos transacionais, a adição de transações depende muito dos requisitos do sistema. O que é uma Transação ? O conceito de transação é muito amplo e possui várias definições,  uma transação é quando precisamos garantir que algumas operações que façam parte de um mesmo contexto sejam executadas em conjunto, assim é possível garantir a integridade dos dados e o sucesso de uma operação, a s transações possuem 4 características:  Atomicidade:  Todo o fluxo de execução da transação deve ser realizado com sucesso, caso algum item venha a falhar, a transação deve ser desfeita; Consistência: A transação deve garantir a integridade dos dados manipulados, os dados devem ser consistentes no começo e fim da transação; Isolamento: Os dados de uma transação não podem afetar r...