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

Problema con servlet

Estas en el tema de Problema con servlet en el foro de Java en Foros del Web. Buenas noches, les traigo un problemon.. para mi por lo menos, por que no le he encontrado solucion. Estoy diseñando un formulario donde se envian ...
  #1 (permalink)  
Antiguo 10/12/2013, 00:07
Avatar de chrisdawill  
Fecha de Ingreso: agosto-2013
Mensajes: 25
Antigüedad: 10 años, 8 meses
Puntos: 0
Problema con servlet

Buenas noches, les traigo un problemon.. para mi por lo menos, por que no le he encontrado solucion. Estoy diseñando un formulario donde se envian la info a un servlet y este a su vez a la base de datos, el problema es que no lo envia y no se por que les pongo el codigo y una advertencias que me tira el glassfish:

Codigo:
Código Java:
Ver original
  1. package Codigo;
  2.  
  3. import BD.BaseDatos;
  4. import java.io.IOException;
  5. import java.io.PrintWriter;
  6. import java.sql.PreparedStatement;
  7. import java.sql.ResultSet;
  8. import java.sql.SQLException;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.annotation.WebServlet;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14.  
  15. /**
  16.  *
  17.  * @author Chris
  18.  */
  19. @WebServlet(name = "InsertarCliente", urlPatterns = {"/InsertarCliente"})
  20. public class InsertarCliente extends HttpServlet {
  21.  
  22.     /**
  23.      * Processes requests for both HTTP
  24.      * <code>GET</code> and
  25.      * <code>POST</code> methods.
  26.      *
  27.      * @param request servlet request
  28.      * @param response servlet response
  29.      * @throws ServletException if a servlet-specific error occurs
  30.      * @throws IOException if an I/O error occurs
  31.      */
  32.     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
  33.             throws ServletException, IOException {
  34.         response.setContentType("text/html;charset=UTF-8");
  35.         PrintWriter out = response.getWriter();
  36.         PreparedStatement SentenciaDB;
  37.         String vSQL;
  38.         ResultSet rs = null;
  39.         String vMensaje;
  40.        
  41.         vSQL ="INSERT INTO UTH.CLIENTES"
  42.                 +"(NOMBRESCLIENTE, APELLIDOSCLIENTE, EDADCLIENTE, SEXOCLIENTE, DIRECCIONCLIENTE, TELEFONOCLIENTE, USUARIOCLIENTE, CONTRASEÑACLIENTE)"
  43.                 +"VALUES(?,?,?,?,?,?,?,?)";
  44.        
  45.        try {
  46.            BaseDatos.AbrirConexionDB();
  47.            SentenciaDB = BaseDatos.Conexion.prepareStatement(vSQL);
  48.            SentenciaDB.setString(2,request.getParameter("NombresCliente"));
  49.            SentenciaDB.setString(3,request.getParameter("ApellidosCliente"));
  50.            SentenciaDB.setInt(4,Integer.parseInt(request.getParameter("EdadCliente")));
  51.            SentenciaDB.setString(5,request.getParameter("SexoCliente"));
  52.            SentenciaDB.setString(6,request.getParameter("DireccionCliente"));
  53.            SentenciaDB.setString(7,request.getParameter("TelefonoCliente"));
  54.            SentenciaDB.setString(8,request.getParameter("UsuarioCliente"));
  55.            SentenciaDB.setString(9,request.getParameter("ContraseñaCliente"));
  56.                 int  Registros = SentenciaDB.executeUpdate();
  57.                 vMensaje = "El nuevo cliente ha sido agregado";
  58.                 response.sendRedirect("/Proy3erParcialBiblioteca/Bienvenido.html");
  59.            
  60.        } catch(SQLException e) {
  61.            vMensaje = "No fue posible guardar->" + e.getMessage();
  62.            response.sendRedirect("/Proy3erParcialBiblioteca/Error.html");
  63.        }
  64.        finally {
  65.            BaseDatos.CerrarConexionDB();
  66.        }
  67.     }
  68.  
  69.     // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
  70.     /**
  71.      * Handles the HTTP
  72.      * <code>GET</code> method.
  73.      *
  74.      * @param request servlet request
  75.      * @param response servlet response
  76.      * @throws ServletException if a servlet-specific error occurs
  77.      * @throws IOException if an I/O error occurs
  78.      */
  79.     @Override
  80.     protected void doGet(HttpServletRequest request, HttpServletResponse response)
  81.             throws ServletException, IOException {
  82.         processRequest(request, response);
  83.     }
  84.  
  85.     /**
  86.      * Handles the HTTP
  87.      * <code>POST</code> method.
  88.      *
  89.      * @param request servlet request
  90.      * @param response servlet response
  91.      * @throws ServletException if a servlet-specific error occurs
  92.      * @throws IOException if an I/O error occurs
  93.      */
  94.     @Override
  95.     protected void doPost(HttpServletRequest request, HttpServletResponse response)
  96.             throws ServletException, IOException {
  97.         processRequest(request, response);
  98.     }
  99.  
  100.     /**
  101.      * Returns a short description of the servlet.
  102.      *
  103.      * @return a String containing servlet description
  104.      */
  105.     @Override
  106.     public String getServletInfo() {
  107.         return "Short description";
  108.     }// </editor-fold>
  109. }

y los errores del glasfish son estos:

Cita:
Advertencia: Class 'javax.ejb.PostActivate' not found, interception based on it is not enabled
Advertencia: Class 'javax.ejb.PrePassivate' not found, interception based on it is not enabled
y este mas abajo:
Cita:
Grave: java.sql.SQLNonTransientConnectionException: Se ha rechazado la conexión porque no se ha encontrado la base de datos Proyecto_Biblioteca [uth on UTH].
Tambien les adjunto la clase conexion a ver si ven algo que yo no:
package BD;

Código Java:
Ver original
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. import javax.swing.JOptionPane;
  7.  
  8. /**
  9.  *
  10.  * @author ChrisW
  11.  */
  12. public class BaseDatos {
  13.     ResultSet res=null;
  14.     Statement st=null;
  15.     public static Connection Conexion;
  16.     private static boolean MensajesEnConsola = true;
  17.  
  18.  public static void AbrirConexionDB() {
  19.  //Variables para Conectarse al Motor de Base de Datos
  20.  String vDB_URL     = "jdbc:derby://localhost:1527/Proyecto_Biblioteca [uth on UTH]";      
  21.  String JDBC_Driver = "org.apache.derby.jdbc.ClientDriver";
  22.  String vLogin      = "uth";
  23.  String vPassword   = "uth";  
  24.        
  25.      try {
  26.        Class.forName(JDBC_Driver);  
  27.        Conexion = DriverManager.getConnection(vDB_URL, vLogin, vPassword);
  28.        MostrarAlerta("Conectado Correctamente a la Base de Datos");   }
  29.      catch (ClassNotFoundException e)
  30.      {
  31.        MostrarAlerta("El Driver o la Clase especificada es Incorrecta->" + e.getMessage());
  32.        //e.printStackTrace();
  33.        System.exit(0);  
  34.      }
  35.      catch (Exception e) {
  36.        System.out.println("Error Desconocido Conectado a la BDD->" + e.getMessage());
  37.        e.printStackTrace();
  38.        System.exit(0);
  39.        }      
  40.  }  //fin Abrir COnexionDB
  41.  
  42.  //Verifica si existe una conexin abierta e intenta cerrarla
  43.  public static void CerrarConexionDB(){
  44.    try{
  45.      if (Conexion.isValid(0) || Conexion!=null){
  46.          Conexion.close();
  47.        }
  48.    }
  49.    catch (SQLException e)
  50.    {
  51.        Conexion = null;
  52.    }
  53.  }
  54.  
  55.  public int verificar(String sql){
  56.         try{
  57.             st=getCon().createStatement();
  58.             res= st.executeQuery(sql);
  59.             if (res.next())
  60.                 return 1;
  61.             st.close();
  62.         }
  63.         catch(SQLException e){
  64.             System.out.println(e);
  65.         }
  66.         return -1;
  67.     }
  68.  
  69.  //Metodo para mostrar advertencias en pantalla o consola
  70.  public static void MostrarAlerta(String pvTexto){
  71.      if (MensajesEnConsola)      
  72.          System.out.println(pvTexto);
  73.      else
  74.          JOptionPane.showMessageDialog(null,
  75.                                        pvTexto,
  76.                                        "Advertencia",
  77.                                        JOptionPane.INFORMATION_MESSAGE);
  78.      
  79.  } //fin MostrarAlerta
  80.  public Connection getCon() {
  81.         return Conexion;
  82.     }
  83.    
  84.    
  85. }

Última edición por pzin; 10/12/2013 a las 01:42 Razón: formato código
  #2 (permalink)  
Antiguo 10/12/2013, 03:04
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: Problema con servlet

Pues, por el error, la conexión no se realiza bien porque no te encuentra la base de datos. Si debugueas, en que linea se te lanza el error?

¿En la 47 de la clase InsertarCliente?

¿Estas seguro que el nombre de la BBDD que has indicado es el correcto?
  #3 (permalink)  
Antiguo 10/12/2013, 10:22
Avatar de chrisdawill  
Fecha de Ingreso: agosto-2013
Mensajes: 25
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema con servlet

Hola, pues no he probado el debug.. hoy probe correrlo otra vez, esta vez no me tiro error de base de datos sino que me tiro este error:

Advertencia: StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception

y siempre los 2 anteriores y a la hora de correr el proyecto me tira error de glassfish "Estado de HTTP 404"... y en descripcion:

El recurso solicitado ({0}) no está disponible.
  #4 (permalink)  
Antiguo 10/12/2013, 12:14
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Problema con servlet

Hola,

Cita:
Iniciado por chrisdawill Ver Mensaje
public static void AbrirConexionDB() {
//Variables para Conectarse al Motor de Base de Datos
String vDB_URL = "jdbc:derby://localhost:1527/Proyecto_Biblioteca [uth on UTH]";
String JDBC_Driver = "org.apache.derby.jdbc.ClientDriver";
El nombre de la base de datos seguramente debe ser "Proyecto_Biblioteca" sin el "[uth on UTH]", eso se lo agrega NetBeans para identificar las diferentes conexiones que podrías tener a la misma base de datos con diferentes usuarios.

Código:
 Class 'javax.ejb.PostActivate' not found, interception based on it is not enabled
Esos errores son 'normales' en el servidor Glassfish. (Si es que se podrían llamar errores normales)

Cita:
Iniciado por chrisdawill Ver Mensaje
y siempre los 2 anteriores y a la hora de correr el proyecto me tira error de glassfish "Estado de HTTP 404"... y en descripcion:

El recurso solicitado ({0}) no está disponible.
Ese es otro problema, intenta hacer un undeploy, reinicia el servidor Glassfish y vuelve a hacer el deploy.

Adicionalmente, el servidor Glassfish cuenta con un pool de conexiones muy eficiente, podrías eliminar toda tu conexión a la base de datos usando JNDI, básicamente creas un recurso JNDI con el administrador de Glassfish y en tu aplicación usas la anotación @Resource en una variable de tipo DataSource, con la cual obtienes un getConnection().

Saludos,
  #5 (permalink)  
Antiguo 10/12/2013, 12:45
Avatar de chrisdawill  
Fecha de Ingreso: agosto-2013
Mensajes: 25
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema con servlet

Hola, gracias por las correcciones. Corregi la clase de base de datos e hice tu ultima sugerencia, solo que ahora me tiro un error que no he podido solucionar y tengo semanas con ese... Solo que habia desaparecido, este error por cierto tambien me lo tiro cuando quise usar persistence

Error:
"warning: Supported source version 'RELEASE_6' from annotation processor 'org.eclipse.persistence.internal.jpa.modelgen.Can onicalModelProcessor' less than -source '1.7'
1 warning" gracias
  #6 (permalink)  
Antiguo 10/12/2013, 13:00
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Problema con servlet

Hola,

Cita:
Iniciado por chrisdawill Ver Mensaje
... Solo que habia desaparecido, este error por cierto tambien me lo tiro cuando quise usar persistence

Error:
"warning: Supported source version 'RELEASE_6' from annotation processor 'org.eclipse.persistence.internal.jpa.modelgen.Can onicalModelProcessor' less than -source '1.7'
1 warning" gracias
Técnicamente tampoco es un error, es un Warning, y normalmente no da ningún problema, el motivo es que el procesador de Eclipse Link fue creado para la versión 6 del JDK y estas usando la versión 7.

Si puedes vivir con eso, ese warning mientras compilas tu proyecto, no hay ningún problema, sino tendrías que configurar tu proyecto, ya sea Maven u otros para que compile y use la versión 6.

Ahora bien, si no estas usando nada de EclipseLink puedes eliminar la referencia en el proyecto a esa librería. El Artifact ID de Maven es 'org.eclipse.persistence.jpa.modelgen.processor'.

Saludos,
  #7 (permalink)  
Antiguo 10/12/2013, 13:43
Avatar de chrisdawill  
Fecha de Ingreso: agosto-2013
Mensajes: 25
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema con servlet

Hola, gracias por responder y haber estado al tanto. Asumi que ese era el problema, voy a probar lo del pool de conexiones, gracias otra vez

Etiquetas: formulario, html, servlet
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 16:58.