erviço da web @RESTful: serviço java.lang.NullPointerException.AbstractFacade.findAll

Criei um serviço Web XML simples usando o assistente "RESTful Web Services from Database ..." do NetBeans 7. Neste ponto, quero publicar uma lista de usuários do banco de dados mySQL associad

Quando tento acessar o serviço por meio de sua URL (http: // localhost: 8080 / database / resources / users), recebo um erro que lê "java.lang.NullPointerException". O rastreamento da pilha:

service.AbstractFacade.findAll(AbstractFacade.java:41)
service.UserFacade.findAll(UserFacade.java:51)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:165)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:276)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:83)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:71
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1171)  com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1103)  com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1053)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1043)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:406)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:477)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:662)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

Entidade do usuário:

package entities;
...
@Entity
@Table(name="users")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Users.findAll", query = "SELECT u FROM Users u"), 
...

Também alterei a consulta nomeada para User.findAll, caso os nomes precisem se alinhar com o nome da entidade. Isso não resolveu o problema

Não tenho certeza se é 'normal' ou não, mas o assistente criou uma classe UserFacade bastante esparsa; Eu adicionei os métodos ausentes depois de pesquisar o tópico. Além disso, o pacote javax.ejb.Stateless parece estar ausente (talvez não no CLASSPATH da minha estação de trabalho); esse é o motivo pelo qual a anotação @Stateless está desativad

lasse @UserFacade:

//@Stateless
@Path("users")
public class UserFacade extends AbstractFacade<User> {

    @PersistenceContext(unitName="databasePU") 
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public UserFacade() {
        super(User.class);
    } 

    @GET
    @Path("{id}")
    @Produces({"application/xml", "application/json"})
    public User find(@PathParam("id") BigDecimal id) {
        return super.find(id);
    }

    @GET
    @Override
    @Produces({"application/xml", "application/json"})
    public List<User> findAll() {
        return super.findAll();
    } 

}

Exception é lançada na primeira linha no método findAll do AbstractFacade:

public List<T> findAll() {  

  javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
  ...
}

Questões

A anotação @Stateless é necessária para que isso funcione? Esse padrão requer J2EE 6 em vez de J2SE 6 (que é o que está instalado na minha estação de trabalho OS X)? O espaço para nome 'javax.ejb' parece sugerir java beans corporativos.

** editar **

Java SE 6 (1.6.0_29-b11-402)

questionAnswers(2)

yourAnswerToTheQuestion