Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/08/2005, 16:45
LilianaT
 
Fecha de Ingreso: febrero-2005
Mensajes: 15
Antigüedad: 19 años, 2 meses
Puntos: 0
Pool de Conexiones Postgre

Holas saben toy modificando un codigo s d un pool d conexiones en Oracle y quiero hacerlo pero para el Postgre, mi servidor s el Tomcat y sta n un server2000



Quisiera saber si sta bien mi codigo o hay error s q s una aplicacion grand y bueno lo q hice es solo poner esta pag d java y uno q accede a los datos y me da el sigut error en la salida del TOmcat:

java.lang.NullPointerException

el codigo para ello s l sgt:
Postgre:
**************

import java.sql.*;
import javax.sql.*;
import org.postgresql.jdbc3.*;
import org.postgresql.Driver;

/** Maneja un pool de conexiones internas hacia un esquema de base de datos Postgre.
*/

public class PoolConexiones {

private Jdbc3PoolingDataSource pool = null;
private String sistema = null;

/** Crea un nuevo objeto de la clase PoolConexiones.
*/
public PoolConexiones() {
}

/** Crea un nuevo objeto de la clase PoolConexiones.
*/
public PoolConexiones(String sistema) {
this.sistema = sistema;
}

/** Devuelve el valor actual de la propiedad 'sistema'.
*/
public String getSistema() {
return sistema;
}

/** Establece externamente el valor de la propiedad 'sistema'.
*/
public void setSistema(String sistema) {
this.sistema = sistema;
}

/** Devuelve una conexión desde el pool de conexiones. Antes de ejecutar este método
* se debe haber establecido el valor de la propiedad 'sistema' para conectarse a él.
* @throws SQLException
* @return Una conexión JDBC
*/
public Connection traerConexion() throws SQLException {
if(pool==null) {
prepararPool();
}
return pool.getConnection();
}

/** Crea el pool de conexiones a la base de datos en "Esquema Dinámico".
* Los parámetros de la base de datos se extraen del archivo "db.properties"
* @throws SQLException
*/
private void prepararPool() throws SQLException {
java.util.ResourceBundle prop = java.util.ResourceBundle.getBundle("com.tecsup.int ranet.config.db");
pool = new Jdbc3PoolingDataSource();

pool.setPortNumber(Integer.parseInt(prop.getString ("port")));
pool.setUser(prop.getString("user"));
pool.setPassword(prop.getString("passw"));
pool.setMaxConnections(Integer.parseInt(prop.getSt ring("maxlim")));
pool.setServerName(prop.getString("server"));
pool.setDatabaseName(prop.getString("bd"));
}

/** Destructor sobreescrito para cerrar el pool de conexiones cuando se destruya
* una instancia de esta clase.
*/
protected void finalize() {
if(pool!=null) {
try {
pool.close();
}
catch(Exception e) {
}
}
}
}


Oracle
********

import java.sql.*;
import javax.sql.*;
import oracle.sql.*;
import oracle.jdbc.driver.*;
import oracle.jdbc.pool.*;

/** Maneja un pool de conexiones internas hacia un esquema de base de datos Oracle.
*/

public class PoolConexiones {

private OracleConnectionCacheImpl pool = null;
private String sistema = null;

/** Crea un nuevo objeto de la clase PoolConexiones.
*/
public PoolConexiones() {
}

/** Crea un nuevo objeto de la clase PoolConexiones.
*/
public PoolConexiones(String sistema) {
this.sistema = sistema;
}

/** Devuelve el valor actual de la propiedad 'sistema'.
*/
public String getSistema() {
return sistema;
}

/** Establece externamente el valor de la propiedad 'sistema'.
*/
public void setSistema(String sistema) {
this.sistema = sistema;
}

/** Devuelve una conexión desde el pool de conexiones. Antes de ejecutar este método
* se debe haber establecido el valor de la propiedad 'sistema' para conectarse a él.
* @throws SQLException
* @return Una conexión JDBC
*/
public Connection traerConexion() throws SQLException {
if(pool==null) {
prepararPool();
}
return pool.getConnection();
}

/** Crea el pool de conexiones a la base de datos en "Esquema Dinámico".
* Los parámetros de la base de datos se extraen del archivo "db.properties"
* @throws SQLException
*/
private void prepararPool() throws SQLException {
java.util.ResourceBundle prop = java.util.ResourceBundle.getBundle("com.tecsup.int ranet.config.db");
pool = new OracleConnectionCacheImpl();
pool.setCacheScheme(OracleConnectionCacheImpl.DYNA MIC_SCHEME);
pool.setURL(prop.getString("url"));
pool.setUser(prop.getString("user"));
pool.setPassword(prop.getString("passw"));
pool.setMaxLimit(Integer.parseInt(prop.getString(" maxlim")));
}

/** Destructor sobreescrito para cerrar el pool de conexiones cuando se destruya
* una instancia de esta clase.
*/
protected void finalize() {
if(pool!=null) {
try {
pool.close();
}
catch(Exception e) {
}
}
}
}

la pagina q acced a los datos como prueba s el sigt:

import java.io.*;

import javax.servlet.http.*;
import javax.servlet.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import org.postgresql.jdbc3.*;

public class ServletDataSource extends HttpServlet{
Connection con;

public void init(ServletConfig config) throws ServletException {
super.init(config);
PoolConexiones pc = new PoolConexiones();
pc.setSistema("intranet");
this.getServletContext().setAttribute("poolWeb",pc );
}

public void doGet (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out;
try{
String id, nombre, sql, html= "";
Statement stm;
ResultSet res;
sql="select nomuno,apepterno from per_area";
stm=con.createStatement();
System.out.println("consulta sql");

res=stm.executeQuery(sql);


html += "<h1>listado de datos</h1><hr>";

while(res.next()) {
id=res.getString("nomuno");
nombre=res.getString("apepaterno");
html += id + " - ";
html += nombre + "<br>";
}
response.setContentType("text/html");
out = response.getWriter();
out.println(html);
res.close();
stm.close();
}
catch(Exception ex) {
System.out.println(ex.toString());
}

}
public void destroy(){
try{
con.close();
}catch(Exception ex){
System.out.println(ex.toString());
}
}
}