El 16 de julio de 2010 13:36, Z.M. <nrami...@rosario.gov.ar> escribió:
> En Thu, 15 Jul 2010 15:43:25 -0300, Isidro Blanco <isidro...@gmail.com> > escribió: > > Buenas tardes, >> >> Estoy intentado conectar netbeans 6.8 con postgreSQL las versiones 8.3 y >> 8.4, he leído que tiene problemas con las conexiones remotas por eso probe >> con .3, pero tanto en una como en otra me salta el error "conection >> refused" o lo que es lo mismo "el intento de conexion falló". La >> aplicación >> sólo funciona cuando hago la conexión contra mi bbdd de localhost o >> 127.0.0.1. >> >> *1. Localhost:* Desde *pgAdmin*, *psql*, la pestaña "*Services*" de >> netbeans, tengo acceso a los datos de la base de datos del servidor pero >> cuando llamo desde la aplicación me salta el error y no se conecta. >> >> *2. Servidor remoto:* El *servicio* esta iniciado, *pg_hba**.conf* esta >> configurado para que mi máquina y la red de la que formo parte podamos >> acceder, *postgresql.conf* con el parametro listen_adresses = '*', no >> tengo >> problemas con el firewall, existe el usuario postgres. >> >> Haciendo debug sobre la aplicación he visto que en el problema esta en la >> clase DriverManager concretamente en este punto: >> <http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Connection.html> >> Connection< >> http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Connection.html> >> >> result = di. >> driver.connect(url, info); >> if (result != null) { >> // Success! >> println("getConnection returning " + di); >> return (result); >> } >> >> No entra dentro del if y por lo tanto no se conecta. >> >> >> Parte de mi clase de conexion es esta: >> >> public static java.sql.Connection< >> http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Connection.html>conexion >> >> ; >> >> [...] >> // el nombre de nuestro driver Postgres. >> controlador = "org.postgresql.Driver"; >> >> // llamamos nuestra bd >> >> URL_bd = "jdbc:postgresql://obras_pruebas"; //localhost >> URL_bd = "jdbc:postgresql://192.168.0.252:5432/obras"; >> //servidor >> remoto >> >> // usuario postgres >> usuario = "postgres"; >> >> //password >> contrasinal = "Aluman05"; >> [...] >> >> public synchronized static void inicializar() throws >> Exception< >> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html> >> >> { >> >> try { >> >> // Cargamos o controlador ODBC >> if (conexion == null || conexion.isClosed()) { >> >> Class<http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html> >> >> .forName(controlador).newInstance(); >> conectar(); // conectar coa fonte de datos >> } >> } catch >> (Exception< >> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html>e >> >> ) { >> e.printStackTrace(); >> } >> >> } >> >> [...] >> >> public synchronized static void conectar() throws >> java.sql.SQLException< >> http://java.sun.com/j2se/1.5.0/docs/api/java/sql/SQLException.html> >> >> { >> >> try { >> >> //Establecemos la conexión. >> conexion = >> DriverManager< >> http://java.sun.com/j2se/1.5.0/docs/api/java/sql/DriverManager.html> >> >> .getConnection(URL_bd, usuario, contrasinal); >> >> DriverManager< >> http://java.sun.com/j2se/1.5.0/docs/api/java/sql/DriverManager.html> >> .setLogWriter(new >> java.io.PrintWriter< >> http://java.sun.com/j2se/1.5.0/docs/api/java/io/PrintWriter.html> >> (System <http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html >> >.out) >> >> ); >> >> >> //Commit a true >> conexion.setAutoCommit(true); >> >> } catch >> (Exception< >> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html>e >> >> ) { >> e.printStackTrace(); >> } >> >> } >> >> Si existe otro modo de conectarse o cualquier propiedad que pueda cambiar >> que no haya mirado o prueba que pueda realizar o en definitiva algo que >> pueda hacer, por favor informame. >> >> Un saludo y buen día. >> >> > Yo utilizo algo menos complejo. Pero sirve al caso, al menos para mi > > > import java.sql.Connection; > import java.sql.DatabaseMetaData; > import java.sql.DriverManager; > import java.sql.SQLException; > import tanoxvon.Main; > > public class Coneccion{ > static Connection coneccion = null; > > public Coneccion() throws SQLException{ > System.out.println(" Creando una instancia de la clase"); > try{ > System.out.println(" Buscando el driver de la base de datos > PostgreSQL"); > Class.forName("org.postgresql.Driver"); > }catch(ClassNotFoundException e){ > System.out.println(" No se encontro el nombre del driver de la > base de datos PostgreSQL" + e.getMessage()); > } > System.out.println(" Estableciendo la url de conexión"); > String url = "jdbc:postgresql://192.168.97.80:5432/expediente"; > //hay que cambiar por el numero de ip o la ubicacion de la maquina > try{ > System.out.println(" Estableciendo la conexión"); > coneccion = DriverManager.getConnection(url, "pepe", "pepe"); > System.out.println(" Obteniendo los metadatos de la base de > datos"); > DatabaseMetaData dbmd = coneccion.getMetaData(); > System.out.println(" Conexión exitosa. Nombre del producto: " + > dbmd.getDatabaseProductName() + " Versión: " + > dbmd.getDatabaseProductVersion()); > }catch(SQLException e){ > System.out.println(" Excepción al establecer la conexión " + > e.getMessage()); > } > } > } > > > > -- > Z.M. > > - > Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org > ) > Para cambiar tu suscripción: > http://www.postgresql.org/mailpref/pgsql-es-ayuda > Buenos días, Gracias por responder. Básicamente nuestro métodos son idénticos realizamos la conexión instanciando el controlador: * Class.forName("org.postgresql.Driver");* *Class..forName(controlador).newInstance();* Y llamando al DriverManager: *coneccion = DriverManager.getConnection(url, "pepe", "pepe");* *conexion =DriverManager.getConnection(URL_bd, usuario, contrasinal);* Un saludo y buen día.