Author: fjuma
Date: 2009-02-06 13:42:55 -0500 (Fri, 06 Feb 2009)
New Revision: 138
Added:
trunk/jsfunit/testdata/datasources/
trunk/jsfunit/testdata/datasources/ExpectedMultipleDatasourcesAfterDeletion-ds.xml
trunk/jsfunit/testdata/datasources/MultipleDatasources-ds.xml
Modified:
trunk/jsfunit/pom.xml
trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/DatasourceTestBase.java
trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/as5/DatasourceTest.java
Log:
Added a datasource deletion test that is related to JBAS-6227 and added another test for
the "Flush" operation.
Made some code style changes.
Modified: trunk/jsfunit/pom.xml
===================================================================
--- trunk/jsfunit/pom.xml 2009-02-04 20:55:30 UTC (rev 137)
+++ trunk/jsfunit/pom.xml 2009-02-06 18:42:55 UTC (rev 138)
@@ -259,6 +259,10 @@
<file>${JBOSS_HOME}/server/default/conf/jboss-log4j.xml</file>
<tofile>conf/jboss-log4j.xml</tofile>
</configfile>
+ <configfile>
+
<file>${basedir}/testdata/datasources/MultipleDatasources-ds.xml</file>
+
<toFile>deploy/MultipleDatasources-ds.xml</toFile>
+ </configfile>
</configfiles>
</configuration>
<!-- /Container configuration -->
Modified: trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/DatasourceTestBase.java
===================================================================
--- trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/DatasourceTestBase.java 2009-02-04
20:55:30 UTC (rev 137)
+++ trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/DatasourceTestBase.java 2009-02-06
18:42:55 UTC (rev 138)
@@ -31,6 +31,8 @@
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import java.io.File;
+import java.io.BufferedReader;
+import java.io.FileReader;
import java.util.Map;
import java.util.HashMap;
import javax.naming.InitialContext;
@@ -70,7 +72,7 @@
protected final String xmlElementName;
public String getXmlElementName() { return xmlElementName; }
- // Also server as value for HTML Radio for Datasource type selection.
+ // Also serves as value for HTML Radio for Datasource type selection.
public String getHtmlRadioValue() { return xmlElementName; }
@@ -122,23 +124,15 @@
/** AS 4 */
AS4_ORACLE_LOCAL_TX("Oracle Local TX__Datasource"),
- /** AS 4 */
AS4_ORACLE_XA("Oracle XA__Datasource"),
- /** AS 4 */
AS4_DEFAULT("default__Datasource"),
-
/** AS 5 */
AS5_ORACLE_LOCAL_TX("Oracle Local TX__Local TX Datasource"),
- /** AS 5 */
AS5_DEFAULT_LOCAL_TX("default__Local TX Datasource"),
- /** AS 5 */
AS5_ORACLE_NO_TX("Oracle No TX__No TX Datasource"),
- /** AS 5 */
AS5_DEFAULT_NO_TX("default__No TX Datasource"),
- /** AS 5 */
AS5_ORACLE_XA("Oracle XA__XA Datasource"),
- /** AS 5 */
AS5_DEFAULT_XA("default__XA Datasource");
@@ -185,8 +179,8 @@
* appears in the left nav (eg. "Local TX Datasources")
*/
protected abstract void createDatasource(DatasourceType datasourceType,
- String datasourceTemplate,
- Map<String, String> propertiesMap) throws
IOException;
+ String datasourceTemplate,
+ Map<String, String> propertiesMap)
throws IOException;
/**
* Delete the datasource given by datasourceName.
@@ -359,6 +353,27 @@
}
/**
+ * compareFiles is used to check if the two given files are identical.
+ */
+ public void compareFiles(String actualFile, String expectedFile) throws Exception {
+ BufferedReader actual = new BufferedReader(new FileReader(actualFile));
+ BufferedReader expected = new BufferedReader(new FileReader(expectedFile));
+ String expectedLine;
+ String actualLine;
+
+ // Compare the two files
+ while((actualLine = actual.readLine()) != null) {
+ expectedLine = expected.readLine();
+ assertTrue("Extra line in -ds.xml file: " + actualLine, expectedLine
!= null);
+ assertEquals("Incorrect line in -ds.xml file: '" + actualLine +
"' - ",
+ expectedLine, actualLine);
+ }
+
+ expectedLine = expected.readLine();
+ assertTrue("Missing line in -ds.xml file: " + expectedLine,
expectedLine == null);
+ }
+
+ /**
* @return the suite of tests being tested
* @throws UnsupportedOperationException - you have to override this.
* Can't be abstract, must be static.
@@ -386,9 +401,8 @@
Map<String, String> propertiesMap = this.getDatasourceProperties();
createDatasource(DatasourceType.LOCAL_TX_DATASOURCE,
- //was: "default__Local TX Datasource",
- DatasourceType.LOCAL_TX_DATASOURCE.getTemplateHtmlSelectValue(), // TODO:
Redundant - remove.
- propertiesMap);
+ DatasourceType.LOCAL_TX_DATASOURCE.getTemplateHtmlSelectValue(),
// TODO: Redundant - remove.
+ propertiesMap);
client.click("resourceConfigurationForm:saveButton");
// Check for the appropriate success messages
@@ -396,7 +410,7 @@
checkClientAndServerMessages(expectedMessage, expectedMessage, false);
assertTrue("Datasource is not deployed (isDatasourceDeployed() returned
false).",
- isDatasourceDeployed(propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE));
+ isDatasourceDeployed(propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE));
assertTrue(checkProperties(propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE,
propertiesMap));
@@ -421,25 +435,23 @@
propertiesMap.put("user-name", "testUser");
propertiesMap.put("max-pool-size", "10");
propertiesMap.put("idle-timeout-minutes", "20");
- if( !isJBoss4 ){
- propertiesMap.put("prefill", "true");
- propertiesMap.put("set-tx-query-timeout", "true");
- propertiesMap.put("query-timeout", "1800");
- }
+ if(!isJBoss4){
+ propertiesMap.put("prefill", "true");
+ propertiesMap.put("set-tx-query-timeout", "true");
+ propertiesMap.put("query-timeout", "1800");
+ }
createDatasource(DatasourceType.NO_TX_DATASOURCE,
- //"default__No TX Datasource",
- isJBoss4 ?
- DatasourceTemplate.AS4_DEFAULT.getTemplateHtmlSelectValue() :
- DatasourceTemplate.AS5_DEFAULT_NO_TX.getTemplateHtmlSelectValue(),
+ //"default__No TX Datasource",
+ isJBoss4 ?
+ DatasourceTemplate.AS4_DEFAULT.getTemplateHtmlSelectValue()
:
+
DatasourceTemplate.AS5_DEFAULT_NO_TX.getTemplateHtmlSelectValue(),
propertiesMap);
client.click("resourceConfigurationForm:saveButton");
// Check for the appropriate error messages
- checkClientAndServerMessages(
- "An invalid value was specified for one or more properties",
- "Value is required", true);
-
+ checkClientAndServerMessages("An invalid value was specified for one or more
properties",
+ "Value is required", true);
}
@@ -461,7 +473,7 @@
propertiesMap.put("max-pool-size", "100000000000000");
createDatasource(DatasourceType.XA_DATASOURCE,
- DatasourceTemplate.AS5_DEFAULT_XA.getTemplateHtmlSelectValue(),
+ DatasourceTemplate.AS5_DEFAULT_XA.getTemplateHtmlSelectValue(),
propertiesMap);
client.click("resourceConfigurationForm:saveButton");
@@ -516,7 +528,7 @@
propertiesMap.put("max-pool-size", "-25");
createDatasource(DatasourceType.NO_TX_DATASOURCE,
- DatasourceType.NO_TX_DATASOURCE.getTemplateHtmlSelectValue(),
//"default__No TX Datasource",
+ DatasourceType.NO_TX_DATASOURCE.getTemplateHtmlSelectValue(),
//"default__No TX Datasource",
propertiesMap);
client.click("resourceConfigurationForm:saveButton");
@@ -538,7 +550,7 @@
propertiesMap.put("connection-url", "jdbc:hsqldb:.");
createDatasource(DatasourceType.LOCAL_TX_DATASOURCE,
- DatasourceType.LOCAL_TX_DATASOURCE.getTemplateHtmlSelectValue(),
//"default__Local TX Datasource",
+ DatasourceType.LOCAL_TX_DATASOURCE.getTemplateHtmlSelectValue(),
//"default__Local TX Datasource",
propertiesMap);
client.click("resourceConfigurationForm:saveButton");
@@ -566,14 +578,12 @@
+ propertiesMap.get("jndi-name") +
"'";
checkClientAndServerMessages(expectedMessage, expectedMessage, false);
- assertFalse(isDatasourceDeployed(
- propertiesMap.get("jndi-name"),
- DatasourceType.LOCAL_TX_DATASOURCE));
+ assertFalse(isDatasourceDeployed(propertiesMap.get("jndi-name"),
+ DatasourceType.LOCAL_TX_DATASOURCE));
- // Make sure the entry was removed from the -ds.xml file
- assertFalse(containsElement(
- propertiesMap.get("jndi-name"),
- DatasourceType.LOCAL_TX_DATASOURCE.getXmlElementName() ));
//"local-tx-datasource"
+ // Make sure the entry was removed from the -ds.xml file (See JOPR-44)
+ assertFalse(containsElement(propertiesMap.get("jndi-name"),
+
DatasourceType.LOCAL_TX_DATASOURCE.getXmlElementName()));
}
/**
@@ -592,7 +602,7 @@
assertFalse(isDatasourceDeployed(propertiesMap.get("jndi-name"),
DatasourceType.NO_TX_DATASOURCE));
- // Make sure the entry was removed from the -ds.xml file
+ // Make sure the entry was removed from the -ds.xml file (See JOPR-44)
assertFalse(containsElement(propertiesMap.get("jndi-name"),
"no-tx-datasource"));
}
@@ -613,11 +623,11 @@
assertFalse(isDatasourceDeployed(propertiesMap.get("jndi-name"),
DatasourceType.XA_DATASOURCE));
- // Make sure the entry was removed from the -ds.xml file
+ // Make sure the entry was removed from the -ds.xml file (See JOPR-44)
assertFalse(containsElement(propertiesMap.get("jndi-name"),
"xa-datasource"));
}
-
+
/*
* METRICS TESTS
*/
@@ -641,7 +651,7 @@
expectedMetrics.put("Max Size", "20.0");
expectedMetrics.put("Min Size", "5.0");
- checkMetrics( propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE, expectedMetrics );
+ checkMetrics(propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE, expectedMetrics);
// Clean up
deleteDatasource(propertiesMap.get("jndi-name"));
@@ -673,7 +683,7 @@
expectedMetrics.put("Max Size", "20.0");
expectedMetrics.put("Min Size", "5.0");
- checkMetrics( propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE, expectedMetrics );
+ checkMetrics(propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE, expectedMetrics);
// Clean up
disconnectDB(con);
@@ -690,14 +700,9 @@
Map<String, String> propertiesMap =
createNoTXDatasource("MetricsMultipleConnectionDS");
// Establish multiple connections
- ArrayList<Connection> connections = new ArrayList<Connection>();
- for(int i = 0; i <= 5; i++) {
- Connection con = connectDB(propertiesMap.get("jndi-name"),
- propertiesMap.get("user-name"),
- propertiesMap.get("password"));
- assertNotNull(con);
- connections.add(con);
- }
+ ArrayList<Connection> connections = createConnections(6,
propertiesMap.get("jndi-name"),
+
propertiesMap.get("user-name"),
+
propertiesMap.get("password"));
// Set up the expected values
Map<String, String> expectedMetrics = new HashMap<String, String>();
@@ -710,13 +715,10 @@
expectedMetrics.put("Max Size", "20.0");
expectedMetrics.put("Min Size", "5.0");
- checkMetrics( propertiesMap.get("jndi-name"),
DatasourceType.NO_TX_DATASOURCE, expectedMetrics );
+ checkMetrics(propertiesMap.get("jndi-name"),
DatasourceType.NO_TX_DATASOURCE, expectedMetrics);
// Clean up
- for(int i = 0; i <= 5; i++) {
- disconnectDB(connections.get(i));
- }
-
+ closeConnections(connections);
deleteDatasource(propertiesMap.get("jndi-name"));
}
@@ -730,14 +732,9 @@
Map<String, String> propertiesMap =
createNoTXDatasource("MetricsCloseConnectionsDS");
// Establish some connections
- ArrayList<Connection> connections = new ArrayList<Connection>();
- for(int i = 0; i <= 4; i++) {
- Connection con = connectDB(propertiesMap.get("jndi-name"),
- propertiesMap.get("user-name"),
- propertiesMap.get("password"));
- assertNotNull(con);
- connections.add(con);
- }
+ ArrayList<Connection> connections = createConnections(5,
propertiesMap.get("jndi-name"),
+
propertiesMap.get("user-name"),
+
propertiesMap.get("password"));
// Close some connections
disconnectDB(connections.get(0));
@@ -972,10 +969,10 @@
for(Iterator i = metricsMap.keySet().iterator(); i.hasNext();) {
String metricName = (String)i.next();
- String expected = metricsMap.get(metricName);
- String actual = getMetricValueFromTable(metricName,
"dataTable");
- assertEquals("Incorrect metric value for
'"+metricName+"'='"+actual+"'," +
- " expected '"+expected+"'", actual, expected);
+ String expected = metricsMap.get(metricName);
+ String actual = getMetricValueFromTable(metricName, "dataTable");
+ assertEquals("Incorrect metric value for
'"+metricName+"'='"+actual+"'," +
+ " expected '"+expected+"'",
expected, actual);
}
// Check values under the "Summary" tab
@@ -988,11 +985,10 @@
for(Iterator i = summaryMetrics.iterator(); i.hasNext(); ) {
String metricName = (String)i.next();
-
- String expected = metricsMap.get(metricName);
- String actual = getMetricValueFromTable(metricName,
"dataTable");
+ String expected = metricsMap.get(metricName);
+ String actual = getMetricValueFromTable(metricName, "dataTable");
assertEquals("Incorrect summary metric value for
'"+metricName+"'='"+actual+"'," +
- " expected '"+expected+"'", actual, expected);
+ " expected '"+expected+"'", expected, actual);
}
}
Modified: trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/as5/DatasourceTest.java
===================================================================
--- trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/as5/DatasourceTest.java 2009-02-04
20:55:30 UTC (rev 137)
+++ trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/as5/DatasourceTest.java 2009-02-06
18:42:55 UTC (rev 138)
@@ -207,6 +207,34 @@
}
/*
+ * DELETION TESTS
+ */
+
+ /**
+ * Test the case in which the -ds.xml file that contains the datasource
+ * to be deleted contains more than one datasource. Make sure the entire
+ * -ds.xml file does not get deleted. (See JBAS-6227.)
+ */
+ public void testDeleteDatasourceComplexDSDotXmlFile() throws Exception {
+
+ // MultipleDatasources-ds.xml contains two Local TX Datasources and
+ // a No TX Datasource. We will delete the No TX Datasource (NoTX-ds.xml).
+ deleteDatasource("NoTX");
+
+ // Check for the appropriate success messages
+ String expectedMessage = "Successfully deleted No TX Datasource
'NoTX'";
+ checkClientAndServerMessages(expectedMessage, expectedMessage, false);
+
+ // Make sure only the No TX Datasource entry was removed
+ // from the -ds.xml file
+ String actualDSFile = System.getProperty("jsfunit.deploy.dir")
+ + "/MultipleDatasources-ds.xml";
+ String expectedDSFile = System.getProperty("jsfunit.testdata")
+ +
"/datasources/ExpectedMultipleDatasourcesAfterDeletion-ds.xml";
+ compareFiles(actualDSFile, expectedDSFile);
+ }
+
+ /*
* CONFIGURATION TESTS
*/
@@ -227,6 +255,8 @@
navigateToPage(propertiesMap.get("jndi-name"),
DatasourceType.XA_DATASOURCE,
"configurationTab");
+
+ // See EMBJOPR-58
assertFalse("The configuration page could not be displayed",
client.getPageAsText().contains("There was an error retrieving
the configuration for this resource"));
@@ -270,6 +300,8 @@
navigateToPage(propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE,
"configurationTab");
+
+ // See EMBJOPR-58
assertFalse("The configuration page could not be displayed",
client.getPageAsText().contains("There was an error retrieving
the configuration for this resource"));
@@ -306,6 +338,8 @@
navigateToPage(propertiesMap.get("jndi-name"),
DatasourceType.NO_TX_DATASOURCE,
"configurationTab");
+
+ // See EMBJOPR-58
assertFalse("The configuration page could not be displayed",
client.getPageAsText().contains("There was an error retrieving
the configuration for this resource"));
@@ -334,13 +368,17 @@
deleteDatasource(propertiesMap.get("jndi-name"));
}
+ /*
+ * OPERATIONS TESTS
+ */
+
/**
- * Test the "Flush" operation.
+ * Test the "Flush" operation after creating a new datasource.
*/
- public void testFlushOperation() throws IOException {
+ public void testFlushOperationAfterDatasourceCreation() throws IOException {
// Min pool size will be 6, max pool size will be 15
- Map<String, String> propertiesMap =
createXADatasource("FlushDS");
+ Map<String, String> propertiesMap =
createXADatasource("FlushAfterDatasourceCreationDS");
performDatasourceOperation(propertiesMap.get("jndi-name"),
DatasourceType.XA_DATASOURCE, "Flush");
@@ -359,9 +397,45 @@
// Clean up
deleteDatasource(propertiesMap.get("jndi-name"));
- }
+ }
/**
+ * Test the "Flush" operation after multiple connections to a database
+ * have been created.
+ */
+ public void testFlushOperationAfterMultipleConnections() throws Exception {
+
+ // Min pool size will be 5, max pool size will be 20
+ Map<String, String> propertiesMap =
createLocalTXDatasource("FlushAfterMultipleConnectionsDS");
+
+ // Create some connections and then close them. This will
+ // result in non-zero values for "Connection Created Count" and
+ // "Max Connections In Use Count".
+ ArrayList<Connection> connections = createConnections(5,
propertiesMap.get("jndi-name"),
+
propertiesMap.get("user-name"),
+
propertiesMap.get("password"));
+ closeConnections(connections);
+
+ performDatasourceOperation(propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE, "Flush");
+
+ // Make sure the metrics are updated appropriately
+ Map<String, String> expectedMetrics = new HashMap<String, String>();
+ expectedMetrics.put("Available Connection Count", "20.0");
+ expectedMetrics.put("Connection Count", "0.0");
+ expectedMetrics.put("Connection Created Count", "0.0");
+ expectedMetrics.put("Connection Destroyed Count", "0.0");
+ expectedMetrics.put("In Use Connection Count", "0.0");
+ expectedMetrics.put("Max Connections In Use Count", "0.0");
+ expectedMetrics.put("Max Size", "20.0");
+ expectedMetrics.put("Min Size", "5.0");
+
+ checkMetrics(propertiesMap.get("jndi-name"),
DatasourceType.LOCAL_TX_DATASOURCE, expectedMetrics);
+
+ // Clean up
+ deleteDatasource(propertiesMap.get("jndi-name"));
+ }
+
+ /**
* Test the "List Formatted Sub Pool Statistics" after creating a new
* datasource.
*/
Added: trunk/jsfunit/testdata/datasources/ExpectedMultipleDatasourcesAfterDeletion-ds.xml
===================================================================
--- trunk/jsfunit/testdata/datasources/ExpectedMultipleDatasourcesAfterDeletion-ds.xml
(rev 0)
+++
trunk/jsfunit/testdata/datasources/ExpectedMultipleDatasourcesAfterDeletion-ds.xml 2009-02-06
18:42:55 UTC (rev 138)
@@ -0,0 +1,40 @@
+<datasources>
+ <local-tx-datasource>
+ <jndi-name>LocalTX1</jndi-name>
+ <connection-url>jdbc:hsqldb:.</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ <user-name>sa</user-name>
+ <password></password>
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>20</max-pool-size>
+ <idle-timeout-minutes>10</idle-timeout-minutes>
+ <track-statements/>
+ <security-domain>HsqlDbRealm</security-domain>
+ <prepared-statement-cache-size>32</prepared-statement-cache-size>
+ <metadata>
+ <type-mapping>FirstSQL/J</type-mapping>
+ </metadata>
+ </local-tx-datasource>
+ <local-tx-datasource>
+ <jndi-name>LocalTX2</jndi-name>
+ <use-java-context>false</use-java-context>
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>10</max-pool-size>
+ <idle-timeout-minutes>15</idle-timeout-minutes>
+ <background-validation>false</background-validation>
+ <background-validation-millis>10000</background-validation-millis>
+ <validate-on-match>false</validate-on-match>
+ <metadata>
+ <type-mapping>FirstSQL/J</type-mapping>
+ </metadata>
+ <user-name>sa</user-name>
+ <password></password>
+ <prepared-statement-cache-size>10</prepared-statement-cache-size>
+ <share-prepared-statements>false</share-prepared-statements>
+ <set-tx-query-timeout>false</set-tx-query-timeout>
+ <query-timeout>36000</query-timeout>
+ <use-try-lock>60000</use-try-lock>
+ <connection-url>jdbc:hsqldb:.</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ </local-tx-datasource>
+</datasources>
Added: trunk/jsfunit/testdata/datasources/MultipleDatasources-ds.xml
===================================================================
--- trunk/jsfunit/testdata/datasources/MultipleDatasources-ds.xml
(rev 0)
+++ trunk/jsfunit/testdata/datasources/MultipleDatasources-ds.xml 2009-02-06 18:42:55 UTC
(rev 138)
@@ -0,0 +1,56 @@
+<datasources>
+ <local-tx-datasource>
+ <jndi-name>LocalTX1</jndi-name>
+ <connection-url>jdbc:hsqldb:.</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ <user-name>sa</user-name>
+ <password></password>
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>20</max-pool-size>
+ <idle-timeout-minutes>10</idle-timeout-minutes>
+ <track-statements/>
+ <security-domain>HsqlDbRealm</security-domain>
+ <prepared-statement-cache-size>32</prepared-statement-cache-size>
+ <metadata>
+ <type-mapping>FirstSQL/J</type-mapping>
+ </metadata>
+ </local-tx-datasource>
+ <no-tx-datasource>
+ <jndi-name>NoTX</jndi-name>
+ <connection-url>jdbc:hsqldb:.</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ <user-name>sa</user-name>
+ <password></password>
+ <min-pool-size>10</min-pool-size>
+ <max-pool-size>30</max-pool-size>
+ <idle-timeout-minutes>5</idle-timeout-minutes>
+ <track-statements/>
+ <security-domain>HsqlDbRealm</security-domain>
+ <prepared-statement-cache-size>20</prepared-statement-cache-size>
+ <metadata>
+ <type-mapping>FirstSQL/J</type-mapping>
+ </metadata>
+ </no-tx-datasource>
+ <local-tx-datasource>
+ <jndi-name>LocalTX2</jndi-name>
+ <use-java-context>false</use-java-context>
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>10</max-pool-size>
+ <idle-timeout-minutes>15</idle-timeout-minutes>
+ <background-validation>false</background-validation>
+ <background-validation-millis>10000</background-validation-millis>
+ <validate-on-match>false</validate-on-match>
+ <metadata>
+ <type-mapping>FirstSQL/J</type-mapping>
+ </metadata>
+ <user-name>sa</user-name>
+ <password></password>
+ <prepared-statement-cache-size>10</prepared-statement-cache-size>
+ <share-prepared-statements>false</share-prepared-statements>
+ <set-tx-query-timeout>false</set-tx-query-timeout>
+ <query-timeout>36000</query-timeout>
+ <use-try-lock>60000</use-try-lock>
+ <connection-url>jdbc:hsqldb:.</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ </local-tx-datasource>
+</datasources>