example define configurar mysql jdbc tomcat7 apache-commons-dbcp

mysql - define - tomcat 8.5 jndi datasource example



Cómo solucionarlo: "¿No se encontró un controlador adecuado para el error jdbc: mysql:// localhost/dbname" cuando se usan pools? (21)

Esta pregunta ya tiene una respuesta aquí:

Intento crear una conexión a mi base de datos, cuando puse a prueba mi código usando el método principal, funciona a la perfección. Sin embargo, cuando intenta acceder a través de Tomcat 7, falla con el error:

No suitable driver found for jdbc:mysql://localhost/dbname.

Estoy usando pooling Puse en bibliotecas mysql connector (5.1.15), dbcp (1.4) y pool (1.4.5) en WEB-INF / lib y en .classpath también. Estoy usando Eclipse IDE. Mi código para el controlador de la base de datos es:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.tomcat.dbcp.dbcp.ConnectionFactory; import org.apache.tomcat.dbcp.dbcp.DriverManagerConnectionFactory; import org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory; import org.apache.tomcat.dbcp.dbcp.PoolingDriver; import org.apache.tomcat.dbcp.pool.impl.GenericObjectPool; public class DatabaseConnector { public static String DB_URI = "jdbc:mysql://localhost/dbname"; public static String DB_USER = "test"; public static String DB_PASS = "password"; // Singleton instance protected static DatabaseConnector _instance; protected String _uri; protected String _username; protected String _password; /** * Singleton, so no public constructor */ protected DatabaseConnector(String uri, String username, String password) { _uri = uri; _username = username; _password = password; GenericObjectPool connectionPool = new GenericObjectPool(null); ConnectionFactory connectionFactory = new DriverManagerConnectionFactory( _uri, _username, _password); PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true); PoolingDriver driver = new PoolingDriver(); driver.registerPool("test", connectionPool); } /** * Returns the singleton instance */ public static DatabaseConnector getInstance() { if (_instance == null) { _instance = new DatabaseConnector(DB_URI, DB_USER, DB_PASS); } return _instance; } /** * Returns a connection to the database */ public Connection getConnection() { Connection con = null; try { con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test"); } catch (SQLException e) { throw new RuntimeException(e); } return con; } }

Inicio de mi rastro de pila:

Apr 5, 2011 9:49:14 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [Login] in context with path [/Project] threw exception java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/dbname

Que esta causando este error?


  1. Coloque mysql-connector-java-5.0.8-bin.jar en $ CATALINA_HOME / lib

  2. Compruebe si hay error tipográfico en la url de conexión, por ejemplo
    "jdbc: mysql: // localhost: 3306 / report" (''informe'' aquí está el nombre db)

  3. Asegúrese de utilizar el nombre de la máquina (ejemplo: localhost en lugar de ip address (127.0.0.1))

Agregue la clase de controlador a bootstrapclasspath. El problema está en java.sql.DriverManager que no ve los controladores cargados por ClassLoaders aparte de bootstrap ClassLoader.


Al desarrollar usando Ubuntu (Xubuntu 12.04.1), ''TENGO'' que hacer lo siguiente:

Utilizando

Eclipse Juno (descargado, no instalado a través del centro de software), Tomcat 7 (descargado en un directorio de usuario personalizado) también agregado como servidor en Eclipse, Dynamic Web Project con un Servlet 3.0, servidor MySQL en localhost configurado y probado con usuario y contraseña (asegúrese de probar) controlador de conector MySQL 5.1.24 jar,

I ''HAD'', y repito ''HAD'', para nosotros la instrucción Class.Load ("com.mysql.jdbc.Driver") junto con agregar el conector driver.jar para que esté en la carpeta lib del proyecto web para que funcione en esta situación.

¡IMPORTANTE !: después de copiar el archivo driver.jar a lib, asegúrese de actualizar su proyecto en Eclipse antes de ejecutar el servlet a través de Tomcat.

Intenté agregar el archivo jar del controlador del conector a través de la ruta de compilación con y sin ClassLoad, pero no funcionó.

Espero que esto ayude a cualquiera que comience el desarrollo con esta situación específica: la comunidad Java proporciona una "MUCHA" documentación, pero hay tantas variables que es difícil cubrirlas todas y dificulta las cosas al nuevo tipo.

Creo que si alguien pudiera explicar por qué se requiere Class.Load aquí (en esta situación) sería beneficioso.

Disfrutar


Al ejecutar Tomcat fuera de eclipse, no elegirá el conjunto lib en CATALINA_HOME/lib , hay dos formas de solucionarlo. Haga doble clic en el servidor Tomcat en la vista de servidores eclipse, se abrirá la configuración del complemento tomcat, y luego:

  1. Haga clic en "Abrir configuración de inicio"> pestaña Classpath configure la ubicación del conector mysql / j jar. o
  2. Ubicación del servidor> seleccione la opción que dice "Usar la instalación de Tomcat (tomar el control de la instalación de Tomcat)"

Bro, también puedes escribir el código de la siguiente manera:

import java.sql.*; import java.io.*; public class InsertDatabase { public static void main(String[] args) { // TODO Auto-generated method stub try { Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/Maulik","root","root"); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery("select * from Employee"); while(rs.next()) System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3)); con.close(); } catch(Exception e) { System.out.println(e); } } }


Dado que nadie dio esta respuesta, también me gustaría añadir que, simplemente puede agregar el archivo de controlador jdbc ( mysql-connector-java-5.1.27-bin.jar en mi caso) a la carpeta lib de su servidor (Tomcat en mi caso). Reinicie el servidor y debería funcionar.


Desde otro subproceso de :

"Segundo. Asegúrate de tener MySQL JDBC Driver aka Connector / J en el classpath de JMeter. Si no lo haces, descárgalo, descomprime y suelta mysql-connector-java-x.xx.xx-bin.jar en JMeter''s / lib carpeta. Se requerirá el reinicio de JMeter para recoger la biblioteca "

Asegúrese de que el archivo .jar se haya agregado directamente a la carpeta lib.


Estoy ejecutando Tomcat 7 en Eclipse con Java 7 y utilizando el controlador jdbc para MSSQL sqljdbc4.jar.

Al ejecutar el código fuera de tomcat, desde una aplicación java independiente, funcionó bien:

connection = DriverManager.getConnection(conString, user, pw);

Sin embargo, cuando traté de ejecutar el mismo código dentro de Tomcat 7, descubrí que solo podía hacerlo funcionar registrando primero el controlador, cambiando lo anterior a esto:

DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver()); connection = DriverManager.getConnection(conString, user, pw);


Intente poner el contenedor del controlador en la carpeta lib del servidor. ($ CATALINA_HOME / lib)

Creo que el grupo de conexiones debe configurarse incluso antes de que la aplicación sea instanciada. (Al menos así es como funciona en Jboss)


La mayoría de las veces ocurre porque dos archivos mysql-connector-java-3.0.14-production-bin.jar. Una en la carpeta lib de tomcat y otra en classpath del proyecto.

Intenta eliminar mysql-connector-java-3.0.14-production-bin.jar de la carpeta lib.

De esta manera me funciona.


La razón por la que recibió este error:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/dbname

Es porque olvidó registrar su controlador mysql jdbc con la aplicación java.

Esto es lo que escribiste:

Connection con = null; try { con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test"); } catch (SQLException e) { throw new RuntimeException(e); }

Debería ser esto:

Connection con = null; try { //registering the jdbc driver here, your string to use //here depends on what driver you are using. Class.forName("something.jdbc.driver.YourFubarDriver"); con = DriverManager.getConnection("jdbc:apache:commons:dbcp:test"); } catch (SQLException e) { throw new RuntimeException(e); }

Tendrás que leer el manual en tu controlador mysql jdbc específico para encontrar la cadena exacta dentro del parámetro Class.forName ("...").

Class.forName no requerido con JDBC v.4

Comenzando con Java 6, Class.forName("something.jdbc.driver.YourFubarDriver") ya no es necesario si utiliza un controlador reciente (JDBC v.4). Para detalles, lea esto: http://onjava.com/pub/a/onjava/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html


La solución es simple.

Asegúrese de que el classpath pueda acceder al conector de la base de datos al ejecutar (no compilar) el programa, por ejemplo:

java -classpath .;c:/path/to/mysql-connector-java-5.1.39.jar YourMainClass

Además, si está utilizando una versión anterior de Java (antes de JDBC 4.0), antes de hacer DriverManager.getConnection esta línea es obligatoria:

Class.forName("your.jdbc.driver.TheDriver"); // this line is not needed for modern Java


Por lo que he observado, puede haber dos razones para que ocurra esta excepción: (1) Su nombre de controlador no está escrito correctamente. (2) El controlador no se ha Asociado correctamente con el Proyecto Java Pasos a seguir en Eclipse: (1) Crear un nuevo Proyecto Java. (2) copie el archivo Jar conector (3) Haga clic con el botón derecho en el proyecto Java y péguelo allí. (4) Haga clic con el botón derecho en el proyecto Java -> Propiedades -> Ruta de compilación de Java -> bibliotecas -> Agregar tarro -> elija su proyecto (seleccione el archivo jar del menú desplegable) y haga clic en Aceptar.


Puede pegar el contenedor en la ruta del tiempo de ejecución de jboss de esta manera:

C: / Usuario / usuario / workspace / jboss-as-web-7.0.0.Final / standalone / deployments / MYapplicationEAR.ear / test.war / WEB-INF / lib ca marche 100%


Si está usando netbeans, debe agregar el controlador Mysql JDBC en la lista de la biblioteca del proyecto, en las propiedades de su proyecto.


También tuve el mismo problema hace algún tiempo, pero resolví ese problema.

Puede haber diferentes razones para esta excepción. Y uno de ellos puede ser que el contenedor que está agregando a su carpeta lib puede ser antiguo.

Intenta descubrir la última versión de mysql-connector-jar y agrégala a tu classpath. Puede resolver su problema. El mío fue resuelto así.


Tenía la biblioteca mysql jdbc en $ CATALINA_HOME / lib y WEB-INF / lib, aún así obtuve este error. Necesitaba Class.forName ("com.mysql.jdbc.Driver"); para hacer que funcione


Tuve el mismo problema al utilizar Tomcat7 con mysql-connector-java-5.1.26 que puse en mi $ CATALINA_HOME / lib y WEB-INF / lib, por las dudas. Pero no lo encontraría hasta que use una de estas dos afirmaciones antes de obtener la conexión:

DriverManager.registerDriver(new com.mysql.jdbc.Driver ());

O

Class.forName("com.mysql.jdbc.Driver");

Luego seguí con la eliminación de mysql-connector-java-5.1.26 desde $ CATALINA_HOME / lib y la conexión aún funciona.


Tuve el mismo problema, todo lo que necesitas hacer es definir la variable de entorno classpath para tomcat, puedes hacerlo agregando un archivo, en mi caso C:/apache-tomcat-7.0.30/bin/setenv.bat , que contiene:

set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%/lib/mysql-connector-java-5.1.14-bin.jar"

luego código, en mi caso:

Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database_name", "root", "");

funciona bien.


Utilizar:

try { Class.forName("com.mysql.jdbc.Driver").newInstance(); System.out.println("Registro exitoso"); } catch (Exception e) { System.out.println(e.toString()); } DriverManager.getConnection(..


agrega el artefacto de maven.

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency>