Importando Projeto JSF Eclipse

Olá pessoal,

No post de hoje, vou mostrar como importar um projeto JSF para o Eclipse. Parece algo simples, mas no Eclipse as vezes as coisas mais simples, é onde tem mais problemas. Sempre quando preciso fazer algo básico no Eclipse, fico surpreso com os problemas que surgem e dai preciso pesquisar pra ver se alguém já sofreu com algo. Mas, o de hoje fui brincado com Jboss tools eu achei a opção..

lets go…

Importando JSF Project Eclipse

A situação de importar um projeto para o Eclipse pode acontecer por vários motivos. A forma padrão que é bem comum a tentativa é ir no menu File >> Import e escolher a opção a abaixo:

importjsfprojecteclipse

Porém, ao escolhe a opção acima, você ainda vai precisar configurar algumas coisas para o X sair do projeto e conseguir executar e vezes isso se torna um pesadelo, pois nem sempre o projeto volta a executar, ou não reconhece o servidor de aplicação. Enfim eu tive vários probleminhas chatos, ao importar por dessa forma. E daí veio o formato de importação do Jboss tools que permite já pegar um projeto especifico JSF e fazer as devidas configurações de forma automática Basta escolher a seguinte opção:

importjsfprojectother

Clique em next e localize o web.xml do projeto, depois clique em next, verifique como será os folders e o servidor de application configurado, em seguida clique em finish. se ficar com o X, vai em properties do projeto clicando com o botão direito e veja a versão do Project Facet. Normalmente é Java 5 para JDK 1.5. Certifique-se que os .jars dos frameworks foram adicionados ao projeto, tais como: JSF, Hibernate, Toplink etc.

Um dos problemas que eu tive com a importação padrão é que as vezes, ele bagunçava meu arquivo web.xml e duplicava umas linhas de code era horrível, e daí meu projeto para de funcionar e tinha que fix na mão, ou pegando de outro projeto.

Espero que tenham gostado do post. See you next post guys!!

Problem project facet java version 6.0 Eclipse

Olá Pessoal,

Hoje vou falar de um pequeno problema que tive com o Eclipse & Facet, foi uma experiencia meia chata, pois gastei horas. Tive que fazer uma migração de máquina, e lá vai eu instalar todo ambiente de desenvolvimento no novo laptop. Preparar o ambiente é rápido e fácil, porem os problemas começam quando começamos a importar os projetos para o Eclipse. Então neste post vou apresentar um probleminha que tive e tirou meu sossego e acho que alguem pode passar um dia, então terá a solução…

Lets go…

A situação

Vc está todo feliz, pois já instalou o seu servidor (no meu caso tomcat 6), java JDK, banco de dados, IDE (eclipse), Jboss tools instalado e agora quer importar os projetos para o “novo” Elipse. Faz a devida importação do projeto , porem ao tentar rodar recebe a mensagem a seguir:

project facet java version 6.0 is not supported

erroreclipsetom

Ai vc louco,perdido, desesperado:

– remove o TomCat e reinstala

– cria um novo workspace e testa um projeto novo e tudo funciona, menos com o projeto que foi importado

– ver configurações de variáveis de ambiente etc

Mas nada de funcionar. E aonde está o problema?

Solução

Bem, o problema é que precisa configurar o projeto para JDK 1.5 e o facet também para a versão Java 5. Para isso, clique com o botão direito no projeto >> Properties e deixe conforme a imagem abaixo:

facetjava5

Observe que mudei em Project Facets a version do Java para 5. E verifique se o Java Compiler está a versão 1.5. Salve e teste o projeto.

Vou ficando por aqui, espero que tenham gostado da dica.

Abracos, see you!!

JPA com Hibernate + JSF + MySQL

olá Pessoal,

Neste post, vou mostrar como usar JPA para seus projetos JEE tendo como provider o nosso Hibernate e para o view usaremos JSF. Alguns adoram o TopLink da Oracle, eu tive serios problemas com ele na parte de config, e cansei de me stressar com coisas operacionais e mantenho meu querido Hibernate como provider.

