Я пытаюсь создать конечную точку перезапуска, используя Джерси для существующего приложения.
Когда я пытаюсь получить список данных (почты) из моей базы данных, я получаю следующую ошибку:
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 ()
Внутри моего контроллера, используя Джереси, я не перехожу к функции findAll (), и она генерирует исключение NullPointerException.
Точно так же я пытался вызвать функцию findAll () напрямую, используя Jeresy, как показано ниже:
@GET
@Path("/all")
public List<Mail> findAll() throws Exception {
Query query = em.createQuery("SELECT e FROM Mail AS e");
return (List<Mail>) query.getResultList();
}
Что не сработало, и я получил исключение NULL-указатель в строке, содержащей экземпляр em. Зная, что Entity Manager также управляется с помощью служб ..
Я уже отделил XML-файл, который управляет компонентами службы, но кажется, что Джереси не может его как-то увидеть