Java Mailing List Archive

http://www.junlu.com/

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

Struts 2 and Spring AOP using ProxyFactoryBean

Shih Lee

2007-02-04

Replies:


Hello,

I have downloaded struts-blank to play around. I was trying to use Spring
AOP with Struts 2. However, I am getting the following error:

2007-02-04 21:27:17,233 DEBUG AbstractBeanFactory - Bean with name
'helloWorld' is a factory bean
java.lang.IllegalArgumentException: object is not an instance of declaring
class
 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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection (AopUtils.java:287)
 at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint (ReflectiveMethodInvocation.java:181)
 at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:148)
 at advice.TimeLoggingInterceptor.invoke(TimeLoggingInterceptor.java:31)
 at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:170)
 at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:176)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction (DefaultActionInvocation.java:354)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly (DefaultActionInvocation.java:228)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:202)
 at
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept (DefaultWorkflowInterceptor.java:177)
 at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept (ValidationInterceptor.java:115)
 at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept (ConversionErrorInterceptor.java:123)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept (ParametersInterceptor.java:147)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept (StaticParametersInterceptor.java:105)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
org.apache.struts2.interceptor.CheckboxInterceptor.intercept (CheckboxInterceptor.java:80)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
org.apache.struts2.interceptor.FileUploadInterceptor.intercept (FileUploadInterceptor.java:204)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept (ModelDrivenInterceptor.java:74)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept (ScopedModelDrivenInterceptor.java:120)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept (ProfilingActivationInterceptor.java:59)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept (DebuggingInterceptor.java:174)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept (ChainingInterceptor.java:115)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept (I18nInterceptor.java:143)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.PrepareInterceptor.intercept (PrepareInterceptor.java:115)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept (ServletConfigInterceptor.java:156)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept (AliasInterceptor.java:124)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept (ExceptionMappingInterceptor.java:180)
 at
com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation.java:200)
 at
org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:27)
 at
org.apache.struts2.impl.StrutsActionProxy$1.call(StrutsActionProxy.java:26)
 at
org.apache.struts2.impl.RequestContextImpl.callInContext(RequestContextImpl.java:152)
 at
org.apache.struts2.impl.StrutsActionProxy.execute (StrutsActionProxy.java:25)
 at
org.apache.struts2.dispatcher.Dispatcher.serviceAction (Dispatcher.java:330)
 at
org.apache.struts2.dispatcher.FilterDispatcher.doFilter (FilterDispatcher.java:256)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:186)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:157)
 at
org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:214)
 at
org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104)
 at
org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520)
 at
org.apache.catalina.core.StandardContextValve.invokeInternal (StandardContextValve.java:198)
 at
org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:152)
 at
org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104)
 at
org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520)
 at
org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:137)
 at
org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104)
 at
org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:118)
 at
org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:102)
 at
org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520)
 at
org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109)
 at
org.apache.catalina.core.StandardValveContext.invokeNext (StandardValveContext.java:104)
 at
org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:520)
 at org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java:929)
 at org.apache.coyote.tomcat5.CoyoteAdapter.service (CoyoteAdapter.java:160)
 at
org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:799)
 at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
 at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
 at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
 at java.lang.Thread.run (Thread.java:595)

Here is my example.xml:

<struts>

  <package name="example" namespace="/example" extends="struts-default">

    <action name="helloWorld" class="helloWorld">
       <result>/example/HelloWorld.jsp</result>
    </action>

</struts>

Here is my applicationContext.xml:

<beans default-autowire="autodetect">

 <!-- =============================== Interceptors
================================= -->
 <bean id="timeLoggingAdvice" class="advice.TimeLoggingInterceptor"/>
 
 <!-- =============================== Advisor
====================================== -->
 <bean id="timeLoggingAdvisor"
class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
   <property name="mappedNames">
     <list>
     <value>execute</value>  
     </list>
    </property>
   <property name="advice">
     <ref bean="timeLoggingAdvice"/>
   </property>
 </bean>
 
 <!-- ============================== Spring Beans
================================= -->
 <bean id="helloWorld"
class="org.springframework.aop.framework.ProxyFactoryBean">
   <property name="proxyInterfaces">
     <value>example.IHelloWorld</value>
   </property>
   <property name="interceptorNames">
     <list>
       <value>timeLoggingAdvisor</value>
     </list>
   </property>
   <property name="target">
     <ref local="helloWorldTarget"/>
   </property>
 </bean>

  <bean id="helloWorldTarget" class="example.HelloWorld"/>

 <!--<bean id="helloWorld" class="example.HelloWorld"
singleton="false"/>-->
   
</beans>

Any help is greatly appreciated!

Thanks,
Lee

--
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.