Dies ist der Teil der Beispiel-Feder-Kontextdatei. Ich versuche, einen Transaktionshinweis für SampClass
zu erstellen, um auf der Speichermethode auszuführen.Spring Transaction - Proxy Verwirrung
Also von meinem Verständnis sollte es einen Proxy für SampClass
nur erstellen.
Ich habe einen SearchDispatchRpcGwtServlet
, die als Argument, die ein Webservice Kunde nimmt auch an sich schon ein Proxy ist. Diese Bean wird auch aus irgendeinem Grund proxied, wo es fehlschlägt, weil es keinen Proxy eines Proxys erstellen kann.
Ich muss hinzufügen, dass SearchDispatchRpcGwtServlet
eine Instanz von SampClass
erstellt und die Speichermethode aufruft.
Ich erhalte die folgende Ausnahme:
java.lang.IllegalArgumentException: Kann nicht final class Klasse Unterklasse $ Proxy118 bei net.sf.cglib.proxy.Enhancer.generateClass (Enhancer .java-: 446) um net.sf.cglib.transform.TransformingClassGenerator. generateClass (TransformingClassGenerator.java:33)
Ich verstehe nicht, warum SearchDispatchRpcGwtServlet
Proxy erstellt bekommen. Kann jemand das erklären?
Addition Stack Trace
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)
Können wir mehr vom Stack-Trace sehen? Was du uns gegeben hast, ist nicht wirklich genug. – skaffman
Ich werde das Problem genauer erklären. Ich habe eine aop pointcut definiert für Bean A. habe ich Bean B definiert nach Bean A in der Kontext-Datei. Von was ich mir nur vorstellen Bean Ein Proxy sollte erstellt werden. In diesem Fall wird aber auch der Bean-B-Proxy erstellt, der als Argument einen Webserver-Client-Proxy enthält. Ist das ein gültiges Verhalten? Kann ich etwas tun, um dies zu vermeiden? Meaning aop, das nur die spezifizierte Bean proxy darf. – nagl
Ich habe den Stack-Trace hinzugefügt – nagl