Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Struts 2 »

Re: Spring AOP X-work Error

Tom Schneider

2007-02-14

Replies:

I believe this is a bug that is already fixed in trunk. Please take a
look at the xwork forum(s) if you need more details. (There a long
thread on dynamic proxy invocation over there about this issue.)
Tom

thomas_ramapuram wrote:
> Hi,
>   I was using Spring AOP along with Struts 2.0.5. The problem is that
> when I try to use AOP for logging performance in Struts I get an exception.
> The class and the xml Conf and the Exception are given below. I'm using
> Struts 2.0.5.  Actually I'm using a starter application called appfuse.
> Which has already implemented an action called UserAction.
>
> I thought i saw a similar error in the userlist
> http://www.nabble.com/forum/ViewPost.jtp?post=8800212&framed=y but I'm not
> sure if it is the same error.
>
> CLASS:
>
> package com.mycompany.service;
>
> import org.aspectj.lang.annotation.Aspect;
> import org.aspectj.lang.annotation.Around;
> import org.aspectj.lang.ProceedingJoinPoint;
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
>
> import java.util.Calendar;
>
> @Aspect
> public class AroundExample {
>   protected final Log log = LogFactory.getLog(getClass());
> @Around("execution(* org.appfuse..*.*(..))")
> public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
>
>    long startTime = Calendar.getInstance().getTimeInMillis();
>
>   Object retVal = pjp.proceed();
>
>    log.warn("Time Taken: " + (Calendar.getInstance().getTimeInMillis() -
> startTime));
>   // stop stopwatch
>   return retVal;
> }
> }
>
> applicationContext.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>     xsi:schemaLocation="http://www.springframework.org/schema/beans
>       http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
>   <bean id="myAspect" class="com.mycompany.service.AroundExample" />
> </beans>
>
> Error:
> java.lang.IllegalArgumentException: The edit() is not defined in action
> class $Proxy44
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invokeAction (DefaultActionInvocation.java:417)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly (DefaultActionInvocation.java:262)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:224)
>     at
> com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept (DefaultWorkflowInterceptor.java:213)
>     at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:88)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept (ConversionErrorInterceptor.java:123)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept (ParametersInterceptor.java:161)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept (StaticParametersInterceptor.java:105)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> org.apache.struts2.interceptor.FileUploadInterceptor.intercept (FileUploadInterceptor.java:207)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept (ModelDrivenInterceptor.java:74)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept (ChainingInterceptor.java:115)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept (I18nInterceptor.java:143)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.PrepareInterceptor.intercept (PrepareInterceptor.java:115)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept (ServletConfigInterceptor.java:170)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept (AliasInterceptor.java:123)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept (ExceptionMappingInterceptor.java:176)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
>     at
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile (UtilTimerStack.java:455)
>     at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:216)
>     at
> org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:46)
>     at
> org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:45)
>     at
> org.apache.struts2.impl.RequestContextImpl.callInContext(RequestContextImpl.java:172)
>     at
> org.apache.struts2.impl.StrutsActionProxy.execute (StrutsActionProxy.java:44)
>     at
> org.apache.struts2.dispatcher.Dispatcher.serviceAction (Dispatcher.java:507)
>     at
> org.apache.struts2.dispatcher.FilterDispatcher.doFilter (FilterDispatcher.java:421)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> com.opensymphony.module.sitemesh.filter.PageFilter.parsePage (PageFilter.java:118)
>     at
> com.opensymphony.module.sitemesh.filter.PageFilter.doFilter (PageFilter.java:52)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter (ActionContextCleanUp.java:99)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:350)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> org.displaytag.filter.ResponseOverrideFilter.doFilter (ResponseOverrideFilter.java:125)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> org.appfuse.webapp.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:56)
>     at
> org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:77)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:42)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal (OpenSessionInViewFilter.java:173)
>     at
> org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:77)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
>     at
> org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:107)
>     at
> org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:72)
>     at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
>     at
> org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
>     at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
>     at
> org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter (AnonymousProcessingFilter.java:125)
>     at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
>     at
> org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter (RememberMeProcessingFilter.java:142)
>     at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
>     at
> org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:81)
>     at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
>     at
> org.acegisecurity.ui.AbstractProcessingFilter.doFilter (AbstractProcessingFilter.java:217)
>     at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
>     at
> org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:229)
>     at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
>     at
> org.acegisecurity.util.FilterChainProxy.doFilter (FilterChainProxy.java:148)
>     at
> org.acegisecurity.util.FilterToBeanProxy.doFilter (FilterToBeanProxy.java:98)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:78)
>     at
> org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:77)
>     at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
>     at
> org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:354)
>     at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
>     at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:621)
>     at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
>     at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
>     at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
>     at org.mortbay.jetty.Server.handle (Server.java:269)
>     at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
>     at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:678)
>     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
>     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
>     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
>     at
> org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
>     at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
>
>  


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)

©2008 junlu.com - Jax Systems, LLC, U.S.A.