
01/08/2005, 16:45
|
| | Fecha de Ingreso: febrero-2005
Mensajes: 15
Antigüedad: 20 años 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());
}
}
} |