View | Details | Raw Unified | Return to bug 58786
Collapse All | Expand All

(-)build.properties (-28 / +5 lines)
Lines 85-90 Link Here
85
commons-collections.loc     = ${maven2.repo}/commons-collections/commons-collections/${commons-collections.version}
85
commons-collections.loc     = ${maven2.repo}/commons-collections/commons-collections/${commons-collections.version}
86
commons-collections.md5     = f54a8510f834a1a57166970bfc982e94
86
commons-collections.md5     = f54a8510f834a1a57166970bfc982e94
87
87
88
commons-dbcp2.version       = 2.1.1
89
commons-dbcp2.jar           = commons-dbcp2-${commons-dbcp2.version}.jar
90
commons-dbcp2.loc           = ${maven2.repo}/org/apache/commons/commons-dbcp2/${commons-dbcp2.version}
91
commons-dbcp2.md5           = 298897b1e785b933b0522351871cf7ae
92
88
commons-httpclient.version  = 3.1
93
commons-httpclient.version  = 3.1
89
commons-httpclient.jar      = commons-httpclient-${commons-httpclient.version}.jar
94
commons-httpclient.jar      = commons-httpclient-${commons-httpclient.version}.jar
90
commons-httpclient.loc      = ${maven2.repo}/commons-httpclient/commons-httpclient/${commons-httpclient.version}
95
commons-httpclient.loc      = ${maven2.repo}/commons-httpclient/commons-httpclient/${commons-httpclient.version}
Lines 110-116 Link Here
110
commons-lang3.loc           = ${maven2.repo}/org/apache/commons/commons-lang3/${commons-lang3.version}
115
commons-lang3.loc           = ${maven2.repo}/org/apache/commons/commons-lang3/${commons-lang3.version}
111
commons-lang3.md5           = 8667a442ee77e509fbe8176b94726eb2
116
commons-lang3.md5           = 8667a442ee77e509fbe8176b94726eb2
112
117
113
114
commons-logging.version     = 1.2
118
commons-logging.version     = 1.2
115
commons-logging.jar         = commons-logging-${commons-logging.version}.jar
119
commons-logging.jar         = commons-logging-${commons-logging.version}.jar
116
commons-logging.loc         = ${maven2.repo}/commons-logging/commons-logging/${commons-logging.version}
120
commons-logging.loc         = ${maven2.repo}/commons-logging/commons-logging/${commons-logging.version}
Lines 139-176 Link Here
139
dnsjava.loc                 = ${maven2.repo}/dnsjava/dnsjava/${dnsjava.version}
143
dnsjava.loc                 = ${maven2.repo}/dnsjava/dnsjava/${dnsjava.version}
140
dnsjava.md5                 = 11363bd58696feae207a992da2ce7a90
144
dnsjava.md5                 = 11363bd58696feae207a992da2ce7a90
141
145
142
excalibur-instrument.version = 1.0
143
excalibur-instrument.jar    = excalibur-instrument-${excalibur-instrument.version}.jar
144
excalibur-instrument.loc    = ${maven2.repo}/excalibur-instrument/excalibur-instrument/${excalibur-instrument.version}
145
excalibur-instrument.md5    = 81BF95737C97A46836EA5F21F7C82719
146
147
excalibur-logger.version    = 1.1
146
excalibur-logger.version    = 1.1
148
excalibur-logger.jar        = excalibur-logger-${excalibur-logger.version}.jar
147
excalibur-logger.jar        = excalibur-logger-${excalibur-logger.version}.jar
149
excalibur-logger.loc        = ${maven2.repo}/excalibur-logger/excalibur-logger/${excalibur-logger.version}
148
excalibur-logger.loc        = ${maven2.repo}/excalibur-logger/excalibur-logger/${excalibur-logger.version}
150
excalibur-logger.md5        = E8246C546B7B0CAFD65947E9B80BB884
149
excalibur-logger.md5        = E8246C546B7B0CAFD65947E9B80BB884
151
150
152
excalibur-datasource.version = 2.1
153
excalibur-datasource.jar    = excalibur-datasource-${excalibur-datasource.version}.jar
154
excalibur-datasource.loc    = ${maven2.repo}/excalibur-datasource/excalibur-datasource/${excalibur-datasource.version}
155
excalibur-datasource.md5    = 7a57ccdfeda3a4f157016f5a9270a4f9
156
 
157
# pool has been split into 3 parts
158
excalibur-pool.version       = 2.1
159
excalibur-pool-api.version   = ${excalibur-pool.version}
160
excalibur-pool-api.jar       = excalibur-pool-api-${excalibur-pool-api.version}.jar
161
excalibur-pool-api.loc       = ${maven2.repo}/excalibur-pool/excalibur-pool-api/${excalibur-pool-api.version}
162
excalibur-pool-api.md5       = f9a224e1ee0896764aadbf7ddd253acc
163
164
excalibur-pool-impl.version  = ${excalibur-pool.version}
165
excalibur-pool-impl.jar      = excalibur-pool-impl-${excalibur-pool-impl.version}.jar
166
excalibur-pool-impl.loc      = ${maven2.repo}/excalibur-pool/excalibur-pool-impl/${excalibur-pool-impl.version}
167
excalibur-pool-impl.md5      = 8be9c177894998090b4662326d7f22de
168
169
excalibur-pool-instrumented.version = ${excalibur-pool.version}
170
excalibur-pool-instrumented.jar     = excalibur-pool-instrumented-${excalibur-pool-instrumented.version}.jar
171
excalibur-pool-instrumented.loc     = ${maven2.repo}/excalibur-pool/excalibur-pool-instrumented/${excalibur-pool-instrumented.version}
172
excalibur-pool-instrumented.md5     = 1b5425fe0fe63dc67da6fe995db6be31
173
174
# Freemarker
151
# Freemarker
175
freemarker.version          = 2.3.23
152
freemarker.version          = 2.3.23
176
freemarker.loc               = ${maven2.repo}/org/freemarker/freemarker/${freemarker.version}
153
freemarker.loc               = ${maven2.repo}/org/freemarker/freemarker/${freemarker.version}
(-)build.xml (-17 / +4 lines)
Lines 365-370 Link Here
365
    <include name="${lib.dir}/${beanshell.jar}"/>
365
    <include name="${lib.dir}/${beanshell.jar}"/>
366
    <include name="${lib.dir}/${commons-codec.jar}"/>
366
    <include name="${lib.dir}/${commons-codec.jar}"/>
367
    <include name="${lib.dir}/${commons-collections.jar}"/>
367
    <include name="${lib.dir}/${commons-collections.jar}"/>
368
    <include name="${lib.dir}/${commons-dbcp2.jar}"/>
368
    <include name="${lib.dir}/${commons-httpclient.jar}"/>
369
    <include name="${lib.dir}/${commons-httpclient.jar}"/>
369
    <include name="${lib.dir}/${commons-io.jar}"/>
370
    <include name="${lib.dir}/${commons-io.jar}"/>
370
    <include name="${lib.dir}/${commons-jexl.jar}"/>
371
    <include name="${lib.dir}/${commons-jexl.jar}"/>
Lines 375-386 Link Here
375
    <include name="${lib.dir}/${commons-net.jar}"/>
376
    <include name="${lib.dir}/${commons-net.jar}"/>
376
    <include name="${lib.dir}/${commons-pool2.jar}"/>
377
    <include name="${lib.dir}/${commons-pool2.jar}"/>
377
    <include name="${lib.dir}/${dnsjava.jar}"/>
378
    <include name="${lib.dir}/${dnsjava.jar}"/>
378
    <include name="${lib.dir}/${excalibur-datasource.jar}"/>
379
    <include name="${lib.dir}/${excalibur-instrument.jar}"/>
380
    <include name="${lib.dir}/${excalibur-logger.jar}"/>
379
    <include name="${lib.dir}/${excalibur-logger.jar}"/>
381
    <include name="${lib.dir}/${excalibur-pool-api.jar}"/>
382
    <include name="${lib.dir}/${excalibur-pool-impl.jar}"/>
383
    <include name="${lib.dir}/${excalibur-pool-instrumented.jar}"/>
384
  	<include name="${lib.dir}/${freemarker.jar}"/>
380
  	<include name="${lib.dir}/${freemarker.jar}"/>
385
    <include name="${lib.dir}/${htmllexer.jar}"/>
381
    <include name="${lib.dir}/${htmllexer.jar}"/>
386
    <include name="${lib.dir}/${htmlparser.jar}"/>
382
    <include name="${lib.dir}/${htmlparser.jar}"/>
Lines 442-447 Link Here
442
    <pathelement location="${lib.dir}/${beanshell.jar}"/>
438
    <pathelement location="${lib.dir}/${beanshell.jar}"/>
443
    <pathelement location="${lib.dir}/${commons-codec.jar}"/>
439
    <pathelement location="${lib.dir}/${commons-codec.jar}"/>
444
    <pathelement location="${lib.dir}/${commons-collections.jar}"/>
440
    <pathelement location="${lib.dir}/${commons-collections.jar}"/>
441
  	<pathelement location="${lib.dir}/${commons-dbcp2.jar}"/>
445
    <pathelement location="${lib.dir}/${commons-httpclient.jar}"/>
442
    <pathelement location="${lib.dir}/${commons-httpclient.jar}"/>
446
    <pathelement location="${lib.dir}/${commons-io.jar}"/>
443
    <pathelement location="${lib.dir}/${commons-io.jar}"/>
447
    <pathelement location="${lib.dir}/${commons-jexl.jar}"/>
444
    <pathelement location="${lib.dir}/${commons-jexl.jar}"/>
Lines 452-463 Link Here
452
    <pathelement location="${lib.dir}/${commons-net.jar}"/>
449
    <pathelement location="${lib.dir}/${commons-net.jar}"/>
453
    <pathelement location="${lib.dir}/${commons-pool2.jar}"/>
450
    <pathelement location="${lib.dir}/${commons-pool2.jar}"/>
454
    <pathelement location="${lib.dir}/${dnsjava.jar}"/>
451
    <pathelement location="${lib.dir}/${dnsjava.jar}"/>
455
    <pathelement location="${lib.dir}/${excalibur-datasource.jar}"/>
456
    <pathelement location="${lib.dir}/${excalibur-instrument.jar}"/>
457
    <pathelement location="${lib.dir}/${excalibur-logger.jar}"/>
452
    <pathelement location="${lib.dir}/${excalibur-logger.jar}"/>
458
    <pathelement location="${lib.dir}/${excalibur-pool-api.jar}"/>
459
    <pathelement location="${lib.dir}/${excalibur-pool-impl.jar}"/>
460
    <pathelement location="${lib.dir}/${excalibur-pool-instrumented.jar}"/>
461
  	<pathelement location="${lib.dir}/${freemarker.jar}"/>
453
  	<pathelement location="${lib.dir}/${freemarker.jar}"/>
462
    <pathelement location="${lib.dir}/${htmllexer.jar}"/>
454
    <pathelement location="${lib.dir}/${htmllexer.jar}"/>
463
    <pathelement location="${lib.dir}/${htmlparser.jar}"/>
455
    <pathelement location="${lib.dir}/${htmlparser.jar}"/>
Lines 488-494 Link Here
488
    <pathelement location="${lib.dir}/${jtidy.jar}"/>
480
    <pathelement location="${lib.dir}/${jtidy.jar}"/>
489
    <pathelement location="${lib.dir}/${tika-core.jar}"/>
481
    <pathelement location="${lib.dir}/${tika-core.jar}"/>
490
    <pathelement location="${lib.dir}/${tika-parsers.jar}"/>
482
    <pathelement location="${lib.dir}/${tika-parsers.jar}"/>
491
    <pathelement location="${lib.dir}/${xalan.jar}"/>
483
  	<pathelement location="${lib.dir}/${xalan.jar}"/>
492
    <pathelement location="${lib.dir}/${xerces.jar}"/>
484
    <pathelement location="${lib.dir}/${xerces.jar}"/>
493
    <pathelement location="${lib.dir}/${xml-apis.jar}"/>
485
    <pathelement location="${lib.dir}/${xml-apis.jar}"/>
494
    <pathelement location="${lib.dir}/${xmlgraphics-commons.jar}"/>
486
    <pathelement location="${lib.dir}/${xmlgraphics-commons.jar}"/>
Lines 2843-2848 Link Here
2843
        <process_jarfile jarname="beanshell"/>
2835
        <process_jarfile jarname="beanshell"/>
2844
        <process_jarfile jarname="commons-codec"/>
2836
        <process_jarfile jarname="commons-codec"/>
2845
        <process_jarfile jarname="commons-collections"/>
2837
        <process_jarfile jarname="commons-collections"/>
2838
    	<process_jarfile jarname="commons-dbcp2"/>
2846
        <process_jarfile jarname="commons-httpclient"/>
2839
        <process_jarfile jarname="commons-httpclient"/>
2847
        <process_jarfile jarname="commons-io"/>
2840
        <process_jarfile jarname="commons-io"/>
2848
        <process_jarfile jarname="commons-jexl"/>
2841
        <process_jarfile jarname="commons-jexl"/>
Lines 2853-2864 Link Here
2853
        <process_jarfile jarname="commons-net"/>
2846
        <process_jarfile jarname="commons-net"/>
2854
    	<process_jarfile jarname="commons-pool2"/>
2847
    	<process_jarfile jarname="commons-pool2"/>
2855
        <process_jarfile jarname="dnsjava"/>
2848
        <process_jarfile jarname="dnsjava"/>
2856
        <process_jarfile jarname="excalibur-datasource"/>
2857
        <process_jarfile jarname="excalibur-instrument"/>
2858
        <process_jarfile jarname="excalibur-logger"/>
2849
        <process_jarfile jarname="excalibur-logger"/>
2859
        <process_jarfile jarname="excalibur-pool-api"/>
2860
        <process_jarfile jarname="excalibur-pool-impl"/>
2861
        <process_jarfile jarname="excalibur-pool-instrumented"/>
2862
        <process_jarfile jarname="freemarker"/>
2850
        <process_jarfile jarname="freemarker"/>
2863
        <process_jarfile jarname="htmllexer"/>
2851
        <process_jarfile jarname="htmllexer"/>
2864
        <process_jarfile jarname="htmlparser"/>
2852
        <process_jarfile jarname="htmlparser"/>
Lines 2925-2931 Link Here
2925
        <delete verbose="true">
2913
        <delete verbose="true">
2926
          <fileset dir="${lib.api}" includes="bcmail-jdk15-*.jar bcprov-jdk15-*.jar"/>
2914
          <fileset dir="${lib.api}" includes="bcmail-jdk15-*.jar bcprov-jdk15-*.jar"/>
2927
          <!-- tidy up old pool jar -->
2915
          <!-- tidy up old pool jar -->
2928
          <fileset dir="${lib.dir}" includes="excalibur-pool-1.2.jar"/>
2929
        </delete>
2916
        </delete>
2930
        <antcall target="_process_all_jars">
2917
        <antcall target="_process_all_jars">
2931
            <param name="_get_file" value="true"/>
2918
            <param name="_get_file" value="true"/>
(-)eclipse.classpath (-5 / +1 lines)
Lines 48-53 Link Here
48
	<classpathentry kind="lib" path="lib/bsh-2.0b5.jar"/>
48
	<classpathentry kind="lib" path="lib/bsh-2.0b5.jar"/>
49
	<classpathentry kind="lib" path="lib/commons-codec-1.10.jar"/>
49
	<classpathentry kind="lib" path="lib/commons-codec-1.10.jar"/>
50
	<classpathentry kind="lib" path="lib/commons-collections-3.2.2.jar"/>
50
	<classpathentry kind="lib" path="lib/commons-collections-3.2.2.jar"/>
51
	<classpathentry kind="lib" path="lib/commons-dbcp2-2.1.1.jar"/>
51
	<classpathentry kind="lib" path="lib/commons-httpclient-3.1.jar"/>
52
	<classpathentry kind="lib" path="lib/commons-httpclient-3.1.jar"/>
52
	<classpathentry kind="lib" path="lib/commons-io-2.4.jar"/>
53
	<classpathentry kind="lib" path="lib/commons-io-2.4.jar"/>
53
	<classpathentry kind="lib" path="lib/commons-jexl-1.1.jar"/>
54
	<classpathentry kind="lib" path="lib/commons-jexl-1.1.jar"/>
Lines 58-69 Link Here
58
	<classpathentry kind="lib" path="lib/commons-net-3.4.jar"/>
59
	<classpathentry kind="lib" path="lib/commons-net-3.4.jar"/>
59
	<classpathentry kind="lib" path="lib/commons-pool2-2.4.2.jar"/>
60
	<classpathentry kind="lib" path="lib/commons-pool2-2.4.2.jar"/>
60
	<classpathentry kind="lib" path="lib/dnsjava-2.1.7.jar"/>
61
	<classpathentry kind="lib" path="lib/dnsjava-2.1.7.jar"/>
61
	<classpathentry kind="lib" path="lib/excalibur-datasource-2.1.jar"/>
62
	<classpathentry kind="lib" path="lib/excalibur-instrument-1.0.jar"/>
63
	<classpathentry kind="lib" path="lib/excalibur-logger-1.1.jar"/>
62
	<classpathentry kind="lib" path="lib/excalibur-logger-1.1.jar"/>
64
	<classpathentry kind="lib" path="lib/excalibur-pool-api-2.1.jar"/>
65
	<classpathentry kind="lib" path="lib/excalibur-pool-impl-2.1.jar"/>
66
	<classpathentry kind="lib" path="lib/excalibur-pool-instrumented-2.1.jar"/>
67
	<classpathentry kind="lib" path="lib/freemarker-2.3.23.jar"/>
63
	<classpathentry kind="lib" path="lib/freemarker-2.3.23.jar"/>
68
	<classpathentry kind="lib" path="lib/geronimo-jms_1.1_spec-1.1.1.jar"/>
64
	<classpathentry kind="lib" path="lib/geronimo-jms_1.1_spec-1.1.1.jar"/>
69
	<classpathentry kind="lib" path="lib/htmllexer-2.1.jar"/>
65
	<classpathentry kind="lib" path="lib/htmllexer-2.1.jar"/>
(-)lib/aareadme.txt (-12 / +4 lines)
Lines 91-112 Link Here
91
http://www.dnsjava.org/download/
91
http://www.dnsjava.org/download/
92
- DNSCacheManager
92
- DNSCacheManager
93
93
94
excalibur-datasource-1.1.1 (org.apache.avalon.excalibur.datasource)
95
--------------------------
96
- DataSourceElement (JDBC)
97
98
excalibur-instrument-1.0 (org.apache.excalibur.instrument)
99
------------------------
100
- used by excalibur-datasource
101
102
excalibur-logger-1.1 (org.apache.avalon.excalibur.logger)
94
excalibur-logger-1.1 (org.apache.avalon.excalibur.logger)
103
--------------------
95
--------------------
104
- LoggingManager
96
- LoggingManager
105
97
106
excalibur-pool-1.2 (org.apache.avalon.excalibur.pool)
107
------------------
108
- used by excalibur-datasource
109
110
freemarker-2.3.23.jar
98
freemarker-2.3.23.jar
111
----------------------
99
----------------------
112
- used by Report/Dashboard feature
100
- used by Report/Dashboard feature
Lines 227-232 Link Here
227
http://tika.apache.org/
215
http://tika.apache.org/
228
- Regular Expression Extractor
216
- Regular Expression Extractor
229
217
218
commons-dbcp2-2.1.1 (org.apache.commons.dbcp2)
219
--------------------------
220
- DataSourceElement (JDBC)
221
230
velocity-1.7
222
velocity-1.7
231
--------------
223
--------------
232
http://velocity.apache.org/download.cgi
224
http://velocity.apache.org/download.cgi
(-)licenses/bin/README.txt (-5 / +1 lines)
Lines 7-12 Link Here
7
bshclient.jar (part of JMeter)
7
bshclient.jar (part of JMeter)
8
commons-codec-1.10.jar
8
commons-codec-1.10.jar
9
commons-collections-3.2.2.jar
9
commons-collections-3.2.2.jar
10
commons-dbcp2-2.1.1.jar
10
commons-httpclient-3.1.jar
11
commons-httpclient-3.1.jar
11
commons-io-2.4.jar
12
commons-io-2.4.jar
12
commons-jexl-1.1.jar
13
commons-jexl-1.1.jar
Lines 16-27 Link Here
16
commons-math3-3.5.jar
17
commons-math3-3.5.jar
17
commons-net-3.4.jar
18
commons-net-3.4.jar
18
commons-pool2-2.4.2.jar
19
commons-pool2-2.4.2.jar
19
excalibur-datasource-2.1.jar
20
excalibur-instrument-1.0.jar
21
excalibur-logger-1.1.jar
20
excalibur-logger-1.1.jar
22
excalibur-pool-api-2.1.jar
23
excalibur-pool-impl-2.1.jar
24
excalibur-pool-instrumented-2.1.jar
25
geronimo-jms_1.1_spec-1.1.1.jar
21
geronimo-jms_1.1_spec-1.1.1.jar
26
httpclient-4.5.1.jar
22
httpclient-4.5.1.jar
27
httpcore-4.4.4.jar
23
httpcore-4.4.4.jar
(-)res/maven/ApacheJMeter_parent.pom (-41 / +6 lines)
Lines 60-65 Link Here
60
      <bcpkix.version>1.49</bcpkix.version>
60
      <bcpkix.version>1.49</bcpkix.version>
61
      <commons-codec.version>1.10</commons-codec.version>
61
      <commons-codec.version>1.10</commons-codec.version>
62
      <commons-collections.version>3.2.2</commons-collections.version>
62
      <commons-collections.version>3.2.2</commons-collections.version>
63
      <commons-dbcp2.version>2.1.1</commons-dbcp2.version>
63
      <commons-httpclient.version>3.1</commons-httpclient.version>
64
      <commons-httpclient.version>3.1</commons-httpclient.version>
64
      <commons-io.version>2.4</commons-io.version>
65
      <commons-io.version>2.4</commons-io.version>
65
      <commons-jexl.version>1.1</commons-jexl.version>
66
      <commons-jexl.version>1.1</commons-jexl.version>
Lines 70-82 Link Here
70
      <commons-net.version>3.4</commons-net.version>
71
      <commons-net.version>3.4</commons-net.version>
71
      <commons-pool2.version>2.4.2</commons-pool2.version>
72
      <commons-pool2.version>2.4.2</commons-pool2.version>
72
      <dnsjava.version>2.1.7</dnsjava.version>
73
      <dnsjava.version>2.1.7</dnsjava.version>
73
      <excalibur-datasource.version>2.1</excalibur-datasource.version>
74
      <excalibur-instrument.version>1.0</excalibur-instrument.version>
75
      <excalibur-logger.version>1.1</excalibur-logger.version>
74
      <excalibur-logger.version>1.1</excalibur-logger.version>
76
      <excalibur-pool.version>2.1</excalibur-pool.version>
77
      <excalibur-pool-api.version>${excalibur-pool.version}</excalibur-pool-api.version>
78
      <excalibur-pool-impl.version>${excalibur-pool.version}</excalibur-pool-impl.version>
79
      <excalibur-pool-instrumented.version>${excalibur-pool.version}</excalibur-pool-instrumented.version>
80
      <freemarker.version>2.3.23</freemarker.version>
75
      <freemarker.version>2.3.23</freemarker.version>
81
      <htmlparser.version>2.1</htmlparser.version>
76
      <htmlparser.version>2.1</htmlparser.version>
82
      <httpclient.version>4.5.1</httpclient.version>
77
      <httpclient.version>4.5.1</httpclient.version>
Lines 155-160 Link Here
155
        <version>${commons-collections.version}</version>
150
        <version>${commons-collections.version}</version>
156
      </dependency>
151
      </dependency>
157
      <dependency>
152
      <dependency>
153
        <groupId>org.apache.commons</groupId>
154
        <artifactId>commons-dbcp2</artifactId>
155
        <version>${commons-dbcp2.version}</version>
156
      </dependency>
157
      <dependency>
158
        <groupId>commons-httpclient</groupId>
158
        <groupId>commons-httpclient</groupId>
159
        <artifactId>commons-httpclient</artifactId>
159
        <artifactId>commons-httpclient</artifactId>
160
        <version>${commons-httpclient.version}</version>
160
        <version>${commons-httpclient.version}</version>
Lines 205-250 Link Here
205
        <version>${dnsjava.version}</version>
205
        <version>${dnsjava.version}</version>
206
      </dependency>
206
      </dependency>
207
      <dependency>
207
      <dependency>
208
        <groupId>excalibur-datasource</groupId>
209
        <artifactId>excalibur-datasource</artifactId>
210
        <version>${excalibur-datasource.version}</version>
211
        <exclusions>
212
            <exclusion>
213
                <groupId>excalibur-fortress</groupId>
214
                <artifactId>excalibur-fortress-container-api</artifactId>
215
            </exclusion>
216
            <exclusion>
217
                <groupId>excalibur-fortress</groupId>
218
                <artifactId>excalibur-fortress-meta</artifactId>
219
            </exclusion>
220
        </exclusions>
221
      </dependency>
222
      <dependency>
223
        <groupId>excalibur-instrument</groupId>
224
        <artifactId>excalibur-instrument</artifactId>
225
        <version>${excalibur-instrument.version}</version>
226
      </dependency>
227
      <dependency>
228
        <groupId>excalibur-logger</groupId>
208
        <groupId>excalibur-logger</groupId>
229
        <artifactId>excalibur-logger</artifactId>
209
        <artifactId>excalibur-logger</artifactId>
230
        <version>${excalibur-logger.version}</version>
210
        <version>${excalibur-logger.version}</version>
231
      </dependency>
211
      </dependency>
232
      <dependency>
212
      <dependency>
233
        <groupId>excalibur-pool</groupId>
234
        <artifactId>excalibur-pool-api</artifactId>
235
        <version>${excalibur-pool-api.version}</version>
236
      </dependency>
237
      <dependency>
238
        <groupId>excalibur-pool</groupId>
239
        <artifactId>excalibur-pool-impl</artifactId>
240
        <version>${excalibur-pool-impl.version}</version>
241
      </dependency>
242
      <dependency>
243
        <groupId>excalibur-pool</groupId>
244
        <artifactId>excalibur-pool-instrumented</artifactId>
245
        <version>${excalibur-pool-instrumented.version}</version>
246
      </dependency>
247
      <dependency>
248
        <groupId>org.htmlparser</groupId>
213
        <groupId>org.htmlparser</groupId>
249
        <artifactId>htmllexer</artifactId>
214
        <artifactId>htmllexer</artifactId>
250
        <version>${htmlparser.version}</version>
215
        <version>${htmlparser.version}</version>
(-)src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java (-82 / +91 lines)
Lines 24-35 Link Here
24
import java.util.Map;
24
import java.util.Map;
25
import java.util.Set;
25
import java.util.Set;
26
26
27
import org.apache.avalon.excalibur.datasource.DataSourceComponent;
27
import org.apache.commons.dbcp2.BasicDataSource;
28
import org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcDataSource;
29
import org.apache.avalon.framework.configuration.Configuration;
30
import org.apache.avalon.framework.configuration.ConfigurationException;
31
import org.apache.avalon.framework.configuration.DefaultConfiguration;
32
import org.apache.avalon.framework.logger.LogKitLogger;
33
import org.apache.jmeter.config.ConfigElement;
28
import org.apache.jmeter.config.ConfigElement;
34
import org.apache.jmeter.testbeans.TestBean;
29
import org.apache.jmeter.testbeans.TestBean;
35
import org.apache.jmeter.testbeans.TestBeanHelper;
30
import org.apache.jmeter.testbeans.TestBeanHelper;
Lines 42-67 Link Here
42
import org.apache.log.Logger;
37
import org.apache.log.Logger;
43
38
44
public class DataSourceElement extends AbstractTestElement
39
public class DataSourceElement extends AbstractTestElement
45
    implements ConfigElement, TestStateListener, TestBean
40
    implements ConfigElement, TestStateListener, TestBean {
46
    {
47
    private static final Logger log = LoggingManager.getLoggerForClass();
41
    private static final Logger log = LoggingManager.getLoggerForClass();
48
42
49
    private static final long serialVersionUID = 233L;
43
    private static final long serialVersionUID = 234L;
50
44
51
    private transient String dataSource, driver, dbUrl, username, password, checkQuery, poolMax, connectionAge, timeout,
45
    private transient String dataSource;
52
            trimInterval,transactionIsolation;
46
    private transient String driver;
47
    private transient String dbUrl;
48
    private transient String username;
49
    private transient String password;
50
    private transient String checkQuery;
51
    private transient String poolMax;
52
    private transient String connectionAge;
53
    private transient String timeout;
54
    private transient String trimInterval;
55
    private transient String transactionIsolation;
53
56
54
    private transient boolean keepAlive, autocommit;
57
    private transient boolean keepAlive;
58
    private transient boolean autocommit;
55
59
56
    /*
60
    /*
57
     *  The datasource is set up by testStarted and cleared by testEnded.
61
     *  The datasource is set up by testStarted and cleared by testEnded.
58
     *  These are called from different threads, so access must be synchronized.
62
     *  These are called from different threads, so access must be synchronized.
59
     *  The same instance is called in each case.
63
     *  The same instance is called in each case.
60
    */
64
    */
61
    private transient ResourceLimitingJdbcDataSource excaliburSource;
65
    private transient BasicDataSource dbcpDataSource;
62
66
63
    // Keep a record of the pre-thread pools so that they can be disposed of at the end of a test
67
    // Keep a record of the pre-thread pools so that they can be disposed of at the end of a test
64
    private transient Set<ResourceLimitingJdbcDataSource> perThreadPoolSet;
68
    private transient Set<BasicDataSource> perThreadPoolSet;
65
69
66
    public DataSourceElement() {
70
    public DataSourceElement() {
67
    }
71
    }
Lines 69-83 Link Here
69
    @Override
73
    @Override
70
    public void testEnded() {
74
    public void testEnded() {
71
        synchronized (this) {
75
        synchronized (this) {
72
            if (excaliburSource != null) {
76
            if (dbcpDataSource != null) {
73
                excaliburSource.dispose();
77
                try {
78
                    dbcpDataSource.close();
79
                } catch (SQLException ex) {
80
                    log.error("Error closing pool:"+getName(), ex);
81
                }
74
            }
82
            }
75
            excaliburSource = null;
83
            dbcpDataSource = null;
76
        }
84
        }
77
        if (perThreadPoolSet != null) {// in case
85
        if (perThreadPoolSet != null) {// in case
78
            for(ResourceLimitingJdbcDataSource dsc : perThreadPoolSet){
86
            for(BasicDataSource dsc : perThreadPoolSet){
79
                log.debug("Disposing pool: "+dsc.getInstrumentableName()+" @"+System.identityHashCode(dsc));
87
                log.debug("Closing pool: "+dsc.getJmxName()+" @"+System.identityHashCode(dsc));
80
                dsc.dispose();
88
                try {
89
                    dsc.close();
90
                } catch (SQLException ex) {
91
                    log.error("Error closing pool:"+getName(), ex);
92
                }
81
            }
93
            }
82
            perThreadPoolSet=null;
94
            perThreadPoolSet=null;
83
        }
95
        }
Lines 100-113 Link Here
100
            log.error("JDBC data source already defined for: "+poolName);
112
            log.error("JDBC data source already defined for: "+poolName);
101
        } else {
113
        } else {
102
            String maxPool = getPoolMax();
114
            String maxPool = getPoolMax();
103
            perThreadPoolSet = Collections.synchronizedSet(new HashSet<ResourceLimitingJdbcDataSource>());
115
            perThreadPoolSet = Collections.synchronizedSet(new HashSet<BasicDataSource>());
104
            if (maxPool.equals("0")){ // i.e. if we want per thread pooling
116
            if (maxPool.equals("0")){ // i.e. if we want per thread pooling
105
                variables.putObject(poolName, new DataSourceComponentImpl()); // pool will be created later
117
                variables.putObject(poolName, new DataSourceComponentImpl()); // pool will be created later
106
            } else {
118
            } else {
107
                ResourceLimitingJdbcDataSource src=initPool(maxPool);
119
                BasicDataSource src=initPool(maxPool);
108
                synchronized(this){
120
                synchronized(this){
109
                    excaliburSource = src;
121
                    dbcpDataSource = src;
110
                    variables.putObject(poolName, new DataSourceComponentImpl(excaliburSource));
122
                    variables.putObject(poolName, new DataSourceComponentImpl(dbcpDataSource));
111
                }
123
                }
112
            }
124
            }
113
        }
125
        }
Lines 122-128 Link Here
122
    public Object clone() {
134
    public Object clone() {
123
        DataSourceElement el = (DataSourceElement) super.clone();
135
        DataSourceElement el = (DataSourceElement) super.clone();
124
        synchronized (this) {
136
        synchronized (this) {
125
            el.excaliburSource = excaliburSource;
137
            el.dbcpDataSource = dbcpDataSource;
126
            el.perThreadPoolSet = perThreadPoolSet;            
138
            el.perThreadPoolSet = perThreadPoolSet;            
127
        }
139
        }
128
        return el;
140
        return el;
Lines 140-147 Link Here
140
        if (poolObject == null) {
152
        if (poolObject == null) {
141
            throw new SQLException("No pool found named: '" + poolName + "', ensure Variable Name matches Variable Name of JDBC Connection Configuration");
153
            throw new SQLException("No pool found named: '" + poolName + "', ensure Variable Name matches Variable Name of JDBC Connection Configuration");
142
        } else {
154
        } else {
143
            if(poolObject instanceof DataSourceComponent) {
155
            if(poolObject instanceof DataSourceComponentImpl) {
144
                DataSourceComponent pool = (DataSourceComponent) poolObject;
156
                DataSourceComponentImpl pool = (DataSourceComponentImpl) poolObject;
145
                return pool.getConnection();    
157
                return pool.getConnection();    
146
            } else {
158
            } else {
147
                String errorMsg = "Found object stored under variable:'"+poolName
159
                String errorMsg = "Found object stored under variable:'"+poolName
Lines 156-165 Link Here
156
     * Set up the DataSource - maxPool is a parameter, so the same code can
168
     * Set up the DataSource - maxPool is a parameter, so the same code can
157
     * also be used for setting up the per-thread pools.
169
     * also be used for setting up the per-thread pools.
158
    */
170
    */
159
    private ResourceLimitingJdbcDataSource initPool(String maxPool) {
171
    private BasicDataSource initPool(String maxPool) {
160
        ResourceLimitingJdbcDataSource source = null;
172
        BasicDataSource dataSource = new BasicDataSource();
161
        source = new ResourceLimitingJdbcDataSource();
162
        DefaultConfiguration config = new DefaultConfiguration("rl-jdbc"); // $NON-NLS-1$
163
173
164
        if (log.isDebugEnabled()) {
174
        if (log.isDebugEnabled()) {
165
            StringBuilder sb = new StringBuilder(40);
175
            StringBuilder sb = new StringBuilder(40);
Lines 173-189 Link Here
173
            sb.append(isAutocommit());
183
            sb.append(isAutocommit());
174
            log.debug(sb.toString());
184
            log.debug(sb.toString());
175
        }
185
        }
176
        DefaultConfiguration poolController = new DefaultConfiguration("pool-controller"); // $NON-NLS-1$
186
        int poolSize = Integer.parseInt(maxPool);
177
        poolController.setAttribute("max", maxPool); // $NON-NLS-1$
187
        dataSource.setMinIdle(0);
178
        poolController.setAttribute("max-strict", "true"); // $NON-NLS-1$ $NON-NLS-2$
188
        dataSource.setInitialSize(poolSize);
179
        poolController.setAttribute("blocking", "true"); // $NON-NLS-1$ $NON-NLS-2$
189
        dataSource.setMaxIdle(poolSize);
180
        poolController.setAttribute("timeout", getTimeout()); // $NON-NLS-1$
190
        dataSource.setMaxTotal(poolSize);
181
        poolController.setAttribute("trim-interval", getTrimInterval()); // $NON-NLS-1$
191
        dataSource.setMaxWaitMillis(Long.parseLong(getTimeout()));
182
        config.addChild(poolController);
183
192
184
        DefaultConfiguration autoCommit = new DefaultConfiguration("auto-commit"); // $NON-NLS-1$
193
        dataSource.setDefaultAutoCommit(Boolean.valueOf(isAutocommit()));
185
        autoCommit.setValue(String.valueOf(isAutocommit()));
186
        config.addChild(autoCommit);
187
194
188
        if (log.isDebugEnabled()) {
195
        if (log.isDebugEnabled()) {
189
            StringBuilder sb = new StringBuilder(40);
196
            StringBuilder sb = new StringBuilder(40);
Lines 195-205 Link Here
195
            sb.append(getCheckQuery());
202
            sb.append(getCheckQuery());
196
            log.debug(sb.toString());
203
            log.debug(sb.toString());
197
        }
204
        }
198
        DefaultConfiguration cfgKeepAlive = new DefaultConfiguration("keep-alive"); // $NON-NLS-1$
205
        dataSource.setTestOnBorrow(false);
199
        cfgKeepAlive.setAttribute("disable", String.valueOf(!isKeepAlive())); // $NON-NLS-1$
206
        dataSource.setTestOnReturn(false);
200
        cfgKeepAlive.setAttribute("age", getConnectionAge()); // $NON-NLS-1$
207
        dataSource.setTestOnCreate(false);
201
        cfgKeepAlive.setValue(getCheckQuery());
208
        dataSource.setTestWhileIdle(false);
202
        poolController.addChild(cfgKeepAlive);
209
210
        if(isKeepAlive()) {
211
            dataSource.setTestWhileIdle(true);
212
            dataSource.setValidationQuery(getCheckQuery());
213
            dataSource.setMaxConnLifetimeMillis(Long.parseLong(getConnectionAge()));            
214
            dataSource.setTimeBetweenEvictionRunsMillis(Integer.parseInt(getTrimInterval()));
215
        }
216
217
        int transactionIsolation = DataSourceElementBeanInfo.getTransactionIsolationMode(getTransactionIsolation());
218
        if (transactionIsolation >= 0) {
219
            dataSource.setDefaultTransactionIsolation(transactionIsolation);
220
        }
203
221
204
        String _username = getUsername();
222
        String _username = getUsername();
205
        if (log.isDebugEnabled()) {
223
        if (log.isDebugEnabled()) {
Lines 212-249 Link Here
212
            sb.append(_username);
230
            sb.append(_username);
213
            log.debug(sb.toString());
231
            log.debug(sb.toString());
214
        }
232
        }
215
        DefaultConfiguration cfgDriver = new DefaultConfiguration("driver"); // $NON-NLS-1$
233
        dataSource.setDriverClassName(getDriver());
216
        cfgDriver.setValue(getDriver());
234
        dataSource.setUrl(getDbUrl());
217
        config.addChild(cfgDriver);
218
        DefaultConfiguration cfgDbUrl = new DefaultConfiguration("dburl"); // $NON-NLS-1$
219
        cfgDbUrl.setValue(getDbUrl());
220
        config.addChild(cfgDbUrl);
221
235
222
        if (_username.length() > 0){
236
        if (_username.length() > 0){
223
            DefaultConfiguration cfgUsername = new DefaultConfiguration("user"); // $NON-NLS-1$
237
            dataSource.setUsername(_username);
224
            cfgUsername.setValue(_username);
238
            dataSource.setPassword(getPassword());
225
            config.addChild(cfgUsername);
226
            DefaultConfiguration cfgPassword = new DefaultConfiguration("password"); // $NON-NLS-1$
227
            cfgPassword.setValue(getPassword());
228
            config.addChild(cfgPassword);
229
        }
239
        }
230
240
231
        // log is required to ensure errors are available
241
        // log is required to ensure errors are available
232
        source.enableLogging(new LogKitLogger(log));
242
        //source.enableLogging(new LogKitLogger(log));
233
        try {
243
        if(log.isDebugEnabled()) {
234
            source.configure(config);
244
            log.debug("PoolConfiguration:"+this.dataSource);
235
            source.setInstrumentableName(getDataSource());
236
        } catch (ConfigurationException e) {
237
            log.error("Could not configure datasource for pool: "+getDataSource(),e);
238
        }
245
        }
239
        return source;
246
        return dataSource;
240
    }
247
    }
241
248
242
    // used to hold per-thread singleton connection pools
249
    // used to hold per-thread singleton connection pools
243
    private static final ThreadLocal<Map<String, ResourceLimitingJdbcDataSource>> perThreadPoolMap =
250
    private static final ThreadLocal<Map<String, BasicDataSource>> perThreadPoolMap =
244
        new ThreadLocal<Map<String, ResourceLimitingJdbcDataSource>>(){
251
        new ThreadLocal<Map<String, BasicDataSource>>(){
245
        @Override
252
        @Override
246
        protected Map<String, ResourceLimitingJdbcDataSource> initialValue() {
253
        protected Map<String, BasicDataSource> initialValue() {
247
            return new HashMap<>();
254
            return new HashMap<>();
248
        }
255
        }
249
    };
256
    };
Lines 253-283 Link Here
253
     * and per-thread pools.
260
     * and per-thread pools.
254
     *
261
     *
255
     */
262
     */
256
    private class DataSourceComponentImpl implements DataSourceComponent{
263
    private class DataSourceComponentImpl {
257
264
258
        private final ResourceLimitingJdbcDataSource sharedDSC;
265
        private final BasicDataSource sharedDSC;
259
266
260
        DataSourceComponentImpl(){
267
        DataSourceComponentImpl(){
261
            sharedDSC=null;
268
            sharedDSC=null;
262
        }
269
        }
263
270
264
        DataSourceComponentImpl(ResourceLimitingJdbcDataSource p_dsc){
271
        DataSourceComponentImpl(BasicDataSource p_dsc){
265
            sharedDSC=p_dsc;
272
            sharedDSC=p_dsc;
266
        }
273
        }
267
274
268
        @Override
275
        /**
276
         * @return Connection
277
         * @throws SQLException
278
         */
269
        public Connection getConnection() throws SQLException {
279
        public Connection getConnection() throws SQLException {
270
            Connection conn = null;
280
            Connection conn = null;
271
            ResourceLimitingJdbcDataSource dsc = null;
281
            BasicDataSource dsc = null;
272
            if (sharedDSC != null){ // i.e. shared pool
282
            if (sharedDSC != null){ // i.e. shared pool
273
                dsc = sharedDSC;
283
                dsc = sharedDSC;
274
            } else {
284
            } else {
275
                Map<String, ResourceLimitingJdbcDataSource> poolMap = perThreadPoolMap.get();
285
                Map<String, BasicDataSource> poolMap = perThreadPoolMap.get();
276
                dsc = poolMap.get(getDataSource());
286
                dsc = poolMap.get(getDataSourceName());
277
                if (dsc == null){
287
                if (dsc == null){
278
                    dsc = initPool("1");
288
                    dsc = initPool("1");
279
                    poolMap.put(getDataSource(),dsc);
289
                    poolMap.put(getDataSourceName(),dsc);
280
                    log.debug("Storing pool: "+dsc.getInstrumentableName()+" @"+System.identityHashCode(dsc));
290
                    log.debug("Storing pool: "+getName()+" @"+System.identityHashCode(dsc));
281
                    perThreadPoolSet.add(dsc);
291
                    perThreadPoolSet.add(dsc);
282
                }
292
                }
283
            }
293
            }
Lines 298-308 Link Here
298
            }
308
            }
299
            return conn;
309
            return conn;
300
        }
310
        }
301
302
        @Override
303
        public void configure(Configuration arg0) throws ConfigurationException {
304
        }
305
306
    }
311
    }
307
312
308
    @Override
313
    @Override
Lines 358-363 Link Here
358
    public void setDataSource(String dataSource) {
363
    public void setDataSource(String dataSource) {
359
        this.dataSource = dataSource;
364
        this.dataSource = dataSource;
360
    }
365
    }
366
    
367
    private String getDataSourceName() {
368
        return getDataSource();
369
    }
361
370
362
    /**
371
    /**
363
     * @return Returns the dbUrl.
372
     * @return Returns the dbUrl.
(-)xdocs/usermanual/component_reference.xml (-1 / +1 lines)
Lines 4143-4149 Link Here
4143
        </property>
4143
        </property>
4144
        <property name="Pool timeout" required="Yes">Pool throws an error if the timeout period is exceeded in the 
4144
        <property name="Pool timeout" required="Yes">Pool throws an error if the timeout period is exceeded in the 
4145
        process of trying to retrieve a connection</property>
4145
        process of trying to retrieve a connection</property>
4146
        <property name="Idle Cleanup Interval (ms)" required="Yes">This is used to specify how long idle connections will be maintained in the pool before being closed. For a complete explanation on how this works, see <a href="http://excalibur.apache.org/apidocs/org/apache/avalon/excalibur/pool/ResourceLimitingPool.html#trim%28%29">ResourceLimitingPool.trim()</a> (Defaults to "<code>60000</code>", 1 minute)</property>
4146
        <property name="Idle Cleanup Interval (ms)" required="Yes">This is used to specify how long idle connections will be maintained in the pool before being closed. (Defaults to "<code>60000</code>", 1 minute)</property>
4147
        <property name="Auto Commit" required="Yes">Turn auto commit on or off for the connections.</property>
4147
        <property name="Auto Commit" required="Yes">Turn auto commit on or off for the connections.</property>
4148
        <property name="Keep-alive" required="Yes">The keep-alive is used enable a mechanism to monitor the health of connections. If a connection has not been used for Max Connection Age (ms) then before returning the connection from a call to <code>getConnection()</code>, the connection is first used to ping the database to make sure that it is still alive. 
4148
        <property name="Keep-alive" required="Yes">The keep-alive is used enable a mechanism to monitor the health of connections. If a connection has not been used for Max Connection Age (ms) then before returning the connection from a call to <code>getConnection()</code>, the connection is first used to ping the database to make sure that it is still alive. 
4149
        Setting the age allows the 5 second age to be overridden. Validation Query will be used to test it.</property>
4149
        Setting the age allows the 5 second age to be overridden. Validation Query will be used to test it.</property>

Return to bug 58786