as previously mentioned MethodInterceptor != LoggingInterceptor Martin Gainty ______________________________________________ Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen. Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité pour le contenu fourni.
> Date: Tue, 18 Aug 2009 07:16:33 -0700 > From: mailtolouis2020-str...@yahoo.com > Subject: Re: LoggingInterceptor > To: user@struts.apache.org > > Thanks Wes, I'm looking into it now. > > > > ________________________________ > From: Wes Wannemacher <w...@wantii.com> > To: Struts Users Mailing List <user@struts.apache.org> > Sent: Tuesday, August 18, 2009 2:28:15 PM > Subject: Re: LoggingInterceptor > > If you're using AOP, you'll need to tell spring to proxy classes using > CGLIB rather than dynamic JDK proxies... To do so, you'll have to add > the cglib jars to your project and add the following to your > applicationContext.xml -> > > <aop:config proxy-target-class="true" /> > > -Wes > > On Tue, Aug 18, 2009 at 6:14 AM, <mailtolouis2020-str...@yahoo.com> wrote: > > Ya, I'm tring Spring AOP as well, and facing some problem. > > > > If I AOP action class, some action when I run, I got this error, but some > > is running fine: > > > > Struts has detected an unhandled exception: > > # Messages: $Proxy18.input1() > > File: java/lang/Class.java > > Line number: 1,605 > > Stacktraces > > java.lang.NoSuchMethodException: $Proxy18.input1() > > > > java.lang.Class.getMethod(Class.java:1605) > > > > org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75) > > > > org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47) > > > > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) > > > > com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) > > > > com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) > > > > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) > > > > com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) > > > > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) > > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > java.lang.reflect.Method.invoke(Method.java:597) > > > > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) > > > > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) > > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) > > > > com.iss.sandbox.louis.common.utils.LogInterceptor.invoke(LogInterceptor.java:67) > > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) > > > > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) > > $Proxy17.intercept(Unknown Source) > > > > > > > > Not sure what happen, but if I AOP service & dao classes, thats fine, but > > it print the interface name instead of the actual implement class name. > > Here is part of my spring conf: > > > > > > > > <bean > > class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> > > <property name="beanNames"> > > <list> > > <value>*Action*</value> > > <value>*Service*</value> > > <value>*DAO*</value> > > </list> > > </property> > > <property name="interceptorNames"> > > <list> > > <value>logInterceptor</value> > > </list> > > </property> > > </bean> > > > > And the LogInterceptor.java: > > public class LogInterceptor implements MethodInterceptor { > > > > private static Log logger = LogFactory.getLog(LogInterceptor.class); > > > > /* > > * (non-Javadoc) > > * > > * @see > > * > > org.aopalliance.intercept.MethodInterceptor#invoke(org.aopalliance.intercept > > * .MethodInvocation) > > */ > > @Override > > public Object invoke(MethodInvocation methodInvocation) throws Throwable { > > if (logger.isDebugEnabled()) { > > logger.debug("Beginning method: " > > + methodInvocation.getMethod().getClass() + "::" > > + methodInvocation.getMethod().getName()); > > } > > try { > > Object returnValue = methodInvocation.proceed(); > > return returnValue; > > } finally { > > if (logger.isDebugEnabled()) { > > logger.debug("Finish execute " > > + methodInvocation.getMethod().getDeclaringClass() > > + "::" + methodInvocation.getMethod().getName()); > > } > > } > > } > > > > } > > > > > > Print out: > > > > 2009-08-18 11:11:00,296 DEBUG louis.common.utils.LogInterceptor.invoke:62 - > > Beginning method: class java.lang.reflect.Method::execute > > 2009-08-18 11:11:00,312 DEBUG louis.common.utils.LogInterceptor.invoke:71 - > > Finish execute interface com.opensymphony.xwork2.Action::execute > > > > > > > > > > ________________________________ > > From: Dave Newton <newton.d...@yahoo.com> > > To: Struts Users Mailing List <user@struts.apache.org> > > Sent: Monday, August 17, 2009 6:01:30 PM > > Subject: Re: LoggingInterceptor > > > > mailtolouis2020-str...@yahoo.com wrote: > >> We use to have this log statement in most of the method begin and end > >> in Struts1, now working with S2+Spring, both are provide logging > >> interceptor, so I wonder this can help me to reduce coding in new > >> project. > > > > No; the logging interceptor does exactly what it says it does. > > > > General declarative entry/exit logging should be handled via AOP, for > > example using Spring. > > > > Dave > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > > For additional commands, e-mail: user-h...@struts.apache.org > > > > -- > Wes Wannemacher > > Head Engineer, WanTii, Inc. > Need Training? Struts, Spring, Maven, Tomcat... > Ask me for a quote! > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org _________________________________________________________________ With Windows Live, you can organize, edit, and share your photos. http://www.windowslive.com/Desktop/PhotoGallery