Java Mailing List Archive

http://www.junlu.com/

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

Spring AOP X-work Error

thomas_ramapuram

2007-02-14

Replies:


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)

--
Sent from the Struts - User mailing list archive at Nabble.com.


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

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