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]
