elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Web en Java, cambiando se server...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Web en Java, cambiando se server...  (Leído 4,284 veces)
alki


Desconectado Desconectado

Mensajes: 308


Ver Perfil
Web en Java, cambiando se server...
« en: 30 Octubre 2009, 16:41 pm »

Buenas.

Tengo una web hecha en parte en Java, y usa MySQL, la web no la he hecho yo.
Me han encargado cambiar de servidor. Tengo un acceso shell a una maquina con CentOS, he instalado el tomcat para los jsp y el jdk.

He trasladado la web y se ve todo, menos las zonas donde accede a la db. He visto que estan incluidas las librerias del driver de java para acceder a MySQL. He pensado que seria problema de la configuracion del acceso a la base de datos. Asi que me he puesto a modificar dicho fichero.

El contenido del fichero es el siguiente:

Código
  1. package bbdd;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.SQLException;
  6.  
  7.  
  8. public class GestorBBDD {
  9.  
  10. public static Connection conectar() throws ClassNotFoundException, SQLException{
  11.  
  12. try {
  13.  
  14. Class.forName("com.mysql.jdbc.Driver");
  15. Connection c = DriverManager.getConnection("jdbc:mysql://localhost/db","user","pass");
  16. System.out.println("Conexión realizada");
  17. return c;
  18.  
  19. } catch (ClassNotFoundException e) {
  20. e.printStackTrace();
  21. throw e;
  22. } catch (SQLException e) {
  23.  
  24. Connection c = DriverManager.getConnection("jdbc:mysql://localhost/db","user","pass");
  25. return c;
  26.  
  27. }
  28.  
  29. }
  30.  
  31.  
  32. public static void desconectar(Connection c) throws SQLException{
  33.  
  34. try {
  35. c.close();
  36. } catch (SQLException e) {
  37. e.printStackTrace();
  38. throw e;
  39. }
  40.  
  41. }
  42. }

Lo modifique a los nuevos datos de la base de datos en el nuevo servidor. Compile con javac, y puse el .class donde debe ir.
Pero seguia sin funcionar..

Asi que me dio por hacer un programita de prueba para depurar mas rapido y saber si esta en este fichero el error.

Código
  1. public static void main(String[] args) {
  2. try{
  3. conectar();
  4. System.out.println("Excepcion 1");
  5. } catch (SQLException e) {
  6. System.out.println("Excepcion 2");
  7.  
  8. }
  9. }

Compilo, ejecuto usando "java GestorBBDD" y me dice lo siguiente:

Código:
Exception in thread "main" java.lang.NoClassDefFoundError: GestorBBDD (wrong name: bbdd/GestorBBDD)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: GestorBBDD.  Program will exit.

Alguna idea de porque no funciona? He de hacer algo con el tomcat para que reconozca los nuevos .class? He de compilar el resto de los .class en el nuevo servidor?
Alguna idea de porque no se ejecuta este simple programita?

Muchas gracias.

Un Saludo


En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Web en Java, cambiando se server...
« Respuesta #1 en: 30 Octubre 2009, 16:49 pm »

¿Cómo tienes el fichero completo? porque al parecer no encuentra el main.

Por otro lado en el main no te desconectas de la BD y para que pones try y catch si usas throws, y por qué en el catch de la SQLException te vuelves a conectar? bueno, esos son otros detalles, pero, básicamente el error, es que no encuentra el main, así que pongo el fichero completo para poder ayudarte mejor.


En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
alki


Desconectado Desconectado

Mensajes: 308


Ver Perfil
Re: Web en Java, cambiando se server...
« Respuesta #2 en: 30 Octubre 2009, 17:00 pm »

Buenas.
Primero que nada, gracias por tu respuesta  :)

Creo que el error del main se debe a lo mejor que esta como package bbdd y solo estoy intentando ejecutar ese ficherito. He quitado eso y me sale un error que a mi parecer es mas interesante:

Código:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at GestorBBDD.conectar(GestorBBDD.java:25)
        at GestorBBDD.main(GestorBBDD.java:57)
Excepcion 1

En el main, no desconecto, ya que solo quiero saber si logra logearse.. el main luego lo desechare si funciona la configuracion..
Yo solo he programado el main, el resto es de el tipo que creo la web.. y si cuando lo vi me llamo mucho la atencion la cantidad de burradas que se pueden llegar a hacer jejeje. Pero en teoria funciona ya que en el antiguo servidor funciona bien.

Bueno volviendo a lo de antes.. parece que no encuentra las librerias necesarias. Que tengo que hacer para decirle la ruta de las librerias.. Vengo de eclipse y no tengo ni zorra idea la verdad xDD

Un Saludo
En línea

alki


Desconectado Desconectado

Mensajes: 308


Ver Perfil
Re: Web en Java, cambiando se server...
« Respuesta #3 en: 30 Octubre 2009, 17:04 pm »

Por cierto el codigo completo es ese.. Metes el main en la clase de arriba y listo  ;D
En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Web en Java, cambiando se server...
« Respuesta #4 en: 30 Octubre 2009, 17:06 pm »

