NullPointerException when calling a service

0

Hi, I'm setting up a web application with Spring and calling a service from Bean gives me a null pointer exception error. That service is at null. I do not understand why it is, any help? Bean:

@ManagedBean(name = "alumnoBean")
@SessionScoped
public class AlumnoBean {

    private static final Logger logger = Logger
           .getLogger(AlumnoBean.class);

    public AlumnoBean() {
        System.out.println("AlumnosBean()");
    }

    @Autowired
    private AlumnoBL serviceAlumnoBL;

    public List<Alumno> getAlumnosList(){
            return serviceAlumnoBL.findAllBL();
    }

}

Service:

@Service
@Transactional
public class AlumnoBLImpl implements AlumnoBL {

    @Autowired
    private AlumnoDao dao;

    @Override
    @Transactional
    public List<Alumno> findAllBL() {
        return dao.findAllDAO();
    }

DAO:

@Repository
public class AlumnoDaoImpl implements AlumnoDao {

    @Autowired
    private SessionFactory sessionFactory;

    public List<Alumno> findAllDAO() {
        return (List<Alumno>) 
            sessionFactory.getCurrentSession().createQuery("from Alumno").list();
    }

CALL:

<ui:repeat var="list" value="#{alumnoBean.alumnosList}">
    <h:inputText value="#{list.id}"> 
<ui:repeat>

spring-servlet.xml (com.auto is the package where beans, BL Daos and models are found):

<context:component-scan base-package="com.auto" />

ERROR: the error does not come to me when I launch the server, but when I get into the page, that is when calling the serviceAlumnoBL.findAll (); since serviceAlumnoBL is null:

GRAVE: Error Rendering View[/index.xhtml]
javax.el.ELException: /index.xhtml @17,58 value="#{alumnoBean.alumnosList}": Error reading 'alumnosList' en el tipo com.auto.bean.AlumnoBean
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
    at com.sun.faces.facelets.component.UIRepeat.getValue(UIRepeat.java:279)
    at com.sun.faces.facelets.component.UIRepeat.getDataModel(UIRepeat.java:255)
    at com.sun.faces.facelets.component.UIRepeat.setIndex(UIRepeat.java:523)
    at com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:577)
    at com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:1110)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: javax.el.ELException: Error reading 'alumnosList' en el tipo com.auto.bean.AlumnoBean
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:101)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
... 34 more
Caused by: javax.el.ELException: Error 
    at com.auto.bean.AlumnoBean.getAlumnosList(AlumnoBean.java:34)
    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 javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
... 39 more
Caused by: java.lang.NullPointerException
    at com.auto.bean.AlumnoBean.getAlumnosList(AlumnoBean.java:31)
... 44 more

nov 20, 2017 8:28:17 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: El Servlet.service() para el servlet [Faces Servlet] en el contexto con ruta [/Autoescuela] lanzó la excepción [null] con causa raíz
java.lang.NullPointerException
    at com.auto.bean.AlumnoBean.getAlumnosList(AlumnoBean.java:31)
    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 javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    at com.sun.faces.facelets.component.UIRepeat.getValue(UIRepeat.java:279)
    at com.sun.faces.facelets.component.UIRepeat.getDataModel(UIRepeat.java:255)
    at com.sun.faces.facelets.component.UIRepeat.setIndex(UIRepeat.java:523)
    at com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:577)
    at com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:1110)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
    
asked by esterdores91 18.11.2017 в 18:58
source

1 answer

0

You have to initialize the service with the context of Spring. When you put the @Autowired to initialize it, it does not work because it does not know that it has to initialize it and it is null.

To initialize it with Spring, it would be something like this:

protected AlumnoBL serviceAlumnoBL = 
        new SpringContextManualLoad<AlumnoBL>().initializeBean(AlumnoBL.class);
    
answered by 22.11.2017 в 09:25