Problemas na injeção de um bean usando Spring 3.03 + JPA2.0 + JSF1.2

3 respostas
C

Bom dia a todos. Estou com um projeto bem atrasado e estou tentando correr o mais rapido possível, porem começou a apresentar um erro que eu já pesquisei em diversos lugares, tentei tirar dúvida com um amigo programador e ele mesmo disse que achava que estava tudo correto, então resolvi apelar para a comunidade guj.

Primeiro estou tentando fazer uma inserção simples no meu bd, porem quando eu tento entrar na página que usa um dos meus beans ela está dando o seguinte erro.

java.lang.InstantiationException: bean.EsportePage

Caused by:
java.lang.InstantiationException - bean.EsportePage

Segue tambem o bean.

package bean;
import facade.EsportesFacade;
import dominio.Esportes;
import dao.EsportesDao;

import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.application.FacesMessage;



import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import service.EsporteService;

@Component("esportePage")
@Scope("session")
public class EsportePage {
	
	private EsporteService esporteService;
	private Esportes esporte = new Esportes();
	
	@Autowired
	public EsportePage(EsporteService esporteService){
		this.esporteService = esporteService;		
	}
	
	public String criarEsporte()
	{
		esporteService.createNew(esporte);
		FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_INFO,"Esporte cadastrado com sucesso","OK");
		FacesContext.getCurrentInstance().addMessage(null, facesMessage);
		esporte = new Esportes();		
		
		return null;
		
		
	}

	public Esportes getEsporte() {
		return esporte;
	}

	public void setEsporte(Esportes esporte) {
		this.esporte = esporte;
	}

	public EsporteService getEsporteService() {
		return esporteService;
	}

	public void setEsporteService(EsporteService esporteService) {
		this.esporteService = esporteService;
	}


}

O adminEsporte.jsp.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Esportes</title>
</head>
<body>
<f:view><h:form>

<h:outputText value="Nome do Esporte"/><h:inputText value="#{esportePage.esporte.nmEsporte}"/><br>
<h:outputText value="Número de Titulares"/><h:inputText value="#{esportePage.esporte.nrTitulares}"/><br>
<h:outputText value="Número de Reservas"/><h:inputText value="#{esportePage.esporte.nrReservas}"/><br>

<h:commandButton value="Criar" action="#{esportePage.criarEsporte}"/>


</h:form>

</f:view>
</body>
</html>

o web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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">

    <display-name>fantasyGame</display-name>
 
    <listener> 
		<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
  	</listener>   	
  	
  	<listener>
  		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
	</listener>  
	
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>   
    
    <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>*.faces</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:WEB-INF/applicationContext.xml</param-value>
    </context-param> 
    
    <context-param>
   		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
   		<param-value>server</param-value>
	</context-param>   
    
    <!-- Plugging the "Blue Sky" skin into the project -->
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>blueSky</param-value>
	</context-param>
	
	<context-param>
      	<param-name>org.richfaces.CONTROL_SKINNING</param-name>
      	<param-value>enable</param-value>
	</context-param>

	<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>     
 
</web-app>

e o applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--
    Document   : applicationContext.xml
    Created on : 18 de Outubro de 2010, 14:23
    Author     : Diego
    Description:
        Purpose of the document follows.
-->

