Problema com exercicio 2 - 6.4 pag89. FJ21

Bom dia.

Estou enfrentando um problema em relação ao exercício 2 - Capitulo 6.4 - JavaServer Pages da apostila FJ21.

O exercicio solicita que eu formate uma ‘Data de Nascimento’ para que ela apareça no Scriplet como SimpleDateFormat("dd/MM/yyyy).

Na classe Data Acess Object no metodo getLista(), alterei de forma que a ‘Data de Nascimento’ seja capturada em uma String, fiz a conversão para SimpleDateFormat, instanciei uma variavel do tipo Calendar e passei como parametro a ‘Data de Nascimento’ já formatada no metodo setDataNascimento() do JavaBean.

Nas classes utilizadas e no JSP o Eclipse não acusa nenhum erro. Porém quando acesso o JSP no navegador, retorna a exception que declarei no web.xml.

Metodo dentro do Dao para capturar os dados do banco e retornar numa lista:

public List<Contato> getLista() throws ParseException {
	try {
		List<Contato> contatos = new ArrayList<Contato>();
		PreparedStatement stmt = this.connection.prepareStatement(
				"SELECT * FROM contatos");
		ResultSet rs = stmt.executeQuery();
		
		while(rs.next()) {
			Contato contato = new Contato();
			contato.setId(rs.getLong("id"));	
			contato.setNome(rs.getString("nome"));
			contato.setEndereco(rs.getString("Endereco"));
			contato.setEmail(rs.getString("email"));
			String pegaData = rs.getString("dataNascimento");
			
			Calendar dataNascimento = null;
			java.util.Date data = new SimpleDateFormat("dd/MM/yyyy")
					.parse(pegaData);
			
			dataNascimento = Calendar.getInstance();
			dataNascimento.setTime(data);
			
			contato.setDataNascimento(dataNascimento);
			
			contatos.add(contato);
		}
		
		rs.close();
		stmt.close();
		return contatos;
		} 
		catch(SQLException e) {
			throw new RuntimeException(e);
		}
}

Scriplet JSP

<%@ page import=“java.util.,
br.com.caelum.jdbc.dao.
,
br.com.caelum.jdbc.modelo.*” %>

<head>
	<meta charset="UTF-8">
</head>
<body>
	<table>
		<%
		ContatoDao dao = new ContatoDao();
		List<Contato> contatos = dao.getLista();
		
		for(Contato contato : contatos) {
		%>
			<tr>
				<td><%=contato.getNome() %></td>
				<td><%=contato.getEmail() %></td>
				<td><%=contato.getEndereco() %></td>
				<td><%=contato.getDataNascimento() %></td>
			</tr>
		<%
		}
		%>		
	</table>
</body>

Stacktrace do Tomcat

jan 13, 2017 3:47:26 AM org.apache.catalina.loader.WebappClassLoaderBase checkStateForResourceLoading
INFORMAÇÕES: Illegal access: this web application instance has been stopped already. Could not load [com.mysql.jdbc.SQLError]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [com.mysql.jdbc.SQLError]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1295)
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1283)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1148)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1109)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3321)
at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1667)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4322)
at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1348)
at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2679)
at java.lang.System$2.invokeFinalize(System.java:1270)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:98)
at java.lang.ref.Finalizer.access$100(Finalizer.java:34)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:210)

jan 13, 2017 3:47:26 AM org.apache.catalina.loader.WebappClassLoaderBase checkStateForResourceLoading
INFORMAÇÕES: Illegal access: this web application instance has been stopped already. Could not load [com.mysql.jdbc.ProfilerEventHandlerFactory]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [com.mysql.jdbc.ProfilerEventHandlerFactory]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1295)
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1283)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1148)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1109)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4346)
at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1348)
at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2679)
at java.lang.System$2.invokeFinalize(System.java:1270)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:98)
at java.lang.ref.Finalizer.access$100(Finalizer.java:34)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:210)

jan 13, 2017 3:47:26 AM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [jsp] in context with path [/fj21-agenda] threw exception [javax.servlet.ServletException: java.text.ParseException: Unparseable date: “1995-01-24”] with root cause
java.text.ParseException: Unparseable date: "1995-01-24"
at java.text.DateFormat.parse(DateFormat.java:366)
at br.com.caelum.jdbc.dao.ContatoDao.getLista(ContatoDao.java:62)
at org.apache.jsp.lista_002dcontatos_002dscriplet_jsp._jspService(lista_002dcontatos_002dscriplet_jsp.java:126)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:745)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

S.O. Ubuntu 16.10
Eclipse Neon
JDK 8
Tomcat 9

Ve se te ajuda em algo :

{ }s.

Ola Daniel_Dias. Boa tarde.
Obrigado por responder.

Eu olhei os tópicos indicados, no primeiro a data esta sendo formatada no Scriptlet, porém está de forma diferente. Tentei entender melhor o código mas me confundiu.

Eu formato a data já dentro da classe Dao para que o setter já insira ela corretamente na variavel do JavaBean. Creio que o problema esteja vindo do Scriplet na linha

<%=contato.getDataNascimento() %>

Porém, como o setter já atribui na variavel dataNascimento a data formatada, a linha acima deveria retornar a data formatada.

ve se isso resolve :
<%=contato.getDataNascimento().getTime()%>

Boa noite, Daniel_Dias. Obrigado novamente.

Também tentei com o metodo getTime() e não obtive sucesso.