2016-04-28 12 views
0

Ich habe eine einfache Web-Anwendung mit JPA2 (OpenJPA2).OpenJPA2 Rollbacks 'Create Entity' Transaktionen nach ein paar Tagen der Server startet

Ich starte den Server (TomEE + 1.7.4 auf einem Ubuntu Server 12.04 in einem VPS). Die App beginnt zu arbeiten und macht Service. Nach einigen Tagen in einer CRUD-Ansicht einer bestimmten Entität führt die Persistence-Engine beim Erstellen einer Entitätsinstanz einen Rollback für die Transaktionen zum Erstellen der Entitätsinstanz aus. Und ein Ausnahmebericht wird im Browser-Client angezeigt.

javax.ejb.EJBTransactionRolledbackException: Transaktion rückgängig gemacht wurde, vermutlich, weil setRollbackOnly während einer Synchronisation

versucht, viele Dinge genannt wurde, wollen nicht, euch hier zu ärgern, aber ich wirklich don‘ Ich weiß was zu tun ist!

Wenn ich TomEE heruntergefahren und starte es zurück. Problem verschwindet und die Entitäten werden vom EntityManager fehlerfrei erstellt und gespeichert.

DB-Engine ist MySQL. Projekt verwendet Maven. Die meisten Abhängigkeiten sind "bereitgestellt".

Nach beteiligt sind Dateien: Persistenz config:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="AEEA-PU" transaction-type="JTA"> 
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
    <jta-data-source>AEEA-JNDI2</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <shared-cache-mode>ALL</shared-cache-mode> 
    <properties> 
     <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/> 
     <property name="openjpa.jdbc.DBDictionary" value="org.apache.openjpa.jdbc.sql.MySQLDictionary"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

Die Entity-Klasse: (Getter und Setter weggelassen)

@Entity 
public class Ubicacion implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    private String descripcion; 
    private String salon; 
    private String horarios; 
    private String domicilio; 
    private String ciudad; 
    private String telefonos; 
    @Temporal(javax.persistence.TemporalType.TIMESTAMP) 
    private Date fechaHoraAlta; 
    private String comentarios; 
    @OneToOne(fetch = FetchType.EAGER) 
    private Usuario usuarioAlta; 

    private String urlMaps; 

Die abstrakte Fassade:

import java.util.List; import javax.persistence.EntityManager; 


public abstract class AbstractFacade<T> { 
    private Class<T> entityClass; 

    public AbstractFacade(Class<T> entityClass) { 
     this.entityClass = entityClass; 
    } 

    protected abstract EntityManager getEntityManager(); 

    public void create(T entity) { 
     getEntityManager().persist(entity); 
    } //... 

der Beton Fassade:

die Einheit zum Erzeugen und speichern sie command:
@Stateless 
public class UbicacionFacade extends AbstractFacade<Ubicacion> { 
    @PersistenceContext(unitName = "AEEA-PU") 
    private EntityManager em; 

    @Override 
    protected EntityManager getEntityManager() { 
     return em; 
    } 

und zum letzten, die verwaltete Bean mit ihrer Methode

public String ubicacionNueva()

, also von einem primefaces p genannt . Die Methode verwendet die temporäre Entität in der verwalteten Bean, richtet einige Eigenschaften wie den protokollierten Benutzer und das Erstellungsdatum ein und ruft die Fassade zum Speichern der Entität in der Datenbank auf.

@ManagedBean 
@SessionScoped 
public class UbicacionesBacking{ 

    @EJB 
    private UbicacionFacade ubicacionFacade; 

    private Ubicacion tmpUbi; 


    public UbicacionesBacking() { 
    } 

    public String ubicacionNueva() { 

     FacesContext context = FacesContext.getCurrentInstance(); 
     LoginBacking bean = context.getApplication().evaluateExpressionGet(context, "#{loginBacking}", LoginBacking.class); 

     this.tmpUbi.setUsuarioAlta(bean.getCurrentUser()); 
     this.tmpUbi.setFechaHoraAlta(new Date()); 

     ubicacionFacade.create(this.tmpUbi); 

     this.tmpUbi = new Ubicacion(); 

     return "ubicacionLista"; 
    } 

findet der Ausnahmebericht

Estado HTTP 500 - javax.el.ELException: javax.ejb.EJBTransactionRolledbackException: wurde Transaktion zurück rollt, vermutlich weil setRollbackOnly während einer Synchronisation aufgerufen wurde

Typ Informe de Excepción

mensaje javax.el.ELE xception: javax.ejb.EJBTransactionRolledbackException: Transaktion wurde zurück rollte, vermutlich weil setRollbackOnly während einer Synchronisation

descripción El servidor GEFUNDEN un Fehler interno que hizo que genannt wurde kein pudiera rellenar este Requerimiento.

Excepción

javax.servlet.ServletException: javax.el.ELException: javax.ejb.EJBTransactionRolledbackException: Transaktion wurde zurück rollte, vermutlich weil setRollbackOnly während einer Synchronisation javax.faces.webapp genannt wurde. FacesServlet.service (FacesServlet.java:230) org.primefaces.webapp.filter.FileUploadFilter.doFilter (FileUploadFilter.java:100)

causa raíz

org.apache.myfaces.view.facelets.el.ContextAwareELException: javax.el.ELException: javax.ejb.EJBTransactionRolledbackException: Transaktion zurückgesetzt wurde, vermutlich, weil setRollbackOnly während einer Synchronisation org.apache.myfaces genannt wurde. view.facelets.el.ContextAwareTagMethodExpression.invoke (ContextAwareTagMethodExpression.java:108) org.apache.myfaces.application.ActionListenerImpl.processAction (ActionListenerImpl.java:74) javax.faces.component.UICommand.broadcast (UICommand.java: 120) javax.faces.component.UIViewRoot._broadcastAll (UIViewRoot.java:1172) javax.faces.component.UIViewRoot.broadcastEvents (UIViewRoot.java:365) javax.faces.component.UIViewRoot._process (UIViewRoo t.java:1658) javax.faces.component.UIViewRoot.processApplication (UIViewRoot.java:862) org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute (InvokeApplicationExecutor.java:42) org.apache.myfaces.lifecycle .LifecycleImpl.executePhase (LifecycleImpl.java:196) org.apache.myfaces.lifecycle.LifecycleImpl.execute (LifecycleImpl.java:143) javax.faces.webapp.FacesServlet.service (FacesServlet.java:198) org. primefaces.webapp.filter.FileUploadFilter.doFilter (FileUploadFilter.java:100)

causa raíz

javax.el.ELException: javax.ejb.EJBTransactionRolledbackExcept Ion: Transaktion rückgängig gemacht wurde, vermutlich, weil setRollbackOnly während einer Synchronisation org.apache.el.parser.AstValue.invoke (AstValue.java:292) org.apache.el.MethodExpressionImpl.invoke (MethodExpressionImpl.java genannt wurde : 273) org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke (ContextAwareTagMethodExpression.java:96) org.apache.myfaces.application.ActionListenerImpl.processAction (ActionListenerImpl.java:74) javax.faces. component.UICommand.broadcast (UICommand.java:120) javax.faces.component.UIViewRoot._broadcastAll (UIViewRoot.java:1172) javax.faces.component.UIViewRoot.broadcastEvents (UIViewRoot.java:365) javax.faces component.UIViewR oot._process (UIViewRoot.java:1658) javax.faces.component.UIViewRoot.processApplication (UIViewRoot.java:862) org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute (InvokeApplicationExecutor.java:42) org.apache .myfaces.lifecycle.LifecycleImpl.executePhase (LifecycleImpl.java:196) org.apache.myfaces.lifecycle.LifecycleImpl.execute (LifecycleImpl.java:143) javax.faces.webapp.FacesServlet.service (FacesServlet.java:198) org.primefaces.webapp.filter.FileUploadFilter.doFilter (FileUploadFilter.java:100)

causa raíz

javax.ejb.EJBTransactionRolledbackException: Transaktion wurde zurück gerollt vermutlich, weil setRollbackOnly wurde während einer Synchronisation org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException (BaseEjbProxyHandler.java:400) org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke (BaseEjbProxyHandler.java genannt: 329) fachadas.UbicacionFacade $$ LocalBeanProxy.agregarUbicacion (fachadas/UbicacionFacade.java) porotosAdministrados.UbicacionesBacking.ubicacionNueva (UbicacionesBacking.java:38) sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl .java: 43) java.lang.reflect.Method.invoke (Methode.java:622) org.apache.el.parser.AstValue.invoke (AstValue.java:279) org.apache.el.MethodExpressionImpl. Invoke (MethodExpressionImpl.java:273) org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke (ContextAwareTagMethodExpression.java:96) org.apache.myfaces.application.ActionListenerImpl.processAction (ActionListenerImpl.java:74) javax.faces.component.UICommand.broadcast (UICommand.java:120) javax.faces.component.UIViewRoot._broadcastAll (UIViewRoot.java:1172) javax.faces.component.UIViewRoot.broadcastEvents (UIViewRoot.java:365) javax.faces.component.UIViewRoot._process (UIViewRoot.java:1658) javax.faces.component.UIViewRoot.processApplication (UIViewRoot.java:862) org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute (InvokeApplicationExecutor. Java: 42) org.apache.myfaces.lifecycle.LifecycleImpl.executePhase (LifecycleImpl.java:196) org.apache.myfaces.lifecycle.LifecycleImpl.execute (LifecycleImpl.java:143) javax.faces.webapp.FacesServlet .service (FacesServlet.java:198) org.primefaces.webapp.filter.FileU ploadFilter.doFilter (FileUploadFilter.java:100)

causa raíz

javax.transaction.RollbackException: Kann nicht begehen: Transaktion für Rollback markiert org.apache.geronimo.transaction.manager.TransactionImpl.commit (TransactionImpl.java:272) org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit (TransactionManagerImpl.java:252) org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction (JtaTransactionPolicy.java:375) org .apache.openejb.core.transaction.TxRequired.commit (TxRequired.java:76) org.apache.openejb.core.transaction.Ej bTransactionUtil.afterInvoke (EjbTransactionUtil.java:77) org.apache.openejb.core.stateless.StatelessContainer._invoke (StatelessContainer.java:246) org.apache.openejb.core.stateless.StatelessContainer.invoke (StatelessContainer.java: 194) org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod (EjbObjectProxyHandler.java:317) org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod (EjbObjectProxyHandler.java:312) org.apache.openejb .core.ivm.EjbObjectProxyHandler._invoke (EjbObjectProxyHandler.java:92) org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke (BaseEjbProxyHandler.java:325) fachadas.UbicacionFacade $$ LocalBeanProxy.agregarUbicacion (fachadas/UbicacionFacade. Java) porotosAdministrados.UbicacionesBacking.ubicacionNueva (UbicacionesBacking.java:38) sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java: 43) java.lang.reflect.Method.invoke (Methode.java:622) org.apache.el.parser.AstValue.invoke (AstValue.java:279) org.apache.el.MethodExpressionImpl.invoke (MethodExpressionImpl.) .java-: 273) org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke (ContextAwareTagMethodExpression.java:96) org.apache.myfaces.application.ActionListenerImpl.processAction (ActionListenerImpl.java:74) javax. faces.component.UICommand .broadcast (UICommand.java:120) javax.faces.component.UIViewRoot._broadcastAll (UIViewRoot.java:1172) javax.faces.component.UIViewRoot.broadcastEvents (UIViewRoot.java:365) javax.faces.component. UIViewRoot._process (UIViewRoot.java:1658) javax.faces.component.UIViewRoot.processApplication (UIViewRoot.java:862) org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute (InvokeApplicationExecutor.java:42) org.apache .myfaces.lifecycle.LifecycleImpl.executePhase (LifecycleImpl.java:196) org.apache.myfaces.lifecycle.LifecycleImpl.execute (LifecycleImpl.java:143) javax.faces.webapp.FacesServlet.service (FacesServlet.java:198) org.primefaces.webapp.filter.FileUploadFilter.doFilter (FileUploadFilter.java:100

) raíz

causa

org.apache.geronimo.transaction.manager.SetRollbackOnlyException: setRollbackOnly() aufgerufen. Siehe stacktrace für Herkunft org.apache.geronimo.transaction.manager.TransactionImpl.setRollbackOnly (TransactionImpl.java:126) org.apache.geronimo.transaction.manager.TransactionManagerImpl.setRollbackOnly (TransactionManagerImpl.java:243) org.apache .openejb.core.TransactionSynchronizationRegistryWrapper.setRollbackOnly (TransactionSynchronizationRegistryWrapper.java:72) org.apache.openjpa.ee.RegistryManagedRuntime $ TransactionManagerRegistryFacade.setRollbackOnly (RegistryManagedRuntime.java:128) org.apache.openjpa.ee.RegistryManagedRuntime.setRollbackOnly (RegistryManagedRuntime .java: 74) org.apache.openjpa.ee.AutomaticManagedRuntime.setRollbackOnly (AutomaticManagedRuntime.java:274) org.apache.openjpa.kernel.BrokerImpl.setRollbackOnlyInternal (BrokerImpl.java:1672) org.apache.openjpa.kernel.BrokerImpl.setRollbackOnly (BrokerImpl.java:1652) org.apache.openjpa.kernel.DelegatingBroker.setRollbackOnly (DelegatingBroker.java:980) org.apache.openjpa.persistence.EntityManagerImpl.setRollbackOnly (EntityManagerImpl.java:630) org.apache.openjpa.persistence.PersistenceExceptions $ 2.translate (PersistenceExceptions.java:75) org.apache.openjpa.kernel.BrokerImpl.translateManagedCompletionException (BrokerImpl.java:2091) org.apache .openjpa.kernel.BrokerImpl.beforeCompletion (BrokerImpl.java:2025) org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion (TransactionImpl.java:527) org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion (TransactionImpl.java:512) org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare (TransactionImpl.java:413) org.apache.geronimo.transaction.manager.TransactionImpl.commit (TransactionImpl.java:262) org.apache.geronimo.transaction .manager.TransactionManagerImpl.commit (TransactionManagerImpl.java:252) org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction (JtaTransactionPolicy.java:375) org.apache.openejb.core.transaction.TxRequired.commit (TxRequired .Java: 76) org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke (EjbTransactionUtil.java:77) org.apache.openejb.core.stateless.StatelessContainer._invoke (StatelessContainer.java:246) org.apache .openejb.core.stateless.StatelessContainer.invoke (StatelessContainer.java:194) org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod (EjbObjectProxyHandler.java:317) org.apache.openejb.core.ivm.EjbObjectProxyHandler .businessMethod (EjbObjectProxyHandler.java:312) org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke (EjbObjectProxyHandler.java:92) org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke (BaseEjbProxyHandler.java:325) fachadas.UbicacionFacade $$ LocalBeanProxy.agregarUbicacion (fachadas/Ubicac ionFacade.java) porotosAdministrados.UbicacionesBacking.ubicacionNueva (UbicacionesBacking.java:38) sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl .invoke (DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke (Methode.java:622) org.apache.el.parser.AstValue.invoke (AstValue.java:279) org.apache. el.MethodExpressionImpl.invoke (MethodExpressionImpl.java:273) org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke (ContextAwareTagMethodExpression.java:96) org.apache.myfaces.application.ActionListenerImpl.processAction (ActionListenerImpl. jav a: 74) javax.faces.component.UICommand.broadcast (UICommand.java:120) javax.faces.component.UIViewRoot._broadcastAll (UIViewRoot.java:1172) javax.faces.component.UIViewRoot.broadcastEvents (UIViewRoot .java: 365) javax.faces.component.UIViewRoot._process (UIViewRoot.java:1658) javax.faces.component.UIViewRoot.processApplication (UIViewRoot.java:862) org.apache.myfaces.lifecycle.InvokeApplicationExecutor. execute (InvokeApplicationExecutor.java:42) org.apache.myfaces.lifecycle.LifecycleImpl.executePhase (LifecycleImpl.java:196) org.apache.myfaces.lifecycle.LifecycleImpl.execute (LifecycleImpl.java:143) javax.faces .webapp.FacesServlet.service (FacesServlet.java:198) org.primef aces.webapp.filter.FileUploadFilter.doFilter (FileUploadFilter.java:100)

nota La Traza completa de la causa de este Fehler se encuentra en los archivos de diario de Apache Tomcat (TomEE) /7.0.68 (1,7 .4).

Antwort

0

der eigentliche Fehler/Ausnahme ist wahrscheinlich vor diesen Zeilen (JTA-Stack kann nur einzuloggen es war ein Fehler, aber im Allgemeinen JPA-Protokolle, wenn es eine Einschränkung/Validierung/anderes Problem ist)