[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jboss-user
Subject:    [jboss-user] [JBoss jBPM] - Error handling in
From:       boercher <do-not-reply () jboss ! com>
Date:       2009-03-31 22:57:38
Message-ID: 25273898.1238540258424.JavaMail.jboss () colo-br-02 ! atl ! jboss ! com
[Download RAW message or body]

Hi,

a little bug in my test program in which I tried remote command execution took me \
quite a while to analyse. The problem was that instead of an error message indicating \
the real error I got this one:

anonymous wrote :   ERROR [org.jboss.ejb.plugins.LogInterceptor] \
(WorkerThread#0[127.0.0.1:1264])  |     RuntimeException in method: public abstract \
java.lang.Object  |     \
org.jbpm.ejb.RemoteCommandService.execute(org.jbpm.command.Command)  |      throws \
java.rmi.RemoteException:  |   org.hibernate.exception.GenericJDBCException: Cannot \
open connection  |         ...
  |         at org.jbpm.JbpmContext.close(JbpmContext.java:129)
  | 	at org.jbpm.ejb.impl.CommandServiceBean.execute(CommandServiceBean.java:124)

The reason for the misleading error message was a missing try-catch block in \
CommandServiceBean.execute (in jbpm-3.2.6.SP1):

    public Object execute(Command command) {
  |         JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
  |         try {
  |             log.debug("executing " + command);
  |             return command.execute(jbpmContext);
  |         }
  |         catch (RuntimeException e) {
  |             sessionContext.setRollbackOnly();
  |             throw e;
  |         }
  |         catch (Exception e) {
  |             sessionContext.setRollbackOnly();
  |             throw new JbpmException("failed to execute " + command, e);
  |         }
  |         finally {
  |             jbpmContext.close();
  |         }
  |     }
  | 
The finally block performs some non-trivial cleanup-operations that easily may throw \
exceptions in case of a preceding error. Errors in command execution would be much \
easier to spot if the finally block would be coded like that:

        finally {
  |             try {
  |                 jbpmContext.close();
  |             }
  |             catch (Throwable t) {
  |                 log.error("error on context close", t);
  |             }
  |         }
  | 

but development on 3.2 has been stopped, right?

Regards,
Volker

View the original post : \
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4222462#4222462

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4222462
 _______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic