arrow_back history picture_as_pdf This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ~~NOTRANS~~ ~~Title: Connection Pooling~~ Our [[https://www.sibvisions.com/files/jvx/current/api/com/sibvisions/rad/persist/jdbc/DBAccess.html|DBAccess]] supports a simple configurable connection pool with [[https://www.sibvisions.com/files/jvx/current/api/com/sibvisions/rad/persist/jdbc/ConnectionPoolProvider.html|ConnectionPoolProvider]]. The ConnectionPoolProvider creates a default DataSource and an [[https://www.sibvisions.com/files/jvx/current/api/com/sibvisions/rad/persist/jdbc/IConnectionPool.html|IConnectionPool]]. We currently use [[https://github.com/brettwooldridge/HikariCP|Hikari]] and [[https://tomcat.apache.org/tomcat-9.0-doc/jdbc-pool.html|Tomcat]] for our connection pool implementation. With Hikari we have an independent solution and Tomcat will only work on Tomcat application servers. == Configuration == The connection pool can be enabled by simply calling ''setConnectionPoolEnabled(true)'' on DBAccess, or it can be enabled in [[jvx:common:setup:dbindependent_config|config.xml]]. Example: <file xml> <application> ... <connectionpool enabled = "true"/> ... </application> </file> We support different use-cases: - Implementing getDataSource() in application life cycle object (Application.java) - Configure specific IDataSourceCreator in config.xml, e.g.\\ <code> <connectionpool enabled = "true"> <dataSourceCreatorClass>com.sibvisions.rad.persist.jdbc.datasource.TomcatDataSourceCreator</dataSourceCreatorClass> </connectionpool> </code> - Configure ServiceLoader for IDataSourceCreator - Register custom IDataSourceCreator in ConnectionPoolProvider, e.g. ''ConnectionPoolProvider.registerDataSourceCreator(CustomDataSourceCreator.class);'' \\ There are 2 IDataSourceCreator registered by default:\\ * HikariDataSourceCreator\\ * TomcatDataSourceCreator The default implementations of IDataSourceCreator supports several parameter by default. The following example config.xml shows all supported parameters. <file xml> <application> ... <connectionpool enabled = "true"> <!-- ---- General parameters ---- --> <!-- dataSourceCreatorClass is optional, HikaraDataSourceCreator or TomcatDataSourceCreator will be used by default depending on availability. <dataSourceCreatorClass>com.sibvisions.rad.persist.jdbc.datasource.TomcatDataSourceCreator</dataSourceCreatorClass> --> <!-- maxActive is optional, 80 will be used by default. <maxActive>80</maxActive> --> <!-- minIdle is optional, 10 will be used by default. <minIdle>10</minIdle> --> <!-- useAliveQuery is optional, true sets DBAccess.getAliveQuery(), false is default, therefore either validationQuery or connection.isValid() will be used. <useAliveQuery>true</useAliveQuery> --> <!-- validationQuery is optional, if it is not set, Hikari and Tomcat pool uses connection.isValid(). <validationQuery>select 1</validationQuery> --> <!-- validationQueryTimeout is optional, in seconds, if it is not set, Hikari and Tomcat default values are used. <validationQueryTimeout>3</validationQueryTimeout> --> <!-- ---- Hikari specific parameters ---- --> <!-- validationTimeout is optional, in milliseconds, if it is not set, validationQueryTimeout or Hikari default value is used. <validationTimeout>1000</validationTimeout> --> <!-- keepaliveTime is optional, in milliseconds, if it is not set, Hikari default value is used. <keepaliveTime>1000</keepaliveTime> --> <!-- ---- Tomcat specific parameters ---- --> <!-- maxIdle is optional, if it is not set, minIdle is used. <maxIdle>10</maxIdle> --> <!-- initialSize is optional, if it is not set, minIdle is used. <initialSize>10</initialSize> --> <!-- testWhileIdle is optional, if it is not set, false is used. <testWhileIdle>true</testWhileIdle> --> <!-- testOnBorrow is optional, if it is not set, true is used. <testOnBorrow>true</testOnBorrow> --> <!-- testOnReturn is optional, if it is not set, false is used. <testOnReturn>true</testOnReturn> --> <!-- validationInterval is optional, in milliseconds, if it is not set, Tomcat default value is used. <validationInterval>3000</validationInterval> --> <!-- timeBetweenEvictionRunsMillis is optional, in milliseconds, if it is not set, Tomcat default value is used. <timeBetweenEvictionRunsMillis>5000</timeBetweenEvictionRunsMillis> --> <!-- minEvictableIdleTimeMillis is optional, in milliseconds, if it is not set, Tomcat default value is used. <minEvictableIdleTimeMillis>3000</minEvictableIdleTimeMillis> --> <!-- removeAbandoned is optional, if it is not set, Tomcat default value is used. <removeAbandoned>true</removeAbandoned> --> <!-- removeAbandonedTimeout is optional, in seconds, if it is not set, Tomcat default value is used. <removeAbandonedTimeout>3000</removeAbandonedTimeout> --> </connectionpool> ... </application> </file>