[
https://issues.apache.org/jira/browse/TOMEE-837?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Romain Manni-Bucau resolved TOMEE-837.
--------------------------------------
Resolution: Fixed
Fix Version/s: 1.6.0
> TomEE DataSource configuration does not honour actual configuration
> -------------------------------------------------------------------
>
> Key: TOMEE-837
> URL: https://issues.apache.org/jira/browse/TOMEE-837
> Project: TomEE
> Issue Type: Bug
> Affects Versions: 1.5.1
> Reporter: Bertrand Guay-Paquet
> Labels: configuration, datasource
> Fix For: 1.6.0
>
>
> The Tomcat "StatementCache" jdbc interceptor is always added, no matter what
> the actual configuration is. Following the TomEE documentation, the following
> default DataSource property values are added to each created DataSource :
> PoolPreparedStatements=false, MaxOpenPreparedStatements=0
> The method TomEEDataSourceCreator.updateProperties(SuperProperties,
> Properties, String) at line 138 checks for the presence of the
> "MaxOpenPreparedStatements" or "PoolPreparedStatements" properties. If they
> are present, the StatementCache "jdbcInterceptors" property is added to the
> properties passed on to Tomcat. The test to add the StatementCache is wrong:
> StatementCache should be added only if PoolPreparedStatements == true and NOT
> if the "PoolPreparedStatements" property is merely present since it's always
> the case.
> Also, in the same method between lines 101 and 112, there is unreachable
> code. Here is the code:
> final String maxWait = toMillis((String) properties.remove("maxWaitTime"));
> if (properties.containsKey("maxWaitTime") &&
> !properties.containsKey("maxWait")) {
> converted.setProperty("maxWait", maxWait);
> }
> final String tb = toMillis((String)
> properties.remove("timeBetweenEvictionRuns"));
> if (properties.containsKey("timeBetweenEvictionRuns") &&
> !properties.containsKey("timeBetweenEvictionRunsMillis")) {
> converted.setProperty("timeBetweenEvictionRunsMillis", tb);
> }
> final String minEvict = toMillis((String)
> properties.remove("minEvictableIdleTime"));
> if (properties.containsKey("minEvictableIdleTime") &&
> !properties.containsKey("minEvictableIdleTimeMillis")) {
> converted.setProperty("minEvictableIdleTimeMillis", minEvict);
> }
> In each case, the property is removed and then we check if it's there. This
> test cannot pass. The first condition of each "if" statement should be of the
> following form, taken a few lines above in the same file:
> final String user = (String) properties.remove("user");
> if (user != null && !properties.containsKey("username")) {
> converted.setProperty("username", user);
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)