
25/06/2007, 01:43
|
| | Fecha de Ingreso: junio-2007
Mensajes: 12
Antigüedad: 17 años, 7 meses Puntos: 0 | |
Re: ayuda: SecurityFilter.doFilter(SecurityFilter.java:120) Tenías razón GreenEyed estaba juntando 2 problemas... el del login y el del filter...
Ya he resuelto lo de JDBC Realm era un problema en la base de datos, ahora hace el login sin problemas, pero falla el LoginFilter al cargar el datasource.
Lanza la siguiente excepción:
2007-06-25 09:20:28 StandardWrapperValve[jsp]: Servlet.service() para servlet jsp lanzó excepción
javax.servlet.jsp.JspException: Error - tag.getAsString : component context is not defined. Check tag syntax
at org.apache.struts.taglib.tiles.GetAttributeTag.doE ndTag(GetAttributeTag.java:157)
at org.apache.jsp.Layouts.myLayout_jsp._jspx_meth_til es_getAsString_0(myLayout_jsp.java:147)
at org.apache.jsp.Layouts.myLayout_jsp._jspService(my Layout_jsp.java:74)
at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157)
at glucoweb.LoginFilter.doFilter(LoginFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157)
at org.securityfilter.filter.SecurityFilter.doFilter( SecurityFilter.java:188)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invo keInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
at org.apache.catalina.authenticator.AuthenticatorBas e.invoke(AuthenticatorBase.java:540)
at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(Cont ainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(Co yoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.processConnection(Http11Protocol.jav a:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(P oolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
El problema está en la línea 99 del filtro:
chain.doFilter(request, response);
el código del filtro es el siguiente:
package glucoweb;
import javax.naming.*;
import javax.sql.*;
import java.sql.*;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;
import org.apache.struts.* ;
public class LoginFilter implements Filter
{
private ServletContext context = null;
private DataSource dataSource = null;
protected FilterConfig filterConfig;
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
String username = null;
HttpSession session = ((HttpServletRequest)request).getSession();
//check if object userbean is present in session
if (session.getAttribute("usuario") == null)
{
//if not, get user data and load it as a session bean
username = ((HttpServletRequest)request).getRemoteUser();
User user = new User();
//CONSULTO LA BASE DE DATOS PARA PONER LOS DATOS QUE ME INTERESAN
//EN EL OBJETO USUARIO EN EL SCOPE SESSION
//Ojo!! no podemos utilizar el método getDatasource(HttpServletRequest)
//porque esto no es un Action, hay que conseguir un DataSource de otra manera.
//Globals.DATA_SOURCE_KEY : The context attribute key under which our default configured data
//source (which must implement javax.sql.DataSource) is stored, if one is configured for this module.
//al poner un datasource en struts_config.xml, el atributo keyes...
//key: Once created, the DataSource will be stored under an attribute on the application servlet context.
//This attribute holds the name to be used for the context's attribute.
//The default attribute name is specified by the Globals.DATA_SOURCE_KEY String.
context = filterConfig.getServletContext();
dataSource = (DataSource) context.getAttribute(Globals.DATA_SOURCE_KEY);
try {
user = GlucoWebData.getUser(username,dataSource);
System.err.println("LoginFilter: " + user.getUsername());
System.err.println("LoginFilter: " + user.getRole());
} catch( Exception e ) {
System.err.println("LoginFilter - Setting target to error");
}
session.setAttribute("usuario", user);
//si existe el objeto en la sesion pero sus atributos son nulos...
} else if (((User)session.getAttribute("usuario")).getUserID () == null)
{
//if not, get user data and load it as a session bean
username = ((HttpServletRequest)request).getRemoteUser();
User user = new User();
//CONSULTO LA BASE DE DATOS PARA PONER LOS DATOS QUE ME INTERESAN
//EN EL OBJETO USUARIO EN EL SCOPE SESSION
//Ojo!! no podemos utilizar el método getDatasource(HttpServletRequest)
//porque esto no es un Action, hay que conseguir un DataSource de otra manera.
//Globals.DATA_SOURCE_KEY : The context attribute key under which our default configured data
//source (which must implement javax.sql.DataSource) is stored, if one is configured for this module.
//al poner un datasource en struts_config.xml, el atributo keyes...
//key: Once created, the DataSource will be stored under an attribute on the application servlet context.
//This attribute holds the name to be used for the context's attribute.
//The default attribute name is specified by the Globals.DATA_SOURCE_KEY String.
context = filterConfig.getServletContext();
dataSource = (DataSource) context.getAttribute(Globals.DATA_SOURCE_KEY);
try {
user = GlucoWebData.getUser(username,dataSource);
System.err.println("LoginFilter: " + user.getUserID());
System.err.println("LoginFilter: " + user.getRole());
} catch( Exception e ) {
System.err.println("LoginFilter - Setting target to error");
}
session.setAttribute("usuario", user);
}
// pass the request on
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException
{
this.filterConfig = config;
}
public void destroy()
{
}
} |