Oracle, DataSource y Apache Tomcat
Hola:
Necesito saber como establecer un DataSource para las conexiones a Oracle 9i, desarrollando la aplicación en Tomcat 4.1.27
He seguido el ejemplo de JNDI para DataSource de Oracle que viene en la web del tomcat, pero lo configuro todo, me descargo el classes12.zip para los drivers de Oracle9i, y me descargo (creo que son los correctos, no estoy seguro) los commons dbcp, pool y collections y aun asi, siempre me salta el error al intentar recuperar la conexion del DataSource:
java.sql.SQLException: Cannot load JDBC driver class 'null'
¿Alguien que lo haya hecho antes y pueda echarme una mano?
Muchas gracias!!!
Necesito saber como establecer un DataSource para las conexiones a Oracle 9i, desarrollando la aplicación en Tomcat 4.1.27
He seguido el ejemplo de JNDI para DataSource de Oracle que viene en la web del tomcat, pero lo configuro todo, me descargo el classes12.zip para los drivers de Oracle9i, y me descargo (creo que son los correctos, no estoy seguro) los commons dbcp, pool y collections y aun asi, siempre me salta el error al intentar recuperar la conexion del DataSource:
java.sql.SQLException: Cannot load JDBC driver class 'null'
¿Alguien que lo haya hecho antes y pueda echarme una mano?
Muchas gracias!!!
Necesito configurar un Datasource en tomcat si vos sabes como porfavor diganme.................. necesito uno para mysql y otro para oracle pero necesito saber como hacerle el lookup y todo eso porfa me urge una respuesta......
antonio puedes pegar el server.xml todo aca para ver como esta?
gracias
gracias
Ya lo conseguí sacar. Pero primero os detallo el problema.
En mi jsp no tengo ningún problema para crear una conexión a la base de datos Oracle9i usando los mecanismos comunmente conocidos:
Class.forName("oracle.jdbc.driver.OracleDriver");
conex = DriverManager.getConnection("jdbc:oracle:thin:@ip_basedatos:1521:nombre",user,pass);
Entonces, ahora trato de hacer un pool de conexiones a la base de datos por JNDI, sobre el Tomcat 4.1.27 pero no conseguía hacerlo funcionar. Siempre me saltaba el error que antes comenté. El error ha resultado ser de la definición de la conexión en el server.xml
En la web de apache tomcat hay unos howtos que explican como configurar el pool a una base de datos Oracle 8i, en mi caso es Oracle9i pero resulta igual. En ese howto se especifica el sitio donde debe colocarse el "Resource", diciendo que debe estar entre las etiquetas de GlobalNamingResources pero no me funcionaba. Así pues lo que he hecho es:
1. En el server.xml ponemos:
<!-- Antonio: ini -->
<Context path="/ICT" docBase="ICT" debug="0"
reloadable="true" crossContext="true">
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/myoracle">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@ict_sr2:1521:Axis</value>
</parameter>
<parameter>
<name>username</name>
<value>antonio</value>
</parameter>
<parameter>
<name>password</name>
<value>a2</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
<!-- Antonio: fin -->
2. Coloco los drivers de Oracle classes12.zip en <TOMCAT-HOME>/lib y lo renombro directamente cambiando la extensión a classes12.jar
3. Añado el siguiente código a mi web-app de web.xml de mi aplicación web:
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4. Y hago la conexión recuperando el pool de conexiones:
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
conex = ds.getConnection();
Y funciona de miedoooo XD
En mi jsp no tengo ningún problema para crear una conexión a la base de datos Oracle9i usando los mecanismos comunmente conocidos:
Class.forName("oracle.jdbc.driver.OracleDriver");
conex = DriverManager.getConnection("jdbc:oracle:thin:@ip_basedatos:1521:nombre",user,pass);
Entonces, ahora trato de hacer un pool de conexiones a la base de datos por JNDI, sobre el Tomcat 4.1.27 pero no conseguía hacerlo funcionar. Siempre me saltaba el error que antes comenté. El error ha resultado ser de la definición de la conexión en el server.xml
En la web de apache tomcat hay unos howtos que explican como configurar el pool a una base de datos Oracle 8i, en mi caso es Oracle9i pero resulta igual. En ese howto se especifica el sitio donde debe colocarse el "Resource", diciendo que debe estar entre las etiquetas de GlobalNamingResources pero no me funcionaba. Así pues lo que he hecho es:
1. En el server.xml ponemos:
<!-- Antonio: ini -->
<Context path="/ICT" docBase="ICT" debug="0"
reloadable="true" crossContext="true">
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/myoracle">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@ict_sr2:1521:Axis</value>
</parameter>
<parameter>
<name>username</name>
<value>antonio</value>
</parameter>
<parameter>
<name>password</name>
<value>a2</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
<!-- Antonio: fin -->
2. Coloco los drivers de Oracle classes12.zip en <TOMCAT-HOME>/lib y lo renombro directamente cambiando la extensión a classes12.jar
3. Añado el siguiente código a mi web-app de web.xml de mi aplicación web:
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4. Y hago la conexión recuperando el pool de conexiones:
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
conex = ds.getConnection();
Y funciona de miedoooo XD
