example tomcat ubuntu jdbc datasource tomcat7

tomcat jdbc connection pool example



Ubuntu Tomcat7 java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory (5)

Eso lo hizo.

Asegúrese de que si el archivo tomcat-dbcp-7.0.30.jar no tiene el tamaño siguiente, puede estar dañado y es posible que deba reemplazarlo por el comando sudo wget anterior.

-rw-r - r-- 1 root root 235411 1 de mayo de 2013 tomcat-dbcp-7.0.30.jar

lrwxrwxrwx 1 root root 22 ene 10 2013 tomcat-dbcp.jar -> tomcat-dbcp-7.0.30.jar

Estoy tratando de configurar un DataSource JDBC en Tomcat 7 bajo Ubuntu 12.X, así que agregué lo siguiente al archivo context.xml:

<Resource name="jdbc/myDS" auth="Container" type="javax.sql.DataSource" maxActive="5" maxIdle="2" maxWait="5000" driverClassName="org.postgresql.Driver" username="usr" password="***" url="jdbc:postgresql://localhost:5432/db" />

Obviamente, utilizando el id. De usuario y la contraseña de la base de datos correcta y probada. Cuando reinicio Tomcat, obtengo este error:

Feb 05, 2013 1:10:01 PM org.apache.catalina.core.NamingContextListener addResource WARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]

Busqué en Google y descubrí que el controlador JDBC debe copiarse en la carpeta $ CATALINA_HOME / lib, así que copié postgresql-9.2-1000.jdbc4.jar en / usr / share / tomcat7 / lib, pero no ayudó . Intenté copiar el archivo a otras ubicaciones, con los mismos resultados.

Otro intento fue cambiar el enlace simbólico tomcat-dbcp.jar en / usr / share / tomcat7 / lib de ../../java/tomcat-dbcp-7.0.30.jar a ../../java/tomcat- dbcp.jar. El único cambio fue que recibí solo una advertencia en lugar de cuatro, pero la fuente de datos tampoco funciona.

Versión de Java:

jdoe@sever:~$ java -version java version "1.7.0_09" OpenJDK Runtime Environment (IcedTea7 2.3.4) (7u9-2.3.4-0ubuntu1.12.10.1) OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

Cualquier sugerencia, muy bienvenida.

Aclamaciones.


La biblioteca tomcat-dbcp-7.0.30.jar de los repositorios está dañada.

Reemplazarlo por:

sudo wget -O /usr/share/java/tomcat-dbcp-7.0.30.jar http://search.maven.org/remotecontent?filepath=org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar


La causa es un problema en el proceso de compilación / paquete de Ubuntu para Tomcat7. Si entiendo el problema correctamente, Apache crea tomcat-dbcp.jar a partir de archivos binarios, mientras que Ubuntu crea paquetes solo desde el origen. El proyecto Ubuntu termina necesitando cambiar el nombre del paquete Java, lo que tiende a romper las cosas para nosotros los usuarios pobres. Los detalles sangrientos se pueden encontrar en la lista de problemas de Ubuntu .

La solución que encontré es nombrar la fábrica de fuente de datos cuando defino el recurso. En un caso, tengo un archivo META-INF / context.xml que contiene:

<Resource name="jdbc/myDataSource" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/myDatabase" username="username" password="password" validationQuery="SELECT COUNT(*) FROM MY_TABLE" factory="org.apache.commons.dbcp.BasicDataSourceFactory" />

El elemento crítico es la declaración de "fábrica", que anula el valor predeterminado incorporado.

En nuestras máquinas de producción, el recurso se define en el elemento GlobalNamingResources del archivo server.xml. Especificar la fábrica solo es necesario en los sistemas Ubuntu.


Tuve el mismo problema en Fedora 20 con Tomcat 7.0.55. Reemplacé el 7.0.30 con 7.0.55 en la ruta del archivo y el nombre del archivo, y esto funcionó para mí. No estoy seguro de por qué, pero este archivo faltaba por completo en la instalación de YUM para Tomcat 7. No puedo usar una base de datos sin él.


tuve el mismo problema en CentOS. Obtuve esto al descargar una nueva copia de tomcat del sitio y cargué tomcat-dbcp.jar en mi servidor en línea lib, reinicie el servidor :)