Glassfish JPA: des Problèmes de l'injection de l'EntityManager

Je suis nouveau sur Java EE. J'ai essayé d'obtenir quelques premiers exemples en cours d'exécution (JPA).
Je suis à l'aide de Glassfish v3. Le problème est que je n'ai pas l'Application Serveur d'injection
l'EntityManager. Entendre est un exemple http://www.adam-bien.com/roller/abien/entry/ejb_3_persistence_jpa_for
qui j'ai étendu avec une JSP client.

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 exécuter l'exemple, je reçois un java.lang.NullPointerException dans le createOrUpdate() méthode entityManager est
évidemment pas injecté correctement. J'ai essayé de trouver un remède pour les jours maintenant et
un peu d'aide serait très appréciée.

Grâce

Marcel

  • N'est-il pas aussi un problème avec le fait qu'il l'aide de l'état dans un @EJB Stateless?
InformationsquelleAutor Marcel Menz | 2010-03-01