in short, you dont. application logic shouldn't be present in ejbLoad/ejbStore methods. the idea is that you write load/store stuff once, and application logic many times. you should throw the exception from the method that violated the state (if that is what the exception is about).
hth dim ----- Original Message ----- From: "Bill Pfeiffer" <[EMAIL PROTECTED]> To: "Olaf Strozyk" <[EMAIL PROTECTED]>; "JBoss-User" <[EMAIL PROTECTED]> Sent: Tuesday, January 15, 2002 3:54 PM Subject: Re: [JBoss-user] Passing Business Exception to Client > OK, now I'm confused. Using JBoss 2.4.4, how do I correctly return > application level errors from my entity bean's ejbStore method? Do I throw > my own exception? Does this exception extend RemoteException, Exception? > Since ejbStore actually overrides its ancestor's method, how do I declare > that my own exception will be thrown? If I don't declare it as being > thrown, I get a compile time error. > > Thanks for any clarity on this issue, > > Bill Pfeiffer > ----- Original Message ----- > From: "Olaf Strozyk" <[EMAIL PROTECTED]> > To: "danch" <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]> > Sent: Monday, January 14, 2002 7:28 PM > Subject: Re: [JBoss-user] Passing Business Exception to Client > > > > danch wrote: > > > EJBException is actually a runtime exception that you use to complain to > > > the container when something _really_ wacky happens that you want to > > > call a system error. The EJB spec defines a business exception (AKA > > > Application Exception) as a different category of exception, with > > > different behavior. > > > > > > To throw a business exception, define separate classes for them, > > > extending RemoteException, then replace your 'throws EJBException' > > > declaration with your newly defined exception. > > > > Hi, > > > > sorry to interfere, but let me help out with a "not". The above has to > > be "_not_ extending RemoteException". > > > > See the spec (Enterprise JavaBeans 2.0, Final Release, 18.1.1): > > "An application exception class must be a subclass (direct or indirect) > > of java.lang.Exception. An application exception class must not be > > defined as a subclass of the java.lang.RuntimeException or of the > > java.rmi.RemoteException." > > > > -Olaf > > > > > the biggest difference in the container's behavior (aside from passing > > > the proper exception back to the client) is that when you throw an > > > EJBException, the container marks your transaction Rollback-only, while > > > it _doesn't_ for application exceptions. If you want your transaction > > > rolled back, you'll need to call setRollbackOnly yourself (on the > > > session context). > > > > > > -danch > > > > > > Bill Pfeiffer wrote: > > > > > > > I am having a problem with JBoss 2.4.4 and Tomcat 4.0.1. When I > > > > encounter a business logic problem (or sql problem, etc) and want to > > > > send it back to the client, I create and throw an EJBException. The > > > > problem I am encounter is that I actually recieve, on the client > > > > (Tomcat) end, an UndeclaredThrowableException which contains no info > on > > > > the original error. > > > > > > > > > > > > > > > > Probably related is the fact that I get these warnings when deploying > my > > > > beans: > > > > > > > > > > > > > > > > ------------------------------------------------------ > > > > > > > > [ERROR,ContainerFactory] > > > > Bean : EBSecurityUser > > > > Method : public abstract String getPassword() throws RemoteException, > > > > EJBExcepti > > > > on > > > > Section: 9.2.7 > > > > Warning: The exceptions thrown by methods in the remote interface must > > > > be valid > > > > types for RMI/IIOP > > > > > > > > > > > > > > > > [ERROR,ContainerFactory] > > > > Bean : SBWebSessMgr > > > > Method : public abstract SBWebSessMgr create() throws CreateException, > > > > EJBExcept > > > > ion, RemoteException > > > > Section: 6.10.6 > > > > Warning: The method return values in the home interface must be of > valid > > > > types f > > > > or RMI/IIOP. > > > > > > > > > > > > > > > > [ERROR,ContainerFactory] > > > > Bean : SBEspeedUtility > > > > Method : public abstract SBCaseLockHome getSbCaseLockHome() throws > > > > RemoteExcepti > > > > on > > > > Section: 6.10.5 > > > > Warning: The method return values in the remote interface must be of > > > > valid types > > > > for RMI/IIOP. > > > > > > > > --------------------------------------- > > > > > > > > > > > > > > > > > > > > > > > > It appears the I am not returning throwing valid types for RMI/IIOP. > > > > Any ideas what would cause this? What constitutes a valid RMI/IIOP > > > > type or what would cause my objects not be considered valid RMI/IIOP > types? > > > > > > > > > > > > > > > > Thanks for any assistance, > > > > > > > > > > > > > > > > Bill Pfeiffer > > > > > > > > > > _______________________________________________ > > > JBoss-user mailing list > > > [EMAIL PROTECTED] > > > https://lists.sourceforge.net/lists/listinfo/jboss-user > > > > _______________________________________________ > > JBoss-user mailing list > > [EMAIL PROTECTED] > > https://lists.sourceforge.net/lists/listinfo/jboss-user > > > _______________________________________________ > JBoss-user mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/jboss-user _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user