Aplicação será bem simples, apenas cadastrar um cliente. Limitamos os dados do form, pois o objetivo é mostrar como criar um ambiente para development tendo JPA nos seus projetos. Já mostrei em outros posts, como criar um projeto JPA para Java Básico. Então, recebi alguns emails e para JEE?

Lets go…

Oportunidade Java:

Estamos disponibilizando uma vaga para desenvolvedor Senior Web
. Carga horária será de 8 horas diárias. Os requisitos técnicos para esta contratação são:

- Conhecimentos nas APIs: JSF, Hibernate;
- Conhecimentos nos patterns MVC, DAO, VO;
- Desejável conhecimento em RichFaces

Regime De trabalho é CLT. O salário será de 4.000 mais benefícios. 

Interessados enviar currículos para atendimento@leiria.com.br

Obrigado.

Posts relacionados

Requisitos

Iniciando

Na imagem a seguir você tem toda a estrutura do projeto, observe que já criei as bibliotecas para o projeto e estas foram adicionadas. Se não quiser adicioanr as bibliotecas ao projeto, copie os .jars para a pasta lib e pronto. Lembre-se que ao adicionar uma biblioteca ao projeto, o stupid Eclipse não copia os .jars para a pasta lib. (ao contrário do netbeans 🙂 ).

Não esqueça também de criar um schema e uma table no MySQL, aqui chamaremos de sistemas e clientes respectivamente.

estrutura

1.monte uma estrutura conforme a imagem acima.

Para os arquivos em .jsp e .xml tive que colocar no formato imagem. Infelizmente o plugin para code no wordpress, esse é estressante quando envolve xml, html etc. preciso ficar dando um espaco para cada par de < > senão ele bagunça todo código ou até converte para qualquer outra coisa. Já gastei 1 hora somente para tentar configurar isso. Em função disso, coloquei no formato img o code bem organizado. O lado bom, é que você poderá praticar sem dar ctrl + c e ctrl + v. 🙂

E como sempre boa parte das explanações estão dentro do code no formato de comentário, lado-lado para facilar a compreensão.

Desenvolvimento

2.primeiro passo é criar o bean e fazer as devidas anotações, então veja abaixo o nosso cliente bean como está:

package br.com.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="cliente")//caso o nome da tabela seja diferente informe aqui
public class Cliente {
	@Column(name="nome")
	private String nome;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	//anotação acima indica que o campo será gerado automaticamente pelo BD
	@Column(name="id")
	private int id;
	@Column(name="sobrenome")
	private String sobrenome;
	@Column(name="cidade")
	private String cidade; 

	public Cliente() {
		// TODO Auto-generated constructor stub
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getSobrenome() {
		return sobrenome;
	}

	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

}

Agora vamos partir para criar o nosso DAO, que nele teremos a nossa fábrica de conexão. E poderiamos ter métodos genéricos como salvar, deletar, atualizar etc.Mas, não vamos implementar todos.

package br.com.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class DAO {

	private EntityManagerFactory emf; 

	/* se vc já está acostumado com Hibernate
	 * a ideia é a mesma do método de fabrica que
	 * criamos para os Session que vem do SessionFactory
	 * Aqui temos apenas nomeclatura diferente, pense assim.
	 */
	public EntityManager getEntityManager(){

		//responsavel pela persistencia
		return emf.createEntityManager();
	}
	public DAO() {
		//chamo ele de reprodutor da instância
		emf = Persistence.createEntityManagerFactory("sistemas");

		/* o nome passado vem do arquivo persistence.xml que contém as configs
		 * para conexão com o BD.
		 */
	}}

Agora vamos criar a classe que vai fazer a persistencia com os dados do cliente. É a ClienteDAO.java esta classe extends a classe DAO, para conseguirmos pegar um objeto objeto EntityManager que é responsável pelas inclusões, exclusões e atualizações.

package br.com.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.bean.Cliente;

public class ClienteDAO extends DAO {

