Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-5955

Old version of cglib 2.0 creates problems with Java 2 security in WebSphere 5.1

      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

      {null code URL}

      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>)

            [CONFSERVER-5955] Old version of cglib 2.0 creates problems with Java 2 security in WebSphere 5.1

            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)

            Amitee Goulton added a comment - 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)

              Unassigned Unassigned
              christopher.owen@atlassian.com Christopher Owen [Atlassian]
              Affected customers:
              1 This affects my team
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: