Details

    • Type: Sub-task Sub-task
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.0_b73
    • Component/s: OSGi
    • Labels:
      None

      Description

      We see following exception while running ejb/mdb QL tests:

      [#|2013-02-03T18:24:28.913+0530|SEVERE|glassfish 4.0|org.glassfish.naming|_ThreadID=155;_ThreadName=p: thread-pool-1; w: 6;_TimeMillis=1359896068913;_LevelValue=1000;_MessageID=AS-NAMING-00006;|Exception in NamingManagerImpl copyMutableObject():

      {0}

      java.security.PrivilegedActionException: java.lang.ClassNotFoundException: [Lcom.sun.enterprise.connectors.authentication.ConnectorSecurityMap;
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sun.enterprise.naming.util.NamingUtilsImpl.makeCopyOfObject(NamingUtilsImpl.java:115)
      at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.rebind(LocalSerialContextProviderImpl.java:108)
      at com.sun.enterprise.naming.impl.SerialContext.rebind(SerialContext.java:675)
      at com.sun.enterprise.naming.impl.SerialContext.rebind(SerialContext.java:692)
      at javax.naming.InitialContext.rebind(InitialContext.java:431)
      at javax.naming.InitialContext.rebind(InitialContext.java:431)
      at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.publishObject(GlassfishNamingManagerImpl.java:210)
      at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.publishObject(GlassfishNamingManagerImpl.java:196)
      at org.glassfish.resourcebase.resources.naming.ResourceNamingService.publishObject(ResourceNamingService.java:157)
      at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.createConnectorConnectionPool(ConnectorConnectionPoolAdminServiceImpl.java:187)
      at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.createConnectorConnectionPool(ConnectorConnectionPoolAdminServiceImpl.java:163)
      at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.createConnectorConnectionPool(ConnectorConnectionPoolAdminServiceImpl.java:1491)
      at com.sun.enterprise.connectors.ConnectorRuntime.createConnectorConnectionPool(ConnectorRuntime.java:963)
      at com.sun.enterprise.resource.deployer.ConnectorConnectionPoolDeployer.deployResource(ConnectorConnectionPoolDeployer.java:141)
      at com.sun.enterprise.resource.deployer.ConnectorConnectionPoolDeployer.deployResource(ConnectorConnectionPoolDeployer.java:157)
      at com.sun.enterprise.connectors.service.ConnectorService.loadDeferredResources(ConnectorService.java:233)
      at com.sun.enterprise.connectors.service.ConnectorService$1.run(ConnectorService.java:153)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sun.enterprise.connectors.service.ConnectorService.loadResourcesAndItsRar(ConnectorService.java:150)
      at com.sun.enterprise.connectors.service.ConnectorService.checkAndLoadPool(ConnectorService.java:325)
      at com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl.createConnectorResource(ConnectorResourceAdminServiceImpl.java:99)
      at com.sun.enterprise.connectors.ConnectorRuntime.createConnectorResource(ConnectorRuntime.java:344)
      at com.sun.enterprise.resource.deployer.ConnectorResourceDeployer.createConnectorResource(ConnectorResourceDeployer.java:105)
      at com.sun.enterprise.resource.deployer.ConnectorResourceDeployer.deployResource(ConnectorResourceDeployer.java:83)
      at org.glassfish.resourcebase.resources.api.ResourceProxy.create(ResourceProxy.java:84)
      at com.sun.enterprise.naming.impl.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:137)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:143)
      at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:173)
      at com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatchToServant(ServerRequestDispatcherImpl.java:528)
      at com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatch(ServerRequestDispatcherImpl.java:199)
      at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequestRequest(MessageMediatorImpl.java:1596)
      at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:1458)
      at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleInput(MessageMediatorImpl.java:966)
      at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214)
      at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:718)
      at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.dispatch(MessageMediatorImpl.java:515)
      at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.doWork(MessageMediatorImpl.java:2291)
      at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
      at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)
      Caused by: java.lang.ClassNotFoundException: [Lcom.sun.enterprise.connectors.authentication.ConnectorSecurityMap;
      at org.knopflerfish.framework.BundleClassLoader.findClass(BundleClassLoader.java:239)
      at org.knopflerfish.framework.BundleClassLoader.loadClass(BundleClassLoader.java:365)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
      at org.knopflerfish.framework.BundleImpl.loadClass(BundleImpl.java:1609)
      at com.sun.enterprise.naming.util.OSGiObjectInputOutputStreamFactoryImpl.resolveClass(OSGiObjectInputOutputStreamFactoryImpl.java:195)
      at com.sun.enterprise.naming.util.OSGiObjectInputOutputStreamFactoryImpl$OSGiObjectInputStream.resolveClass(OSGiObjectInputOutputStreamFactoryImpl.java:157)
      at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593)
      at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
      at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1642)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
      at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
      at com.sun.enterprise.naming.util.NamingUtilsImpl$1.run(NamingUtilsImpl.java:117)
      ... 44 more

      #]

      This happens because Knopflerfish implementation of Bundle.loadClass can't handle array class. Apparently, even default implementation of ClassLoader.loadClass does not handle array class name, so I can't call it a bug in Knopflerfish. We were just lucky that Felix and Equinox have been nice.

        Activity

        Hide
        Sanjeeb Sahoo added a comment -

        r59066 | ss141213 | 2013-02-03 20:16:28 +0530 (Sun, 03 Feb 2013) | 5 lines

        Show
        Sanjeeb Sahoo added a comment - r59066 | ss141213 | 2013-02-03 20:16:28 +0530 (Sun, 03 Feb 2013) | 5 lines
        Hide
        torkel.dominique added a comment -

        I think this change may have introduced a bug that appears only when assertions are enabled.
        With GF b82 I get this error when trying to do a JNDI lookup:

        Caused by: java.lang.AssertionError
        at com.sun.enterprise.naming.util.OSGiObjectInputOutputStreamFactoryImpl.loadArrayClass(OSGiObjectInputOutputStreamFactoryImpl.java:218)
        at com.sun.enterprise.naming.util.OSGiObjectInputOutputStreamFactoryImpl.resolveClass(OSGiObjectInputOutputStreamFactoryImpl.java:196)
        at com.sun.enterprise.naming.util.OSGiObjectInputOutputStreamFactoryImpl$OSGiObjectInputStream.resolveClass(OSGiObjectInputOutputStreamFactoryImpl.java:158)
        ...

        Seems like the assertion on line 218 in OSGiObjectInputOutputStreamFactoryImpl.java assumes that cname start with "L" when in this case it starts with "[L".

        Show
        torkel.dominique added a comment - I think this change may have introduced a bug that appears only when assertions are enabled. With GF b82 I get this error when trying to do a JNDI lookup: Caused by: java.lang.AssertionError at com.sun.enterprise.naming.util.OSGiObjectInputOutputStreamFactoryImpl.loadArrayClass(OSGiObjectInputOutputStreamFactoryImpl.java:218) at com.sun.enterprise.naming.util.OSGiObjectInputOutputStreamFactoryImpl.resolveClass(OSGiObjectInputOutputStreamFactoryImpl.java:196) at com.sun.enterprise.naming.util.OSGiObjectInputOutputStreamFactoryImpl$OSGiObjectInputStream.resolveClass(OSGiObjectInputOutputStreamFactoryImpl.java:158) ... Seems like the assertion on line 218 in OSGiObjectInputOutputStreamFactoryImpl.java assumes that cname start with "L" when in this case it starts with "[L".

          People

          • Assignee:
            Sanjeeb Sahoo
            Reporter:
            Sanjeeb Sahoo
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: