I'm Trying to connect a JSP tomcat-based application to Oracle using
OracleConnectionPoolDataSource and related classes. I have used
javax.sql.DataSource an it did work fine. I have made changes I need for using
that classes and when I get the DataSource it throws exception
"javax.naming.NamingException: Cannot create resource instance".
I'm using Apache Tomcat 5.5.23 for windows, Java JDK 1.5.0_05 and Oracle 9i
Release 2 (9.2.0.1.0). All for windows.
Changes I have made are these:
In context.xml:
<Context path="/test" docBase="test" debug="0"
reloadable="true" >
<Resource
name="jdbc/test" auth="Container"
type="oracle.jdbc.pool.OracleConnectionPoolDataSou rce"
maxActive="0" maxIdle="-1" maxWait="-1"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
username="test" password="test"
driverClassName="oracle.jdbc.pool.OracleConnection PoolDataSource"
url="jdbc:oracle:thin:@192.168.1.109:1521:GLOBALDB " />
</Context>
In web.xml (only resource-ref):
<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>oracle.jdbc.pool.OracleConnectionPoolDataSour ce</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Code that creates connection:
initCtx = new InitialContext();
ctx = (Context) initCtx.lookup("java:/comp/env");
ds = (OracleConnectionPoolDataSource) ctx.lookup("/jdbc/test");
PooledConnection pc = ds.getPooledConnection();
con = pc.getConnection();
I have searched in google and found some examples that use
oracle.jdbc.driver.OracleDriver in driverClassName. I have also tried this
option with the same results. I suppose bug is elsewhere.
I have tried to create DataSource instance in the code instead of get it from
resource. Doing this it drops no error and page works, but I don't know how can
I control maximun number of pooled connections. This is the code I have used for
that:
initCtx = new InitialContext();
OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
ds.setDataSourceName("oracle.jdbc.pool.OracleConne ctionPoolDataSource");
ds.setURL(dbURL);
ds.setDescription(DS);
ds.setUser(dbUsuario);
ds.setPassword(dbPassword);
initCtx.rebind(DS, ds);
pc = ds.getPooledConnection();
But it creates only one connection and doesn't allow two users to log in at the
same time.
Please. I need help.