[jboss-user] [EJB3] - Unable to catch RuntimeException in client EJB

Bibhu Jena do-not-reply at jboss.com
Thu Sep 20 10:39:00 EDT 2012


Bibhu Jena [https://community.jboss.org/people/bibhu] created the discussion

"Unable to catch RuntimeException in client EJB"

To view the discussion, visit: https://community.jboss.org/message/760639#760639

--------------------------------------------------------------
Hi,

I want to throw a runtime exception from my dao layer ,and catch it in service layer to parse the exception and show a meaningful message to user.
 But, when I do this , EJB wraps this exception with RolledBackException and the client EJB is not able to catch it as it expects a SecurityBreakException  which extends RuntimeException. 

I can't throw a checked exception from the class as it implements HibernateListenrs.

 Adding sample code snippet for more clarity: 


// after every save/update/delete the follwing class get triggered 

public class DataChangeListener implements PostDeleteEventListener, PostUpdateEventListener, PostInsertEventListener, Initializable { 
public void onPostInsert(final PostInsertEvent event) { 
//check  if the user is not allowed to do so ,throw a SecurityBreakException 
// else do nothing and let the transaction commit. 
} 
public void onPostUpdate(PostUpdateEvent event) { 
//same as onPostInsert
 } 
public void onPostDelete(PostDeleteEvent event) { 
//same as onPostInsert 
} 


@Local public interface SaveUserDataService{ 
public void save(Person person); 
} 

//client EJB which expects a SecurityBreakException 
@Stateful SaveUserDataServiceBean implements SaveUserDataService{ 
public void save(Person person){ 
try{ //code to call dao layer to save a person
 } catch (SecurityBreakException e) { 
// parse the exception and show a meaningful message to user 
          }
      } 
} 


//The exception class 
public class SecurityBreakException extends RuntimeException { 
private static final long serialVersionUID = 1L; 
String message; 
public SecurityBreakException(String message) { 
super(message); this.message = message;
      }
 }

 Please guide.
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/760639#760639]

Start a new discussion in EJB3 at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20120920/611bc3d1/attachment.html 


More information about the jboss-user mailing list