Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee Jax-RS的空指针异常_Jakarta Ee_Jpa_Jax Rs_Jboss7.x - Fatal编程技术网

Jakarta ee Jax-RS的空指针异常

Jakarta ee Jax-RS的空指针异常,jakarta-ee,jpa,jax-rs,jboss7.x,Jakarta Ee,Jpa,Jax Rs,Jboss7.x,我编写了一段简单的代码,让JAX-RS与JPA对话,从数据库中检索客户列表。我一直得到一个空指针异常。请有人看一下下面的日志文件,并告知错误的原因 谢谢 @Path("/customers") public class CustomerResource { @PersistenceContext(unitName = "classicmodels", type = PersistenceContextType.EXTENDED) private EntityManager e

我编写了一段简单的代码,让JAX-RS与JPA对话,从数据库中检索客户列表。我一直得到一个空指针异常。请有人看一下下面的日志文件,并告知错误的原因

谢谢

@Path("/customers")
public class CustomerResource {


    @PersistenceContext(unitName = "classicmodels", type = PersistenceContextType.EXTENDED)
    private EntityManager em;

    @GET
    @Produces("application/xml")    
    public List<Customer> getAllCustomers() {
        List<Customer>  result = null;
        try{
        result = em.createQuery("select c from Customers c",Customer.class).getResultList();
        }
        catch(NoResultException e){

        }
        return result;
    }
}

JPA和JAX-RS都不会在运行时处理注释。它只是被忽略,
em
属性仍然设置为
NULL
——这就是NPE的原因。例如,您应该向应用程序添加一些EJB容器,或者去掉注释并在JAX-RS资源中实例化
em
(并启动/停止事务)。

我猜第31行是创建查询的地方,您的EntityManager似乎是nullI Think@PersistenceContext(unitName=“classicmodels”,type=PersistenceContextType.EXTENDED)注入EntityManager?这可能是一个潜在原因:@PersistenceContext注释可用于任何CDIBean、EJB、Servlet、Servlet侦听器、Servlet过滤器或JSF ManagedBean。如果不使用EJB,则需要使用UserTransaction手动开始和提交事务。EntityManager的任何创建、更新或删除方法都需要一个事务才能工作。我在使用JBoss AS 7时遇到了类似的问题-结果是我忘记了在WEB-INF中创建beans.xml文件。添加该事务解决了我的注入问题。
23:58:09,141 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/HelloWorld].[com.JaxActivator]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet com..JxActivator threw exception: org.jboss.resteasy.spi.UnhandledException: java.lang.NullPointerException
    at org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:340) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:214) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:190) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:540) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.1.GA.jar:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:]
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:]
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_15]
Caused by: java.lang.NullPointerException
    at com.CustomerResource.getAllCustomers(CustomerResource.java:31) [classes:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_15]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_15]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_15]
    at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_15]
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:155) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211) [resteasy-jaxrs-2.3.1.GA.jar:]
    at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525) [resteasy-jaxrs-2.3.1.GA.jar:]
    ... 20 more