RE: Reusing XT instances

Subject: RE: Reusing XT instances
From: "Robert Streich" <rstreich@xxxxxxxxxx>
Date: Mon, 31 Jan 2000 20:59:09 -0800
At 05:12 PM 1/31/00 +0000, you wrote:
> 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.

But this much I have control over.

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.

Robert Streich
Calico Commerce

XSL-List info and archive:

Current Thread