Apostila fj21

Boa noite, estou no capitulo de Filtros da apostila, fiz todos os passos, que condiz no exercicio, mas mesmo assim continua dando erro,
alguem poderia me ajudar e dizer qual seria o problema?

segue abaixo meus códigos:

A classe altera contato lógica:

[code]package br.com.caelum.mvc.logica;

import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

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

import br.com.caelum.jdbc.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;

public class AlteraContatoLogica implements Logica{

@Override
public void executa(HttpServletRequest req, HttpServletResponse res)
		throws Exception {
	Contato contato = new Contato();
	Long id = Long.parseLong(req.getParameter("id"));
	contato.setId((id));
	contato.setNome(req.getParameter("nome"));
	contato.setEndereco(req.getParameter("endereco"));
	contato.setEmail(req.getParameter("email"));
	
	//Converte a data de String para Calendar
	String dataEmTexto = req.getParameter("dataNascimento");
	Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
	Calendar dataNascimento = Calendar.getInstance();
	dataNascimento.setTime(date);
	
	contato.setDataNascimento(dataNascimento);
	
	Connection connection = (Connection) req.getAttribute("conexao");
	ContatoDAO dao = new ContatoDAO(connection);//passando a conexao para o construtor do DAO
	dao.altera(contato);
	RequestDispatcher rd = req.getRequestDispatcher("/lista-contatos-elegante.jsp");
	rd.forward(req, res);
	System.out.println("Alterando contato ..." + contato.getNome());
	
}

}
[/code]

O método construto na classe DAO:

[code]public class ContatoDAO {
private Connection con;

public ContatoDAO(Connection connection) {
	this.con = connection;
}

[/code]

E o filtro:

[code]package br.com.caelum.agenda.filtro;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import br.com.caelum.jdbc.ConnectionFactory;

public class FiltroConexao implements Filter {

@Override
public void destroy() {
	// TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest request, ServletResponse response,
		FilterChain chain) throws IOException, ServletException {
	try {
		Connection connection = new ConnectionFactory().getConnection();
		
		request.setAttribute("conexao",connection);
		
		chain.doFilter(request, response);
		
		connection.close();
	} catch (SQLException e) {
		throw new ServletException(e);
	}

}

@Override
public void init(FilterConfig arg0) throws ServletException {
	// TODO Auto-generated method stub

}

}
[/code]

Estou empacado aqui, o erro que se segue é o seguinte:

10/10/2011 19:24:39 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet [controlador] in context with path [/fj21-agenda] threw exception [A lógica de negócios causou uma exceção] with root cause java.lang.NoSuchMethodError: br.com.caelum.jdbc.ContatoDAO: method <init>()V not found at org.apache.jsp.lista_002dcontatos_002delegante_jsp._jspService(lista_002dcontatos_002delegante_jsp.java:95) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329) at br.com.caelum.mvc.logica.AlteraContatoLogica.executa(AlteraContatoLogica.java:39) at br.com.caelum.mvc.servlet.ControllerServlet.service(ControllerServlet.java:26) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at br.com.caelum.agenda.filtro.FiltroConexao.doFilter(FiltroConexao.java:32) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

Se alguem puder ajudar agradeço desde ja!

Up Up
Alguem?? refiz tudo do 0 e ainda continua com o mesmo erro…

Olá, bom dia!
Estou fazendo essa mesma apostila… e estou com o mesmo problema!
Vc conseguiu solucioná-lo?

Seguindo a apostila, o que ocorre é que a rotina que altera contatos faz uso do ContatoDAO com argumento, enquanto a rotina que lista contatos utiliza o ContatoDAO sem argumentos. Deve-se criar o construtor com argumentos public ContatoDAO(Connection connection), como sugerido no exercício, sem apagar o construtor sem argumentos ContatoDAO(). Ficaria como abaixo:

