Hallo Ihr!
Wie ich in einem anderen Thread schon beschrieben hatte wollen wir hier in einem kleinen Übungsprojekt JSF und EJB3 nutzen. Ich habe dazu ein Tutorial unter Laliluna verwendet. Dabei wird über eine Entity-Bean auf die Datenbank zugegriffen. Der Zugriff darauf per Java-Client funktioniert auch. Ich habe nun einen Web-Client mit JSF programmiert. Dort erhalte ich allerdings leider den Fehler:
Das Server-Protokoll enthält u.a. (Die Null-Pointer-Exception bezieht sich auf em. Ich vermute, dass es ein Problem mit dem EntityManager gibt):
Ich habe versuchsweise mal in meine getFirst-Methode einen konstante String zurückgegeben. Also ohne Zugriff auf den Entity-Manager. Dann klappt es. Hier mein Bean-Code:
Ich habe das EJB-Projekt und das Dynamic-Web-Projekt unter Eclipse für den JBoss 4.2 erstellt. Auf ein EAR-Projekt habe ich zunächst verzichtet, glaube auch nicht, dass das die Problemursache ist.
Ich würde mich riesig freuen, wenn mir da nochmal jemand einen Tipp geben könnte!
Titus
Wie ich in einem anderen Thread schon beschrieben hatte wollen wir hier in einem kleinen Übungsprojekt JSF und EJB3 nutzen. Ich habe dazu ein Tutorial unter Laliluna verwendet. Dabei wird über eine Entity-Bean auf die Datenbank zugegriffen. Der Zugriff darauf per Java-Client funktioniert auch. Ich habe nun einen Web-Client mit JSF programmiert. Dort erhalte ich allerdings leider den Fehler:
Code:
javax.servlet.ServletException: /test.jsp(13,1) '#{bookTestBean.first}' Error reading 'first' on type de.laliluna.library.BookTestBean
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
Das Server-Protokoll enthält u.a. (Die Null-Pointer-Exception bezieht sich auf em. Ich vermute, dass es ein Problem mit dem EntityManager gibt):
Code:
10:53:05,406 ERROR [JBossInjectionProvider] Injection failed on managed bean.
javax.naming.NameNotFoundException: de.laliluna.library.BookTestBean not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
...
Caused by: java.lang.NullPointerException
at de.laliluna.library.BookTestBean.getFirst(BookTestBean.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Ich habe versuchsweise mal in meine getFirst-Methode einen konstante String zurückgegeben. Also ohne Zugriff auf den Entity-Manager. Dann klappt es. Hier mein Bean-Code:
Code:
package de.laliluna.library;
import java.util.Iterator;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class BookTestBean implements BookTestBeanLocal, BookTestBeanRemote {
@PersistenceContext
EntityManager em;
public static final String RemoteJNDIName = BookTestBean.class
.getSimpleName()
+ "/remote";
public static final String LocalJNDIName = BookTestBean.class
.getSimpleName()
+ "/local";
public void test() {
Book book = new Book(null, "My first bean book", "Sebastian");
em.persist(book);
// Übrigen Code ausgelassen
}
public String getFirst() {
List someBooks = em.createQuery("from Book b where b.author=:name")
.setParameter("name", "Paul").getResultList();
for (Iterator iter = someBooks.iterator(); iter.hasNext();) {
Book element = (Book) iter.next();
return element.toString();
}
return "Not Found!";
}
}
Ich habe das EJB-Projekt und das Dynamic-Web-Projekt unter Eclipse für den JBoss 4.2 erstellt. Auf ein EAR-Projekt habe ich zunächst verzichtet, glaube auch nicht, dass das die Problemursache ist.
Ich würde mich riesig freuen, wenn mir da nochmal jemand einen Tipp geben könnte!
Titus