Web Page Having Trouble Connecting to EJB 3.0 Enity
kurzweil4 Aug 4, 2007 6:25 PMI have an application with a Model and a View project. The bean in the View project is having trouble finding the EJB Enity in the Model project. The binding DepartmentsBean.departments is failing with this error:
javax.el.ELException: javax.faces.el.EvaluationException: javax.el.ELException: Error reading 'departments' on type ice.data.table.view.DepartmentsBean
I had the EXACT same error when I was deploying to OC4J, but the problem was that my Model project was not deployed as an EJB Jar. That is not the problem in this case since I am now using en EJB Jar.
Also, I have tested my DB connection with a plain JSP manually querying a table in the DB, so I know my connection configuration is good.
This is my persistence.xml:
<?xml version="1.0" encoding="windows-1252" ?> <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_1_0.xsd" version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="Model"> <jta-data-source>java:/hr</jta-data-source> <class>ice.data.table.model.Departments</class> <class>ice.data.table.model.DepPublicFacade</class> <class>ice.data.table.model.DepPublicFacadeLocal</class> <class>ice.data.table.model.DepPublicFacadeBean</class> </persistence-unit> </persistence>
This is my entity:
@Entity @NamedQuery( name = "Departments.findAll", query = "select o from Departments o" ) public class Departments implements Serializable { @Id @Column( name="DEPARTMENT_ID", nullable = false ) private Long departmentId; @Column( name="DEPARTMENT_NAME", nullable = false ) private String departmentName; @Column( name="LOCATION_ID" ) private Long locationId; @Column( name="MANAGER_ID" ) private Long managerId; public Departments() { } public Long getDepartmentId() { return departmentId; } public void setDepartmentId( Long departmentId ) { this.departmentId = departmentId; } public String getDepartmentName() { return departmentName; } public void setDepartmentName( String departmentName ) { this.departmentName = departmentName; } public Long getLocationId() { return locationId; } public void setLocationId( Long locationId ) { this.locationId = locationId; } public Long getManagerId() { return managerId; } public void setManagerId( Long managerId ) { this.managerId = managerId; } }
This is my facade:
@Stateless( name="DepPublicFacade" ) public class DepPublicFacadeBean implements DepPublicFacade, DepPublicFacadeLocal { @PersistenceContext( unitName="Model" ) private EntityManager em; public DepPublicFacadeBean() { } public Object mergeEntity( Object entity ) { return em.merge(entity); } public Object persistEntity( Object entity ) { em.persist(entity); return entity; } /** <code>select o from Departments o</code> */ public List<Departments> queryDepartmentsFindAll() { return em.createNamedQuery("Departments.findAll").getResultList(); } public void removeDepartments( Departments departments ) { departments = em.find(Departments.class, departments.getDepartmentId()); em.remove(departments); } }
This is my bean from the View project:
public class DepartmentsBean { private DepPublicFacade model; public DepartmentsBean() { try { final Context context = getInitialContext(); model = (DepPublicFacade)context.lookup("DepPublicFacade"); } catch (Exception ex) { ex.printStackTrace(); } } public List getDepartments() { return model.queryDepartmentsFindAll(); } private static Context getInitialContext() throws NamingException { // Get InitialContext for Embedded OC4J // The embedded server must be running for lookups to succeed. return new InitialContext(); } }
Any help or pointers to information would be appreciated. I am at a loss here.
Thanks,
Kurzweil4