Salve a tutti, sto utilizzando NetBeans 7.1 IDE con Glassfish 3.1.2 per sviluppare una semplice applicazione web J2EE v6. L'applicazione, fin'ora, non è altro che l'applicazione per la gestione dei contatti trovata in un tutorial qui. Ho cercato in lungo e in largo una soluzione ma non ne riesco a uscirne.
L'applicazione usa PrimaFaces 3.2 con JSF 2.1.7.
File ContactsBean.java
codice:
package com.organizer.ejb;
import com.organizer.entity.Contact;
import java.util.List;
import javax.annotation.Resource;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import javax.persistence.Query;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
@ManagedBean
@RequestScoped
public class ContactsBean {
private List<Contact> contacts;
private Contact contact=new Contact();
@PersistenceUnit(unitName="PersonalOrganizerJPA")
private EntityManagerFactory emf;
@Resource
private UserTransaction utx;
public ContactsBean()
{
}
public List<Contact> getContacts() {
EntityManager em = emf.createEntityManager();
Query query = em.createQuery("SELECT c FROM Contact c");
contacts = (List<Contact>)query.getResultList();
return contacts;
}
public void salva(ActionEvent event){
EntityManager em = emf.createEntityManager();
try {
utx.begin();
em.joinTransaction();
em.persist(contact);
utx.commit();
showGrowlInsMessage();
} catch (Exception e) {
try {
utx.rollback();
} catch (IllegalStateException e1) {
showGrowlErrorMessage();
e1.printStackTrace();
} catch (SecurityException e1) {
showGrowlErrorMessage();
e1.printStackTrace();
} catch (SystemException e1) {
showGrowlErrorMessage();
e1.printStackTrace();
}
}finally{
em.close();
}
contact=null;
}
public void aggiorna(ActionEvent event){
EntityManager em = emf.createEntityManager();
try {
utx.begin();
em.joinTransaction();
em.merge(contact);
utx.commit();
showGrowlUpdMessage();
} catch (Exception e) {
try {
utx.rollback();
} catch (IllegalStateException e1) {
showGrowlErrorMessage();
e1.printStackTrace();
} catch (SecurityException e1) {
showGrowlErrorMessage();
e1.printStackTrace();
} catch (SystemException e1) {
showGrowlErrorMessage();
e1.printStackTrace();
}
}finally{
em.close();
}
contact=null;
}
public void elimina(ActionEvent event){
EntityManager em = emf.createEntityManager();
try {
utx.begin();
em.joinTransaction();
Contact c = em.find(Contact.class, contact.getId());
em.remove(c);
utx.commit();
this.showGrowlDelMessage();
} catch (Exception e) {
try {
utx.rollback();
} catch (IllegalStateException e1) {
showGrowlErrorMessage();
e1.printStackTrace();
} catch (SecurityException e1) {
showGrowlErrorMessage();
e1.printStackTrace();
} catch (SystemException e1) {
showGrowlErrorMessage();
e1.printStackTrace();
}
}finally{
em.close();
}
contact=null;
}
public void setContacts(List<Contact> contacts) {
this.contacts = contacts;
}
public Contact getContact() {
return contact;
}
public void setContact(Contact contact) {
this.contact = contact;
}
private void showGrowlUpdMessage(){
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Successful", "Contatto aggiornato con successo"));
}
private void showGrowlInsMessage(){
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Successful", "Contatto inserito con successo"));
}
private void showGrowlDelMessage(){
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Successful", "Contatto eliminato con successo"));
}
private void showGrowlErrorMessage(){
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("Errore", "Operazione fallita"));
}
}
File web.xml
codice:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>faces/ContactsPage.xhtml</welcome-file>
</welcome-file-list>
</web-app>