Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5769 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  transaction lock ejb verrou

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

transaction lock ejb verrou

n°2157350
puisquetur​epondspas
Posté le 20-09-2012 à 12:53:58  profilanswer
 

Bonjour
J'ai un erreur "ORA-02049: temporisation : la transaction distribuée attend un verrou" sur mon application java ejb3, jpa, qui arrive 20 fois par mois.  
 

Citation :

ATTENTION: Local Exception Stack:  
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: ORA-02049: temporisation : la transaction distribuée attend un verrou
Error Code: 2049
Call: UPDATE MANAGE SET END_DATE = ? WHERE (((ID_HOST = ?) AND (BEGIN_DATE = ?)) AND (EMPLOYEE = ?))
 bind => [4 parameters bound]
Query: UpdateObjectQuery(com.agarik.operia.orm.Manage2@1b55825)
 at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
 at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:840)
 at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:906)
 at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:592)
 at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535)
 at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1717)
 at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253)
 at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207)
 at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193)
 at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.updateObject(DatasourceCallQueryMechanism.java:749)
 at org.eclipse.persistence.internal.queries.StatementQueryMechanism.updateObject(StatementQueryMechanism.java:432)
 at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.updateObjectForWriteWithChangeSet(DatabaseQueryMechanism.java:1042)
 at org.eclipse.persistence.queries.UpdateObjectQuery.executeCommitWithChangeSet(UpdateObjectQuery.java:84)
 at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:287)
 at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58)
 at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:844)
 at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:743)
 at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108)
 at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85)
 at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871)
 at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1516)
 at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1498)
 at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1449)
 at org.eclipse.persistence.internal.sessions.CommitManager.commitChangedObjectsForClassWithChangeSet(CommitManager.java:265)
 at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:128)
 at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3799)
 at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1415)
 at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:636)
 at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithPreBuiltChangeSet(UnitOfWorkImpl.java:1561)
 at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:447)
 at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:780)
 at org.eclipse.persistence.internal.jpa.EJBQueryImpl.performPreQueryFlush(EJBQueryImpl.java:1298)
 at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:434)
 at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getSingleResult(EJBQueryImpl.java:773)
 at....rdbms.RDBMSEquipmentDAO.getEquipment(RDBMSEquipmentDAO.java:45)
 at ...s.RDBMSManageDAO.stopManage(RDBMSManageDAO.java:117)
 at ....monitoring.manage.ManageBean.stopManage(ManageBean.java:473)


 
 

Citation :


@Stateless(
@TransactionAttribute(value = TransactionAttributeType.SUPPORTS)
public class ManageBean{
 
   @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
   public void stopManage(){
       manageDAO.stopManage();
   }
 
}
 
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
public class RDBMSManageDAO{
    @PersistenceContext
    private EntityManager em;
    @Inject
    private EquipmentDAO hostDAO;
 
    public void stopManage(){
         Host host = hostDAO.getEquipment(manage.getEquipment());
    }
}
 
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
public abstract class RDBMSEquipmentDAO{
       @PersistenceContext
 private EntityManager em;
       public Host getEquipment(String equipment) throws DAOException
 {
  Query query = em.createNamedQuery(...
  try
  {
   return (Host)query.getSingleResult();// DEBUT DE LA STACK D'ERREUR    
     
  }
  catch (NoResultException e)
  {
   return null;
  }
 }
}


 
Le type 'TransactionAttributeType.REQUIRED' propagé dans les différentes méthode par EJB est il compatible avec l'entityManager injecté par javax.inject.Inject (c'est du cdi, je crois)?
Faut il faire un flush quelquepart car c'est un update? Faut il créer un singleton pour entityManager ou utiliser entityManagerFactory?

mood
Publicité
Posté le 20-09-2012 à 12:53:58  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  transaction lock ejb verrou

 

Sujets relatifs
JPA2.0 : entityManager.close() ferme t-il sa transaction?[Solved] boost::unique_lock sur un shared_lock
Subversion, lock fichier[DB2] gestion de transaction
Java, Hibernate, Spring, Transaction-Manager, DAO, ...Caulcul Pourcentage transaction financière
[JS] (redimensionnement d'éléments) lock de sélectionTéléchargement JDK 6 (Your download transaction cannot be approved...)
Transaction sur plusieurs scripts phpGestion lock optimiste avc Hibernate et archi n-tiers
Plus de sujets relatifs à : transaction lock ejb verrou


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)