12 Replies Latest reply on May 17, 2006 11:08 AM by clebert.suconic

    ClassNotFoundException on Lazy Proxies on JBoss 4.0

    clebert.suconic

      I executed some tests with EJB3 on JBoss 4.0, and only used /jboss/client as my client libraries.

      I was having classNotFoundException until I added hibernate.jar and cglib.jar to my classpath.

      the first class missing was org.hibernate.proxy.pojo.cglib.SerializableProxy,

      Fixed after adding hibernate3.jar


      Second class missing then was net/sf/cglib/proxy/MethodInterceptor

      Fixed after adding cglib.jar into classpath.

      I thought we have made these proxies (the hibernate one) as part of client libraries, and we've made javassist the default proxy manager.

        • 1. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
          epbernard

          was supposed to on 4.0.4.GA
          you should see somewhere in the debug log the actual bytecode engine used

          • 2. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
            clebert.suconic

            This is CVS@JBoss4.0 updated this morning:

            2006-05-15 14:36:42,935 INFO [org.hibernate.cfg.annotations.Version] Hibernate Annotations 3.2.0.CR1
            2006-05-15 14:36:42,945 INFO [org.hibernate.cfg.Environment] Hibernate 3.2 cr2
            2006-05-15 14:36:42,945 INFO [org.hibernate.cfg.Environment] hibernate.properties not found
            2006-05-15 14:36:42,955 INFO [org.hibernate.cfg.Environment] Bytecode provider name : cglib
            2006-05-15 14:36:42,955 INFO [org.hibernate.cfg.Environment] using JDK 1.4 java.sql.Timestamp handling


            Anyway, IMO org.hibernate.proxy.pojo.cglib.SerializableProxy should be part of hibernate-client.jar.

            • 3. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
              epbernard

              I've pinged Scott, he was the masterpiece of the bytecode migration ;-)
              and will check when I get time

              • 4. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
                starksm64

                The ejb3.deployer sets up the bytecode provider to be javassist by default now. The ejb3 tests are running without cglib in the classpath.

                I just checked the code and the latest merged from Bill dropped the change I had in head and 4.0. I'll have to validate the installer/release now as the head version does include the javassit settings.

                • 5. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
                  starksm64

                  Neither of the ejb3 deployer changes I made to head were in the current 4.0 branch and the isntaller does not even run when using the command line mode of the ejb3 installGroup. The ejb3/build-test.xml is masking the cglib dependency because it has added this back into the test classpath.

                  • 6. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
                    starksm64

                    http://jira.jboss.com/jira/browse/JBAS-3220 has been fixed, and I have removed the cglib usage from the ejb3/build-test.xml to validate that the unit tests pass without it. The SerializableProxy still is not in the hibernate-client.jar, so the question is if there is a javassit analog missing.

                    • 7. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
                      epbernard

                      Yes there seems to be some missing piece, I've asked Steve to come into the loop

                      • 8. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
                        clebert.suconic

                         

                        "scott.stark@jboss.org" wrote:
                        so the question is if there is a javassit analog missing.



                        Yes, javassit proxy is also missing from hibernate-client.jar I just executed a test using the installer:

                        at $Proxy0.getAllInventories(Unknown Source)
                        at org.spec.jappserver.test.corp.CustomerTestCase.testGetCustomerInventories(CustomerTestCase.java:46)
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                        Caused by: java.lang.ClassNotFoundException: org.hibernate.proxy.pojo.javassist.SerializableProxy
                        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
                        at java.security.AccessController.doPrivileged(Native Method)
                        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
                        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
                        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
                        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
                        at org.jboss.remoting.loading.RemotingClassLoader.loadClass(RemotingClassLoader.java:50)
                        at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:139)
                        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1538)
                        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
                        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
                        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
                        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
                        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
                        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
                        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
                        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
                        at java.util.ArrayList.readObject(ArrayList.java:592)
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


                        • 9. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
                          clebert.suconic

                          I've worked with Ruel solving these dependencies, and we've included org.hibernate.proxy.pojo* and org.hibernate.property.*


                          I guess we should also remove hibernate.jar from path on ejb3 tests, and only have hibernate-client.jar

                          • 10. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
                            clebert.suconic

                            Look at build-test.xml at ejb3:

                             <junit>
                            ,........
                             <classpath>
                             <path refid="hibernate.hibernate.classpath"/>
                             <pathelement location="${build.classes}"/>
                             <pathelement location="${resources}/test"/>
                             <path refid="${client.run.classpath}"/>
                             <path refid="jboss.jbossws.classpath"/>
                             <path refid="apache.xerces.classpath"/>
                             <path refid="sun.jaf.classpath"/>
                             <path refid="sun.javamail.classpath"/>
                             <path refid="apache.httpclient.classpath"/>
                             </classpath>
                            


                            I'm removing hibernate.hibernate.classpath as client.run.classpath already defines hibernate. I only changed that on 4.0.
                            Let me know if there is any objection.

                            • 11. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
                              sebersole

                              Well the real long term solution is for the Hibernate team to take over creation of such a jar and have the "seperation" be tested as parrt of our test suite...

                              • 12. Re: ClassNotFoundException on Lazy Proxies on JBoss 4.0
                                clebert.suconic

                                 

                                "steve.ebersole@jboss.com" wrote:
                                the Hibernate team to take over creation of such a jar


                                Yes... I liked the idea. Right now hibernate-client.jar is part of ejb3 build.