Професионална програма
Loading...
IVANMARINOV1975 avatar IVANMARINOV1975 19 Точки

NullPointerException

Здравейте,правя всичко както е във видеото MVC Workshop(23.02) и не знам з-то ми хвърля ексепшън.Ако може малко помощ.

@WebServlet("/form")
public class Servlet extends HttpServlet {
    @Inject
    private UserRepository userRepository;
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       String username=request.getParameter("username");
       String password=request.getParameter("password");
       User user=new User(username,password);
       this.userRepository.create(user);
       response.sendRedirect("/form");
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("/form.jsp").forward(request,response);
    }
}
@Stateless
@Local(UserRepository.class)
public class UserRepositoryImpl implements UserRepository {
    @PersistenceContext
    private EntityManager entityManager;
    @Override
    public void create(User user) {
        entityManager.persist(user);
    }
}

01-Mar-2017 07:33:46.171 SEVERE [http-nio-8181-exec-6] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [com.test.controllers.Servlet] in context with path [] threw exception
 javax.ejb.EJBException: The bean encountered a non-application exception; nested exception is: 
    java.lang.NullPointerException
    at org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:447)
    at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:351)
    at com.sun.proxy.$Proxy87.create(Unknown Source)
    at com.test.controllers.Servlet.doPost(Servlet.java:25)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:65)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
    at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
    at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:180)
    at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:130)
    at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:145)
    at org.apache.openejb.persistence.JtaEntityManager.persist(JtaEntityManager.java:193)
    at com.test.repository.UserRepositoryImpl.create(UserRepositoryImpl.java:23)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
    at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
    at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
    at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
    at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
    at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
    at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:236)
    at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:203)
    at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:265)
    at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:260)
    at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:89)
    at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:347)
    ... 31 more
 

Тагове:
0
Java Web Development Basics
TeodorDimitrov avatar TeodorDimitrov Trainer 45 Точки
Best Answer

Edit: Проблемът се оказа неправилно създаване war файл в IntelliJ. Библиотеките трябва да бъдат сложени в WEB-INF/lib

Има няколко възможности:
1) Имаш грешка в persistence.xml при дефинирането на връзката към базата.
2) Имаш грешка в conf/tomee.xml при дефинирането на data source
3) Не си сложил @Entity на User.class
4) Използваш Tomcat, а не TomEE

0
02/03/2017 14:12:58
IVANMARINOV1975 avatar IVANMARINOV1975 19 Точки

Мисля ,че не е никое от тях(проекта е копиран при мен ,но не мога да проверя само за TomEE защото е у дома).Ще спомена ,че успява да създаде база с име"db" и users -таблица(id,name,password) вътре но не иска да я напълни с данните от формата.В кой момент се създава таблица User в базата и в кой се попълват данните?Четох в нета ,че може entityManager да не е успяло да се инжектира(но защо?) и затова после   entityManager.persist(user) дава null exception?

0
cefothe avatar cefothe 16 Точки

Колега, пробвай да направих Servlet да е Manage bean или най-добре му слажи Statales анутация. Ако га дебъгнеш и Repository ти е null там е проблема.

0