Olá a todos,
já tentei de todas as formas colocar um Servlet pra rodar como RMI Cliente e não consegui. Tenho um projeto de cadastro de alunos via Web e ao clicar em cadastrar um aluno novo o Tomcat me retorna o seguinte erro:
exception
javax.servlet.ServletException: Class ClienteAlunosCadastro is not a Servlet
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:306)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:322)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1732)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:662)
root cause
java.lang.ClassCastException: ClienteAlunosCadastro cannot be cast to javax.servlet.Servlet
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:306)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:322)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1732)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:662)
A minha classe ClienteAlunosCadastro é a seguinte:
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import javax.servlet.;
import javax.servlet.http.;
import java.io.*;
import java.rmi.Naming;
public class ClienteAlunosCadastro{
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException, MalformedURLException, RemoteException, NotBoundException {
ComunicadorAlunos chat = (ComunicadorAlunos) Naming.lookup("//localhost/ChatService");
String matricula = req.getParameter("matricula");
String aluno = req.getParameter("aluno");
String nota1 = req.getParameter("not1");
String nota2 = req.getParameter("not2");
String frequencia = req.getParameter("freq");
Aluno alun = new Aluno(matricula, aluno, nota1, nota2, frequencia);
chat.adicionaAluno(alun);
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Hello World Sample Servlet</TITLE>");
out.println("</HEAD>");
out.println("<BODY TEXT=#ffffff BACKGROUND=Vitruviano.jpg>");
out.println("<LEFT><H4>Aluno: " + aluno + "<br>Matricula: " + matricula + "<br>Nota1: " + nota1 + "<br>Nota2: " + nota2 + "<br>Frequencia: " + frequencia + "<br><br>Aluno Cadastrado com Sucesso!</H4></LEFT>");
out.println("<A HREF=http://localhost:8080/examples/ClienteAlunosCadastro.html>Voltar</A>");
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
}
A classe acima pega os parâmetros da Web e adiciona um novo aluno na Lista de Alunos que eu criei.
O método adiciona aluno está da seguinte forma no Serviço remoto do servidor:
public void adicionaAluno(Aluno alun) throws RemoteException {
listaAlunos.add(alun);
}
Toda a interface está configurada corretamente e o servidor também(acredito eu)…Fiz uma lista de Objetos Aluno com certos atributos como Matrícula, Nota, Frequencia e Média. Preciso de alguma luz…Att.
Geyson Santana