style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Perdido en tomcat 6,7,8 + eclipse luna

Tengo el siguiente Servlet que no funciona al llamar al metodo create.
PEro si creo una clase para probarlo desde un main el metodo create de la clase CicloDAO funciona ok.

Con el servlet no funciona el boolean r = cdao.create(cdto);

Busco pistas por donde mirar que esta fallando.Ya que en otra clase que no sea el servlet si funciona
A ver si me pueden ayudar. Llevo ya algunos días parado en este error.

Saludos

package controlador;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.CicloDAO;
import dto.CicloDTO;

/**
 * Servlet implementation class CreateCiclo
 */

public class CreateCiclo extends HttpServlet {
        private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */

    public CreateCiclo() {
        super();
        // TODO Auto-generated constructor stub
    }

        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // TODO Auto-generated method stub
        }

        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // TODO Auto-generated method stub
                String ciclo = request.getParameter("nombre");
                System.out.println(ciclo);
                CicloDTO cdto = new CicloDTO(ciclo);
                CicloDAO cdao = new CicloDAO();
                boolean r = cdao.create(cdto);
        }

}

De esta forma con el main si funciona y hace el insert correctamente.

import dao.CicloDAO;
import dto.CicloDTO;

public class Test {
        public static void main(String[] args){
               
                String ciclo = "2060-2060";
                System.out.println(ciclo);
                CicloDTO cdto = new CicloDTO(ciclo);
                CicloDAO cdao = new CicloDAO();
                boolean r = cdao.create(cdto);
               
        }

}

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Supongo que CicloDAO

Supongo que CicloDAO encuentra su configuración, driver o clases en el path donde se se ejecuta el programa, puede ser que en el caso del servlet los esté buscando en la raíz del ejecutable que es tomcat ( ejemplo c:/tomcat/bin/ ) en vez de el classpath de la app misma.

Todo depende de como funcione CicloDAO, empieza por ahí.

meto las lib al tomcat/bin

Voy a probar metiendo la unica lib en este caso mysql-connector.jar dentro del bin/ de tomcat.

Solucionado con el comentario de @OscarRyz

copie la lib de mysql-connector-java-5.1.37-bin.jar a path/tomcat/lib y funciono.
Gracias OscarRyz .

Imagen de linux-genesis

Tomcat siempre dando dolores de cabeza

Excelente respeusta, el tomcat requiere que se le agreguen los jars conectores en la carpeta /lib del proyecto.
Esto me ocurrió cuando trabaje proyectos Web Services con Axis2 y MetaSolv Solution, al final resulto ser los caprichos del tomcat jajajaja.

Saludos.

Mejor aún arregla CicloDAO

Mejor aún arregla CicloDAO para que busque las clases en el classpath en vez de buscarlas en el directorio actual y/y para que reporte mensajes de error cuando sucedan ( supongo que tiene un try/catch que ignora todo)

Intenta copiando el jar a /lib de tu proyecto o en su defecto a /classes.

Usa algún build system como maven y ... sigh

Ahorita funciona porque tienes un solo jar en el /bin de tomcat, es muy mala idea poner jars ahí. Si te encuentras con que quieres poner el segundo jar detente y busca cómo funciona el classpath.

Gracias oscar solucionado

Quedando así dentro de web-inf/lib/aqui todos mis jars

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">