-
Bug
-
Resolution: Fixed
-
Medium
-
2.1.5
-
None
-
Websphere 5.1, IBM JDK 1.4
From a customer:
Confluence includes an old version of cglib-2.0.jar, that does not appear to be the final version, possibly a release candidate version. Upgrading to cglib-full-2.0.2.jar should fix the problem:
http://www.ibiblio.org/maven/cglib/jars/cglib-full-2.0.2.jar
The final version of cglib-2.0 makes "generated classes have the same protection domain as cglib.jar (have the same signer and code base). It can be useful if hibernate is used in app server with security manager or for Web Start applications."
http://forum.hibernate.org/viewtopic.php?p=2190363
With the old version of cglib, you will get the following error in WebSphere 5.1, even with full permissions in your policy file:
[4/19/06 9:05:51:921 CDT] 143a23d3 SecurityManag W SECJ0314W: Current Java 2 Security policy reported a potential violation of Java 2 Security Permission. Please refer to Problem Determination Guide for further information.
Permission:
accessDeclaredMembers : access denied (java.lang.RuntimePermission accessDeclaredMembers)
Code:
com.atlassian.user.impl.hibernate.DefaultHibernateGroup$$EnhancerByCGLIB$$543a4eb1 in
Stack Trace:
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java(Compiled Code))
at java.security.AccessController.checkPermission(AccessController.java(Compiled Code))
at java.lang.SecurityManager.checkPermission(SecurityManager.java(Compiled Code))
at com.ibm.ws.security.core.SecurityManager.checkPermission(SecurityManager.java(Compiled Code))
at java.lang.SecurityManager.checkMemberAccess(SecurityManager.java(Compiled Code))
at java.lang.Class.checkMemberAccess(Class.java(Compiled Code))
at java.lang.Class.getDeclaredMethods(Class.java:1240)
at net.sf.cglib.core.ReflectUtils.addAllMethods(ReflectUtils.java:341)
at net.sf.cglib.core.ReflectUtils.addAllMethods(ReflectUtils.java:344)
at net.sf.cglib.core.ReflectUtils.addAllMethods(ReflectUtils.java:344)
at net.sf.cglib.core.ReflectUtils.addAllMethods(ReflectUtils.java:344)
at net.sf.cglib.core.ReflectUtils.addAllMethods(ReflectUtils.java:344)
at net.sf.cglib.reflect.FastClassEmitter.<init>(FastClassEmitter.java:101)
at net.sf.cglib.reflect.FastClass$Generator.generateClass(FastClass.java:98)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:186)
at net.sf.cglib.reflect.FastClass$Generator.create(FastClass.java:90)
at net.sf.cglib.proxy.MethodProxy.helper(MethodProxy.java:115)
at net.sf.cglib.proxy.MethodProxy.create(MethodProxy.java:87)
at com.atlassian.user.impl.hibernate.DefaultHibernateGroup$$EnhancerByCGLIB$$543a4eb1.<clinit>(<generated>)
- is caused by
-
CONFSERVER-6595 Update CGLIB to 2.0.2
- Closed
We had problems trying to set-up a vanilla confluence instance with postgres on 2.2.8 and replacing cglib-2.0 with cglib-full-2.0.2.jar was the solution!
For reference, errors we experienced were:
Configuring the database failed. Couldn't create the database schema.
2008-11-10 13:40:19,855 ERROR [sf.hibernate.proxy.LazyInitializer] getProxyFactory CGLIB Enhancement failed
java.lang.ExceptionInInitializerError
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:597)
at net.sf.cglib.proxy.EnhancerEmitter.setThreadCallbacks(EnhancerEmitter.java:194)
at net.sf.cglib.proxy.Enhancer.createUsingReflection(Enhancer.java:345)
at net.sf.cglib.proxy.Enhancer.firstInstance(Enhancer.java:326)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:195)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:305)
at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:221)
at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:380)
at net.sf.hibernate.proxy.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:74)
at net.sf.hibernate.proxy.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:36)
at net.sf.hibernate.persister.AbstractEntityPersister.<init>(AbstractEntityPersister.java:817)
2008-11-10 14:55:51,881 ERROR [springframework.web.context.ContextLoader] initWebApplicationContext Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in class path resource [pluginSubsystemContext.xml]: Can't resolve reference to bean 'eventManager' while setting property 'eventManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eventManager' defined in class path resource [eventSubsystemContext.xml]: Can't resolve reference to bean 'transactionManager' while setting property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [applicationContext.xml]: Can't resolve reference to bean 'sessionFactory' while setting property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [databaseSubsystemContext.xml]: Initialization of bean failed; nested exception is net.sf.hibernate.HibernateException: CGLIB Enhancement failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eventManager' defined in class path resource [eventSubsystemContext.xml]: Can't resolve reference to bean 'transactionManager' while setting property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [applicationContext.xml]: Can't resolve reference to bean 'sessionFactory' while setting property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [databaseSubsystemContext.xml]: Initialization of bean failed; nested exception is net.sf.hibernate.HibernateException: CGLIB Enhancement failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [applicationContext.xml]: Can't resolve reference to bean 'sessionFactory' while setting property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [databaseSubsystemContext.xml]: Initialization of bean failed; nested exception is net.sf.hibernate.HibernateException: CGLIB Enhancement failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [databaseSubsystemContext.xml]: Initialization of bean failed; nested exception is net.sf.hibernate.HibernateException: CGLIB Enhancement failed
net.sf.hibernate.HibernateException: CGLIB Enhancement failed
at net.sf.hibernate.proxy.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:84)
at net.sf.hibernate.proxy.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:36)