Hi,

Hibernate executes the statements only on flushing, which is most of the time 
at the end of a tx. It means, any database related exception (foreign key 
constraint or unique constraint etc.) will be thrown in a deferred fashion(not 
at the time of invocation, but at the time of tx commitment).  At the end of 
the 5 and 6 JSF phases, a TransactionRolledBackException is thrown, when all 
action methods have been executed. There is no chance to catch such kind of 
ConstraintException in service layer or in JSF actions. 

What is the best-practice for handling these exceptions? 

The normal behaviour I excpeted from the system is to add a faces message and 
stay on the same view. I think the only guy who can do this job is a  
ExceptionHandler. First question is why not allow to add user defined 
ExceptionHandler? Second question is: Can I use any of the existing handler to 
implement the desired behaviour? In the documentation I only see examples which 
redirects to another view. Is there a shortcut (EL-expression) to find out the 
current view and use it as thre redirection target? If not, I would like to 
implement it. My plan is to use a PhaseListener to catch the current view and 
put it somewhere (request attribute or thread locale, anyway, anywhere 
reachable by a EL-expression) for later use and configure in the pages.xml

<exception class="javax.persistence.PersistenceException">
  | <end-conversation/>
  | <redirect view-id="{el-expression-to-the-current-view}">
  | <message>Database access failed</message>
  | </redirect>
  | </exception>
  | 
I would like to know your opinions to the solution. Whether you have better 
suggestion or see general problems

thx for your feedback!



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

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

Reply via email to