	public void salvar(Cliente cliente){
		//obtendo o EntityManager
		EntityManager em = getEntityManager();
		try{
			//inicia o processo de transacao
			em.getTransaction().begin();
			//faz a persistencia
			em.persist(cliente);
			//manda bala para o BD
			em.getTransaction().commit();
		}catch (Exception e) {
			//se der algo de errado vem parar aqui, onde eh cancelado
			em.getTransaction().rollback();
		}
	}

	public List exibir(){
		EntityManager em = getEntityManager();
		try{
			Query q = em.createQuery("select object(c) from Cliente as c");

		return q.getResultList();}
		finally{
			em.close();
		}
	}
}

Agora criaremos a classe ClienteController quer terá a responsabilidade de direcionar a comunicação do JSF e pegar o foi digitado no form e persistir.

package br.com.controller;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import br.com.bean.Cliente;
import br.com.dao.ClienteDAO;
public class ClienteController {
	private Cliente cliente;
	private DataModel model;
	public ClienteController() {
		cliente = new Cliente();
	}

	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public String salvar(){
		ClienteDAO clientedao = new ClienteDAO();
			clientedao.salvar(cliente);
		return "salvar";
	}
	public DataModel getTodos(){
			ClienteDAO clientedao = new ClienteDAO();
			model = new ListDataModel(clientedao.exibir());
		return model;
	}
}

Vamos configurar o no velho e querido face-config.xml

faceconfigdesign

Criando arquivo persistence.xml

o arquivo que vamos precisar para conectar ao banco de dados, parecido como hibernate.cfg.xml, em respeito de ter a mesma função, conectar ao BD.

Observe o name da persistence-unit pois, eh ele que usamos no nosso DAO.java

persistence

Não esqueça que terá que criar um folder META-INF em JavaSource e colocar o persistence.xml neste folder e não coloca-lo dentro do META-INF de WebContent. Alguns programadores acabam confundido e dai recebe as velhas exceções e ficam stressado. Take care easy!

Criando as pages JSF

1.Agora criamos três páginas .jsp com JSF, uma será index que redireciona para cadastro.jsf e a outra é somente uma mensagem dizendo que foi cadastrado com sucesso.

Index.jsp

Coloque o código abaixo na página index.jsp

cadastrojsf

Testando

Mande executar seu projeto. Clique nele e vá em Run ==> Run as ==> Run on Server

  • Cadastre um cliente

E depois verifique se ele está realmente no BD. Veja abaixo meus prints:

testecad

testesucessocad

testemysqlcad

Pessoal, vou ficando por aqui, espero que tenham gostado do post, o objetivo era dar o “ABC Prático” de JPA com JEE usando o framework JSF.

Abracos, see you later.! 🙂

Praticando JSF Facelets no Eclipse

olá Pessoal,

Nesse post vou mostrar como brincar com JSF no Eclipse criando uma simples aplicação usando JSF + facelets e armazenar os dados em um ArrayList. A ideia é mostrar o desenvolvimento simples e ágil com o framework sem Banco de Dados (já mostramos em outros posts como usar JSF + DB veja na categoria JSF).

Lets go…

Note: A versão do JSF que vamos usar aqui é a 1.2. Na versão 2.0 o uso de facelets é padrão. Mas, ainda não “instalei” a nova versão aqui.

Oportunidade Java

profissional desenvolvedor em Java, para um projeto do Banco Votorantim.
> Para adiantar, utilizamos:
> · Hibernate 3.2
> · jfreechart 1.0.12
> · spring 2.5
> · struts 1.3.9
> · quartz 1.6
> · dwr 1.59
> · displaytag 1.1.1
> · jasperreports 3.5.0..
> · Tomcat 6.0
> · Alguns relatórios estão desenvolvidos em iReports

enviar cv para:helio@wbctech.com.br

Requisitos:

  1. JSF + BD

  2. Configurando JSF no eclipse galileo

