Olá amigos.
Fiz uma aplicação simples usando jsp e servlets.
Uso mais de um servlet.
Apenas em 3 está dando um erro que não consigo identificar.
o erro:
javax.servlet.ServletException: Error instantiating servlet class br.com.institutoviverecrescer.LoginServlet
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Unknown Source)
root cause
java.lang.IllegalAccessException: Class org.apache.catalina.core.StandardWrapper can not access a member of class br.com.institutoviverecrescer.LoginServlet with modifiers “”
sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
java.lang.Class.newInstance0(Unknown Source)
java.lang.Class.newInstance(Unknown Source)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Unknown Source)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
Aparentenmente o codigo dos servlets está funcionando.
No arquivo xml tem mapeado todos os servlets.
Sera o tomcat?
Alguem ai ja teve um problema assim?
Oi,
Segundo essa linha
A sua página JSP não está conseguindo acessar uma variável da Servelt porque ela pode estar declarada como private provavelmente
Você pode colocar o código da jsp e também da Servlet aqui para gente ver? Coloque entre as tags [ code ] [ /code ]
Abs
Um dos servlets que euando acesso da o erro. Ta muito simples tudo. Vejam:
Formulario simples no jsp:
<form name="FrmLogin" method="post" action = "LoginServlet">
<p>Usuário:<input type="text" name="login" size="15" style="height: 20px; width: 224px"/></p>
<p>Senha:<input type="password" name="senha" size="15" style="height: 20px; width: 224px"/>
<p><input type="submit" value = "Entrar"/></p>
</form>
</div>
package br.com.institutoviverecrescer;
import java.io.IOException;
import java.util.Vector;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
class LoginServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doService(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doService(request,response);
}
private void doService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dispatcher = request.getRequestDispatcher("Painel.jsp");
RequestDispatcher dispatcher1 = request.getRequestDispatcher("Cadastrar.jsp");
String login = (String)request.getParameter("login");
String senha =(String) request.getParameter("senha");
Banco b = new Banco();
Vector <Voluntario>v = b.pegarConsulta();
if(senha.equals("instituto") && login.equals("tatiane")){
request.setAttribute("busca",v);
dispatcher.forward(request, response);
}else{
request.setAttribute("erro", "Usuário ou senha incorretos.");
dispatcher1.forward(request, response);
}
}
}
Como esse tem mais 2 Servlets que estão dando o mesmo erro. E 3 que estão fincionando normalmente. Todos simplse e muito parecidos. É como se o Tomcat não tivesse achando eles.
Galera, deu certo. estava faltando um Piblic nos servlets.
Valeu
Opa,
Desculpe a demora, que bom que funcionou, então, eu acho mais fácil você declarar apenas o método service, e neste caso ele também pode ser protected… (já ouvi muita gente dizendo que isso é considerado uma boa prática, já que ai você delega ao container controlar o protocolo http, ou seja, ele sabe se a requisição veio de um GET, ou POST, etc…)
Abs