Java - Error en login con jsf-spring-hibernate-mysql

   
Vista:

Error en login con jsf-spring-hibernate-mysql

Publicado por jc (3 intervenciones) el 19/03/2018 19:36:51
Soy principiante en esto de Spring-Hibernate(se lo esencial). He creado en Netbean un login con hibernate (anotaciones) y acceso a MySql pero cuando le incorporé Spring y sus anotaciones me atore, ya en el primer intento no lo logre.
Por orden he creado los paquetes clases, bean, bo, bo.Spring, dao, dao.Spring con el siguiente código según corresponde:

En el paquete Clases el código es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package clases;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
 
@Entity
@Table(name="usuario_login", catalog="sipreli")
public class UsuarioLogin  implements java.io.Serializable {
    //@Column(name="usuario", unique=true, nullable=false, length=20)
    @Id
    private String usuario;
    // @Column(name="contrasena", length=20)
     private String contrasena;
// sus respectivos métodos de geter y setter de las variables
--------------------------------/--------------------------------------

En el paquete bean el código es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package beans;
import clases.UsuarioLogin;
import bo.spring.IUsuarioBo;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
 
@ManagedBean
@SessionScoped
public class UsuarioBean implements Serializable{
    private UsuarioLogin elUsuario;
    private IUsuarioBo usuarioBo;  // variable de interface
    private List<UsuarioLogin> listaUsuario;
 
    public UsuarioBean (){
        elUsuario = new UsuarioLogin();
 
    }
 
   public String entrar(UsuarioLogin elUsuario){
        boolean existe;
// --------- Aquí es donde me da error a la hora de crear la instancia de usuarioBo ----------------------------
        existe = usuarioBo.entrar(elUsuario);
        if (existe) {
            return "index.xhtml";
        } else{
            return "";
        }
    }
------------------------------------/--------------------

En el paquete de bo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package bo;
 
import clases.UsuarioLogin;
import bo.spring.IUsuarioBo;
import dao.spring.IUsuarioDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class UsuarioBo implements IUsuarioBo {
 
 @Autowired
    private IUsuarioDao usuarioDao;
 
 @Override
    public boolean entrar(UsuarioLogin elUsuario) {
        return usuarioDao.entrar(elUsuario);
    }
 
    public void setUsuarioDao(IUsuarioDao usuarioDao) {
        this.usuarioDao = usuarioDao;
    }
}

--------------------------/------------------------------
En el paquete bo.Spring

1
2
3
4
5
6
7
package bo.spring;
import clases.UsuarioLogin;
 
public interface IUsuarioBo {
 
    boolean entrar (UsuarioLogin elUsuario);
}

--------------------/--------------------
El archivo application.Context tiene el siguiente código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jee="http://www.springframework.org/schema/jee"
 
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
          http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
          http://www.springframework.org/schema/jee 
        http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
">

    <!--    <context:annotation-config/> -->    
    <context:component-scan base-package="cr.ac.icai.cursoslibres.javaavanzado.bo"/>

    <bean id="usuarioBo" class="cr.ac.icai.cursoslibres.javaavanzado.bo.UsuarioBo" >
        <property name="usuarioDao" ref="usuarioDao"/>
    </bean>
    
    <bean id="usuarioDao" class="cr.ac.icai.cursoslibres.javaavanzado.dao.UsuarioDao"/>

</beans>

--------------------------------------/---------------------------------
El archivo face-config tiene el siguiente código

1
2
3
4
5
6
7
8
9
10
11
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2"
              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
    <application>
            <el-resolver>
                org.springframework.web.jsf.el.SpringBeanFacesELResolver
            </el-resolver>
    </application>
</faces-config>

----------------------------/---------------------------------
El archivo web.xml tiene el siguiente código (al final del mismo, lo primero creo que es lo mismo de siempre)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
<!--                    debe de ser igual al nombre del archivo context-->
			/WEB-INF/applicationContext.xml
		</param-value>
	</context-param>
 
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
	</listener>
 
</web-app>

Yo supongo que el error (NullPointerException) se debe a un tema del uso incorrecto de las anotaciones (donde y cuales) y configuración de Spring. He hecho mi trabajo de casa y he leído tutoriales, consultado videos pero no logro ver porque Spring no me realiza la instanciación (inyección de dependencia) de usuarioBo en el método entrar (ver codigo anterior).

Cualquier ayuda que me puedan brindar se los agradezco.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder