JPA2(OpenJPA2)を使用した単純なWebアプリケーションがあります。OpenJPA2ロールバックサーバーの開始から数日後に「エンティティの作成」トランザクション
サーバを起動します(VPSのUbuntu Server 12.04でTomEE + 1.7.4)。アプリが動作し始め、サービスを行います。数日間実行した後、特定のエンティティのCRUDビューで、エンティティインスタンスを作成しようとすると、エンティティインスタンスを作成するためのトランザクションがロールバックされます。また、ブラウザクライアントに例外レポートが表示されます。
javax.ejb.EJBTransactionRolledbackException:トランザクションがここに君たちを困らせたくない、setRollbackOnlyメソッドは同期中
しようとした多くのことを呼ばれていたと思われるので、ロールバックされましたが、私は本当にドン」何をすべきか知っている!
私はTomEEをシャットダウンしてから起動します。問題が解消され、エンティティはEntityManagerによって完全に作成され、格納されます。
DBエンジンは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>
Entityクラス:(ゲッターとセッター省略)
@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);
} //...
コンクリート続き
はファイル関与していますファサード:
エンティティを作成するためのcommandButton、それを格納しますprimefaces Pから呼び出され@Stateless
public class UbicacionFacade extends AbstractFacade<Ubicacion> {
@PersistenceContext(unitName = "AEEA-PU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
と最後のために、その方法
パブリックストリングubicacionNueva()
とマネージドBean、 。このメソッドは、マネージドBean内の一時エンティティを取得し、ログに記録されたユーザーと作成日のような2つのプロパティを設定し、エンティティをデータベースに格納するファサードを呼び出します。次
は@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.ELException: javax.ejb.EJBTransactionRolledbackException:トランザクションは 同期中setRollbackOnlyメソッドが呼び出されたためと考え、バック を圧延しました
タイプInformeデExcepción
mensaje javax.el.ELE xception: javax.ejb。EJBTransactionRolledbackException:トランザクションがsetRollbackOnlyメソッドは、エルservidorのencontró未エラーINTERNOのQUEのHIZOのqueのdescripción 同期
中に呼び出されたと思われるので、バック 圧延していない pudiera rellenarエステrequerimiento。
excepción
javax.servlet.ServletException:javax.el.ELException: javax.ejb.EJBTransactionRolledbackException:トランザクションがsetRollbackOnlyメソッドが 同期 javax.faces.webapp中に呼び出されたと思われるので、バック を圧延しました。 FacesServlet.service(FacesServlet.java:230) org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100)
原因のraíz
org.apache.myfaces.view.facelets.el.ContextAwareELException: javax.el.ELException:javax.ejb.EJBTransactionRolledbackException: トランザクションがsetRollbackOnlyメソッドが同期 org.apache.myfaces中に呼び出さ たためと考え、ロールバックされました。 (UICommand.java:javax.faces.com.Unicode.java: 120) javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1172) (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.el.ELException: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。コンポーネント.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。 (ActionListenerImpl.java:74) org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96) 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) 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(ネイティブメソッド) 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 。ブロードキャスト(UICommand.java:120) javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1172) javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:365) javax.faces.component。 (UIViewRoot.java:1658) .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
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.setRollbackOnlyorg.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 .Open.jpg (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 .info() .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。メソッド。 jav a:74) (UIViewRoot.java:1172) .java:365) javax.faces.component.UIViewRoot._process(UIViewRoot.java:1658) 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・デ・ラ・原因・デ・エステ誤差SE encuentraエンロス archivosデdiarioドのApache Tomcat(TomEE)/7.0.68(1.7 4)。