Subject: RE: Reusing XT instances|
From: "Robert Streich" <rstreich@xxxxxxxxxx>
Date: Mon, 31 Jan 2000 20:59:09 -0800
> This much, I could take care of by locking the processor to > ensure sequential access.
It's generally much better to create two instances than to create one instance and lock it. You should only synchronize on a single object where the state of the object actually needs to be shared between clients.
In a app-server environment I don't have to worry about that. The app-server will create new instances of the servlet as needed. At least, any decent app-server will.
> 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.
With SAX it's not just multi-threading that's an issue, but multiple activations within a thread. Specifically, you're not allowed to call parse() from within a call-back.
Again, it's crazy to lock the parser, much better to create a new instance for each parse.
It's certainly safer, but if your average doc is only a couple of K long, it just seems excessive. If I can do it safely, I'd much rather reuse an instance.
> 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. > If you take a look at how Saxon does it in SaxonServlet, you'll see that it's not a lot of rigmarole at all, it's a dozen lines of code.
The rigamarole is being able to determine when a stylesheet has changed. I can't rely on a reset like you use in SaxonServlet.
bob Robert Streich Calico Commerce rstreich@xxxxxxxxxx