<tx:advice id="txAdvice" transaction-manager="jtaTxManager">
<tx:attributes>
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config proxy-target-class="true">
<aop:pointcut id="fooServiceOperation"
expression="execution(* x.y.SampClass.save(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceOperation" />
</aop:config>
<bean id="Samp1" class=" x.y.SampClass"></bean>
<bean id="SearchDispatchRpcGwtServlet" class="x.y.server.SearchDispatchRpcGwtServlet">
<constructor-arg>
<list>
<ref bean="webServiceClient"/>
</list>
</constructor-arg>
</bean>
<!-- Service Clients -->
<bean id="webServiceClient" class="x.y.KSBClientProxyFactoryBean">
<property name="serviceEndpointInterface" value="x.y.service.WebService" />
<property name="serviceQName" value="{http://x.y.org/wsdl/organization}WebService" />
</bean>
यह नमूना वसंत संदर्भ फ़ाइल का हिस्सा है। मैं सहेजने के तरीके पर निष्पादित करने के लिए SampClass
के लिए एक लेनदेन सलाह बनाने की कोशिश कर रहा हूं।वसंत लेनदेन - प्रॉक्सी भ्रम
तो मेरी समझ से इसे केवल SampClass
के लिए प्रॉक्सी बनाना चाहिए।
मेरे पास SearchDispatchRpcGwtServlet
है जो एक webservice क्लाइंट के तर्क के रूप में लेता है जो स्वयं में प्रॉक्सी भी है। यह बीन किसी कारण से प्रॉक्सी हो रहा है जहां यह विफल रहता है क्योंकि यह प्रॉक्सी की प्रॉक्सी नहीं बना सकता है।
मुझे यह जोड़ना होगा कि SearchDispatchRpcGwtServlet
SampClass
का एक उदाहरण बनाता है और सहेजने की विधि को कॉल करता है।
मैं निम्न अपवाद प्राप्त करें:
java.lang.IllegalArgumentException: अंतिम वर्ग वर्ग net.sf.cglib.proxy.Enhancer.generateClass (बढ़ाने जावा में $ Proxy118 उपवर्ग नहीं कर सकता: 446) net.sf.cglib.transform.TransformingClassGenerator पर। generateClass (TransformingClassGenerator.java:33)
मुझे समझ में क्यों SearchDispatchRpcGwtServlet
प्रॉक्सी बनाया जा रहा है न। क्या कोई समझा सकता है।
अलावा स्टैक ट्रेस
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class $Proxy117]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class $Proxy117
at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:213)
at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:473)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:348)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:309)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:361)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.postProcessObjectFromFactoryBean(AbstractAutowireCapableBeanFactory.java:1427)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:139)
... 85 more
Caused by: java.lang.IllegalArgumentException: Cannot subclass final class class $Proxy117
at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:446)
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:201)
क्या हम स्टैक ट्रेस के अधिक देख सकते हैं? जो आपने हमें दिया है वह वास्तव में पर्याप्त नहीं है। – skaffman
मैं इस मुद्दे को और विस्तार से समझाऊंगा। मेरे पास बीन ए के लिए परिभाषित एक एप पॉइंटकट है। मेरे पास बीन बी को संदर्भ फ़ाइल में बीन ए के बाद परिभाषित किया गया है। जो मैं कल्पना करता हूं उससे केवल बीन एक प्रॉक्सी बनाई जानी चाहिए। लेकिन इस मामले में बीन बी प्रॉक्सी भी बनाई गई है जिसमें एक वेबसाइव क्लाइंट प्रॉक्सी एक बहस के रूप में शामिल है। क्या यह एक वैध व्यवहार है। क्या मैं इससे बचने के लिए कुछ कर सकता हूं। मतलब एओपी केवल निर्दिष्ट बीन प्रॉक्सी होगा। – nagl
मैंने स्टैक ट्रेस – nagl