You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Shih Lee <sh...@gmail.com> on 2007/02/05 03:36:28 UTC

Struts 2 and Spring AOP using ProxyFactoryBean

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

-- 
View this message in context: http://www.nabble.com/Struts-2-and-Spring-AOP-using-ProxyFactoryBean-tf3172313.html#a8800212
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Struts 2 and Spring AOP using ProxyFactoryBean

Posted by Tom Schneider <sc...@gmail.com>.
This is a bug I just fixed in xwork 1.2.x and xwork 2.0.x.

See http://jira.opensymphony.com/browse/XW-465 for details.
Tom

Shih Lee wrote:
> 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
>
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Struts 2 and Spring AOP using ProxyFactoryBean

Posted by Shih Lee <sh...@gmail.com>.
Hi again,

Thanks, Tom!

Good suggestion. I have tried it but getting the following exception after
adding CGLIB to the classpath:

2007-02-05 11:35:36,476 ERROR   ContextLoader - Context initialization
failed
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'helloWorld' defined in ServletContext resource
[/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested
exception is null
org.springframework.aop.framework.adapter.UnknownAdviceTypeException: Advice
object [null] is neither a supported subinterface of
[org.aopalliance.aop.Advice] nor an [org.springframework.aop.Advisor]
	at
org.springframework.aop.framework.adapter.DefaultAdvisorAdapterRegistry.getInterceptors(DefaultAdvisorAdapterRegistry.java:81)
	at
org.springframework.aop.framework.AdvisorChainFactoryUtils.calculateInterceptorsAndDynamicInterceptionAdvice(AdvisorChainFactoryUtils.java:77)
	at
org.springframework.aop.framework.HashMapCachingAdvisorChainFactory.getInterceptorsAndDynamicInterceptionAdvice(HashMapCachingAdvisorChainFactory.java:47)
	at
org.springframework.aop.framework.Cglib2AopProxy$ProxyCallbackFilter.accept(Cglib2AopProxy.java:764)
	at net.sf.cglib.proxy.Enhancer.emitMethods(Enhancer.java:884)
	at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:498)
	at
net.sf.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:33)
	at
net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
	at
net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
	at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
	at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)
	at
org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:195)
	at
org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:147)
	at
org.springframework.aop.framework.ProxyFactoryBean.getProxy(ProxyFactoryBean.java:330)
	at
org.springframework.aop.framework.ProxyFactoryBean.getSingletonInstance(ProxyFactoryBean.java:285)
	at
org.springframework.aop.framework.ProxyFactoryBean.setBeanFactory(ProxyFactoryBean.java:239)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:391)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.getType(AbstractBeanFactory.java:352)
	at
org.springframework.beans.factory.support.DefaultListableBeanFactory.isBeanTypeMatch(DefaultListableBeanFactory.java:257)
	at
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:152)
	at
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:206)
	at
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:200)
	at
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:205)
	at
org.springframework.beans.factory.support.DefaultListableBeanFactory.findMatchingBeans(DefaultListableBeanFactory.java:366)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:916)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:850)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:378)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
	at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:283)
	at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
	at
org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
	at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:252)
	at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
	at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
	at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
	at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
	at org.apache.catalina.core.StandardService.start(StandardService.java:480)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)


I haven't used "proxyTargetClass" much through CGLIB but just dynamic proxy
in the jdk (ProxyFactoryBean). I have attached the
TimeLoggingInterceptor.java class and applicationContxt.xml. The rest is the
same in struts-blank sample application.

Thanks,
Lee

http://www.nabble.com/file/6257/TimeLoggingInterceptor.java
TimeLoggingInterceptor.java 
http://www.nabble.com/file/6258/applicationContext.xml
applicationContext.xml 


Dave Newton-4 wrote:
> 
> --- Shih Lee <sh...@gmail.com> wrote:
>> [Spring AOP/S2]
> 
> Just out of curiosity, does it work if instead of
> proxying the interface you proxy the class instead,
> like so:
> 
> <bean id="helloWorld"
>      
> class="org.springframework.aop.framework.ProxyFactoryBean">
>   <property name="proxyTargetClass">
>     <value>true</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"/>
> 
> I haven't tried AOPing an Action interface yet, but I
> can successfully wrap up if I'm doing the class proxy.
> YMMV, and I believe my test was not under Spring 2
> (have not upgraded that app yet).
> 
> Dave
> 
> 
> 
>  
> ____________________________________________________________________________________
> Be a PS3 game guru.
> Get your game face on with the latest PS3 news and previews at Yahoo!
> Games.
> http://videogames.yahoo.com/platform?platform=120121
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Struts-2-and-Spring-AOP-using-ProxyFactoryBean-tf3172313.html#a8810737
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Struts 2 and Spring AOP using ProxyFactoryBean

Posted by Dave Newton <ne...@yahoo.com>.
--- Shih Lee <sh...@gmail.com> wrote:
> [Spring AOP/S2]

Just out of curiosity, does it work if instead of
proxying the interface you proxy the class instead,
like so:

<bean id="helloWorld"
     
class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="proxyTargetClass">
    <value>true</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"/>

I haven't tried AOPing an Action interface yet, but I
can successfully wrap up if I'm doing the class proxy.
YMMV, and I believe my test was not under Spring 2
(have not upgraded that app yet).

Dave



 
____________________________________________________________________________________
Be a PS3 game guru.
Get your game face on with the latest PS3 news and previews at Yahoo! Games.
http://videogames.yahoo.com/platform?platform=120121

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org