[
https://issues.apache.org/jira/browse/DBCP-535?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Seele updated DBCP-535:
-------------------------------
Description:
We are using org.apache.commons.dbcp2.datasources.SharedPoolDataSource via JNDI
and need to send special *connectionProperties* to our *Oracle JDBC Driver*.
Unfortunaly that does not work.
Here is an example based on your [JNDI
Howto|https://commons.apache.org/proper/commons-dbcp/guide/jndi-howto.html]:
{{InitialContext ic = new InitialContext();}}
{{// Construct DriverAdapterCPDS reference}}
{{Reference cpdsRef = new
Reference("org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS",}}
{{"org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS", null);}}
{{cpdsRef.add(new StringRefAddr("driver", "oracle.jdbc.OracleDriver"));}}
{{cpdsRef.add(new StringRefAddr("url", "jdbc:oracle:thin:@server:port:sid"));}}
{{cpdsRef.add(new StringRefAddr("user", "foo"));}}
{{cpdsRef.add(new StringRefAddr("password", "bar"));}}
{{ic.rebind("jdbc/cpds", cpdsRef);}}
{\{ // Construct SharedPoolDataSource reference}}
\{{ Reference ref = new
Reference("org.apache.commons.dbcp2.datasources.SharedPoolDataSource",}}
\{{ "org.apache.commons.dbcp2.datasources.SharedPoolDataSourceFactory",
null);}}
\{{ ref.add(new StringRefAddr("dataSourceName", "jdbc/cpds"));}}
\{{ ref.add(new StringRefAddr("defaultMaxTotal", "100"));}}
\{{ ref.add(new StringRefAddr("defaultMaxIdle", "30"));}}
\{{ ref.add(new StringRefAddr("defaultMaxWaitMillis", "10000"));}}
// the connection properties we need to set
{{ref.add(new StringRefAddr("connectionProperties",
"defaultRowPrefetch=100"));}}
\{{ ic.rebind("jdbc/shared", ref);}}
{\{ // Use}}
\{{ InitialContext ic2 = new InitialContext();}}
\{{ DataSource ds = (DataSource) ic2.lookup("jdbc/shared");}}
\{{ assertNotNull(ds);}}
\{{ Connection conn = ds.getConnection("foo","bar");}}
\{{ assertNotNull(conn);}}
\{{ conn.close();}}
Normally the defaultRowPrefetch in the oracle driver should be 100 but it's
still the default value (10).
The same happens when we use *PerUserPoolDataSource* instead of
*SharedPoolDataSource*.
was:
We are using org.apache.commons.dbcp2.datasources.SharedPoolDataSource via JNDI
and need to send special *connectionProperties* to our *Oracle JDBC Driver*.
Unfortunaly that does not work.
Here is an example based on your [JNDI
Howto|https://commons.apache.org/proper/commons-dbcp/guide/jndi-howto.html]:
{{InitialContext ic = new InitialContext();}}
{{// Construct DriverAdapterCPDS reference}}
{{ Reference cpdsRef = new
Reference("org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS",}}
{{ "org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS", null);}}
{{ cpdsRef.add(new StringRefAddr("driver", "oracle.jdbc.OracleDriver"));}}
{{ cpdsRef.add(new StringRefAddr("url", "jdbc:oracle:thin:@server:port:sid"));}}
{{ cpdsRef.add(new StringRefAddr("user", "foo"));}}
{{ cpdsRef.add(new StringRefAddr("password", "bar"));}}
{{ ic.rebind("jdbc/cpds", cpdsRef);}}
{{ // Construct SharedPoolDataSource reference}}
{{ Reference ref = new
Reference("org.apache.commons.dbcp2.datasources.SharedPoolDataSource",}}
{{ "org.apache.commons.dbcp2.datasources.SharedPoolDataSourceFactory", null);}}
{{ ref.add(new StringRefAddr("dataSourceName", "jdbc/cpds"));}}
{{ ref.add(new StringRefAddr("defaultMaxTotal", "100"));}}
{{ ref.add(new StringRefAddr("defaultMaxIdle", "30"));}}
{{ ref.add(new StringRefAddr("defaultMaxWaitMillis", "10000"));}}
// the connection properties we need to set
{{ref.add(new StringRefAddr("connectionProperties",
"defaultRowPrefetch=100"));}}
{{ ic.rebind("jdbc/shared", ref);}}
{{ // Use}}
{{ InitialContext ic2 = new InitialContext();}}
{{ DataSource ds = (DataSource) ic2.lookup("jdbc/shared");}}
{{ assertNotNull(ds);}}
{{ Connection conn = ds.getConnection("foo","bar");}}
{{ assertNotNull(conn);}}
{{ conn.close();}}
Normally the defaultRowPrefetch in the oracle driver should be 100 but it's
still the default value (10).
The same happens when we use *PerUserPoolDataSource* instead of
*SharedPoolDataSource*.
> SharedPoolDataSource does not sent connectionProperties to the JDBC driver
> --------------------------------------------------------------------------
>
> Key: DBCP-535
> URL: https://issues.apache.org/jira/browse/DBCP-535
> Project: Commons DBCP
> Issue Type: Bug
> Affects Versions: 2.5.0
> Environment: Windows 10 / Java 11
> Reporter: Michael Seele
> Priority: Major
>
> We are using org.apache.commons.dbcp2.datasources.SharedPoolDataSource via
> JNDI and need to send special *connectionProperties* to our *Oracle JDBC
> Driver*. Unfortunaly that does not work.
> Here is an example based on your [JNDI
> Howto|https://commons.apache.org/proper/commons-dbcp/guide/jndi-howto.html]:
> {{InitialContext ic = new InitialContext();}}
> {{// Construct DriverAdapterCPDS reference}}
> {{Reference cpdsRef = new
> Reference("org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS",}}
> {{"org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS", null);}}
> {{cpdsRef.add(new StringRefAddr("driver", "oracle.jdbc.OracleDriver"));}}
> {{cpdsRef.add(new StringRefAddr("url",
> "jdbc:oracle:thin:@server:port:sid"));}}
> {{cpdsRef.add(new StringRefAddr("user", "foo"));}}
> {{cpdsRef.add(new StringRefAddr("password", "bar"));}}
> {{ic.rebind("jdbc/cpds", cpdsRef);}}
> {\{ // Construct SharedPoolDataSource reference}}
> \{{ Reference ref = new
> Reference("org.apache.commons.dbcp2.datasources.SharedPoolDataSource",}}
> \{{ "org.apache.commons.dbcp2.datasources.SharedPoolDataSourceFactory",
> null);}}
> \{{ ref.add(new StringRefAddr("dataSourceName", "jdbc/cpds"));}}
> \{{ ref.add(new StringRefAddr("defaultMaxTotal", "100"));}}
> \{{ ref.add(new StringRefAddr("defaultMaxIdle", "30"));}}
> \{{ ref.add(new StringRefAddr("defaultMaxWaitMillis", "10000"));}}
> // the connection properties we need to set
> {{ref.add(new StringRefAddr("connectionProperties",
> "defaultRowPrefetch=100"));}}
> \{{ ic.rebind("jdbc/shared", ref);}}
> {\{ // Use}}
> \{{ InitialContext ic2 = new InitialContext();}}
> \{{ DataSource ds = (DataSource) ic2.lookup("jdbc/shared");}}
> \{{ assertNotNull(ds);}}
> \{{ Connection conn = ds.getConnection("foo","bar");}}
> \{{ assertNotNull(conn);}}
> \{{ conn.close();}}
>
> Normally the defaultRowPrefetch in the oracle driver should be 100 but it's
> still the default value (10).
> The same happens when we use *PerUserPoolDataSource* instead of
> *SharedPoolDataSource*.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)