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

Reply via email to