annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/AddScaleFunction.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 388cd6fc451b
children
rev   line source
2410
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.math;
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 public class AddScaleFunction
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 implements Function
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 {
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 protected double b;
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 protected double m;
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 public AddScaleFunction(double b, double m) {
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 this.b = b;
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 this.m = m;
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 }
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 @Override
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 public double value(double x) {
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 return (x + b)*m;
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 }
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 }
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org