JPA Persistieren mit JTA funktioniert nicht

Diskutiere Persistieren mit JTA funktioniert nicht im Data Tier Forum; Hallo, ich arbeite mich gerade in JPA ein. Ich habe ein Servlet geschrieben, welches eine Email-Adresse und ein Passwort von einer Usereingabe...

  1. OmegaPirat
    OmegaPirat Neues Mitglied
    Hallo,
    ich arbeite mich gerade in JPA ein. Ich habe ein Servlet geschrieben, welches eine Email-Adresse und ein Passwort von einer Usereingabe entgegen nimmt und die Daten in einer Datenbank ablegen soll.
    Die Klasse sieht so aus:
    Code (Java):
    package siemer.onlineshop;

    import java.io.IOException;

    import javax.annotation.Resource;
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.PersistenceUnit;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.transaction.HeuristicMixedException;
    import javax.transaction.HeuristicRollbackException;
    import javax.transaction.NotSupportedException;
    import javax.transaction.RollbackException;
    import javax.transaction.SystemException;
    import javax.transaction.UserTransaction;

    import siemer.onlineshop.model.Customer;

    /**
    * Servlet implementation class RegisterServlet
    */

    @WebServlet("/register")
    public class RegisterServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;

        @PersistenceUnit(unitName = "onlineshop-jpa")
        private EntityManagerFactory emf;
        @Resource
        private UserTransaction ut;

        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
         *      response)
         */

        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            if (emf == null)
                System.out.println("EMF:" + "null");
            EntityManager em = emf.createEntityManager();
            String email = request.getParameter("email");
            String password = request.getParameter("password");
            Customer customer = new Customer();
            customer.setEmail(email);
            customer.setPassword(password);
            customer.setId(7L);
            try {
                ut.begin();
                em.persist(customer);
                ut.commit();
                em.close();
            } catch (NotSupportedException | SystemException | SecurityException | IllegalStateException | RollbackException
                    | HeuristicMixedException | HeuristicRollbackException e) {
                e.printStackTrace();
            }
            RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");
            dispatcher.forward(request, response);
        }

    }
     
    Hier ist meine Customer-Klasse
    Code (Java):
    package siemer.onlineshop.model;

    import java.io.Serializable;

    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    @Entity
    @Table(schema="ONLINESHOP", name="CUSTOMER")
    public class Customer implements Serializable {

        /**
         *
         */

        private static final long serialVersionUID = -2892494802019584416L;
        @Id private Long id;
        private String email;
        private String password;

        public Customer() {

        }

        public Customer(String email, String password) {
            this.setEmail(email);
            this.setPassword(password);
        }

        public long getId() {
            return id;
        }

        public void setId(Long id) {
            this.id = id;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }
    }
     
    und hier ist noch meine persistence.xml
    Code (Text):
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
        <persistence-unit name="onlineshop-jpa" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/__default</jta-data-source>
        <class>siemer.onlineshop.model.Customer</class>
        </persistence-unit>
    </persistence>
     
    Wenn ich dies ausführe, erhalte ich keine Fehlermeldung, aber die Daten wurden nicht in der Datenbank abgelegt.
    In der Konsole steht nur:
    onlineshop-war was successfully deployed in 559 milliseconds.
    Kann mir jemand sagen, was ich falsch mache? Ich bin in dem Bereich noch ein Anfänger.
    Als Java-SE-Anwendung (also wenn der transaction-type = "RESOURCE_LOCAL" ist und den entsprechenden Anpassungen) funktioniert es jedenfalls.
    Vielen Dank im Voraus.
     
  2. Vielleicht hilft dir dieses Training hier weiter.
Die Seite wird geladen...

Persistieren mit JTA funktioniert nicht - Ähnliche Themen

System.property persistieren
System.property persistieren im Forum Java Basics - Anfänger-Themen
Mehrere "selectOne" persistieren
Mehrere "selectOne" persistieren im Forum Web Tier
NPE beim Persistieren einer Entität
NPE beim Persistieren einer Entität im Forum Data Tier
Arrays persistieren mit JPA
Arrays persistieren mit JPA im Forum Data Tier
DAO mit Komposition persistieren?
DAO mit Komposition persistieren? im Forum Allgemeines EE
Thema: Persistieren mit JTA funktioniert nicht