Uploaded image for project: 'OpenEJB'
  1. OpenEJB
  2. OPENEJB-263

Tests fail with 'java.net.MalformedURLException: no protocol: and'

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • 2.0
    • 2.0
    • build
    • None

    Description

      Some tests are failing because of a way surefire handles CLASSPATH with spaces. These entries are not normalized and RMIClassLoader barfs.

      According to http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/MarshalledObject.html, during the serialization (MarshalledObject.get) an object is annotated with information that's necessary for deserialization. Upon closer look, during debugging session, I've noticed that java.rmi.server.RMIClassLoader is provided with the value of null for codebase parameter in Maven1 while codebase is set to the entire test classpath in M2. Since it contains entires separated with spaces, any directory with spaces is divided inappropriately leading to the above exception.

      See http://svn.xbean.codehaus.org/browse/xbean/trunk/kernel/src/test/java/org/xbean/kernel/ServiceStateTest.java?r1=135&r2=160&u=-1&ignore=&k=
      See http://www.nabble.com/-M2--Failing-*one*-test-in-the-kernel-module-p3028412.html

      According to Dain's comment in the first See, a solution would be to register an RMI ClassLoader (e.g. org.xbean.rmi.RMIClassLoaderSpiImpl) which should be done at jvm startup.

      Tests run: 7, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 0.547 sec <<< FAILURE!
      testHomeInterface(org.openejb.deployment.slsb.StatelessClientContainerTest) Time elapsed: 0.015 sec <<< ERROR!
      java.net.MalformedURLException: no protocol: and
      at java.net.URL.<init>(URL.java:537)
      at java.net.URL.<init>(URL.java:434)
      at java.net.URL.<init>(URL.java:383)
      at sun.rmi.server.LoaderHandler.pathToURLs(LoaderHandler.java:747)
      at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:147)
      at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:631)
      at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:257)
      at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:200)
      at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
      at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
      at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
      at org.openejb.proxy.SerializationHandler.copyObj(SerializationHandler.java:95)
      at org.openejb.proxy.EJBMethodInterceptor.copyReturnToSourceCL(EJBMethodInterceptor.java:241)
      at org.openejb.proxy.EJBMethodInterceptor.intercept(EJBMethodInterceptor.java:154)
      at org.openejb.proxy.SessionEJBHome$$EnhancerByCGLIB$$9a416c9f.create(<generated>)
      at org.openejb.deployment.slsb.StatelessClientContainerTest.testHomeInterface(StatelessClientContainerTest.java:101)

      Attachments

        Activity

          People

            jlaskowski Jacek Laskowski
            jlaskowski Jacek Laskowski
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: