Je suis nouveau à Java EE. J'ai essayé de faire tourner quelques premiers exemples (JPA). J'utilise Glassfish v3. Le problème est que je n'obtiens pas l'App Server en injectant l'EntityManager. Hear est un exemple http://www.adam-bien.com/roller/abien/entry/ejb_3_persistence_jpa_for que j'ai étendu avec un client JSP.Glassfish JPA: Problèmes d'injection EntityManager
Entité:
package beans;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Book {
@Id
@GeneratedValue
private Long id;
private String title;
private String subtitle;
public Book() {
}
public Book(String title) {
this.title = title;
}
}
Bookservice Interface:
package beans;
import javax.ejb.Local;
@Local
public interface BookService {
Book createOrUpdate(Book book);
void remove(Book book);
Book find(Object id);
}
BookServiceBean:
package beans;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class BookServiceBean implements BookService {
@PersistenceContext
private EntityManager em;
public Book createOrUpdate(Book book) {
return em.merge(book);
}
public void remove(Book book) {
em.remove(em.merge(book));
}
public Book find(Object id) {
return em.find(Book.class, id);
}
}
persistence.xml:
<persistence>
<persistence-unit name="sample" transaction-type="JTA">
<jta-data-source>jdbc/MarcelsDataSource</jta-data-source>
<properties>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
index.jsp:
<%@ page import="beans.BookServiceBean" %>
<%@ page import="beans.Book" %>
<html>
<body>
<%
BookServiceBean bs = new BookServiceBean();
Book b = new Book("Superman");
bs.createOrUpdate(b);
%>
</body>
</html>
Si je lance l'exemple que je reçois un java.lang.NullPointerException dans la méthode createOrUpdate() de sorte que le entityManager est évidemment pas correctement injecté. J'ai essayé de trouver un remède pendant des jours et de l'aide serait très appréciée.
Merci
Marcel
Y a-t-il aussi un problème avec le fait qu'il utilise l'état dans un EJB @Stateless? – cdmckay