Foros del Web » Programación para mayores de 30 ;) » Java »

tomcat con sql server

Estas en el tema de tomcat con sql server en el foro de Java en Foros del Web. bueno tengo una duda, es necesario q para utilizar servlets q interactuan con una base de datos sql server el tomcat tenga q estar configurado ...
  #1 (permalink)  
Antiguo 27/09/2005, 23:06
 
Fecha de Ingreso: septiembre-2005
Mensajes: 34
Antigüedad: 18 años, 7 meses
Puntos: 0
tomcat con sql server

bueno tengo una duda, es necesario q para utilizar servlets q interactuan con una base de datos sql server el tomcat tenga q estar configurado de alguna manera o talvez q en el directorio de la aplicacion web sea necesario poner un archivo del driver(en mi caso uso:"sun.jdbc.odbc.jdbcOdbcDriver")??

lo que pasa esq tengo un servlet q llama a una BD, al compilar el archivo.java no me da ningun error,el error es cuando presiono l boton submit de un .html el cual llama al servlet...me sale:
Estado HTTP 404: No esta disponible el Servlet encuesta.
he buscado informacion sobre el tema y encontre q si el metodo init vota una excepcion entonces me saldria ese error..y justo en el servlet para conectarme a la BD la coneccion esta dentro del metodo init y si falla me vota la excepcion....entonces doy por entendido q l problema esta en la coneccion, pero solo cuando lo hago desde un servlet, ya que la misma coneccion a la misma db si funciona correctamente con una aplicacion simple.por eso mi duda: tiene algo q ver con la configuracion del tomcat??o tengo q incluirle algo en el directorio de mi aplicacion??

gracias x la ayuda

eledil
  #2 (permalink)  
Antiguo 29/09/2005, 00:12
 
Fecha de Ingreso: septiembre-2005
Ubicación: Madrid, España
Mensajes: 18
Antigüedad: 18 años, 7 meses
Puntos: 0
Ese error debe estar relacionado con un error en la configuracion del fichero web.xml, ¿seguro que has indicado correctamente el servlet y su clase asociada?.

Cuando cosigas ver el servlet seguramente se producira algun error de driver no disponible, pero eso ya es el segundo paso.

Respuesta proporcionada por www.consultoriajava.com
  #3 (permalink)  
Antiguo 29/09/2005, 09:51
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
Ese es un tipico error cuando tu servidor web no encuentra el Servlet especificado, bien por que no esta en la ruta correcta o simplemente no esta, o que esta pero lo tienes mal mapeado en tu web.xml o no lo mapeaste.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #4 (permalink)  
Antiguo 30/09/2005, 07:43
 
Fecha de Ingreso: septiembre-2005
Mensajes: 34
Antigüedad: 18 años, 7 meses
Puntos: 0
no creo q sea mapeado.

bueno muchas gracias por responderme;

no es problema de mapeado ya que hice un prueba con el mismo servlet y el mismo mapeo solo que sin coneccion a la BD y si me funcionó, pero cuando lo implemento para que se conecte a una BD no funciona...ah revise los logs (stdout) y me sale lo siguiente;

************************************************** ********

java.sql.SQLException: [Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknow n Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at ejemplos.servletEncuesta.init(servletEncuesta.java :20)
at org.apache.catalina.core.StandardWrapper.loadServl et(StandardWrapper.java:1091)
at org.apache.catalina.core.StandardWrapper.allocate( StandardWrapper.java:750)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:130)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:868)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.processConnection(Http11Protocol.jav a:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)


************************************************** ***
entonces como dice el log, el problema es con la base de datos, lo raro es que la misma BD con l mismo controlador si me funcionan desde una aplicacion normal en java(aplicacion no web)...no necesito poner archivos del driver en alguna capeta dentro de mi aplicacion en el tomcat??

gracias por ayudarme
saludos..

elEdil.
  #5 (permalink)  
Antiguo 30/09/2005, 15:46
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
Podrias facilitarnos cual es el codigo de tu conexion.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #6 (permalink)  
Antiguo 03/10/2005, 15:00
 
Fecha de Ingreso: septiembre-2005
Mensajes: 34
Antigüedad: 18 años, 7 meses
Puntos: 0
codigo:

hola gracias por responderme,
bueno aqui va el codigo:

/************************************************** *****/
import java.io.*;
import java.text.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class servletEncuesta extends HttpServlet {

Connection coneccion;
PreparedStatement actualizarVotos,totalVotos,resultados;
public void init(ServletConfig config) throws ServletException {

try{

String url="jdbc:odbc:dbencuesta";
String userID="abc";
String password="abcd";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
coneccion=DriverManager.getConnection(url,userID,p assword);
actualizarVotos=coneccion.prepareStatement("UPDATE resultadoencuesta SET votos=votos+1 WHERE id=?");
totalVotos=coneccion.prepareStatement("SELECT sum(votos) FROM resultadoencuesta");
resultados=coneccion.prepareStatement("SELECT opcion,votos,id FROM resultadoencuesta ORDER BY id");
}
catch(Exception exception){
exception.printStackTrace();
throw new UnavailableException(exception.getMessage());
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException {
response.setContentType("text/html");
int valor=Integer.parseInt(request.getParameter("anima l"));
PrintWriter out=response.getWriter();
DecimalFormat twoDigits=new DecimalFormat("0.00");
out.println("<?xml version=\"1.0\"?>");
out.println("<html>");
out.println("<head>");
try {
actualizarVotos.setInt(1,valor);
actualizarVotos.executeUpdate();

ResultSet totalRes=totalVotos.executeQuery();
totalRes.next();
int total =totalRes.getInt(1);

ResultSet resultRes=resultados.executeQuery();
out.println("<title>Gracias por Votar</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>Gracias por participar");
out.println("<br />resultados:</p><pre>");
int votos;
while(resultRes.next()){
out.print(resultRes.getString(1));
out.print(":");
votos=resultRes.getInt(2);
out.print(twoDigits.format((double)votos/total*100));
out.print("% responses: ");
out.println(votos);
}
resultRes.close();

out.print("Total de Respuestas: ");
out.print(total);
out.println("</pre></body></html>");
out.close();
}
catch(SQLException sqlexception){
sqlexception.printStackTrace();
out.println("<title>Error</title>");
out.println("</head>");
out.println("<body>Error de la base de datos. Intente de nuevo mas tarde. </p></body></html>");
out.close();
}
}
public void destroy(){
try{
actualizarVotos.close();
totalVotos.close();
resultados.close();
coneccion.close();
}
catch(SQLException sqlexception){
sqlexception.printStackTrace();
}
}
}

/************************************************** ****/

bueno gracias x la ayuda

eledil.
  #7 (permalink)  
Antiguo 03/10/2005, 17:39
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
Prueba a cambiar esta linea

String url="jdbc:odbc:dbencuesta";

por esta

String url="jdbc:odbc://localhost/dbencuesta";

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:13.