-
Bug
-
Resolution: Won't Fix
-
Medium
-
None
-
2.3, 2.5
-
None
The error below is thrown when you try to load a plugin containing a component wrapped into a spring transaction proxy via the web-ui.
The classloader used to load the TransactionProxyFactoryBean doesn't know about the EvaluationManager which will be loaded via the plugin classloader. Therefore the exception will be thrown.
2006-11-14 12:40:58,602 ERROR [com.atlassian.plugin.DefaultPluginManager] addPlugin There was an error loading the descriptor 'Transactionised Evaluation Service' of plugin 'com.atlassian.confluence.extra.evaluation'. Disabling.
com.atlassian.spring.container.ComponentNotFoundException: Failed to find component: Error creating bean with name 'evaluationManager' defined in class path resource [x]: Error setting property values; nested exception is org.springframework.beans.PropertyAccessExceptionsException: PropertyAccessExceptionsException (1 errors); nested propertyAccessExceptions are: [org.springframework.beans.MethodInvocationException: Property 'proxyInterfaces' threw exception; nested exception is java.lang.ClassNotFoundException: com.atlassian.confluence.extra.evaluation.EvaluationManager]
at com.atlassian.spring.container.SpringContainerContext.getComponent(SpringContainerContext.java:106)
at com.atlassian.spring.container.ContainerManager.getComponent(ContainerManager.java:32)
at com.atlassian.confluence.plugin.descriptor.SpringComponentModuleDescriptor.enabled(SpringComponentModuleDescriptor.java:117)
at com.atlassian.plugin.DefaultPluginManager.addPlugin(DefaultPluginManager.java:274)
at com.atlassian.plugin.DefaultPluginManager.scanForNewPlugins(DefaultPluginManager.java:137)
at com.atlassian.plugin.DefaultPluginManager.installPlugin(DefaultPluginManager.java:101)
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:284)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
at $Proxy3.installPlugin(Unknown Source)
- is duplicated by
-
CONFSERVER-10786 Spring component plugins with transaction proxies can not be installed via web UI
-
- Closed
-
- is related to
-
CONFSERVER-13008 Dynamic plugin with SOAP module throws java.lang.ClassNotFoundException
-
- Gathering Impact
-
- relates to
-
CONFSERVER-13343 TransactionManager not injected into a servlet module in a v2 plugin
-
- Closed
-
The Spring plugin module type is deprecated and has been replaced by including a Spring configuration file in your plugin, as documented here:
The recommended way of creating a transaction or participating in an existing application transaction is to use the SAL TransactionTemplate interface programmatically. This avoids any compatibility problems with different versions of Spring or transaction semantics in different applications.
It has been this way for at least a few releases now, probably since Confluence 3.0. Sorry for not closing this off sooner.