Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    1

    problema inserimento dati nel db

    Ciao,sto svolgendo il progetto,ed avrei un problema nell'inserimento dei dati nel database.
    Ho creato un bottone "salva" che una volta cliccato (mediante web services) viene richiamata la seguente classe:

    codice:
    @WebService()
    @Stateless()
    public class SalvaUtenteWS
    {
        @WebMethod(operationName = "salvaUtente")
        public String salvaUtente (
                                    @WebParam(name = "nome")String nome,
                                    @WebParam(name = "cognome")String cognome,
                                    @WebParam(name = "username")String username,
                                    @WebParam(name = "password")String password,
                                    @WebParam(name = "confPassword")String confPassword,
                                    @WebParam(name = "email")String email
                                  ) throws PreexistingEntityException,RollbackFailureException, Exception
        {
            if(nome.equals("") || cognome.equals("") || username.equals("") || password.equals("") || email.equals(""))
            {
                System.out.println("errore inserimento dati");
                return "fallimento";
            }
            else if(password.equals(confPassword))
            {    
                Utente u=new Utente();
                System.out.println("Ho creato un nuovo utente");
                u.setNome(nome);
                System.out.println("inserisco il nome nel db");
                u.setCognome(cognome);
                System.out.println("inserisco il cognome nel db");  
                u.setUsername(username);
                System.out.println("inserisco username nel db");
                u.setPassword(password);
                System.out.println("inserisco la password nel db");
                u.setEmail(email);
                System.out.println("inserisco la mail nel db");
                UtenteJpaController umi=new UtenteJpaController();
                umi.create(u);
                System.out.println("inserisco l'utente nel db");
                return "successo";
            }
            else
            {
                System.out.println("errore password");
                return "fallimento";
            }
        }
    }
    dove l'oggetto Utente è un entity bean corrispondente ad una tabella

    codice:
    @Entity
    @Table(name = "UTENTE")
    @NamedQueries({@NamedQuery(name = "Utente.findAll", query = "SELECT u FROM Utente u"), @NamedQuery(name = "Utente.findByPassword", query = "SELECT u FROM Utente u WHERE u.password = :password"), @NamedQuery(name = "Utente.findByNome", query = "SELECT u FROM Utente u WHERE u.nome = :nome"), @NamedQuery(name = "Utente.findByCognome", query = "SELECT u FROM Utente u WHERE u.cognome = :cognome"), @NamedQuery(name = "Utente.findByUsername", query = "SELECT u FROM Utente u WHERE u.username = :username"), @NamedQuery(name = "Utente.findByEmail", query = "SELECT u FROM Utente u WHERE u.email = :email")})
    
    public class Utente implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @Basic(optional = false)
        @Column(name = "PASSWORD")
        private String password;
        @Basic(optional = false)
        @Column(name = "NOME")
        private String nome;
        @Basic(optional = false)
        @Column(name = "COGNOME")
        private String cognome;
        @Basic(optional = false)
        @Column(name = "USERNAME")
        private String username;
        @Basic(optional = false)
        @Column(name = "EMAIL")
        private String email;
    
        public Utente() {    }
    
        public Utente(String password) {
            this.password = password;    }
    
        public Utente(String password, String nome, String cognome, String username, String email) {
            this.password = password;
            this.nome = nome;
            this.cognome = cognome;
            this.username = username;
            this.email = email;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getNome() {
            return nome;
        }
        public void setNome(String nome) {
            this.nome = nome;
        }
        public String getCognome() {
            return cognome;
        }
        public void setCognome(String cognome) {
            this.cognome = cognome;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
    }
    mentre l'oggetto UtenteJpaController è un gestore che mi permette di creare e cancellare l'utente dal db

    codice:
    public class UtenteJpaController {
        @Resource
        private UserTransaction utx = null;
        @PersistenceUnit(unitName = "EJBPU")
        private EntityManagerFactory emf = null;
    
        public EntityManager getEntityManager() {
            return emf.createEntityManager();
        }
        public void create(Utente utente) throws PreexistingEntityException, RollbackFailureException, Exception {
            EntityManager em = null;
            try {
                utx.begin();
                em = getEntityManager();
                em.persist(utente);
                utx.commit();
            } catch (Exception ex) {
                try {
                    utx.rollback();
                } catch (Exception re) {
                    throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
                }
                if (findUtente(utente.getPassword()) != null) {
                    throw new PreexistingEntityException("Utente " + utente + " already exists.", ex);
                }
                throw ex;
            } finally {
                if (em != null) {
                    em.close();
                }
            }
        }
        public void edit(Utente utente) throws NonexistentEntityException, RollbackFailureException, Exception {
            EntityManager em = null;
            try {
                utx.begin();
                em = getEntityManager();
                utente = em.merge(utente);
                utx.commit();
            } catch (Exception ex) {
                try {
                    utx.rollback();
                } catch (Exception re) {
                    throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
                }
                String msg = ex.getLocalizedMessage();
                if (msg == null || msg.length() == 0) {
                    String id = utente.getPassword();
                    if (findUtente(id) == null) {
                        throw new NonexistentEntityException("The utente with id " + id + " no longer exists.");
                    }
                }
                throw ex;
            } finally {
                if (em != null) {
                    em.close();
                }
            }
        }
        public void destroy(String id) throws NonexistentEntityException, RollbackFailureException, Exception {
            EntityManager em = null;
            try {
                utx.begin();
                em = getEntityManager();
                Utente utente;
                try {
                    utente = em.getReference(Utente.class, id);
                    utente.getPassword();
                } catch (EntityNotFoundException enfe) {
                    throw new NonexistentEntityException("The utente with id " + id + " no longer exists.", enfe);
                }
                em.remove(utente);
                utx.commit();
            } catch (Exception ex) {
                try {
                    utx.rollback();
                } catch (Exception re) {
                    throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
                }
                throw ex;
            } finally {
                if (em != null) {
                    em.close();
                }
            }
        }
        public List<Utente> findUtenteEntities() {
            return findUtenteEntities(true, -1, -1);
        }
        public List<Utente> findUtenteEntities(int maxResults, int firstResult) {
            return findUtenteEntities(false, maxResults, firstResult);
        }
        private List<Utente> findUtenteEntities(boolean all, int maxResults, int firstResult) {
            EntityManager em = getEntityManager();
            try {
                Query q = em.createQuery("select object(o) from Utente as o");
                if (!all) {
                    q.setMaxResults(maxResults);
                    q.setFirstResult(firstResult);
                }
                return q.getResultList();
            } finally {
                em.close();
            }
        }
        public Utente findUtente(String id) {
            EntityManager em = getEntityManager();
            try {
                return em.find(Utente.class, id);
            } finally {
                em.close();
            }
        }
        public int getUtenteCount() {
            EntityManager em = getEntityManager();
            try {
                return ((Long) em.createQuery("select count(o) from Utente as o").getSingleResult()).intValue();
            } finally {
                em.close();
            }
        }
    }
    Una volta che eseguo il tutto mi viene lanciata la seguente eccezione generata,secondo me,nel momento in cui si tenta di creare l'utente (umi.create(u)),infatti mi vengono stampate a video tutte le stringhe tranne l'ultima ("inserisco utente nel db").Questa è l'eccezione generata:

    codice:
    15:45:06,599 INFO  [TomcatDeployment] undeploy, ctxPath=/WebClient
    15:45:07,258 INFO  [TomcatDeployment] deploy, ctxPath=/WebClient
    15:46:27,803 WARN  [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected
    15:46:27,819 WARN  [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container
    15:46:27,824 WARN  [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container
    15:46:27,831 WARN  [InterceptorRegistry] applicable interceptors is non-existent for public java.lang.String session.SalvaUtenteWS.salvaUtente(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String) throws entityManager.exceptions.PreexistingEntityException,entityManager.exceptions.RollbackFailureException,java.lang.Exception
    15:46:27,846 WARN  [InterceptorRegistry] applicable interceptors is non-existent for public java.lang.String session.SalvaUtenteWS.salvaUtente(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String) throws entityManager.exceptions.PreexistingEntityException,entityManager.exceptions.RollbackFailureException,java.lang.Exception
    15:46:27,861 INFO  [STDOUT] Ho creato un nuovo utente
    15:46:27,861 INFO  [STDOUT] inserisco il nome nel db
    15:46:27,861 INFO  [STDOUT] inserisco il cognome nel db
    15:46:27,861 INFO  [STDOUT] inserisco username nel db
    15:46:27,861 INFO  [STDOUT] inserisco la password nel db
    15:46:27,861 INFO  [STDOUT] inserisco la mail nel db
    15:46:27,908 INFO  [STDOUT] 1
    15:46:27,908 INFO  [STDOUT] prima rollback
    15:46:27,938 WARN  [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected
    15:46:27,970 ERROR [SOAPFaultHelperJAXWS] SOAP request exception
    entityManager.exceptions.RollbackFailureException: An error occurred attempting to roll back the transaction.
            at entityManager.UtenteJpaController.create(UtenteJpaController.java:53)
            at session.SalvaUtenteWS.salvaUtente(SalvaUtenteWS.java:65)
            .
            .
            .
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
            at java.lang.Thread.run(Thread.java:636)
    Caused by: java.lang.NullPointerException
            at entityManager.UtenteJpaController.create(UtenteJpaController.java:50)
            ... 81 more
    P.S.ho allegato un file con le 3 classi java interessate

    Grazie
    Macimo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Prima di postare una discussione nel forum è d'obbligo la lettura del Regolamento interno. Ci sono delle regole ed è bene conoscerle.

    E' bene anche leggere prima altre discussioni così si arriva più facilmente a capire come si usa il forum.

    Nel tuo caso, non hai utilizzato i tag CODE (indicati nel punto 6 del suddetto regolamento) ed il risultato è davanti agli occhi di tutti: codice illeggibile e pagina del forum completamente sfasata nel layout.

    Per le prossime, usa i tag CODE quando posti del codice.

    Questa discussione la correggo io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.