JAX-RS球衣:数据库空指针异常

时间:2019-05-14 16:34:33

标签: java hibernate jersey jax-rs struts

我正在尝试使用Jersey对现有应用程序创建一个restfull终结点。

当我尝试从数据库中获取数据列表(邮件)时,出现以下错误:

java.lang.NullPointerException
    product.security.restcontroller.MailController.allMails(MailController.java:40)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
    com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
    com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

这是我的休息控制器:

package product.security.restcontroller;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import product.security.model.Mail;
import product.security.service.entityservice.MailService;

@Path("/mails")
public class MailController {

private MailService mailService;
private List<Mail> allMails;


@GET
@Path("/all")
public List<Mail> allMails() throws Exception {
    allMails = mailService.findAll();
    return allMails;
    }
}

这是我的服务功能

@Override
    public List<Mail> findAll() throws Exception {
        Query query = em.createQuery("SELECT e FROM Mail AS e");
        return (List<Mail>) query.getResultList();
    }

邮件服务

< bean id="mailService"
    class="product.security.service.entityservice.MailServiceImpl">
</bean>

请注意,该应用程序已经在使用struts运行,并且上面的服务按预期工作

更新:

好像我的服务有问题: 当我调用mailService.findAll()时 在我的控制器内部,使用Jeresey,我没有去使用findAll()函数,它会引发NullPointerException。

以同样的方式,我尝试使用Jeresy直接调用findAll()函数,如下所示:

@GET
@Path("/all")
 public List<Mail> findAll() throws Exception {
        Query query = em.createQuery("SELECT e FROM Mail AS e");
        return (List<Mail>) query.getResultList();
    }

这在eather上不起作用,并且在包含em实例的行上出现了NULL指针异常。知道实体管理器也可以通过使用服务进行管理。

我已经分离了用于管理服务bean的xml文件,但是Jeresy似乎无法以某种方式看到它

0 个答案:

没有答案