Como transferir MVC para EJB [RESOLVIDO]

Sempre uso esse padrão de MVC que coloquei aqui abaixo, estou estudando EJB c/ JBOSS.
Pois o EJB c/ JBOSS, estão pedindo muito no mercado e eu preciso estar familiarizado a isto .

Gostaria de saber como ficaria a sua arquitetura no EJB, pode explicar ultilizando os scripts abaixo.

================Script ============================

Usuario

@Entity
@Table(name="usuario")
public class Usuario implements Serializable{
 //metodos
}

ManagedBean

[code]@ManagedBean(name=“usuarioBean”)
@RequestScoped
public class UsuarioBean {
private Usuario usuario;

public UsuarioBean(){
usuario = new Usuario();

}

public String salvar(){
FacesContext fc = FacesContext.getCurrentInstance();
UsuarioRN usuarioRN = new UsuarioRN();
usuarioRN.salvar(this.usuario);

	return "paginax";
}

}
[/code]

Regra de Negocio

[code] // Ficam a regra de persistencia, como deveria salvar e se pode salvar
// Exemplo não pode salvar usuario com o msmo login, ou nao pode deletar usuario administrador
public class UsuarioRN{

private UsuarioDAO usuarioDAO;

public UsuarioRN() {
	this.usuarioDAO = DAOFactory.criarUsuarioDAO();
}

public void salvar(Usuario usuario){

	return this.usuarioDAO.salvar(usuario);
}

}[/code]

Interface de UsuarioDAO

[code]public interface UsuarioDAO {

public void salvar(Usuario usuario);

{[/code]

UsuarioDAOHibernate – realmente aonde persiste

[code]public class UsuarioDAOHibernate implements UsuarioDAO {

private Session session;

public void setSession(Session session) {
	this.session = session;
}

@Override 
public void salvar(Usuario usuario) {
	this.session.save(usuario);
}

}[/code]

E a DAOFactory

[code]public class DAOFactory {

public static UsuarioDAO criarUsuarioDAO(){
	UsuarioDAOHibernate usuarioDAO = new UsuarioDAOHibernate();
	usuarioDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
	return usuarioDAO;
}

}[/code]

Acho que você não entendeu o conceito do MVC. Você pode ter MVC com EJB.

MVC é padrão, EJB é tecnologia.

Se quiser, em minha assinatura tem um exemplo de JSF com EJB. [=

Hebert aqui ???
Meu blog sobre Java: uaiHebert.com

Eu não achei :confused:

o EJB entraria no lugar de quem acima ???

[quote=MarcolaLipe10]Hebert aqui ???
Meu blog sobre Java: uaiHebert.com

Eu não achei :confused:

o EJB entraria no lugar de quem acima ???

[/quote]

O link direto pro artigo ta na assinatura do Senhor Hebert.
Aplicação Web Completa JSF EJB JPA JAAS

Entenda que MVC é um padrão, e EJB é a tecnologia, como o Hebert disse…
Da pra você usar os dois, e por padrão já utiliza…

A forma que vc demonstrou já está em MVC, agora é só colocar o EJB ai!

Exemplo:

  • Repare nas anotações EJBs
@Local
public interface UsuarioDAO {  
  
    public void salvar(Usuario usuario);  
{
@Stateless(name = "usuarioDAO")
public class UsuarioDAOHibernate implements UsuarioDAO {  
      
    private Session session;  
      
    public void setSession(Session session) {  
        this.session = session;  
    }  
  
    @Override   
    public void salvar(Usuario usuario) {  
        this.session.save(usuario);  
    }  
}  

Valeo Erick , achei e ja estou fazendo ! :smiley:

Hebert Coelho blogger sensacional … Sem palavras .

Igor_ks : Você fechou com chave de ouro o forum …
Você realmente tirou minhas duvidas emcima de minhas aplicações , obrigado rapaz

[OFF] Como eu fecho esse topico do forum ???

Basta editar o seu primeiro post e colocar no título [RESOLVIDO].

Valeo Erick … [Resolvido ] :smiley:

Esse MVC acima é o (Design Pattern ? Strategy) ???

E para criar um projeto e faze-lo como um Ejb-lite , é necessario eu criar um NEW > EJB PROJECT ou eu posso fazer um NEW > DYNAMIC WEB PROJECT ?

[quote=MarcolaLipe10]Esse MVC acima é o (Design Pattern ? Strategy) ???

E para criar um projeto e faze-lo como um Ejb-lite , é necessario eu criar um NEW > EJB PROJECT ou eu posso fazer um NEW > DYNAMIC WEB PROJECT ?[/quote]Oi?
MVC, é o MVC. Strategy é outra coisa. Aqui explica o strategy: http://uaihebert.com/design-pattern-strategy/

MVC é separação das camadas de uma aplicação Web.

Você precisa entender oq é o EJB Lite e como funciona, no que ele difere no EJB Full. Se você quiser, tem esse manual que é muito bom: https://sites.google.com/site/uaihebertdeposito/OCBCD%206%20Study%20Notes.pdf

Helbert …

Tem algum projeto que você coloco no seu bloger, como ultilizar um JPA ??

Pois eu uso Hibernate.cfg.xml , e gostaria de migrar para o JPA , me sinto preso ao Hibernate e nas consultas é dificil eu achar alguem que faça com cfg.xml

Tenho um projeto para fazer aqui com prazo determinado e gostaria de arriscar utilizando JPA .

Obrigado !

[quote=MarcolaLipe10]Helbert …

Tem algum projeto que você coloco no seu bloger, como ultilizar um JPA ??

Pois eu uso Hibernate.cfg.xml , e gostaria de migrar para o JPA , me sinto preso ao Hibernate e nas consultas é dificil eu achar alguem que faça com cfg.xml

Tenho um projeto para fazer aqui com prazo determinado e gostaria de arriscar utilizando JPA .

Obrigado ![/quote]Todas as aplicações completas lá utilizam JPA. JSF + EJB com JPA, JSF + JPA (com tomcat) e a ultima que foi SpringMVC

Já achei … !!

http://uaihebert.com/aplicacao-web-completa-tomcat-jsf-primefaces-jpa-hibernate/

Você sempre usa o eclipse Indigo ???

Pelo qual motivo ?

Quando vamos baixar o arquivo na pagina 15, aqui para mim ta vindo um .rar sem nada !

[quote=MarcolaLipe10]Quando vamos baixar o arquivo na pagina 15, aqui para mim ta vindo um .rar sem nada ![/quote]Atualizei a URL lá. Aqui você encontra: http://uaihebert.com/wp-content/uploads/JSFCrudApp.zip

Fiz o seu , qndo fui fazer o meu deu erro :confused:

O que tem de errado aqui ??

package br.com.marcos.managedbean;

[code]import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import br.com.marcos.ejb.ClienteBean;
import br.com.marcos.entidade.Cliente;

@ManagedBean
@ViewScoped
public class ClienteMB {

private Cliente cliente = new Cliente();
private List<Cliente> lstCliente = new ArrayList<Cliente>();


public String incluirCliente(){
	//Incluir cliente no Banco de Dados
	InitialContext ini;
	try {
		ini =new InitialContext();
		ClienteBean clienteBean = (ClienteBean)ini.lookup("java:/module/ClienteBean");
		clienteBean.salvar(cliente);
		cliente = new Cliente();
		lstCliente = clienteBean.buscarClientes();
	} catch (NamingException e) {
		e.printStackTrace();
	}
	
	
	return null;
}

/***
 * GETTER E SETTER
 * 
 * **/[/code]

ClienteBean

package br.com.marcos.ejb;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import br.com.marcos.entidade.Cliente;

@Stateless
public class ClienteBean{
	
	@PersistenceContext
	EntityManager em;
	
	public void salvar(Cliente  cliente){
		em.persist(cliente);
	}
	
	public List<Cliente> buscarClientes(){
		return em.createQuery("FROM Cliente;").getResultList();
	}
}

Entity

[code]package br.com.marcos.entidade;

import javax.persistence.*;

@Entity
@Table(name=“cliente”)
public class Cliente {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column
private String nome;

/******
 * Getter&Setter
 * 
 * **/[/code]

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="minhaaplicacao"> <class>br.com.marcos.entidade.Cliente</class> <jta-data-source>minhaaplicacao_ds</jta-data-source> </persistence-unit> </persistence>

Erro lindo :

Registering web context: /minhaaplicacao 20:35:46,637 INFO [org.jboss.as.server] (HttpManagementService-threads - 2) JBAS018559: Deployed "minhaaplicacao.war" 20:36:10,427 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) javax.naming.NameNotFoundException: module/ClienteBean -- service jboss.naming.context.java.module.ClienteBean 20:36:10,428 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:97) 20:36:10,429 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:178) 20:36:10,430 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.jboss.as.naming.InitialContext.lookup(InitialContext.java:113) 20:36:10,430 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:214) 20:36:10,431 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at javax.naming.InitialContext.lookup(InitialContext.java:411) 20:36:10,431 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at br.com.marcos.managedbean.ClienteMB.incluirCliente(ClienteMB.java:33) 20:36:10,432 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 20:36:10,432 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 20:36:10,433 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 20:36:10,433 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at java.lang.reflect.Method.invoke(Method.java:606) 20:36:10,434 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.el.parser.AstValue.invoke(AstValue.java:262) 20:36:10,434 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) 20:36:10,435 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 20:36:10,435 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) 20:36:10,436 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 20:36:10,436 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at javax.faces.component.UICommand.broadcast(UICommand.java:315) 20:36:10,437 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) 20:36:10,437 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) 20:36:10,438 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 20:36:10,438 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 20:36:10,439 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 20:36:10,439 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 20:36:10,440 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) 20:36:10,440 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 20:36:10,441 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) 20:36:10,441 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) 20:36:10,442 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) 20:36:10,443 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) 20:36:10,443 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) 20:36:10,444 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 20:36:10,444 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 20:36:10,445 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) 20:36:10,445 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) 20:36:10,446 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) 20:36:10,446 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) 20:36:10,447 ERROR [stderr] (http-localhost-127.0.0.1-8083-1) at java.lang.Thread.run(Thread.java:724)