2013-10-07 1 views
0

J'essaie de comprendre l'architecture de base d'une architecture JavaEE fonctionnant avec Struts2, Hibernate et EJB.Architecture Hibernate EJB - Modèle ClassNotFoundException

J'ai une application simple qui ajoute des employés et les liste.

Jusqu'à présent, j'ai fait 3 projets dans Eclipse:

  • projet JPA qui contient mon modèle lié à la base de données
  • projet EJB qui gère la couche de service
  • projet web dynamique pour Struts 2

projet web dynamique> controller.EmployeeAction.java:

import local.EmployeeService; 
import model.Employee; 

public class EmployeeAction extends ActionSupport {  
    private Employee employee; 
    private Collection<Employee> employeeList; 

    @EJB 
    private EmployeeService employeeManager; 

    public String execute() { 
     this.employeeList = employeeManager.findAll(); 
     return SUCCESS; 
    } 

    public String add() { 
     employeeManager.addItem(this.employee); 
     this.employeeList = employeeManager.findAll(); 
     return SUCCESS; 
    } 

    [...] 
} 

projet EJB> local.EmployeeService.java:

import model.Employee; 

@Stateless 
public class EmployeeService { 

    @PersistenceContext 
    private EntityManager em; 

    public void addItem(Employee i) { 
     em.persist(i); 
    } 

    public Collection<Employee> findAll() { 
     Query query = em.createQuery("SELECT e FROM Employee e"); 
     return (Collection<Employee>) query.getResultList(); 
    } 
} 

projet JPA> model.Employee:

@Entity 
@Table(name="\"Employee\"") 
@NamedQuery(name="Employee.findAll", query="SELECT e FROM Employee e") 
public class Employee implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(unique=true, nullable=false) 
    private Integer idemployee; 

    @Column(length=255) 
    private String password; 

    @Column(nullable=false, length=255) 
    private String username; 

    public Employee() { 
    } 

    public Integer getIdemployee() { 
     return this.idemployee; 
    } 

    public void setIdemployee(Integer idemployee) { 
     this.idemployee = idemployee; 
    } 

     [...] 
} 

Mais lorsque je tente d'ajouter un employé, je reçois un ClassNotFoundException pour model.Employee.

Le chemin de classe semble bon. Est-ce que je manque quelque chose?

Répondre

1

Vous devez ajouter votre projet JPA en tant que dépendance dans votre projet EJB et marquer comme Dépendance de bibliothèque Web dans Properties -> Java EE Module Dependencies.

Bonne chance

+0

Merci, j'ai un autre problème, mais celui-ci est corrigé. Notez simplement qu'il est appelé 'Deployment Assembly' dans Eclipse Kepler. – Arthur