  3. Instalação TomCat 6.0

Passo 1

Crie um JSF Project.

Vamos criar o JavaBeans para essa aplicação. Que será chamada de Usuário. Portanto crie uma classe Java chamada Usuario dentro do package br.com.camilo. Veja:

package br.com.camilo;
public class Usuario {
	private String nome;
	private String email;
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

Passo 2

Agora precisamos criar um controlador que vai ter como objetivo salvar e exibir os dados.

 package br.com.camilo.controller;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import br.com.camilo.Usuario;
public class Controler {
	private Usuario user;
	/*lista de objetos do tipo Usuario, assim podemos acessar os atributos javabean   */
	private ArrayList lista = new ArrayList();
	public ArrayList getLista() {
		return lista;	}

	public void setLista(ArrayList lista) {
		this.lista = lista;
	}
	public Usuario getUser() {
		return user;
	}
	public void setUser(Usuario user) {
		this.user = user;
	}
public Controler(){
	user = new Usuario(); //cria um novo objeto
}

public void adicionar(Usuario us){
	lista.add(us);
}
public void remover(Usuario us){
	lista.remove(us);
}
public String salvar(){
		this.adicionar(user);
		FacesContext context = FacesContext.getCurrentInstance(); //criando uma instancia FacesContext
		FacesMessage message = new FacesMessage("Salvo com sucesso");
		context.addMessage(null, message);
		return "salvar";
	}
	public DataModel getExibir(){//retorna os elementos na lista
		return  new ListDataModel(lista);
	}
	//cria um novo objeto, quando o botao novo for chamado
	public String novo(){
		user = new Usuario();
		return "novo";
	}
	public String remover(){
		this.remover(user);
		FacesContext context = FacesContext.getCurrentInstance();
		FacesMessage message = new FacesMessage("Removido com sucesso");
		context.addMessage(null, message);
		return "remover";
	}
}

Passo 3

Criar o formulario e a pagina de resultado. Para isso crie uma arquivo chamado formemail.xhtml e outro no chamado de resultado.xhtml.

Deixe seu arquivo conforme o code abaixo:

Cadastro

Altere o arquivo resultado.xhtml:

Novo Cadastro Remover

Passo 5

Agora precisamos configurar o arquivo faces-web.xml. Abra o faces-web.xml no modo source e adicione o code abaixo:

passo 6

Agora vamos testar aplicação clique com o botao direito sobre o arquivo formemail.xhtml e escolha a opcao abaixo:

Na próxima tela vá no diretorio apache = => e escolha TomCat 6.0 e clique em finish. Aguarde o web browser dentro do eclipse abrir e teste aplicação. Veja alguns prints.

note: Esses plugins para wordpress tem hora que stressa e bagunça todo o code. Mas, estou deixando o projeto para download, aqui.

Valeu!Pessoal, Espero que tenham gostado. Até o próximo post.

Hibernate com Pool de Conexão

Olá Pessoal,

Hoje o post é bem simples, na verdade considero este como uma continuação do post sobre pool de conexão. Vou mostrar aqui como fazer hibernate usar o pool de conexão através de uma JNDI. Então será um post bem pequeno, já que vou adicionar apenas as informações referente ao arquivo hibernate.cfg.xml. Se quer comecar do zero, veja o post anterior.

Lets go…

Configurando

  1. Certifique-se que você tem no seu projeto o arquivo context.xml e web.xml configurado corretamente.

  2. Tanto faz se seu projeto é JSF Project ou Dynamic Web Project desde que seja para plataforma JEE.

  3. Não esqueça de adicionar os .jars do hibernate ao seu projeto, se tem dúvida veja neste post.

  4. Agora vamos para a parte mais simples, configurar o arquivo hibernate.cfg.xml. Então deixe seu arquivo conforme abaixo:




java:/comp/env/jdbc/blog
thread
org.hibernate.transaction.JDBCTransactionFactory
org.hibernate.dialect.MySQL5InnoDBDialect
0



 

Pronto observe que agora seu arquivo de configuração do hibernate ele “aponta” para o JNDI que criamos, e quando o schema ou caminho do BD mudar, vamos apenas alterar lá no JNDI e o hibernate já pega a nova informação. Simples não?

Abracos, espero que tenham gostado do post.