Erro com Spring + Hibernate + JSF - Me ajudem PLEASE!

Galera,

Estou com o seguinte erro, qdo uso meu DAO na classe ManagerBean esse dao está null, creio que seja alguma configuração errada que eu fiz no spring, será que vcs poderiam me ajudar ??? Segue meus arquivos abrigado:

Por favor, preciso de ajuda, quem puder me add no gtalk:jatecnologia@gmail.com

web.xml:

<?xml version="1.0"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <description>Facelets StarterKit</description>
 <display-name>configuradorWeb</display-name>
 <context-param>
  <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  <param-value>.xhtml</param-value>
 </context-param>
 <context-param>
  <param-name>facelets.REFRESH_PERIOD</param-name>
  <param-value>2</param-value>
 </context-param>
 <context-param>
  <param-name>facelets.DEVELOPMENT</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>client</param-value>
 </context-param>
 <context-param>
  <param-name>com.sun.faces.validateXml</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>com.sun.faces.verifyObjects</param-name>
  <param-value>true</param-value>
 </context-param>
       <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
     <context-param>
    <param-name>org.richfaces.SKIN</param-name>
    <param-value>deepMarine</param-value>
</context-param>
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    <listener>
        <listener-class>
            com.sun.faces.config.ConfigureListener
        </listener-class>
    </listener>
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
  <filter>
    <display-name>RichFaces Filter</display-name>
    <filter-name>richfaces</filter-name>
    <filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
    <filter-name>richfaces</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

faces-config.xml:

 <application>
  	<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
 	<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
  </application>
 <managed-bean>
 	<managed-bean-name>configuradorMB</managed-bean-name>
 	<managed-bean-class>com.diebold.medial.configurador.web.controller.ConfiguradorMB</managed-bean-class>
 	<managed-bean-scope>application</managed-bean-scope>
 </managed-bean>
 <managed-bean>
 	<managed-bean-name>modeloMB</managed-bean-name>
 	<managed-bean-class>com.diebold.medial.configurador.web.controller.ModeloMB</managed-bean-class>
 	<managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 </faces-config>

persistence.xml

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="medialPU"  transaction-type="RESOURCE_LOCAL">  
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
      <property name="hibernate.archive.autodetection"	value="class, hbm" />
      <property name="hibernate.connection.username" value="admmedial"/>
      <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
      <property name="hibernate.connection.password" value="a"/>      
      <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="use_sql_comments" value="true"/>
    </properties>
  </persistence-unit>
</persistence>

classe dao:

@Repository
@Transactional
public class ModeloDao {
    @PersistenceContext (unitName="medialPU")
    private EntityManager em;

    public ModeloDao() {
        System.out.println("["+this.getClass().getName()+"](ModeloDao()): constructor" );
    }

    

    public void insert(Modelo modelo)throws DataAccessException{

        try{
            this.em.persist(modelo);

        }catch(EntityExistsException e){
            System.out.println("["+this.getClass().getName()+"](insert):" + e.getMessage());
        }catch(IllegalStateException e){
            System.out.println("["+this.getClass().getName()+"](insert):" + e.getMessage());
        }catch(IllegalArgumentException e){
            System.out.println("["+this.getClass().getName()+"](insert):" + e.getMessage());
        }catch (TransactionRequiredException e){
            System.out.println("["+this.getClass().getName()+"](insert):" + e.getMessage());
        }catch (Exception e){
            System.out.println("["+this.getClass().getName()+"](insert):" + e.getMessage());
        }
    }

    public void delete(Integer id) throws DataAccessException{
        Modelo modelo = null;
        try{
            modelo = (Modelo) this.em.find(Modelo.class, id);
            if (modelo != null)
                this.em.remove(modelo);

        }catch(IllegalStateException e){
            System.out.println("["+this.getClass().getName()+"](delete):" + e.getMessage());
        }catch(IllegalArgumentException e){
            System.out.println("["+this.getClass().getName()+"](delete):" + e.getMessage());
        }catch (TransactionRequiredException e){
            System.out.println("["+this.getClass().getName()+"](delete):" + e.getMessage());
        }catch (Exception e){
            System.out.println("["+this.getClass().getName()+"](delete):" + e.getMessage());
        }

    }

    public void update (Modelo modelo)throws DataAccessException{
        Modelo modeloAtual = null;

        try{
            modeloAtual = (Modelo) this.em.find(Modelo.class, modelo.getModeId());
            if (modeloAtual != null){

                modeloAtual = modelo;

                this.em.merge(modeloAtual);
            }
        }catch(IllegalStateException e){
            System.out.println("["+this.getClass().getName()+"](update):" + e.getMessage());
        }catch(IllegalArgumentException e){
            System.out.println("["+this.getClass().getName()+"](update):" + e.getMessage());
        }catch(TransactionRequiredException e){
            System.out.println("["+this.getClass().getName()+"](update):" + e.getMessage());
        }catch(Exception e){
            System.out.println("["+this.getClass().getName()+"](update):" + e.getMessage());
        }
    }

    public Modelo findByPK(Integer id)throws DataAccessException{
        Modelo modelo = null;

        try{
            modelo = (Modelo) this.em.find(Modelo.class, id);
        } catch(IllegalStateException e){
            System.out.println("["+this.getClass().getName()+"](findByPK):" + e.getMessage());
        }catch(IllegalArgumentException e){
            System.out.println("["+this.getClass().getName()+"](findByPK):" + e.getMessage());
        }catch(Exception e){
            System.out.println("["+this.getClass().getName()+"](findByPK):" + e.getMessage());
        }
        return modelo;
    }

    public List findByDS(String description)throws DataAccessException{
        List lstResult = null;
        Query qry = null;
        try{
            qry = this.em.createQuery("SELECT m FROM MedModelo m  WHERE m.filiDs LIKE :ds");

            qry.setParameter("ds", description);

            lstResult = qry.getResultList();

        }catch(IllegalStateException e){
            System.out.println("["+this.getClass().getName()+"](findByDS):" + e.getMessage());
        }catch(IllegalArgumentException e){
            System.out.println("["+this.getClass().getName()+"](findByDS):" + e.getMessage());
        }catch(Exception e){
            System.out.println("["+this.getClass().getName()+"](findByDS):" + e.getMessage());
        }

        return lstResult;
    }

    public List findAll()throws DataAccessException{
        List lstResult = null;
        Query qry = null;
        try{
            qry = this.em.createQuery("SELECT m FROM MedModelo m ");

            lstResult = qry.getResultList();

        }catch(IllegalStateException e){
            System.out.println("["+this.getClass().getName()+"](findAll):" + e.getMessage());
        }catch(IllegalArgumentException e){
            System.out.println("["+this.getClass().getName()+"](findAll):" + e.getMessage());
        }catch(Exception e){
            System.out.println("["+this.getClass().getName()+"](findAll):" + e.getMessage());
        }
        return lstResult;
    }
}

classe managerbean:

public class ModeloMB {


	private  ModeloDao modeloDao = null;
	private DataModel model;
	
	public ModeloMB() {		
	}

	public ModeloDao getModeloDao() {
		return modeloDao;
	}

	public void setModeloDao(ModeloDao modeloDao) {
		this.modeloDao = modeloDao;
	}

	// mostra todas os modelos
	public List<Modelo> getTodos() {	
		System.out.println("vou findall.......");		
		return	modeloDao.findAll();
			
	}	

}

Ginhu,

Se eu não me engano, no faces-config você tem que criar referência para os beans mapeados no applicationContext.xml.

E por falar nisso, cadê o applicationContext.xml? Você não listou.

Abraço.

Bland,

Então, meu applicationcontext.xml é esse :


       <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
          p:location="/WEB-INF/jdbc.properties" />
          
       <!-- JPA EntityManagerFactory -->
      <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
     p:dataSource-ref="dataSource">
           <property name="jpaVendorAdapter">
               <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
	p:databasePlatform="${jpa.databasePlatform}" p:showSql="${jpa.showSql}"/>
           </property>
       </bean>  
       <bean id="dataSource"   class="org.springframework.jdbc.datasource.DriverManagerDataSource"          
         p:driverClassName="${jdbc.driverClassName}"  p:url="${jdbc.url}"  p:username="${jdbc.username}"
          p:password="${jdbc.password}" />    

      <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
      <bean lass="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
  
      <bean id="transactionManager" 	class="org.springframework.orm.jpa.JpaTransactionManager">
        	<property name="entityManagerFactory" ref="entityManagerFactory" />
     </bean>
    
     <tx:annotation-driven />
     <context:annotation-config/>
     <context:component-scan base-package="com.diebold.medial.configurador.web.controller" />
      
</beans>       

Então eu tenho que colocar no applicationContext.xml meus managerbeans, tbm ???

É isso ???

Ginhu,

Como te disse, acho que sim. Pelos exemplos que eu encontrei na internet você precisaria estar mapeando os beans do Spring no faces-config.xml através da #{bean_id_do_applicationContext}.

Faz uma tentativa e nos dê um retorno.

Abraço.

Galera,

Consegui resolver, o problema estava com o Spring que não estava fazendo a injeção de forma correta. Depois de muitas tentativas consegui resolver.

Obrigado pela força !!!
Abraços

Ginhu,

Já que você conseguiu resolver, posta aqui pra nós como você fez isso.
Afinal de contas, outras pessoas podem estar passando pelo mesmo problema que você.
E então, como resolveu? Coloca aqui os fontes “corrigidos”.

Abraço.