Boa noite Galera,
Estou utilizando a apostila FJ21 da Caelum pra estudo e não consegui verificar onde estou errando no exercício 9.7 da mesma.
Segue abaixo, o código e erro apresentado. Alguém pode me ajudar com o erro?
Desde já agradeço a todos!
Interface Logica:
package br.com.caelum.agenda.mvc.logica;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Logica {
void executa(HttpServletRequest req, HttpServletResponse res) throws Exception;
}
Classe PrimeiraLogica
package br.com.caelum.agenda.mvc.logica;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PrimeiraLogica {
public void executa(HttpServletRequest req, HttpServletResponse res) throws Exception {
System.out.println("Executando a logica e redirecionando...");
RequestDispatcher rd = req.getRequestDispatcher("primeira-logica.jsp");
rd.forward(req, res);
}
}
Classe Controller Servlet:
package br.com.caelum.agenda.mvc.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.caelum.agenda.mvc.logica.Logica;
public class ControllerServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String parametro = request.getParameter("logica");
String nomeDaClasse = "br.com.caelum.agenda.mvc.logica." + parametro;
try {
Class classe = Class.forName(nomeDaClasse);
Logica logica = (Logica) classe.newInstance();
logica.executa(request, response);
} catch (Exception e) {
throw new ServletException("A lógica de negócio causou uma exceção", e);
}
}
}
Erro Console:
Ago 28, 2012 12:48:31 AM org.apache.catalina.core.AprLifecycleListener init
Informações: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.7.0_05/jre/lib/amd64/server:/usr/java/jdk1.7.0_05/jre/lib/amd64:/usr/java/jdk1.7.0_05/jre/…/lib/amd64:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk-amd64/jre/…/lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Ago 28, 2012 12:48:31 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
Advertência: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:fj21-agenda’ did not find a matching property.
Ago 28, 2012 12:48:31 AM org.apache.coyote.AbstractProtocol init
Informações: Initializing ProtocolHandler [“http-bio-8080”]
Ago 28, 2012 12:48:31 AM org.apache.coyote.AbstractProtocol init
Informações: Initializing ProtocolHandler [“ajp-bio-8009”]
Ago 28, 2012 12:48:31 AM org.apache.catalina.startup.Catalina load
Informações: Initialization processed in 694 ms
Ago 28, 2012 12:48:31 AM org.apache.catalina.core.StandardService startInternal
Informações: Starting service Catalina
Ago 28, 2012 12:48:31 AM org.apache.catalina.core.StandardEngine startInternal
Informações: Starting Servlet Engine: Apache Tomcat/7.0.29
Ago 28, 2012 12:48:32 AM org.apache.coyote.AbstractProtocol start
Informações: Starting ProtocolHandler [“http-bio-8080”]
Ago 28, 2012 12:48:32 AM org.apache.coyote.AbstractProtocol start
Informações: Starting ProtocolHandler [“ajp-bio-8009”]
Ago 28, 2012 12:48:32 AM org.apache.catalina.startup.Catalina start
Informações: Server startup in 935 ms
Ago 28, 2012 12:49:03 AM 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ócio causou uma exceção] with root cause
java.lang.ClassCastException: br.com.caelum.agenda.mvc.logica.PrimeiraLogica cannot be cast to br.com.caelum.agenda.mvc.logica.Logica
at br.com.caelum.agenda.mvc.servlet.ControllerServlet.service(ControllerServlet.java:21)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)