<beans  xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:context="http://www.springframework.org/schema/context" 

        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

       <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
           <property name="location" value="classpath:jdbc.properties"/>
       </bean>

       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
           <property name="driverClass" value="${jdbc.driverClassName}"/>
           <property name="jdbcUrl" value="${jdbc.url}"/>
           <property name="user" value="${jdbc.username}"/>
           <property name="password" value="${jdbc.password}"/>
       </bean>

      <!--bean id="entityManagerFactory"
           class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
         <property name="dataSource" ref="dataSource" />
         < <property name="persistenceUnitName" value="nweb4"></property> >
         <property name="jpaProperties">
             <props>
                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
                 <prop key="hibernate.show_sql">false</prop>
                 <prop key="hibernate.format_sql">false</prop>
             </props>
         </property>

     </bean-->

       
       <!--bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
           <property name="dataSource" ref="dataSource"/>
           <property name="jpaVendorAdapter">
               <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                   <property name="showSql" value="true"/>
                   <property name="generateDdl" value="false"/>
                   <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/>
               </bean>
           </property>
      </bean-->

      <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
	<property name="persistenceUnitName" value="ContatoPU" />
      </bean>

      <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
          <property name="entityManagerFactory" ref="entityManagerFactory"/>
      </bean>

      <bean id="jpaAdapter" class="org.springframework.orm.jpa.JpaTransactionManager">
	<property name="entityManagerFactory" ref="entityManagerFactory" />
      </bean>

     <tx:annotation-driven transaction-manager="transactionManager" />



      <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
      <bean class="org.springframework.orm.jpa.support.PersistenceExceptionTranslationPostProcessor"/>


      <bean id="atletas" class="dominio.Atletas" scope="session"/>
      <bean id="atletasDao" class ="dao.AtletasDao"/>
      <bean id="atletasFacade" class ="facade.AtletasFacade">
          <property name="atletasDao" ref="atletasDao"/>
      </bean>

      <bean id="defEstatisticas" class="dominio.DefEstatisticas" scope="session"/>
      <bean id="defEstatisticasDao" class ="dao.DefEstatisticasDao"/>
      <bean id="defEstatisticasFacade" class ="facade.DefEstatisticasFacade">
          <property name="atletasDao" ref="defEstatisticasDao"/>
      </bean>

      <bean id="enderecos" class="dominio.Enderecos" scope="session"/>
      <bean id="enderecosDao" class ="dao.EnderecosDao"/>
      <bean id="enderecosFacade" class ="facade.EnderecosFacade">
          <property name="enderecosDao" ref="enderecosDao"/>
      </bean>

      <bean id="equipes" class="dominio.Equipes" scope="session"/>
      <bean id="equipesDao" class ="dao.EquipesDao"/>
      <bean id="equipesFacade" class ="facade.EquipesFacade">
          <property name="equipesDao" ref="equipesDao"/>
      </bean>

      <bean id="equipesjogo" class="dominio.Equipesjogo" scope="session"/>
      <bean id="equipesjogoDao" class ="dao.EquipesjogoDao"/>
      <bean id="equipesjogoFacade" class ="facade.EquipesjogoFacade">
          <property name="equipesjogoDao" ref="equipesjogoDao"/>
      </bean>

      <bean id="esportes" class="dominio.Esportes" scope="session"/>
      <bean id="esportesDao" class ="dao.EsportesDao"/>
      <bean id="esportesFacade" class ="facade.EsportesFacade">
      <property name="esportesDao" ref="esportesDao"/>
      </bean>

      <bean id="estatisticas" class="dominio.Estatisticas" scope="session"/>
      <bean id="estatisticasDao" class ="dao.EstatisticasDao"/>
      <bean id="estatisticasFacade" class ="facade.EstatisticasFacade">
      <property name="estatisticasDao" ref="estatisticasDao"/>
      </bean>

      <bean id="eventos" class="dominio.Eventos" scope="session"/>
      <bean id="eventosDao" class ="dao.EventosDao"/>
      <bean id="eventosFacade" class ="facade.EventosFacade">
      <property name="eventosDao" ref="eventosDao"/>
      </bean>

      <bean id="ligas" class="dominio.Ligas" scope="session"/>
      <bean id="ligasDao" class ="dao.LigasDao"/>
      <bean id="ligasFacade" class ="facade.LigasFacade">
      <property name="ligasDao" ref="ligasDao"/>
      </bean>

      <bean id="ligasjogo" class="dominio.LigasJogo" scope="session"/>
      <bean id="ligasjogoDao" class ="dao.LigasJogoDao"/>
      <bean id="ligasjogoFacade" class ="facade.LigasJogoFacade">
      <property name="ligasjogoDao" ref="ligasjogoDao"/>
      </bean>

      <bean id="participantes" class="dominio.Participantes" scope="session"/>
      <bean id="participantesDao" class ="dao.ParticipantesDao"/>
      <bean id="participantesFacade" class ="facade.ParticipantesFacade">
      <property name="participantesDao" ref="participantesDao"/>
      </bean>

      <bean id="participantesjogo" class="dominio.Participantesjogo" scope="session"/>
      <bean id="participantesjogoDao" class ="dao.ParticipantesjogoDao"/>
      <bean id="participantesjogoFacade" class ="facade.ParticipantesjogoFacade">
      <property name="participantesjogoDao" ref="participantesjogoDao"/>
      </bean>

      <bean id="rodadas" class="dominio.Rodadas" scope="session"/>
      <bean id="rodadasDao" class ="dao.RodadasDao"/>
      <bean id="rodadasFacade" class ="facade.RodadasFacade">
      <property name="rodadasDao" ref="rodadasDao"/>
      </bean>

      <bean id="rodadasjogo" class="dominio.Rodadasjogo" scope="session"/>
      <bean id="rodadasjogoDao" class ="dao.RodadasjogoDao"/>
      <bean id="rodadasjogoFacade" class ="facade.RodadasjogoFacade">
      <property name="rodadasjogoDao" ref="rodadasjogoDao"/>
      </bean>

      <bean id="usuarios" class="dominio.Usuarios" scope="session"/>
      <bean id="usuariosDao" class ="dao.UsuariosDao"/>
      <bean id="usuariosFacade" class ="facade.UsuariosFacade">
      <property name="usuariosDao" ref="usuariosDao"/>
      </bean>

      <bean id="usuariosliga" class="dominio.Usuariosliga" scope="session"/>
      <bean id="usuariosligaDao" class ="dao.UsuariosligaDao"/>
      <bean id="usuariosligaFacade" class ="facade.UsuariosligaFacade">
      <property name="usuariosligaDao" ref="usuariosligaDao"/>
      </bean>
      
      <bean id="esporteService" class="bean.EsportePage"/>
      
      

    <context:annotation-config/>
    <context:component-scan base-package="bean" />
   

    
      
      

</beans>

Se falta algo por favor avisem. E por favor alguem me ajuda estou com um prazo de 2 semanas e como eu disse falta muita coisa ainda.

3 Respostas

marvinla

Provavelmente não está conseguindo instanciar a classe EsportePage.
Nas configurações do Spring, tente passar um parametro para o construtor, pois a classe EsportePage não tem construtor padrão.
Ou vc se confundiu na hora de mapear as classes EsportePage e EsporteService.

Espero ter ajudado.
Marcos

C

Sim, com certeza a parte de não tar conseguindo isntanciar o EsportePage.java está certa. O problema que o spring deveria tar injetando aquela esporteService automaticamente porcausa do @Autowire junto com a configuração no appcontext porem isso não está funcionando. Alguem tem alguma outra sugestão?

C

Galera, só atualizando continuei quebrando a cabeça porem nenhum solução até agora. Por favor alguem me ajude!

Criado 27 de novembro de 2010
Ultima resposta 29 de nov. de 2010
Respostas 3
Participantes 2