You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by png <pn...@kargo.com> on 2002/05/07 00:32:31 UTC

Help with ConcurrentModificationException!

Hey all,

Please let me know if this is not an appropriate topic for this mailing
list.  I apologize if it isn't. 

I get this exception when i'm using the Xerces SAXParser.  I'm using
Apache/Resin running Java 1.3.1/Xerces 1.4.4
The exception is:
java.util.ConcurrentModificationException
        at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1111)
        at
com.kargo.comfy.translator.Translator.process(Translator.java:155)
        at
com.kargo.comfy.translator.TranslatorServlet.service(TranslatorServlet.java:
181)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:83)
        at
com.caucho.server.http.QNamedDispatcher.service(QNamedDispatcher.java:153)
        at
com.caucho.server.http.QNamedDispatcher.chain(QNamedDispatcher.java:100)
        at
com.caucho.server.http.AbstractRequest.service(AbstractRequest.java:472)
        at
com.caucho.server.http.AbstractRequest.service(AbstractRequest.java:395)
        at
com.caucho.server.http.PageCache$Entry.service(PageCache.java:256)
        at com.caucho.server.http.PageCache.service(PageCache.java:105)
        at com.caucho.server.http.VirtualHost.service(VirtualHost.java:406)
        at com.caucho.server.http.Request.dispatch(Request.java:211)
        at
com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:307)
        at
com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:257
)
        at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
        at java.lang.Thread.run(Thread.java:484)

The code that calls parse is this.  Its within this Translator class I've
built:
/**
     * Sets the states for all filterhandlers using the 
     * the servlet request and response objects then 
     * instructs the SAX parser to begin parsing the 
     * input stream using a stylesheet root for the translation
     *
     * @param deviceId The id of the device we're talking to
     * @param is xml to translate
     * @param os stream to send output
     * @param ssr compiled stylesheet to use for translation
     * @param req HttpServletRequest to be passed to filter handlers
     * @param res HttpServletResponse to be passed to filter handlers
     * @return void
     * @throws org.xml.sax.SAXException, java.io.IOException
     */
    public void process(InputStream is,
                        OutputStream os, StylesheetRoot ssr,
                        HttpServletRequest req, HttpServletResponse res,
                        String encoding)
        throws SAXException, IOException, Exception
    {
        setFilterStates(req, res);
        processor.setOutputStream(os);
        processor.setStylesheet(ssr);
        // this won't really work...
        processor.setStylesheetParam("encoding",
processor.createXString(encoding));
        parser.parse(new XSLTInputSource(is));
        reset();
    }

I believe there may be issues with perhaps using the single parser and
processor multiple times and just resetting it.  That is what the reset()
method does.  "parser" is a Xerces SAXParser and "processor" is an
XSLTProcessor, both as instance variables.  Any suggestions as to why this
is throwing such an exception? 

Thanks!

peter 


---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org