Buen día :)!
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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <h1>Agregar un contacto
</h1> <form action="Guardar" method="Post"> Usuario:
<input type="text" name="nombre"> Telefono:
<input type="text" name="telefono"> Direccion:
<input type="text" name="direccion"> <input type="submit" value="Guardar"><br>
Este es mi Servlet en un paquete llamado Controlador ---> Guardar.java
Código Java:
Ver originalpackage 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)
String nombre
= request.
getParameter("nombre"); String telefono
= request.
getParameter("telefono"); String direccion
= request.
getParameter("direccion");
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
public String getServletInfo
() { return "Short description";
}// </editor-fold>
}
Y mi Entity en un paquete que llame Modelo ----> Usuario.java
Código Java:
Ver originalpackage 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() {
}
public Usuario
(Integer idusuario
) { this.idusuario = idusuario;
}
return idusuario;
}
public void setIdusuario
(Integer idusuario
) { this.idusuario = idusuario;
}
return nombre;
}
public void setNombre
(String nombre
) { this.nombre = nombre;
}
return telefono;
}
public void setTelefono
(String telefono
) { this.telefono = telefono;
}
public String getDireccion
() { return direccion;
}
public void setDireccion
(String direccion
) { this.direccion = direccion;
}
@Override
public int hashCode() {
int hash = 0;
hash += (idusuario != null ? idusuario.hashCode() : 0);
return hash;
}
@Override
public boolean equals
(Object object
) { // 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 + " ]";
}
}