JPA Persistieren mit JTA funktioniert nicht

Bitte aktiviere JavaScript!
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:
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
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:
<?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.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben