2016-04-28 42 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日誌,如果有一個約束/確認/其他問題)