Hi,

I'm having some problem using the FileSystemPAM from within a web app context (seems to work in the tests, which use the system class loader).

Basically I get the following exception :

java.lang.InternalError: Can't instantiate Preferences factory java.lang.ClassNotFoundException: org.apache.jetspeed.prefs.impl.PreferencesFactoryImpl

at java.util.prefs.Preferences.<clinit>(Preferences.java:204)
at org.apache.jetspeed.om.preference.impl.PrefsPreference.createPrefenceNode(PrefsPreference.java:540)
at org.apache.jetspeed.om.preference.impl.PrefsPreference.<init>(PrefsPreference.java:73)
at org.apache.jetspeed.util.descriptor.PortletPreferenceRule.end(PortletPreferenceRule.java:74)
at org.apache.commons.digester.Digester.endElement(Digester.java:1058)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(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.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1586)
at org.apache.jetspeed.util.descriptor.PortletApplicationDescriptor.createPortletApplication(PortletApplicationDescriptor.java:146)
at org.apache.jetspeed.util.descriptor.PortletApplicationWar.createPortletApp(PortletApplicationWar.java:213)
at org.apache.jetspeed.tools.pamanager.FileSystemPAM.registerApplication(FileSystemPAM.java:346)
at org.apache.jetspeed.tools.pamanager.FileSystemPAM.sysDeploy(FileSystemPAM.java:297)
at org.apache.jetspeed.tools.pamanager.FileSystemPAM.deploy(FileSystemPAM.java:89)


I looked at the JDK's source and found the following code when loading the PreferenceFactory implementation :

            factory = (PreferencesFactory)
               Class.forName(factoryName, false,
                             ClassLoader.getSystemClassLoader()).newInstance();

If this means what I think it does, the preference factory may only be loaded from the root class loader, which means that we would need to deploy the jetspeed-prefs*.jar into Tomcat's classpath or something.

Is this analysis correct ? If so, how to we get around this ?

Regards,
  Serge Huber.



- -- --- -----=[ shuber2 at jahia dot com ]=---- --- -- -
www.jahia.org : A collaborative source CMS and Portal Server




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to