[ 
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)

Reply via email to