Disculpen la molestia, soy nuevo en JSP y tengo un problema al intentar dar de alta un registro. Verán, tengo un pequeño formulario con 3 cajas de texto y un botón el cual debería de dar de alta un registro en mi tabla "usuario"...
Éste es el error que me sale:
javax.persistence.PersistenceException: Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.ValidationExcep tion
Exception Description: Cannot acquire data source [primeraagenda].
Internal Exception: javax.naming.NamingException: Lookup failed for 'primeraagenda' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterpr ise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.pr esentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.na ming} [Root exception is javax.naming.NameNotFoundException: primeraagenda not found]
Nota Los rastreos de pila completos de la excepción y sus causas raíz están disponibles en los logs GlassFish Server Open Source Edition 4.0 .
Éste es mi código HTML:
Código HTML:
Ver original
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="Guardar" method="Post"> Usuario: <input type="text" name="nombre"> Telefono: <input type="text" name="telefono"> Direccion: <input type="text" name="direccion"> </form> </body> </html>
Este es mi Servlet en un paquete llamado Controlador ---> Guardar.java
Código Java:
Ver original
package controlador; import java.io.IOException; import java.io.PrintWriter; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author Deivid */ @WebServlet(name = "Guardar", urlPatterns = {"/Guardar"}) public class Guardar extends HttpServlet { /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) modelo.Usuario usuario = new modelo.Usuario(); usuario.setIdusuario(0); usuario.setNombre(nombre); usuario.setTelefono(telefono); usuario.setDireccion(direccion); EntityManager em; EntityManagerFactory emf; emf=Persistence.createEntityManagerFactory("AgendasPU"); em = emf.createEntityManager(); em.getTransaction().begin(); em.persist(usuario); em.flush(); em.getTransaction().commit(); response.sendRedirect("correcto.jsp"); } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override return "Short description"; }// </editor-fold> }
Y mi Entity en un paquete que llame Modelo ----> Usuario.java
Código Java:
Ver original
package modelo; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; /** * * @author Deivid */ @Table(name = "usuario") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u"), @NamedQuery(name = "Usuario.findByIdusuario", query = "SELECT u FROM Usuario u WHERE u.idusuario = :idusuario"), @NamedQuery(name = "Usuario.findByNombre", query = "SELECT u FROM Usuario u WHERE u.nombre = :nombre"), @NamedQuery(name = "Usuario.findByTelefono", query = "SELECT u FROM Usuario u WHERE u.telefono = :telefono"), @NamedQuery(name = "Usuario.findByDireccion", query = "SELECT u FROM Usuario u WHERE u.direccion = :direccion")}) private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "idusuario") @Size(max = 45) @Column(name = "nombre") @Size(max = 45) @Column(name = "telefono") @Size(max = 45) @Column(name = "direccion") public Usuario() { } this.idusuario = idusuario; } return idusuario; } this.idusuario = idusuario; } return nombre; } this.nombre = nombre; } return telefono; } this.telefono = telefono; } return direccion; } this.direccion = direccion; } @Override public int hashCode() { int hash = 0; hash += (idusuario != null ? idusuario.hashCode() : 0); return hash; } @Override // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Usuario)) { return false; } Usuario other = (Usuario) object; if ((this.idusuario == null && other.idusuario != null) || (this.idusuario != null && !this.idusuario.equals(other.idusuario))) { return false; } return true; } @Override return "modelo.Usuario[ idusuario=" + idusuario + " ]"; } }