Postagens

Mostrando postagens de 2014

Versionamento de Sistemas, Artefatos e Componentes

Imagem
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 versionamento é  uma forma de atrelar um conjunto de requisitos, com um nom…

AngularJS - Conhecendo o Framework

Olá pessoal, hoje iremos começar uma série de tutoriais falando sobre o AngularJS, que é um framework JavaScript que veem se tornando muito popular entre os frameworks de front-end.

O  Framework AngularJS
O AngularJS é um framework JavaScript mantido pelo Google para o desenvolvimento de aplicações ricas para Web, sua principal característica é a forma de trabalho, onde suas diretivas estendem os componentes do HTML utilizando marcações. 
Para detalhes sobre o AngularJS podemos visitar o site oficial, onde também encontramos exemplos, links para downloads, cursos, etc.
Site oficial: https://angularjs.org/
Site com tutoriais e exemplos:http://www.w3schools.com/angular/
Começando com AngularJS
Como qualquer outro framework JavaScript, tudo começa com uma importação do arquivo principal do framework:

<!DOCTYPE html><html><head><title>Exemplo AngularJS</title><script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></…

Compressão de CSS e JavaScript utilizando YuiCompressor e Maven

Imagem
Olá pessoal, hoje iremos abordar um assunto muito interessante que é a compressão de recursosestáticos de uma aplicação web.

O que são Recursos Estáticos

Em quase todas as aplicações web sempre há os arquivosestá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 várias solicitações ao servidor.A Compressão de recursos estáticos

A compr…

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 afirmar que aplicação pode funcionar em um ambiente de cluster.

O VRaptor

O VRaptor é u…

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

Imagem
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, com 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 especificações, um bom exemplo seria um pr…