No se puede conectar a una base de datos mysql con JSP, Glassfish

Tengo experiencia previa con JSP pero con el uso de Tomcat y Resin y me gustaría conectarme a una base de datos mySQL usando Glassfish y esperaba que más o menos copiar y pegar el código funcionara.

El código es:

try {
        Class.forName("org.gjt.mm.mysql.Driver");
    } catch (Exception E) {
        System.out.println("First: " + E);
    }

Connection conn = DriverManager.getConnection("jdbc:mysql://xxx.xx.xx.xx:xxxx/DBName", "Username", "Password");

Los errores que obtengo cuando miro los registros de mi servidor son

[#|2012-03-09T13:50:21.900+0000|INFO|glassfish3.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=67;_ThreadName=Thread-1;|First: java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver|#]

[#|2012-03-09T13:50:22.009+0000|INFO|glassfish3.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=67;_ThreadName=Thread-1;| java.sql.SQLException: No se encontró un controlador adecuado para jdbc:mysql://xxx.xx.xx.xx.xx/SmarterStudents|#]

Puse mysql-connector-java-5.0.7-bin.jar en la carpeta domain/lib y lo arrojé a la carpeta WEB-INF/lib solo para estar seguro y todavía no funcionaría para mí.

Estoy al final de mi ingenio ahora, simplemente no sé qué hacer. D:

preguntado el 09 de marzo de 12 a las 14:03

2 Respuestas

Está utilizando el nombre de clase de controlador antiguo y obsoleto para las primeras versiones del controlador MySQL JDBC org.gjt.mm.mysql.Driver cuando todavía era un proyecto de pasatiempo, mientras usaba una de las versiones más recientes del controlador MySQL JDBC que tiene el nombre de clase de controlador com.mysql.jdbc.Driver.

Arregle el nombre de la clase en consecuencia.

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

Asegúrate de estar leyendo el documentación oficial del controlador MySQL JDBC en lugar de algún recurso/libro/tutorial aleatorio y muy desactualizado.

En cuanto a la ubicación del archivo JAR, cuando administra las conexiones a ti mismo en su aplicación web, el JAR se puede colocar en el propio servidor /lib o aplicación web /WEB-INF/lib. Pero cuando permite que el servidor administre las conexiones (que generalmente usará un grupo de conexiones compartidas que es mucho mucho más rápido), entonces el JAR debe colocarse en el propio servidor /lib carpeta. El que esté en las aplicaciones web implementadas se ignorará de todos modos.

respondido 09 mar '12, 18:03

Intenta trabajar con JdbcOdbcDriver , pero generalmente dicen que debe usarse como último recurso.

try
{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con=DriverManager.getConnection("jdbc:odbc:db","root","root");
}catch(Exception e){
     e.printStackTrace();
}

Esto debería funcionar para la base de datos MySQL, también necesita instalar el conector para esto, y el nombre de usuario y la contraseña generalmente para MySQL son root y root, respectivamente.

respondido 09 mar '12, 14:03

-1: no use el puente ODBC cuando tenga la opción de usar una implementación JDBC del proveedor - Marcos Rotteveel

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.