You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Bryan Kearney <bk...@avolent.com> on 2002/09/19 00:53:24 UTC

XSLTC Caches the XMLReader - Causes Exceptions

I am putting 2.4 Xalan under stress (e.g. 10-15 threads going through an
online application using about 10 translets). I am getting sporadic
Exceptions like the one below. All of my threads are sharing a single
Transformer Factory, and I have synchronized access to the generation of
templates whihch in turn are cached. Each thread creates a new transformer
to work over the templates.

It appears that the org.apache.xalan.xsltc.trax.TransformerFactoryImpl class
has a private member which is an XMLReader. However, these classes are not
thread safe... well.. they are they throw exceptions. 

So.. question to the group: Is my pattern incorrect in that we should get
new factory instances? Or is this an issue with the XSLTc implementation? As
another point,the Xalan code seems to create a new reader each time.

-- bk


        org.xml.sax.SAXException: FWK005 parse may not be called while
parsing.
        at
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:120
3)
        at
weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:133)
        at
org.apache.xalan.xsltc.trax.TransformerImpl.getDOM(TransformerImpl.java:496)
        at
org.apache.xalan.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:6
35)
        at
org.apache.xalan.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:2
56)
        at
com.avolent.core.transform.AbstractTransformer.doTransformation(AbstractTran
sformer.java:417)
        at
com.avolent.core.transform.AbstractTransformer.transform(AbstractTransformer
.java:267)
        at
com.avolent.platform.rendering.TransformationProcessorImpl.transform(Transfo
rmationProcessorImpl.java:347)
        at
com.avolent.presentation.engine.HttpContentProcessorImpl.transformData(Unkno
wn Source)
        at
com.avolent.presentation.engine.HttpContentProcessorImpl.processRequest(Unkn
own Source)
        at
com.avolent.presentation.engine.PresentationRouter.service(Unknown Source)
        at
weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:133)
        at
org.apache.xalan.xsltc.trax.TransformerImpl.getDOM(TransformerImpl.java:496)
        at
org.apache.xalan.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:6
35)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.xalan.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:2
56)
        at
weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(Servle
tStubImpl.java:945)
        at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:332)
        at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:242)
        at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(W
ebAppServletContext.java:5360)
        at
weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManage
r.java:721)
        at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
ntext.java:3043)
        at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
:2468)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:152)
        at
com.avolent.core.transform.AbstractTransformer.doTransformation(AbstractTran
sformer.java:417)
        at
com.avolent.core.transform.AbstractTransformer.transform(AbstractTransformer
.java:267)
        at
com.avolent.platform.rendering.TransformationProcessorImpl.transform(Transfo
rmationProcessorImpl.java:347)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:133)
---------        at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

Re: XSLTC Caches the XMLReader - Causes Exceptions

Posted by Santiago Pericas-Geertsen <Sa...@sun.com>.
----- Original Message -----
From: "Bryan Kearney" <bk...@avolent.com>
To: <xa...@xml.apache.org>
Cc: "Michael Radovancevich" <mp...@avolent.com>
Sent: Wednesday, September 18, 2002 6:53 PM
Subject: XSLTC Caches the XMLReader - Causes Exceptions


> I am putting 2.4 Xalan under stress (e.g. 10-15 threads going through an
> online application using about 10 translets). I am getting sporadic
> Exceptions like the one below. All of my threads are sharing a single
> Transformer Factory, and I have synchronized access to the generation of
> templates whihch in turn are cached. Each thread creates a new transformer
> to work over the templates.
>
> It appears that the org.apache.xalan.xsltc.trax.TransformerFactoryImpl
class
> has a private member which is an XMLReader. However, these classes are not
> thread safe... well.. they are they throw exceptions.
>
> So.. question to the group: Is my pattern incorrect in that we should get
> new factory instances? Or is this an issue with the XSLTc implementation?
As
> another point,the Xalan code seems to create a new reader each time.

 Looks like a problem in XSLTC. We will look into it.

 Thanks.

--
Santiago Pericas-Geertsen
Sun Microsystems