You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ji...@apache.org on 2004/05/29 23:46:02 UTC

[jira] Closed: (JS2-48) ClassNotFoundException when loading ojb_repository for prefs service

Message:

   The following issue has been closed.

   Resolver: David Le Strat
       Date: Sat, 29 May 2004 2:45 PM

This issue is also addressed in:

http://nagoya.apache.org/jira/browse/JS2-56

This issue has been resolved by patching OJB.  The fix impacts org.apache.ojb.broker.util.ClassHelper.

It provides the ability to set the classloader for the application using OJB (which is done in o.a.j.engine.JetspeedEngine).  The following code was added to the OJB ClassHelper.  Upon validation that the patch below does not break other behaviors in OJB, the patch will be submitted to the OJB dev list.

    /** Classloader to used by the ClassHelper. */
    private static ClassLoader classLoader = null;
    private static Object mutex = new Object();
    
    private ClassHelper()
    {
    }
    
    /**
     * Class loader setter.  Sets the OJB classloader. This can be set by external
     * application that need to pass a specific classloader to OJB.
     * @param loader The ClassLoader
     */
    public static void setClassLoader(ClassLoader loader)
    {
        synchronized (mutex)
        {
            classLoader = loader;
        }
    }

    /**
     * Class loader getter.  Gets the OJB classloader. Defaults to Thread.currentThread().getContextClassLoader();
     * if the classloader has not been set.
     */
    public static ClassLoader getClassLoader()
    {
        if (null == classLoader)
        {
            return Thread.currentThread().getContextClassLoader();
        }
        return classLoader;
    }

    /**
     * Returns a class object for the given name or <i>null</i>
     */
    public static Class getClass(String className, boolean initialize) throws ClassNotFoundException
    {
    	return Class.forName(className, initialize, getClassLoader());
    	//return Class.forName(className, initialize, Thread.currentThread().getContextClassLoader());
    }
---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/JS2-48

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: JS2-48
    Summary: ClassNotFoundException when loading ojb_repository for prefs service
       Type: Bug

     Status: Closed
   Priority: Blocker
 Resolution: FIXED

    Project: Jetspeed 2
 Components: 
             Components:PersistenceStore
   Fix Fors:
             2.0-a1
   Versions:
             2.0-a1

   Assignee: David Le Strat
   Reporter: David Le Strat

    Created: Sat, 22 May 2004 10:52 AM
    Updated: Sat, 29 May 2004 2:45 PM
Environment: Win XP - Tomcat 5.0.24 - HSQL Db.

Description:
A ClassNotFoundException is thrown when loading the ojb_repository for the prefs service.

The org.apache.jetspeed.engine.servlet.ServletRequestImpl accesses the org.apache.jetspeed.userinfo.impl.UserInfoManagerImpl which checks if a user exists (org.apache.jetspeed.security.impl.UserManagerImpl.userExists). When doing so, PBStore initializes and loads the repository metadata.  When trying to load prefs ojb_repository, it cannot find the org.apache.jetspeed.prefs.om.impl.NodeImpl referenced as the first element is the repository definition.

Error Message:

==========================>java.lang.ClassNotFoundException: org.apache.jetspeed.prefs.om.impl.NodeImpl
java.lang.ClassNotFoundException: org.apache.jetspeed.prefs.om.impl.NodeImpl
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1340)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:219)
        at org.apache.ojb.broker.util.ClassHelper.getClass(ClassHelper.java:30)
        at org.apache.ojb.broker.util.ClassHelper.getClass(ClassHelper.java:98)
        at org.apache.ojb.broker.metadata.RepositoryXmlHandler.startElement(RepositoryXmlHandler.java:199)
        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.ojb.broker.metadata.RepositoryPersistor.readMetadataFromXML(RepositoryPersistor.java:309)
        at org.apache.ojb.broker.metadata.RepositoryPersistor.readDescriptorRepository(RepositoryPersistor.java:187)
        at org.apache.jetspeed.components.persistence.store.ojb.pb.PBStore.<init>(PBStore.java:93)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at org.picocontainer.defaults.InstantiatingComponentAdapter.instantiateComponent(InstantiatingComponentAdapter.java:102)
        at org.picocontainer.defaults.InstantiatingComponentAdapter.getComponentInstance(InstantiatingComponentAdapter.java:45)
        at org.picocontainer.defaults.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:243)
        at org.apache.jetspeed.components.persistence.store.impl.DefaultPersistenceStoreContainer.getStore(DefaultPersistenceStoreContainer.java:75)
        at org.apache.jetspeed.components.persistence.store.impl.DefaultPersistenceStoreContainer.getStoreForThread(DefaultPersistenceStoreContainer.java:104)
        at org.apache.jetspeed.security.impl.BaseSecurityImpl.getPersistenceStore(BaseSecurityImpl.java:337)
        at org.apache.jetspeed.security.impl.BaseSecurityImpl.getJetspeedUserPrincipal(BaseSecurityImpl.java:96)
        at org.apache.jetspeed.security.impl.UserManagerImpl.userExists(UserManagerImpl.java:196)
        at org.apache.jetspeed.userinfo.impl.UserInfoManagerImpl.getUserPreferences(UserInfoManagerImpl.java:206)
        at org.apache.jetspeed.userinfo.impl.UserInfoManagerImpl.getUserInfoMap(UserInfoManagerImpl.java:116)
        at org.apache.jetspeed.request.JetspeedRequestContext.getUserInfoMap(JetspeedRequestContext.java:441)
        at org.apache.jetspeed.engine.servlet.ServletRequestImpl.getAttribute(ServletRequestImpl.java:218)
        at org.apache.pluto.core.impl.PortletRequestImpl.getAttribute(PortletRequestImpl.java:280)
        at org.apache.jsp.WEB_002dINF.demo.security.roles_jsp._jspService(roles_jsp.java:166)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:703)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:589)


---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org