Hey Stuart, thanks for the note. I just check code implementing your work-around into CVS. If you'd like to add some sort of factory for parser creation, there would be interested in that.
http://jakarta.apache.org/site/source.html Thanks, Dan "Stuart Roll" <[EMAIL PROTECTED]> writes: > Greetings - > > <apologies in advance if this is the wrong mailing list for this topic> > > I got a nasty little suprise when I tried to use XML-RPC from within an > unsigned applet. The XmlRpcClient's worker threads are instances of XmlRpc > and XmlRpc.parse() contains the following code: > > if (parserClass == null) { > // try to get the name of the SAX driver from the System > properties > setDriver (System.getProperty ("sax.driver", > "uk.co.wilson.xml.MinML")); > } > > If you don't set a parser class explicitly (through XmlRpc.setDriver()), > XmlRpc will check the system property shown above and use it's default if > that isn't set. Unfortunately, in an unsigned applet the applet is > prohibited from examining that system property and a SecurityException is > thrown (which isn't handled by XML-RPC). > > To make matters worse, XmlRpcClient does not provide a means to set the > parser that its workers will use. Since the XmlRpcClient.Worker class > (which extends XmlRpc) has package access, you can't even subclass > XmlRpcClient to override the behavior. Alas, all my hacks failed me and I > had to modify the library itself. > > 1 - At the very least, the snippet above should read something like: > if (parserClass == null) { > // try to get the name of the SAX driver from the System > properties > try { > setDriver (System.getProperty ("sax.driver", > "uk.co.wilson.xml.MinML")); > } catch (SecurityException e) { > setDriver ("uk.co.wilson.xml.MinML"); > } > } > > 2 - For those who don't want to use the default parser, what should we do? > Should the various client and server/servlet objects each provide a means > to set the parser class for their worker threads? Perhaps someone has a > clever suggestion like a worker thread factory callback or somesuch. > > In my case, I've modified the XML-RPC library to change the default to be > the Xerces parser and added the try-catch block shown above but I'd like to > see a proper fix. > > Stuart