Problemas con el Pool de conexiones

367 views
Skip to first unread message

edwinjfc

unread,
Jul 30, 2007, 12:32:34 PM7/30/07
to JavaSOS
hola a todos.
estoy haciendo un pool de conexiones, utilizo el tomcat 4.1 y
DB2(AS400) como BD.
hice todos los pasos a seguir.

aqui les dejo mi codigo java.

import java.io.PrintStream;
import java.sql.*;
import javax.naming.*;
import javax.servlet.http.HttpServlet;
import javax.sql.*;

public class DBC extends HttpServlet
{
//private static String defaultDatabase ="java:comp/env/jdbc/
TailoyAS400";
//private static DataSource ds = null;

public static Connection DBConect() throws SQLException{
Connection conn = null;
DataSource ds = null;
try{
if (ds == null) {
Context ctx = new InitialContext();
if(ctx==null){
System.out.println("Falla el contexto");}

ds = (DataSource)ctx.lookup("java:comp/env/jdbc/
Aplicacion");
}
System.out.println("el valor del DataSource:
"+ds.toString());
////*********************************************************
*esto es normal que devuelva este valor el DataSource:
*el valor del DataSource: com.evermind.sql.OrionCMTDataSource@57
**************************************************************//////
//synchronized (ds)
conn = ds.getConnection();
System.out.println("la coneccion: "+conn.toString());

} catch(NamingException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
////**aqui es donde me sale el error, este es el error que me sale:
****java.sql.SQLException: Excepción de E/S: The Network Adapter could
not establish the ***connection
*////////////////
} catch(Exception e) {
e.printStackTrace();
}
return conn;

}
}


Creo que el codigo del web.xml y server.xml esta bien por eso no lo
pongo.
Gracias

Daniel

unread,
Jul 30, 2007, 3:16:29 PM7/30/07
to JavaSOS
y cual es el problema que estas teniendo?

waz waz

unread,
Jul 31, 2007, 11:14:05 AM7/31/07
to jav...@googlegroups.com
ufff, aqui podrian ser muchas cosas, pero creo que deberias verificar firewall, configuraciones de IP, puertos, etc, de ser posible utiliza algun otro programa java para conectarte (uno como el acuaStudio), para ver si realmente estas llegando a tu server AS, no se que libreria estaras utilizando, pero yo he utilizado el jt400. Saludos.

El día 30/07/07, edwinjfc <edwi...@gmail.com> escribió:

Gunther Schneider

unread,
Jul 30, 2007, 11:12:01 PM7/30/07
to jav...@googlegroups.com
Tenes un problema de conexion. No puede abrir el socket a la base de
datos. El mensaje de la excepcion lo dice claro:
Excepción de E/S: The Network Adapter could not establish the connection

Chequea la conectividad desde el server a la base de datos, que
resuelva bien el hostname, que el server este levantado, tener bien el
puerto, etc etc.

edwinjfc

unread,
Jul 31, 2007, 6:30:53 PM7/31/07
to JavaSOS

Despues de muchos intentos, me conecte con la BD, pero no con el
tomcat sino con una conexion interna que trae el JDeveloper.
el error era que oracle utiliza su propio
DataSource=com.evermind.sql.OrionCMTDataSource@57
eso esta por defecto, asi es que lo borre, y cree un nuevo DataSource,
direccionando al DB2, con el driver (jt400) por supuesto.y me salio
bien.
El problema es que cuando lo llevo al servidor, no funciona....osea
que no esta funcionando en el tomcat.

ahora ya borre el DataSource por defecto que esta en el Jdeveloper.
y me sale el siguiente error:
"javax.naming.NamingException: Error instantiating web-app JNDI-
context: No location specified for resource-ref jdbc/Aplicacion"

no veo ningun error en mis codigos.
Este es el codigo de mi clase de conexion.

public class DBC extends HttpServlet
{

public DBC()
{
}

public static synchronized Connection DBConect() throws SQLException{


Connection conn = null;
DataSource ds = null;
try{
if (ds == null) {
Context ctx = new InitialContext();

if(ctx==null){
System.out.println("no hay conexion con tomcat");}

ds = (DataSource)ctx.lookup("java:comp/env/jdbc/
Aplicacion");

//////////////*********
///////AQUI ME DA COMO VALOR ds=NULL***************
////***************************
}

conn = ds.getConnection();

} catch(NamingException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();

} catch(Exception e) {
e.printStackTrace();
}
return conn;

}

}

Este es del web.xml:

<resource-ref>
<description>conexion</description>
<res-ref-name>jdbc/Aplicacion</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


y este codigo es del server.xml

<Context path="/Realaplicacion" docBase="Realaplicacion" debug="6"
reloadable="true" crossContext="true" useNaming="true">
<Logger className ="org.apache.catalina.logger.FileLogger"
prefix="TailoyAS400_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/Aplicacion" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/Aplicacion">
<Parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</Parameter>
<Parameter>
<name>driverClassName</name>
<value>com.ibm.as400.access.AS400JDBCDriver</value>
</Parameter>
<Parameter>
<name>url</name>
<value>jdbc:as400://172.1.0.1;database name=libreria?
autoReconnect=true</value>
</Parameter>
<Parameter>
<name>maxActive</name>
<value>100</value>
</Parameter>
<Parameter>
<name>maxIdle</name>
<value>30</value>
</Parameter>
<Parameter>
<name>maxWait</name>
<value>10000</value>
</Parameter>
<Parameter>
<name>username</name>
<value>user</value>
</Parameter>
<Parameter>
<name>password</name>
<value>passw</value>
</Parameter>
<Parameter>
<name>removeAbandoned</name>
<value>true</value>
</Parameter>
<Parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</Parameter>
<Parameter>
<name>logAbandoned</name>
<value>true</value>
</Parameter>
</ResourceParams>
</Context>

Gracias

waz waz

unread,
Aug 3, 2007, 8:30:29 PM8/3/07
to jav...@googlegroups.com
ya declaraste el data source en tomcat?, entra a la consola administrativa de tomcat, busca tu aplicacion y verifica que la fuente de datos este alli. Sino agregala. Saludos.

El día 31/07/07, edwinjfc <edwi...@gmail.com> escribió:

jhon elvis

unread,
Sep 10, 2007, 1:23:03 PM9/10/07
to jav...@googlegroups.com
tinees que crear el jndi que estas llamando, desde la consola de administracion de tomcat lo puedes hacer, te recomendaria que puedas usar un pool de conexiones externo como puede ser primrose, es bueno.

El día 3/08/07, waz waz <william...@gmail.com> escribió:
Reply all
Reply to author
Forward
0 new messages