2016-04-28 38 views
0

我有一个简单的Web应用程序JPA2(OpenJPA2)。OpenJPA2回滚在服务器启动几天后'创建实体'事务

我启动服务器(在VPS的Ubuntu服务器12.04上的TomEE + 1.7.4)。该应用程序开始工作,并提供服务。运行几天后,在某个实体的CRUD视图中,当尝试创建实体实例时,Persistence引擎将回滚事务以创建实体实例。浏览器客户端中会显示一个异常报告。

javax.ejb.EJBTransactionRolledbackException:事务回滚,大概是因为使用setRollbackOnly是一个同步过程中调用

试了很多东西,也不想在这里骚扰你们,但我真的穿上”不知道该怎么做!

如果我关闭TomEE并将其重新启动。消除问题和EntityManager完美地创建和存储实体。

数据库引擎是MySQL。项目使用Maven。大多数依赖是'提供'的。

以下是参与文件: 持久性配置:

<?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> 

实体类:(省略getter和setter)

@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; 

抽象的门面:

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); 
    } //... 

混凝土外观:

@Stateless 
public class UbicacionFacade extends AbstractFacade<Ubicacion> { 
    @PersistenceContext(unitName = "AEEA-PU") 
    private EntityManager em; 

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

和最后的管理,其方法

公共字符串ubicacionNueva()

豆,即从primefaces p叫:的commandButton创建实体,并将其存储。该方法使用托管bean中的临时实体,设置诸如已登录用户和创建日期等一些属性,并调用Facade以在数据库中存储实体。

@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"; 
    } 

以下为异常报告

埃斯塔HTTP 500 - javax.el.E​​LException: javax.ejb.EJBTransactionRolledbackException:一个 同步期间事务回滚 回来,大概是因为使用setRollbackOnly被称为

型Informe德Excepción

mensaje javax.el.E​​LE xception: javax.ejb。EJBTransactionRolledbackException:事务回滚 回来,大概是因为使用setRollbackOnly是 同步

descripción萨尔瓦多servidorencontró未错误INTERNO阙阙HIZO期间调用没有 pudiera rellenar埃斯特requerimiento。

excepción

javax.servlet.ServletException:javax.el.E​​LException: javax.ejb.EJBTransactionRolledbackException:事务回滚 回来,大概是因为使用setRollbackOnly是 同步 javax.faces.webapp期间调用。 FacesServlet.service(FacesServlet.java:230) org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100)

CAUSAraíz

org.apache.myfaces.view.facelets.el.ContextAwareELException: javax.el.E​​LException:javax.ejb.EJBTransactionRolledbackException: 事务回滚,这可能是因为使用setRollbackOnly是 同步 org.apache.myfaces期间调用。 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) 有机primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100)

CAUSAraíz

javax.el.E​​LException:javax.ejb.EJBTransactionRolledbackExcept离子: 事务被回滚,大概是因为使用setRollbackOnly是 同步 org.apache.el.parser.AstValue.invoke(AstValue.java:292) 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.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)

遗赠raíz

javax.ejb.EJBTransactionRolledbackException:事务回滚 回,大概是因为使用setRollbackOnly被一个 同步 org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:400)期间调用 org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java: 329) fachadas.UbicacionFacade $$ LocalBeanProxy.agregarUbicacion(fachadas/UbicacionFacade.java) porotosAdministrados.UbicacionesBacking.ubicacionNueva(UbicacionesBacking.java:38) sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:43) java.lang.reflect.Method.invoke(Method.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)

遗赠raíz

javax.transaction.RollbackException:无法承诺:标记为回滚 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) 组织.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:76) org.apache.openejb.core.transaction.Ej (无状态容器.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(本机方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43) java.lang.reflect.Method.invoke(Method.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 )

CAUSAraíz

org.apache.geronimo.transaction.manager.SetRollbackOnlyException: 使用setRollbackOnly()调用。见堆栈跟踪原产 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 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 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(本机方法) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.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一: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。执行(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)

不是去拉traza completa德拉遗赠德埃斯特错误本身encuentra连接洛杉矶 archivos德日报的Apache Tomcat(TomEE)/7.0.68(1.7 。4)。

回答

0

真正的错误/异常可能是这些行之前(JTA堆栈可以只需登录有一个错误,但一般JPA日志,如果有一个约束/确认/其他问题)