Subject: Re: Reusing XT instances|
From: "Robert Streich" <rstreich@xxxxxxxxxx>
Date: Fri, 28 Jan 2000 16:41:39 -0800
The XSLServlet works in a servlet environment which is multi threaded and it wouldn't be safe to use the same object.
This much, I could take care of by locking the processor to ensure sequential access. If this slows down access, a good appserver should create new servlet instances to keep up with demand.
SAX says that a parser is reusable but not reentrant. To me, this means that a SAX parser is not thread-safe, so in any multi-threaded environment, you'd have to lock the parser.
However, the longest operation is the parsing of the XSLT transformation which is done before the XSLProcessor is cached and therefore, this parsing is reused.
Unfortunately, I have to write this assuming that the stylesheet will be different for every run. tr.SheetImpl looks to be pretty well encapsulated and XSLProcessorImpl.loadStylesheet() replaces the current stylesheet.
It's an interesting point that you brought up, however. It could be worthwile to cache the Sheet. It'd make for a lot of rigamarole, but it might be worth considering.
bob Robert Streich Calico Commerce rstreich@xxxxxxxxxx