org.apache.xerces.parsers
Class CachingParserPool
java.lang.Object
org.apache.xerces.parsers.CachingParserPool
public class CachingParserPool
extends java.lang.Object
A parser pool that enables caching of grammars. The caching parser
pool is constructed with a specific symbol table and grammar pool
that has already been populated with the grammars used by the
application.
Once the caching parser pool is constructed, specific parser
instances are created by calling the appropriate factory method
on the parser pool.
Note: There is a performance penalty for using
a caching parser pool due to thread safety. Access to the symbol
table and grammar pool must be synchronized to ensure the safe
operation of the symbol table and grammar pool.
Note: If performance is critical, then another
mechanism needs to be used instead of the caching parser pool.
One approach would be to create parser instances that do not
share these structures. Instead, each instance would get its
own copy to use while parsing. This avoids the synchronization
overhead at the expense of more memory and the time required
to copy the structures for each new parser instance. And even
when a parser instance is re-used, there is a potential for a
memory leak due to new symbols being added to the symbol table
over time. In other words, always take caution to make sure
that your application is thread-safe and avoids leaking memory.
$Id: CachingParserPool.java 319806 2004-02-24 23:15:58Z mrglavas $
DEFAULT_SHADOW_GRAMMAR_POOL
public static final boolean DEFAULT_SHADOW_GRAMMAR_POOL
Default shadow grammar pool (false).
DEFAULT_SHADOW_SYMBOL_TABLE
public static final boolean DEFAULT_SHADOW_SYMBOL_TABLE
Default shadow symbol table (false).
fShadowGrammarPool
protected boolean fShadowGrammarPool
Shadow the grammar pool for new parser instances. If true,
new parser instances use shadow copies of the main grammar
pool and are not allowed to add new grammars to the main
grammar pool. New grammars are added to the shadow grammar
pool and are local to the parser instance.
fShadowSymbolTable
protected boolean fShadowSymbolTable
Shadow the symbol table for new parser instances. If true,
new parser instances use shadow copies of the main symbol
table and are not allowed to add new symbols to the main
symbol table. New symbols are added to the shadow symbol
table and are local to the parser instance.
fSynchronizedGrammarPool
protected org.apache.xerces.xni.grammars.XMLGrammarPool fSynchronizedGrammarPool
Grammar pool. The grammar pool that the caching parser pool is
constructed with is automatically wrapped in a synchronized
version for thread-safety.
fSynchronizedSymbolTable
protected SymbolTable fSynchronizedSymbolTable
Symbol table. The symbol table that the caching parser pool is
constructed with is automatically wrapped in a synchronized
version for thread-safety.
CachingParserPool
public CachingParserPool()
Default constructor.
CachingParserPool
public CachingParserPool(SymbolTable symbolTable,
org.apache.xerces.xni.grammars.XMLGrammarPool grammarPool)
Constructs a caching parser pool with the specified symbol table
and grammar pool.
symbolTable
- The symbol table.grammarPool
- The grammar pool.
createDOMParser
public DOMParser createDOMParser()
Creates a new DOM parser.
createSAXParser
public SAXParser createSAXParser()
Creates a new SAX parser.
getSymbolTable
public SymbolTable getSymbolTable()
Returns the symbol table.
getXMLGrammarPool
public org.apache.xerces.xni.grammars.XMLGrammarPool getXMLGrammarPool()
Returns the grammar pool.
setShadowSymbolTable
public void setShadowSymbolTable(boolean shadow)
Sets whether new parser instance receive shadow copies of the
main symbol table.
shadow
- If true, new parser instances use shadow copies
of the main symbol table and are not allowed to
add new symbols to the main symbol table. New
symbols are added to the shadow symbol table and
are local to the parser instance. If false, new
parser instances are allowed to add new symbols
to the main symbol table.
Copyright B) 1999-2006 The Apache Software Foundation. All Rights Reserved.