IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Glassfish et Payara Java Discussion :

[EJB3.1] Transaction rollback : Comment gérer les Exceptions ?


Sujet :

Glassfish et Payara Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 87
    Par défaut [EJB3.1] Transaction rollback : Comment gérer les Exceptions ?
    Bonjour,

    Lors de la sauvegarde de certaines entités de mon application je procède à une vérification (dans @PrePersist et @PreUpdate) afin d'être sur qu'elle est valide. Si elle ne l'est pas je lance une exception afin de "rollbacker" la transaction. Tout fonctionne bien, l'entité n'est pas sauvegardée.

    Cependant je n'arrive pas à comprendre comment je suis sensé gérer les exceptions découlant de ce rollback. J'aimerai juste savoir que la transaction a été "rollbacké" et pourquoi afin de remonter l'information à l'utilisateur. Au lieu de ça je me retrouve avec plein de stack trace dans mon log et je ne sais pas quelle exception catcher.

    Voila à quoi resemble mon log:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    ATTENTION: A system exception occurred during an invocation on EJB TestSession method public void test.session.TestSession.testRollback(test.entity.TestEntity) throws test.exceptions.MyException
    javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
    	at com.sun.ejb.containers.BaseContainer.checkExceptionClientTx(BaseContainer.java:5049)
    ...
    Caused by: test.exceptions.MyException: 
    ...
     
    ATTENTION: javax.ejb.EJBTransactionRolledbackException
    	at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2305)
    ...
    Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
    	at com.sun.ejb.containers.BaseContainer.checkExceptionClientTx(BaseContainer.java:5049)
    ...
    Caused by: test.exceptions.MyException: 
    ...
     
    ATTENTION: javax.ejb.EJBTransactionRolledbackException
    	at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2305)
    ...
    Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
    	at com.sun.ejb.containers.BaseContainer.checkExceptionClientTx(BaseContainer.java:5049)
    ...
    Caused by: test.exceptions.MyException: 
    ...
     
    ATTENTION: javax.ejb.EJBTransactionRolledbackException
    	at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2305)
    ...
    Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
    	at com.sun.ejb.containers.BaseContainer.checkExceptionClientTx(BaseContainer.java:5049)
    ...
    Caused by: test.exceptions.MyException: 
    ...
     
    ATTENTION: DTX5014: Caught exception in beforeCompletion() callback:
    javax.ejb.EJBTransactionRolledbackException
    	at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2305)
    ...
    Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
    	at com.sun.ejb.containers.BaseContainer.checkExceptionClientTx(BaseContainer.java:5049)
    ...
    Caused by: test.exceptions.MyException: 
    ...
     
    javax.ejb.EJBException: Transaction aborted
    	at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5120)
    ...
    Caused by: javax.transaction.RollbackException: Transaction marked for rollback.
    	at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:473)
    ...
    Caused by: javax.ejb.EJBTransactionRolledbackException
    	at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2305)
    ...
    Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
    	at com.sun.ejb.containers.BaseContainer.checkExceptionClientTx(BaseContainer.java:5049)
    ...
    Caused by: test.exceptions.MyException: 
    ...
    Ma question est donc la suivante: comment gérer les transaction rollback?

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 87
    Par défaut
    J'ai fait un test minimal afin de mieux comprendre ce qu'il se passe:

    Entité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @Entity
    public class TestEntity implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
        private String name = "default";
     
        @PrePersist
        private void prePersist() { throw new RuntimeException("Test runtime exception in prePersist"); }
        @PreUpdate
        private void preUpdate() { throw new RuntimeException("Test runtime exception in preUpdate"); }
     
        public String getName() {  return name;  }
        public void setName(String name) { this.name = name; }
    }
    Session:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    @Stateless
    @LocalBean
    public class TestSession {
     
        private static final Logger logger = Logger.getLogger("TestSession");
        @PersistenceContext
        private EntityManager em;
        @Resource
        private SessionContext ctx;
     
        public void testRollback() {
            try {
                TestEntity entity = new TestEntity();
                em.persist(entity);
            } catch (RuntimeException ex) {
                logger.severe("Runtime exception catched in session bean.");
                if (ctx.getRollbackOnly()) {
                    logger.info("Context rollbacked.");
                } else {
                    logger.info("Context is ok.");
                }
            }
        }
     
        public void testRollback2() {
            try {
                TestEntity entity = em.find(TestEntity.class, new Long(1));
                if (entity != null) { entity.setName("test"); }
     
                em.flush();
     
            } catch (RuntimeException ex) {
                logger.severe("Runtime exception catched in session bean.");
                if (ctx.getRollbackOnly()) {
                    logger.info("Context rollbacked.");
                } else {
                    logger.info("Context is ok.");
                }
            }
        }
    }
    Lorsque je lance une exception dans la methode @PrePersist de mon entité, tout se passe normalement: la transaction est "rollbacké" et je peux catcher mon exception pour en informer l'utilisateur.

    Par contre lorsque je lance un exception dans la methode @PreUpdate, je vois apparaitre dans mon code des messages me disant qu'une exception à été lancée avec la stack-trace correspondante. La transaction est "rollbacké" et je peux catcher l'exception, mais, si eclipselink log des erreurs ça doit être que je fais quelque chose de travers. Qu'en pensez vous?

    Log après un appel à testRollback:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GRAVE: Runtime exception catched in session bean.
    INFO: Context rollbacked.
    Log après un appel à testRollback2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    ATTENTION: java.lang.RuntimeException: Test runtime exception in preUpdate
            at test.entity.TestEntity.preUpdate(TestEntity.java:30)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.invokeMethod(PrivilegedAccessHelper.java:402)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.EntityListener.invokeMethod(EntityListener.java:247)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.EntityClassListener.invokeMethod(EntityClassListener.java:75)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.EntityListener.preUpdateWithChanges(EntityListener.java:379)
            at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyListener(DescriptorEventManager.java:704)
            at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyEJB30Listeners(DescriptorEventManager.java:634)
            at org.eclipse.persistence.descriptors.DescriptorEventManager.executeEvent(DescriptorEventManager.java:200)
            at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.updateObjectForWriteWithChangeSet(DatabaseQueryMechanism.java:980)
            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:829)
            at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:728)
            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:2863)
            at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1501)
            at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1483)
            at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1443)
            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:3784)
            at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1407)
            at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:634)
            at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithPreBuiltChangeSet(UnitOfWorkImpl.java:1553)
            at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:445)
            at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:780)
            at com.sun.enterprise.container.common.impl.EntityManagerWrapper.flush(EntityManagerWrapper.java:418)
            at test.session.TestSession.testRollback2(TestSession.java:52)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
            at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
            at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5366)
            at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
            at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
            at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
            at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
            at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
            at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
            at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
            at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5338)
            at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5326)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
            at $Proxy154.testRollback2(Unknown Source)
            at test.session.__EJB31_Generated__TestSession__Intf____Bean__.testRollback2(Unknown Source)
            at test.servlet.TestServlet2.processRequest(TestServlet2.java:42)
            at test.servlet.TestServlet2.doGet(TestServlet2.java:64)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
            at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
            at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
            at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
            at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
            at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
            at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
            at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
            at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
            at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
            at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
            at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
            at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
            at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
            at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
            at java.lang.Thread.run(Thread.java:619)
    
    ATTENTION: java.lang.RuntimeException: Test runtime exception in preUpdate
            at test.entity.TestEntity.preUpdate(TestEntity.java:30)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.invokeMethod(PrivilegedAccessHelper.java:402)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.EntityListener.invokeMethod(EntityListener.java:247)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.EntityClassListener.invokeMethod(EntityClassListener.java:75)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.EntityListener.preUpdateWithChanges(EntityListener.java:379)
            at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyListener(DescriptorEventManager.java:704)
            at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyEJB30Listeners(DescriptorEventManager.java:634)
            at org.eclipse.persistence.descriptors.DescriptorEventManager.executeEvent(DescriptorEventManager.java:200)
            at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.updateObjectForWriteWithChangeSet(DatabaseQueryMechanism.java:980)
            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:829)
            at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:728)
            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:2863)
            at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1501)
            at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1483)
            at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1443)
            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:3784)
            at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1407)
            at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:634)
            at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithPreBuiltChangeSet(UnitOfWorkImpl.java:1553)
            at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:445)
            at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:780)
            at com.sun.enterprise.container.common.impl.EntityManagerWrapper.flush(EntityManagerWrapper.java:418)
            at test.session.TestSession.testRollback2(TestSession.java:52)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
            at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
            at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5366)
            at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
            at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
            at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
            at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
            at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
            at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
            at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
            at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5338)
            at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5326)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
            at $Proxy154.testRollback2(Unknown Source)
            at test.session.__EJB31_Generated__TestSession__Intf____Bean__.testRollback2(Unknown Source)
            at test.servlet.TestServlet2.processRequest(TestServlet2.java:42)
            at test.servlet.TestServlet2.doGet(TestServlet2.java:64)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
            at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
            at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
            at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
            at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
            at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
            at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
            at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
            at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
            at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
            at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
            at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
            at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
            at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
            at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
            at java.lang.Thread.run(Thread.java:619)
    
    GRAVE: Runtime exception catched in session bean.
    INFO: Context rollbacked.

Discussions similaires

  1. Comment gérer les exceptions sur un tdbgrid?
    Par zanoubya dans le forum Débuter
    Réponses: 5
    Dernier message: 21/12/2011, 15h14
  2. Comment gérer les exceptions des DetailsView ?
    Par insane_80 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 21/01/2011, 15h39
  3. Comment gérer les transactions convenablement ?
    Par Dufok dans le forum Accès aux données
    Réponses: 7
    Dernier message: 08/03/2010, 15h14
  4. Réponses: 3
    Dernier message: 29/05/2007, 16h50
  5. [C#/SQL] Comment gérer les exceptions d'une Procédure stockée ?
    Par thomas_strass dans le forum Accès aux données
    Réponses: 10
    Dernier message: 06/07/2005, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo