Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/themes/Theme.java @ 5779:ebec12def170
Datacage: Add a pool of builders to make it multi threadable.
XML DOM is not thread safe. Therefore the old implementation only allowed one thread
to use the builder at a time. As the complexity of the configuration
has increased over time this has become a bottleneck of the whole application
because it took quiet some time to build a result. Furthermore the builder code path
is visited very frequent. So many concurrent requests were piled up
resulting in long waits for the users.
To mitigate this problem a round robin pool of builders is used now.
Each of the pooled builders has an independent copy of the XML template
and can be run in parallel.
The number of builders is determined by the system property
'flys.datacage.pool.size'. It defaults to 4.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sun, 21 Apr 2013 12:48:09 +0200 |
parents | 6566c7868456 |
children |
line wrap: on
line source
package de.intevation.flys.themes; import org.w3c.dom.Document; import org.w3c.dom.Node; /** * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public interface Theme { /** * Method to initialize the theme. * * @param config The configuration node. */ void init(Node config); /** * Returns the name of the theme. * * @return the name of the theme. */ String getName(); /** * Returns the description of the theme. * * @return the description of the theme. */ String getDescription(); String getFacet(); void setFacet(String facet); int getIndex(); void setIndex(int index); /** * Adds a new attribute. * * @param name The name of the attribute. * @param value The value of the attribute. */ void addAttribute(String name, String value); /** * Returns the value of a specific attribute. * * @param name the name of the attribute. * * @return the value of the attribute <i>name</i>. */ String getAttribute(String name); /** * Adds a new field to the theme. * * @param name The name of the field. * @param field The field. */ void addField(String name, ThemeField field); /** * Sets the value of an field. * * @param name The name of the field. * @param value The new value of the field. */ void setFieldValue(String name, Object value); /** * Returns the field specified by name. * * @param name The name of the desired field. * * @return an field. */ ThemeField getField(String name); /** * Returns the typename of a field. * * @param name the name of the field. * * @return the typename of a field. */ String getFieldType(String name); /** * Returns the value of a field. * * @param name The name of the field. * * @return the value of a field. */ Object getFieldValue(String name); /** * Dumps the theme to XML. * * @return a document. */ Document toXML(); } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :