Denuevo aqui pidiendo tu opinion, hice lo que dice la pagina del howto de tomcat5 y creo que ya porfin lo termine..., dime que error ves para solucionarlo, pero supuestamente este es el pool, y quisiera tu opinion antes de implementarlo...
Este es el codigo que le agregue al server.xml para que vea el context:
Código PHP:
<Context path="" docBase="LoginMenuCiis"
debug="0" reloadable="true"
crossContext="true" >
<Resource name="jdbc/ciis_libertador"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/ciis_libertador">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>sun.jdbc.odbc.JdbcOdbcDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:odbc:ciis_libertador</value>
</parameter>
<parameter>
<name>username</name>
<value>tal</value>
</parameter>
<parameter>
<name>password</name>
<value>lat</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
Este es el codigo que va en el WEB.XML del directorio donde esta contenida la aplicacion:
Código PHP:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<resource-ref>
<description>pool base datos test</description>
<res-ref-name>jdbc/ciis_libertador</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
Y AHORA LO MAS IMPORTANTE, LA MANERA COMO CONECTA EL SERVLET...
No vario mucho a la manera como lo hacia antes, pero supongo que es mejor...:
Código PHP:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class Venezuela extends HttpServlet {
private String SQL = null,
Estado =null,
Municipio = null,
Aviso = "",
SQL1= null;
Connection conn = null;
private DataSource ds = null;
public void init (){
try{
Context initContext = new InitialContext();
ds = (DataSource)initContext.lookup("java:comp/env/jdbc/ciis_libertador");
synchronized (ds)
{
conn = ds.getConnection(); // cogemos la conexion
}
}catch(Exception e) {
System.out.println("Catch del conector a la bd");
System.out.println(e.getMessage());
}
}
protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
Municipio = request.getParameter("Municipio");
Estado = request.getParameter("Estado");
TipoAcceso= request.getParameter("TipoAcceso");
int x=Integer.parseInt(TipoAcceso);
DevolverEntrar2(response);
try{
conn.close();
}catch(Exception e) {
System.out.println("Error cerrando la Conexion");
System.out.println(e.getMessage());
}
}
public int actualizarCombo(String column1, String column2, String table, String xpais){
Statement stmt = null, stmt1= null;
String valor = null;
int codigo, codpades;
try{
stmt1 = conn.createStatement();
SQL1="SELECT codigopais from Paises WHERE descripcion='";
SQL1+=xpais;
SQL1+="'";
ResultSet rs1 = stmt1.executeQuery(SQL1);
if (rs1.next()){
codpades = (rs1.getInt("codigopais"));
do{
stmt = conn.createStatement();
String SQL = "SELECT ";
SQL+=column1;
SQL+=",";
SQL+=column2;
SQL+=" FROM ";
SQL+=table;
SQL+=" WHERE CodPais='";
SQL+=codpades;
SQL+="'";
SQL+=" ORDER By ";
SQL+=column2;
ResultSet rs = stmt.executeQuery(SQL);
if (rs.next()){
combo = "";
do{
codigo = (rs.getInt(column1));
valor = (rs.getString(column2));
combo += "<option> ";
combo += valor;
combo += "</option>\n";
}while(rs.next());
}
}while(rs1.next());
}
return 0;
}catch (SQLException sql){
System.out.println("Se produjo un error creando la sentencia SQL para el combo");
System.out.println(sql.getMessage());
return -2;
}finally{
if(stmt != null || stmt1 != null){
try{
stmt.close();
stmt1.close();
}catch (SQLException e){
System.out.println("Error cerrando la sentencia SQL");
System.out.println(e.getMessage());
return -3;
}
}
}
}
Observa que dejo hago una sola conn, y luego en esta hago todas las sentencias que necesito, y cierro las sentencias, y por ultimo al final del metodo dopost, cierra la conex... esta eso correcto?
Que dices??
Como siempre, y una vez mas, esperando tu opinion...
GRACIAS!!!!