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ízcausa
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).