annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/StaticSQRelationAccess.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 9a14eac637ec
children
rev   line source
5501
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.access;
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 import org.apache.log4j.Logger;
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 import de.intevation.flys.artifacts.FLYSArtifact;
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8 public class StaticSQRelationAccess
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 extends RiverAccess
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10 {
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 /** The logger that is used in this state. */
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12 private static final Logger logger =
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 Logger.getLogger(StaticSQRelationAccess.class);
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 private String measurementStation;
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 public StaticSQRelationAccess(FLYSArtifact artifact) {
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 super(artifact);
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19 }
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 /** Get measurement station */
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 public String getMeasurementStation() {
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 if (measurementStation == null) {
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 measurementStation = getString("station");
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25 }
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 if (logger.isDebugEnabled()) {
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 logger.debug("measurement station: '" + measurementStation + "'");
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 }
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 return measurementStation;
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 }
9a14eac637ec New Artifact and static state for sq relation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 }

http://dive4elements.wald.intevation.org