JBoss5GA: @EJB in jsf managed bean doesn't work???
fiorenzino Dec 5, 2008 7:50 PMHi,
i want test jboss 5GA for EJB Injection in jsf application.
JBoss 5GA default configuration.
My application code:
Ejb3JSFTest.ear
-META-INF
---application.xml
--------|+++++++(ejb-module)Ejb3JSFTest_ejb3
-------|+++++++(web-module)Ejb3JSFTest.war
--war
----WEB-INF
------web.xml
------faces-config.xml
--jar
--META-INF
----persistence.xml
EJB session bean
@Stateless @Local(TestManager.class) public class TestManagerBean implements TestManager { @PersistenceContext(unitName = "Manager") EntityManager em; public List<Test> getAllTest() { List result = null; try { result = em.createNamedQuery("Test.getAllTest").getResultList(); } catch (Exception e) { e.printStackTrace(); } return result; } }
@Entity
import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; @Entity @NamedQueries( { @NamedQuery(name = "Test.getAllTest", query = "SELECT p FROM Test p order by p.nome") }) public class Test implements Serializable { private Long id; private String nome; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } }
ManagedBean
package it.jsftest.web; import java.util.List; import it.jsftest.ejb3.TestManager; import it.jsftest.par.Test; import javax.ejb.EJB; import javax.faces.model.ArrayDataModel; import javax.faces.model.DataModel; public class TestHandler { @EJB(mappedName = "Ejb3JSFTest/TestManagerBean/local") TestManager testManager; private DataModel model; public DataModel getModel() { if (model == null) aggModel(); return model; } public void aggModel() { try { System.out.println("update Model"); model = new ArrayDataModel(); List<Test> lista = testManager.getAllTest(); model.setWrappedData(lista.toArray()); } catch (Exception e) { e.printStackTrace(); } } }
index.xhtml
....
<rich:dataTable width="300" id="TestList" rows="5" columnClasses="col" value="#{TestHandler.model}" var="test"> <f:facet name="header"> <rich:columnGroup> <h:column> <h:outputText styleClass="headerText" value="id" /> </h:column> <h:column> <h:outputText styleClass="headerText" value="Nome" /> </h:column> </rich:columnGroup> </f:facet> <h:column> <h:outputText value="#{test.id}" /> </h:column> <h:column> <h:outputText value="#{test.nome}" /> </h:column> <f:facet name="footer"> <rich:datascroller id="scollerTestList" for="TestList" maxPages="10" /> </f:facet> </rich:dataTable>
I'm sad...this solution doesn't work!
What Mistakes?
With eclipse-debug i see the null value for TestManager.
good night
Fiorenzo
PS :
also if i use ejb-local-ref to web.xml - doesn't work!!
LOG:
at deploytime:
Created KernelDeployment for: Ejb3JSFTest_ejb3.jar 01:30:51,542 INFO [JBossASKernel] installing bean: jboss.j2ee:ear=Ejb3JSFTest.ear,jar=Ejb3JSFTest_ejb3.jar,name=TestManagerBean,service=EJB3 01:30:51,542 INFO [JBossASKernel] with dependencies: 01:30:51,546 INFO [JBossASKernel] and demands: 01:30:51,546 INFO [JBossASKernel] jboss.ejb:service=EJBTimerService 01:30:51,546 INFO [JBossASKernel] persistence.unit:unitName=Ejb3JSFTest.ear/Ejb3JSFTest_ejb3.jar#SomaroManager 01:30:51,546 INFO [JBossASKernel] and supplies: 01:30:51,546 INFO [JBossASKernel] jndi:Ejb3JSFTest/TestManagerBean/local 01:30:51,547 INFO [JBossASKernel] jndi:Ejb3JSFTest/TestManagerBean/local-it.jsftest.ejb3.TestManager 01:30:51,547 INFO [JBossASKernel] Class:it.jsftest.ejb3.TestManager 01:30:51,547 INFO [JBossASKernel] jndi:Ejb3JSFTest/TestManagerBean/remote 01:30:51,547 INFO [JBossASKernel] Added bean(jboss.j2ee:ear=Ejb3JSFTest.ear,jar=Ejb3JSFTest_ejb3.jar,name=TestManagerBean,service=EJB3) to KernelDeployment of: Ejb3JSFTest_ejb3.jar .... ... 01:30:51,811 INFO [EJBContainer] STARTED EJB: it.jsftest.ejb3.TestManagerBean ejbName: TestManagerBean 01:30:51,833 INFO [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI: Ejb3JSFTest/TestManagerBean/local - EJB3.x Default Local Business Interface Ejb3JSFTest/TestManagerBean/local-it.jsftest.ejb3.TestManager - EJB3.x Local Business Interface
runtime error:
01:31:43,867 ERROR [STDERR] java.lang.NullPointerException 01:31:43,868 ERROR [STDERR] at it.jsftest.web.TestHandler.aggModel(TestHandler.java:27)