struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Baroukh <mbaro...@cardiweb.com>
Subject question about interceptors and profiling
Date Thu, 01 Mar 2007 08:57:44 GMT

Hi.

I'm using a custom stack that calls use the following interceptors :
exception, alias, fileUpload, servlet-config, cardibox-bo, 
prePreparationParams, prepare, i18n, chain, checkbox, static-params, 
params, cardibox-web, conversionError, validation, workflow.

Si I just have 2 customs interceptors :
- cardibox-bo
- prePreparationParams that extends params but juste redefine 
acceptableName() to didn't fill parameters whose name contains a dot.

So, I don't have any 'timer' interceptor.

But if I run jstack on a process, I see a really big interceptor stack :

.... many lines ...
ActionInvocation.invoke() @bci=80, line=216 (Interpreted frame)
 - 
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(com.opensymphony.xwork2.ActionInvocation)

@bci=6, line=150 (Interpreted frame)
 - 
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(com.opensymphony.xwork2.ActionInvocation)

@bci=57, line=48 (Interpreted frame)
 - 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(com.opensymphony.xwork2.ActionInvocation)

@bci=10, line=86 (Interpreted frame)
 - com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling() 
@bci=15, line=219 (Interpreted frame)
 - com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling() 
@bci=1, line=218 (Interpreted frame)
 - 
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(java.lang.String, 
com.opensymphony.xwork2.util.profiling.UtilTimerStack$ProfilingBlock) 
@bci=5, line=455 (Interpreted frame)

*... same block with profiling for each interceptor ...*

 - com.opensymphony.xwork2.DefaultActionInvocation.invoke() @bci=80, 
line=216 (Interpreted frame)
 - 
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(com.opensymphony.xwork2.ActionInvocation)

@bci=1, line=176 (Interpreted frame)
 - com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling() 
@bci=15, line=219 (Interpreted frame)
 - com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling() 
@bci=1, line=218 (Interpreted frame)
 - 
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(java.lang.String, 
com.opensymphony.xwork2.util.profiling.UtilTimerStack$ProfilingBlock) 
@bci=5, line=455 (Interpreted frame)
 - com.opensymphony.xwork2.DefaultActionInvocation.invoke() @bci=80, 
line=216 (Interpreted frame)
 - org.apache.struts2.impl.StrutsActionProxy.execute() @bci=20, line=50 
(Interpreted frame)
 - 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(javax.servlet.http.HttpServletRequest,

javax.servlet.http.HttpServletResponse, javax.servlet.ServletContext, 
org.apache.struts2.dispatcher.mapper.ActionMapping) @bci=182, line=507 
(Interpreted frame)
 - 
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(javax.servlet.ServletRequest, 
javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=212, 
line=421 (Interpreted frame)
.... many lines ...


So the question is : why ??
is there an option I missed ?
I suppose this can make a performance problem.
I looked at StrutsActionProxy / DefaultActionProxy, but invocatiocontext 
is assigned with a new DefaultInvocationContext() and I don't see any 
option that could disable this ...

-- 

Mike Baroukh

---
Cardiweb  - 31 Rue de Mogador Paris IXeme
06 63 57 27 22 - 01 53 21 82 63 - Jabber: mbaroukh@jabber.org
http://www.cardiweb.com
---



Mime
View raw message