No encuentra el Driver, tienes dos opciones para indicarle a tu programa donde está el driver, quizá aún no lo haz agregado a las variables de entorno con las rutas, así que lo más fácil es que en el archivo /etc/profile agregues la ruta de donde tienes el driver.
En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
alki


Desconectado Desconectado

Mensajes: 308


Ver Perfil
Re: Web en Java, cambiando se server...
« Respuesta #5 en: 30 Octubre 2009, 17:26 pm »

Hola de nuevo  :)

Tengo todas estas librerias:

activation.jar         commons-collections.jar  commons-fileupload.jar  commons-logging.jar    jakarta-oro.jar  mysql-connector-java-3.1.6-bin.jar
commons-beanutils.jar  commons-digester.jar     commons-io-1.2.jar      commons-validator.jar  mail.jar         struts.jar

Y he añadido lo siguiente en /etc/profile:

export CLASSPATH=$CLASSPATH:/usr/java/tomcat5/lib/

Que es el directorio donde estan todas las librerias, pero no va.

Tambien he probado con:
export CLASSPATH=$CLASSPATH:/usr/java/tomcat5/lib/mysql-connector-java-3.1.6-bin.jar

Que es donde esta el driver que causa el primer error. Pero tampoco.

Que estoy haciendo mal?

Muchas gracias.

Un Saludo
En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Web en Java, cambiando se server...
« Respuesta #6 en: 30 Octubre 2009, 17:38 pm »

mm.. que raro, recuerda que debes abrir una nueva terminal, para que detecte las nuevas variables de entorno e intenta con:
Código:
   export CLASSPATH=$CLASSPATH:.:/usr/lib/jdk-version/jre/lib/ext/mysql-connector-java-5.1.7-bin.jar:.   

Por cierto, ¿Por qué un conector tan viejo?

En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
alki


Desconectado Desconectado

Mensajes: 308


Ver Perfil
Re: Web en Java, cambiando se server...
« Respuesta #7 en: 30 Octubre 2009, 19:02 pm »

Faltaba abrir de nuevo el terminal!!! :D

El conector es el que tenia en las librerias de la web en el servidor viejo.

Bueno hay mejoras.. Ahora tira.. y se ejecuta el programita..

La salida:

Código:
Excepcion 2
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:151)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:280)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1699)
        at com.mysql.jdbc.Connection.<init>(Connection.java:405)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:268)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at GestorBBDD.conectar(GestorBBDD.java:35)
        at GestorBBDD.main(GestorBBDD.java:57)


** END NESTED EXCEPTION **


        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1764)
        at com.mysql.jdbc.Connection.<init>(Connection.java:405)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:268)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at GestorBBDD.conectar(GestorBBDD.java:35)
        at GestorBBDD.main(GestorBBDD.java:57)

He probado a cambiar la url de conexion por las siguientes:
localhost:3306/db
ipserver/db
ipserver:3306/db
localhost/db


Los datos no hay mas.. son el usuario y contraseña que les he puesto. Alguna idea sobre como podria averiguar la url de la base de datos?


Muchas gracias

Un Saludo
En línea

alki


Desconectado Desconectado

Mensajes: 308


Ver Perfil
Re: Web en Java, cambiando se server...
« Respuesta #8 en: 31 Octubre 2009, 19:27 pm »

¿Alguna idea para la configuracion?

A lo mejor al estar todo en la misma maquina, no necesito una url...

Un Saludo
En línea

alki


Desconectado Desconectado

Mensajes: 308


Ver Perfil
Re: Web en Java, cambiando se server...
« Respuesta #9 en: 1 Noviembre 2009, 16:54 pm »

Buenas.

He estado probando y puedo acceder desde la consola de mysql usando
Código:
mysql -h localhost -u usuario -ppassword

Despues de esto si hago ->use db; me encuentra la base de datos...

Dejo la traza del programa:

Código:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:151)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:280)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1699)
        at com.mysql.jdbc.Connection.<init>(Connection.java:405)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:268)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at GestorBBDD.conectar(GestorBBDD.java:35)
        at GestorBBDD.main(GestorBBDD.java:57)


** END NESTED EXCEPTION **


        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1764)
        at com.mysql.jdbc.Connection.<init>(Connection.java:405)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:268)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at GestorBBDD.conectar(GestorBBDD.java:35)
        at GestorBBDD.main(GestorBBDD.java:57)

Linea que efectua la conexion:

Código
  1. Connection c = DriverManager.getConnection("jdbc:mysql://localhost/db","user","pass");
  2.  

No entiendo que puede fallar :S

Un Saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Usar CSS en Java Server Faces
Java
Tlecoatl 0 3,070 Último mensaje 20 Agosto 2011, 08:03 am
por Tlecoatl
Java RMI Server
Java
Link_OOT 3 2,881 Último mensaje 26 Febrero 2013, 00:06 am
por 1mpuls0
Explotando un LFI en Java Server Pages
Nivel Web
alienmaster 0 3,600 Último mensaje 8 Abril 2016, 10:46 am
por alienmaster
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines