urubatan 7 de jul. de 2005
só pra constar, o que estiver no ThreadLocal ja desaparece sozinho no final do request
mas ach oque se tu colocar a classe do teu filtro em algum pacote deve resolver
e se isto não resolver, passa a stack trace do erro que da dando pra gente que facilita bastante
vmorikawa 7 de jul. de 2005
Oi Rodrigo…obrigado pela força… aparece no explorer:
HTTP Status 404 - /projeto-teste/sistemaTeste.do
type Status report
message /projeto-teste/sistemaTeste.do
description The requested resource (/projeto-teste/sistemaTeste.do) is not available.
Apache Tomcat/5.5.8
e no log do tomcat
07/07/2005 17:11:24 org.apache.catalina.core.StandardContext start
SEVERE: Error filterStart
Se não ajudar…vou pesquisar mais…Obrigado mais uma vez…
urubatan 7 de jul. de 2005
onde esta o stacktrace do erro?
vmorikawa 8 de jul. de 2005
SEVERE : Error loading WebappClassLoader
delegate : false
repositories :
/ WEB - INF / classes /
----------> Parent Classloader :
org . apache . catalina . loader . StandardClassLoader @2200 d5
org . apache . struts . action . ActionServlet
java . lang . ClassNotFoundException : org . apache . struts . action . ActionServlet
at org . apache . catalina . loader . WebappClassLoader . loadClass ( WebappClassLoader . java : 1332 )
at org . apache . catalina . loader . WebappClassLoader . loadClass ( WebappClassLoader . java : 1181 )
at org . apache . catalina . core . StandardWrapper . loadServlet ( StandardWrapper . java : 1027 )
at org . apache . catalina . core . StandardWrapper . load ( StandardWrapper . java : 925 )
at org . apache . catalina . core . StandardContext . loadOnStartup ( StandardContext . java : 3847 )
at org . apache . catalina . core . StandardContext . start ( StandardContext . java : 4111 )
at org . apache . catalina . core . ContainerBase . addChildInternal ( ContainerBase . java : 759 )
at org . apache . catalina . core . ContainerBase . addChild ( ContainerBase . java : 739 )
at org . apache . catalina . core . StandardHost . addChild ( StandardHost . java : 524 )
at org . apache . catalina . startup . HostConfig . deployWAR ( HostConfig . java : 812 )
at org . apache . catalina . startup . HostConfig . deployWARs ( HostConfig . java : 701 )
at org . apache . catalina . startup . HostConfig . deployApps ( HostConfig . java : 473 )
at org . apache . catalina . startup . HostConfig . start ( HostConfig . java : 1126 )
at org . apache . catalina . startup . HostConfig . lifecycleEvent ( HostConfig . java : 311 )
at org . apache . catalina . util . LifecycleSupport . fireLifecycleEvent ( LifecycleSupport . java : 119 )
at org . apache . catalina . core . ContainerBase . start ( ContainerBase . java : 1020 )
at org . apache . catalina . core . StandardHost . start ( StandardHost . java : 718 )
at org . apache . catalina . core . ContainerBase . start ( ContainerBase . java : 1012 )
at org . apache . catalina . core . StandardEngine . start ( StandardEngine . java : 442 )
at org . apache . catalina . core . StandardService . start ( StandardService . java : 450 )
at org . apache . catalina . core . StandardServer . start ( StandardServer . java : 683 )
at org . apache . catalina . startup . Catalina . start ( Catalina . java : 537 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 39 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 25 )
at java . lang . reflect . Method . invoke ( Method . java : 585 )
at org . apache . catalina . startup . Bootstrap . start ( Bootstrap . java : 271 )
at org . apache . catalina . startup . Bootstrap . main ( Bootstrap . java : 409 )
08 / 07 / 2005 10 : 53 : 47 org . apache . catalina . core . ApplicationContext log
SEVERE : Servlet / timer threw load () exception
java . lang . ClassNotFoundException : org . apache . struts . action . ActionServlet
at org . apache . catalina . loader . WebappClassLoader . loadClass ( WebappClassLoader . java : 1332 )
at org . apache . catalina . loader . WebappClassLoader . loadClass ( WebappClassLoader . java : 1181 )
at org . apache . catalina . core . StandardWrapper . loadServlet ( StandardWrapper . java : 1027 )
at org . apache . catalina . core . StandardWrapper . load ( StandardWrapper . java : 925 )
at org . apache . catalina . core . StandardContext . loadOnStartup ( StandardContext . java : 3847 )
at org . apache . catalina . core . StandardContext . start ( StandardContext . java : 4111 )
at org . apache . catalina . core . ContainerBase . addChildInternal ( ContainerBase . java : 759 )
at org . apache . catalina . core . ContainerBase . addChild ( ContainerBase . java : 739 )
at org . apache . catalina . core . StandardHost . addChild ( StandardHost . java : 524 )
at org . apache . catalina . startup . HostConfig . deployWAR ( HostConfig . java : 812 )
at org . apache . catalina . startup . HostConfig . deployWARs ( HostConfig . java : 701 )
at org . apache . catalina . startup . HostConfig . deployApps ( HostConfig . java : 473 )
at org . apache . catalina . startup . HostConfig . start ( HostConfig . java : 1126 )
at org . apache . catalina . startup . HostConfig . lifecycleEvent ( HostConfig . java : 311 )
at org . apache . catalina . util . LifecycleSupport . fireLifecycleEvent ( LifecycleSupport . java : 119 )
at org . apache . catalina . core . ContainerBase . start ( ContainerBase . java : 1020 )
at org . apache . catalina . core . StandardHost . start ( StandardHost . java : 718 )
at org . apache . catalina . core . ContainerBase . start ( ContainerBase . java : 1012 )
at org . apache . catalina . core . StandardEngine . start ( StandardEngine . java : 442 )
at org . apache . catalina . core . StandardService . start ( StandardService . java : 450 )
at org . apache . catalina . core . StandardServer . start ( StandardServer . java : 683 )
at org . apache . catalina . startup . Catalina . start ( Catalina . java : 537 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 39 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 25 )
at java . lang . reflect . Method . invoke ( Method . java : 585 )
at org . apache . catalina . startup . Bootstrap . start ( Bootstrap . java : 271 )
at org . apache . catalina . startup . Bootstrap . main ( Bootstrap . java : 409 )
0
Rafael_Steil 8 de jul. de 2005
urubatan:
só pra constar, o que estiver no ThreadLocal ja desaparece sozinho no final do request
hhmm… nao exatamente. Voce tem que setar ele para null, caso contrario os dados irao ficar em memoria. E, pior, vao ser reutilizados, devido ao pool de threads.
Rafael
apalmeira 14 de set. de 2012
Recebo um Null Pointer Exception quando tento acessar userBean.getId() na classe RevListener.
Se eu remover o UserUtil.removeUsuario() no filter o problema não ocorre. Porém, pelo que vi no post abaixo eu devo remover do contrário os dados irão ficar em memória.
Alguem pode dar um help?
Sds,
A classe contém o ThreadLocal:
public class UserUtil {
private static final ThreadLocal < Usuario > threadUsuario = new ThreadLocal < Usuario > () ;
public static ThreadLocal < Usuario > getThreadusuario () {
return threadUsuario ;
}
public static Usuario getUsuario () {
return threadUsuario .get () ;
}
public static void setUsuario ( Usuario usuario ) {
threadUsuario .set ( usuario ) ;
}
public static void removeUsuario () {
threadUsuario .remove () ;
}
}
O filter:
public class UserFilter implements Filter {
public void init ( FilterConfig filterConfig ) throws ServletException {
}
public void destroy () {
}
public void doFilter ( ServletRequest servletRequest , ServletResponse servletResponse , FilterChain filterChain ) throws IOException , ServletException {
try {
HttpServletRequest request = ( HttpServletRequest ) servletRequest ;
filterChain . doFilter ( servletRequest , servletResponse );
Usuario userBean = ( Usuario ) request . getSession (). getAttribute ( "usuario" );
UserUtil . setUsuario ( userBean );
} catch ( Exception e ) {
e . printStackTrace ();
} finally {
[ b ] UserUtil . removeUsuario (); [ /b ]
}
}
}
A classe que utiliza o usuário “capturado” pelo filter:
public class RevListener implements org . hibernate . envers . RevisionListener {
@Override
public void newRevision ( Object revisionEntity ) {
try {
EnversRevinfo rev = ( EnversRevinfo ) revisionEntity ;
Usuario userBean = UserUtil . getUsuario ();
[ b ] rev . setUser_id ( userBean . getId ()); [ /b ]
} catch ( Exception e ) {
e . printStackTrace ();
}
}
}