[code]
//package e imports
public class ContatoDAO {

//Construtor com argumentos
private Connection connection;
public ContatoDAO(Connection connection) {
this.connection = connection;
System.out.println(“Utilizando construtor com argumentos…”);
}

//Construtor sem argumentos
public ContatoDAO() {
this.connection = new ConnectionFactory().getConnection();
System.out.println(“Utilizando construtor sem argumentos…”);
}

//Métodos do DAO

}[/code]

Outra opção - e a mais correta, acredito eu - seria configurar a rotina que lista os contatos a utilizar o construtor com argumentos. Ainda assim, talvez seja interessante não apagar o construtor sem argumentos. Como estamos declarando um construtor com argumentos, então não será fornecido o construtor default pelo JVM.

Alguém conseguiu resolver isso? Estou com a mesma dificuldade.

Me deparei com o mesmo problema em questão, segui o conselho Paulos 711
e funcionou.

Muito Obrigado.

Também tive o mesmo problema, de fato apenas adicionar um novo construtor resolve em parte o problema. No entanto a alteração foi feita para desacoplar a conexão do dao, mas pelo que eu entendi no lista-contatos-elegante.jsp um dao é criado com o construtor antigo e a conexão com o bd aparentemente não é fechada, ou seja voltamos ao problema inicial. Não sei como resolver este problema, se alguém souber de uma solução melhor ou explicar se a conexão é fechada automaticamente eventualmente ficaria grato

Pessoal,

Estou enfrentando problema parecido no exercício 11.12 da Apostila fj21 da Caelum. Como baixei a apostila, tive que conseguir os .jar pesquisando na WEB.

Quando vou acessar a url http://localhost:8080/tarefa/adicionaTarefa é exibida a seguinte mensagem:

HTTP Status 500 - Servlet.init() for servlet springmvc threw exception

type Exception report

message Servlet.init() for servlet springmvc threw exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	java.lang.Thread.run(Thread.java:724)
root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.engine.ConfigurationImpl
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1507)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
	org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:299)
	org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:295)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:665)
	org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
	org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
	org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:606)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672)
	org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:525)
	org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:466)
	org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
	javax.servlet.GenericServlet.init(GenericServlet.java:212)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	java.lang.Thread.run(Thread.java:724)
root cause

java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.engine.ConfigurationImpl
	org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:43)
	javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276)
	org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:219)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1566)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1503)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
	org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:299)
	org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:295)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:665)
	org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
	org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
	org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:606)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672)
	org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:525)
	org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:466)
	org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
	javax.servlet.GenericServlet.init(GenericServlet.java:212)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	java.lang.Thread.run(Thread.java:724)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.37 logs.

Percebi que esse erro ocorre após adicionar ao classpath do projeto as libs validation-api-1.1.0.Final.jar e hibernate-validator-4.1.0.Final.jar

Já tentei várias soluções, mas não consegui obter sucesso. Então decide solicitar ajuda aqui no forum.

Libs:

AgendaDao.jar
commons-logging-1.1.3.jar
hibernate-validator-4.1.0.Final.jar
jstl.rar
log4j-1.2.17.jar
mysql-connector-java-5.1.26-bin.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar
spring-aop-4.0.0.M3.jar
spring-aspects-4.0.0.M3.jar
spring-beans-4.0.0.M3.jar
spring-context-4.0.0.M3.jar
spring-core-4.0.0.M3.jar
spring-expression-4.0.0.M3.jar
spring-jdbc-4.0.0.M3.jar
spring-web-4.0.0.M3.jar
spring-webmvc-4.0.0.M3.jar
validation-api-1.1.0.Final.jar

[quote=mauriicio]Pessoal,

Estou enfrentando problema parecido no exercício 11.12 da Apostila fj21 da Caelum. Como baixei a apostila, tive que conseguir os .jar pesquisando na WEB.

Quando vou acessar a url http://localhost:8080/tarefa/adicionaTarefa é exibida a seguinte mensagem:

[/quote]

Bom dia mauriicio

Você conseguiu resolver este problema?
se sim poderia informar como?

estou com o mesmo problema, pensei ser configuração no spring-context.xml, já fiz várias tentativas sem sucesso.

obrigado.