Erro e duvida

2 respostas
S

Estou enfrentando um erro na minha aplicacao quando inicio o tomcat, e alem do erro gostaria da opiniao d vcs quanto aos meus codigos…se do jeito q estou fazendo esta ok ou posso melhorar algo…acho que os codigos que postarei abaixo da pra entenderem a minha aplicacao…

erro

SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'musicasDAOHibernate' defined in ServletContext resource [/WEB-INF/spring-hibernate.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: net/sf/hibernate/Session
java.lang.NoClassDefFoundError: net/sf/hibernate/Session

meus codigo estao abaixo:

tiles-defs.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

 <!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
       "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">

<tiles-definitions>

	<definition name="template" path="/pages/modelos/index.jsp" >
		<put name="titulo"  value="Spring" />
		<put name="topo" value="/pages/includes/topo.jsp" />
		<put name="categorias" value="/pages/includes/menu_esquerdo.jsp" />
		<put name="corpo" value="/pages/includes/corpo.jsp" />
		<put name="direitos_autorais" value="/pages/includes/direitos_autorais.jsp" />
	</definition>
	
	<definition name="categorias" extends="template">
		<put name="corpo" value="/pages/includes/categorias.jsp"></put>
	</definition>
	
	<definition name="artistas" extends="template">
		<put name="corpo" value="/pages/includes/categorias.jsp"></put>
	</definition>
	
	<definition name="musicas" extends="template">
		<put name="corpo" value="/pages/includes/categorias.jsp"></put>
	</definition>

</tiles-definitions>

spring-hibernate.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName">
			<value>com.mysql.jdbc.Driver</value>
		</property>
		<property name="url">
			<value>jdbc:mysql://localhost/spring</value>
		</property>
		<property name="username">
			<value>root</value>
		</property>
		<property name="password">
			<value>root</value>
		</property>
	</bean>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

		<property name="dataSource">
			<ref local="dataSource" />
		</property>
		<property name="mappingResources">
			<list>
				<value>com/spring/hibernate/Categorias.hbm.xml</value>
				<value>com/spring/hibernate/Artistas.hbm.xml</value>
				<value>com/spring/hibernate/Musicas.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
	</bean>

	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>

	<bean id="categoriasDAOHibernate" 
		class="com.spring.hibernate.CategoriasDAOHibernate">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	
	<bean id="artistasDAOHibernate" 
		class="com.spring.hibernate.ArtistasDAOHibernate">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	
	<bean id="musicasDAOHibernate" 
		class="com.spring.hibernate.MusicasDAOHibernate">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>

</beans>

spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

	<!-- the application context definition for the spring DispatcherServlet -->

	<bean id="tilesConfigurer"
		class="org.springframework.web.servlet.view.tiles.TilesConfigurer">
		<property name="factoryClass"
			value="org.apache.struts.tiles.xmlDefinition.I18nFactorySet" />
		<property name="definitions">
			<list>
				<value>/WEB-INF/tiles-defs.xml</value>
			</list>
		</property>
	</bean>

	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="requestContextAttribute" value="requestContext" />
		<property name="viewClass"
			value="org.springframework.web.servlet.view.tiles.TilesView" />
	</bean>

	<bean name="/index.action" 
		class="com.spring .controller.IndexController">
		<property name="categoriasDAO" ref="categoriasDAOHibernate" />
	</bean>
	
	<bean name="/categorias.action" 
		class="com.spring .controller.CategoriasController">
		<property name="categoriasDAO" ref="categoriasDAOHibernate" />
	</bean>
	
	<bean name="/artistas.action" 
		class="com.spring .controller.ArtistasController">
		<property name="artistasDAO" ref="artistasDAOHibernate" />
		<property name="categoriasDAO" ref="categoriasDAOHibernate" />
	</bean>
	
	<bean name="/musicas.action" 
		class="com.spring .controller.MusicasController">
		<property name="artistasDAO" ref="artistasDAOHibernate" />
		<property name="categoriasDAO" ref="categoriasDAOHibernate" />
		<property name="musicasDAO" ref="musicasDAOHibernate" />
		
	</bean>

</beans>

IndexController.java

package com.spring.controller;

import java.io.IOException;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.spring.dao.CategoriasDAO;
			
public class IndexController implements Controller{

	private CategoriasDAO categoriasDAO;   
	  
	public void setCategoriasDAO(CategoriasDAO categoriasDAO) {   
	   this.categoriasDAO = categoriasDAO;   
	}
	
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		
		Collection categorias = categoriasDAO.listar();
		request.setAttribute("categorias", categorias);
		
		return new ModelAndView("template");
		
	}

}

CategoriasController.java

package com.spring.controller;

import java.io.IOException;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.spring.dao.CategoriasDAO;
import com.spring.util.Categorias;
import com.spring.util.Validacao;

public class CategoriasController implements Controller {

	private CategoriasDAO categoriasDAO;
	  
	public void setCategoriasDAO(CategoriasDAO categoriasDAO) {   
	   this.categoriasDAO = categoriasDAO;   
	}
	
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		Collection categorias = categoriasDAO.listar();
		request.setAttribute("categorias", categorias);
		
		Collection letras = Categorias.getLetras();
		request.setAttribute("letras", letras);
		
		if(Validacao.inteiroNulo(request.getParameter("cat"))){
			return new ModelAndView("template");
		} else {
			return new ModelAndView("categorias");
		}
	}

}

ArtistasController.java

package com.spring.controller;

import java.io.IOException;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.spring.dao.ArtistasDAO;
import com.spring.dao.CategoriasDAO;
import com.spring.util.Categorias;

public class ArtistasController implements Controller {

	private CategoriasDAO categoriasDAO;
	private ArtistasDAO artistasDAO;
	
	public void setCategoriasDAO(CategoriasDAO categoriasDAO){
		this.categoriasDAO = categoriasDAO;
	}
	  
	public void setArtistasDAO(ArtistasDAO artistasDAO) {   
	   this.artistasDAO = artistasDAO;   
	}
	
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		Collection categorias = categoriasDAO.listar();
		request.setAttribute("categorias", categorias);
		
		Collection letras = Categorias.getLetras();
		request.setAttribute("letras", letras);
		
		Collection artistas = artistasDAO.listar(request.getParameter("letra"));
		request.setAttribute("artistas", artistas);
		
		return new ModelAndView("artistas");
	}
	
}

MusicasController.java

package com.spring.controller;

import java.io.IOException;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.spring.dao.ArtistasDAO;
import com.spring.dao.CategoriasDAO;
import com.spring.dao.MusicasDAO;
import com.spring.util.Categorias;

public class MusicasController implements Controller {

	private CategoriasDAO categoriasDAO;
	private ArtistasDAO artistasDAO;
	private MusicasDAO musicasDAO;
	
	public void setCategoriasDAO(CategoriasDAO categoriasDAO){
		this.categoriasDAO = categoriasDAO;
	}
	  
	public void setArtistasDAO(ArtistasDAO artistasDAO) {   
		this.artistasDAO = artistasDAO;   
	}

	public void setMusicasDAO(MusicasDAO musicasDAO) {
		this.musicasDAO = musicasDAO;
	}

	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		Collection categorias = categoriasDAO.listar();
		request.setAttribute("categorias", categorias);
		
		Collection letras = Categorias.getLetras();
		request.setAttribute("letras", letras);
		
		Collection artistas = artistasDAO.listar(request.getParameter("letra"));
		request.setAttribute("artistas", artistas);
		
		Collection musicas = musicasDAO.listar();
		request.setAttribute("musicas", musicas);
		
		return new ModelAndView("musicas");
	}
	
}

CategoriasDAOHibernate.java

package com.spring.hibernate;

import java.util.Collection;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.spring.dao.CategoriasDAO;
import com.spring.vo.CategoriasVO;

public class CategoriasDAOHibernate extends HibernateDaoSupport 
	implements CategoriasDAO {

	public Collection<CategoriasVO> listar() {        
		return getHibernateTemplate().loadAll(CategoriasVO.class);   
	}
	
}

ArtistasDAOHibernate.java

package com.spring.hibernate;

import java.util.Collection;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.spring.dao.ArtistasDAO;
import com.spring.vo.ArtistasVO;

public class ArtistasDAOHibernate extends HibernateDaoSupport
	implements ArtistasDAO{
	
	public Collection<ArtistasVO> listar(String letra) { 
		
		DetachedCriteria c = DetachedCriteria.forClass(ArtistasVO.class);
		c.add(Restrictions.like("nome", letra + "%"));
		
		return getHibernateTemplate().findByCriteria(c);
	}

}

MusicasDAOHibernate.java

package com.spring.hibernate;

import java.util.Collection;

import org.springframework.orm.hibernate.support.HibernateDaoSupport;

import com.spring.dao.MusicasDAO;
import com.spring.vo.MusicasVO;

public class MusicasDAOHibernate extends HibernateDaoSupport
	implements MusicasDAO{
	
	public Collection<MusicasVO> listar() { 

		return getHibernateTemplate().loadAll(MusicasVO.class);
		
	}

}

2 Respostas

S

Acho q o erro deve estar relacionado com os beans…pq se eu retirar todos os beans “musicasDAOHibernate” e “/musicas.action” ai a aplicacao compila normalmente…

S

Resolvido.

Alterei o spring-servlet.xml para

<bean name="/musicas.action"   
        class="com.spring .controller.MusicasController">   
        <property name="categoriasDAO" ref="categoriasDAOHibernate" />   
        <property name="musicasDAO" ref="musicasDAOHibernate" />   
</bean>

e retirei as linhas do arquivo MusicasController.java

Collection artistas = artistasDAO.listar(request.getParameter("letra"));   
request.setAttribute("artistas", artistas);

Esta funcionando perfeito agora…

Criado 5 de maio de 2008
Ultima resposta 7 de mai. de 2008
Respostas 2
Participantes 1