Hi Antonio,
In your Swing client, can you try
ejbException.|*getCausedByException
<
http://java.sun.com/javaee/5/docs/api/javax/ejb/EJBException.html#getCausedByException%28%29>*(),
and ejbException.getCause()? At least one of them should return the
root cause.
-cheng
|
Antonio Goncalves wrote:
> Hi,
>
> Sorry for bringing back an old thread, but I have some issues with that.
>
> The problem is that during a call back method of my entity bean I
> throw an application exception. This exception is wrapped into an
> EJBException by the container. What I've done is that I take this
> EJBException and get the root cause. If it's an instance of my
> ValidationException, I display its message. It works fine with JSF and
> I can display an "invalide name" (for example) in my web page.
>
> But when I try to do the same with a swing application, it doesn't
> work. The problem is that the Swing app gets the EJBException but with
> no root cause. When I call the methode e.getCause() it returns null.
> It looks like my ValidationException is not wrapped into the
> EJBException when leaving the container.
>
> Does anybody have an idea ?
>
> Thanks,
>
> Antonio
>
>
> 2006/10/2, Antonio Goncalves <antonio.mailing_at_gmail.com
> <mailto:antonio.mailing_at_gmail.com>>:
>
> > Also note that even if the ValidationException were to be
> propagated as
> > is, the persistence manager still would not know it is an EJB
> "Application Exception"
> > so any required behavior such as marking the transaction for
> rollback would still be
> > performed by the persistence manager regardless of the attributes
> of the
> > @ApplicationException definition.
>
> That makes sense. I going to try a similar use case outside the
> container to see what king of exception is thrown. I've changed my
> ValidationException to extend Exception instead of
> RuntimeException, but it doesn't work either. The exception is
> still wrapped into an EJBException and the root cause is event
> worse *Caused by: java.lang.ClassCastException:
> com.yaps.petstore.exception.ValidationException*.
>
>
> javax.ejb.EJBException
> at
> com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3753)
> at
> com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3653)
> at com.sun.ejb.containers.BaseContainer.postInvokeTx
> (BaseContainer.java:3455)
> at
> com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1257)
> at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke
> (EJBLocalObjectInvocationHandler.java:192)
> at
> com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:118)
> at $Proxy69.createCustomer(Unknown Source)
>
> at com.yaps.petstore.web.jsf.AccountController.doCreateCustomer
> (Unknown Source)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at com.sun.el.parser.AstValue.invoke (AstValue.java:157)
> at
> com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java :283)
> at
> javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:71)
> at
> com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:96)
> at javax.faces.component.UICommand.broadcast(UICommand.java:383)
> at
> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java :471)
> at
> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:783)
>
> at
> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
> at com.sun.faces.lifecycle.LifecycleImpl.phase
> (LifecycleImpl.java:244)
> at com.sun.faces.lifecycle.LifecycleImpl.execute
> (LifecycleImpl.java:113)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
> at org.apache.catalina.core.ApplicationFilterChain.servletService
> (ApplicationFilterChain.java:397)
> at org.apache.catalina.core.StandardWrapperValve.invoke
> (StandardWrapperValve.java:278)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
> at org.apache.catalina.core.StandardPipeline.invoke
> (StandardPipeline.java:556)
> at org.apache.catalina.core.StandardContextValve.invokeInternal
> (StandardContextValve.java:246)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
> at com.sun.enterprise.web.WebPipeline.invoke (WebPipeline.java:73)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> :182)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
> at com.sun.enterprise.web.VirtualServerPipeline.invoke
> (VirtualServerPipeline.java:120)
> at org.apache.catalina.core.ContainerBase.invoke
> (ContainerBase.java:939)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
> at org.apache.catalina.core.StandardPipeline.doInvoke
> (StandardPipeline.java:586)
> at org.apache.catalina.core.StandardPipeline.invoke
> (StandardPipeline.java:556)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
> at org.apache.coyote.tomcat5.CoyoteAdapter.service
> (CoyoteAdapter.java:231)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter
> (DefaultProcessorTask.java:619)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.processNonBlocked
> (DefaultProcessorTask.java:550)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process
> (DefaultProcessorTask.java:780)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask
> (DefaultReadTask.java:326)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java
> :251)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:205)
> at
> com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
> at com.sun.enterprise.web.connector.grizzly.WorkerThreadImpl.run
> (WorkerThreadImpl.java:103)
> *Caused by: java.lang.ClassCastException :
> com.yaps.petstore.exception.ValidationException*
> at
> oracle.toplink.essentials.internal.ejb.cmp3.metadata.listeners.MetadataEntityListener.invokeMethod
> (MetadataEntityListener.java:313)
> at
> oracle.toplink.essentials.internal.ejb.cmp3.metadata.listeners.MetadataEntityClassListener.invokeMethod
> (MetadataEntityClassListener.java:69)
> at
> oracle.toplink.essentials.internal.ejb.cmp3.metadata.listeners.MetadataEntityListener
> .prePersist(MetadataEntityListener.java:439)
> at
> oracle.toplink.essentials.descriptors.DescriptorEventManager.notifyListener
> (DescriptorEventManager.java:658)
> at
> oracle.toplink.essentials.descriptors.DescriptorEventManager.notifyEJB30Listeners
> (DescriptorEventManager.java:601)
> at
> oracle.toplink.essentials.descriptors.DescriptorEventManager.executeEvent
> (DescriptorEventManager.java:199)
> at
> oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist
> (UnitOfWorkImpl.java:3226)
> at
> oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist
> (RepeatableWriteUnitOfWork.java:298)
> at
> oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist
> (UnitOfWorkImpl.java:3186)
> at
> oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist
> (EntityManagerImpl.java:170)
> at
> com.sun.enterprise.util.EntityManagerWrapper.persist(EntityManagerWrapper.java
> :433)
> at
> com.yaps.petstore.service.customer.CustomerBean.createCustomer(Unknown
> Source)
> at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
> :39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke (Method.java:585)
> at
> com.sun.enterprise.security.application.EJBSecurityManager.runMethod
> (EJBSecurityManager.java:1050)
> at
> com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:165)
> at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod
> (BaseContainer.java:2788)
> at com.sun.ejb.containers.BaseContainer.intercept
> (BaseContainer.java:3870)
> at
> com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:184)
> ... 43 more
>
>
>
> 2006/10/2, Kenneth Saks <Kenneth.Saks_at_sun.com
> <mailto:Kenneth.Saks_at_sun.com>>:
>
> Cheng Fang wrote:
>
> > Our tests for the similar scenario passed. The only difference
> > between our tests and your is, your ValidationException is
> from Entity
> > lifecycle callback methods, and our unchecked
> ApplicationException is
> > from a regular slsb business methods.
> > JPA spec says entity lifecycle callback methods may throw
> > runtime/uncheckec exception, which causes the current
> transaction to
> > be rolled back. So your unchecked ApplicationException
> behaves more
> > like a system exception. EJB interceptor methods are more
> restrictive
> > in that it does not allow any application exception.
>
> That's true of callbacks defined in an interceptor class, but
> not true
> of AroundInvoke methods.
> The signature of an AroundInvoke method is defined to throw
> java.lang.Exception so that it may
> propagate any application-defined exceptions that appear in the
> corresponding business
> method's signature.
>
> >
> >
> > Throwing such runtime exception from @PrePersist seems a
> pretty common
> > use case. The JPA spec has such an example. Can someone
> clarify?
>
> I'm not aware of any requirements in the persistence spec that
> guarantee
> that an exception thrown
> by the entity code will propagate *as is* back to the caller of an
> EntityManager API. The EntityManager
> API is typed to throw certain specific runtime exceptions. The
> @ApplicationException behavior
> is EJB-container specific, so the persistence manager doesn't know
> anything about it. The persistence
> manager is probably just wrapping the ValidationException into
> one of
> the exceptions defined in
> the persist() API method signature. The ejb container then
> sees a
> runtime exception, not an
> Application Exception.
>
> Also note that even if the ValidationException were to be
> propagated as
> is, the persistence
> manager still would not know it is an EJB "Application
> Exception" so any
> required behavior
> such as marking the transaction for rollback would still be
> performed by
> the persistence
> manager regardless of the attributes of the @ApplicationException
> definition.
>
> --ken
>
> >
> >
> > Cheng
> >
> >
> >
> >
> > Antonio Goncalves wrote:
> >
> >> Hi,
> >>
> >> I've got a JSF back bean trying to catch my application
> exception but
> >> ends up with an EJBException. Here is my model :
> >>
> >> * A Customer entity bean throws an Application Exception in
> a call
> >> back method to validate its data
> >>
> >> @Entity
> >> public class Customer implements Serializable {
> >>
> >> @PrePersist
> >> @PreUpdate
> >> private void validateData() {
> >> if (firstname == null || "".equals(firstname))
> >> throw new *ValidationException*("Invalid first
> name");
> >> if (lastname == null || "".equals(lastname))
> >> throw new ValidationException("Invalid last name");
> >> }
> >> }
> >>
> >> * The Validation Exception is a RuntimeException but uses the
> >> ApplicationException annotation
> >>
> >> @*ApplicationException*(rollback = true)
> >> public class *ValidationException* extends *RuntimeException* {
> >>
> >> }
> >>
> >> * Between the Entity and JSF there is a Stateless bean that
> >> manipulates this entity but doesn't wrap or throw an exception
> >>
> >> @Stateless
> >> public class CustomerBean implements CustomerRemote,
> CustomerLocal {
> >>
> >> @PersistenceContext(name = "petstorePU")
> >> private EntityManager em;
> >>
> >> public Customer createCustomer(final Customer customer) {
> >> em.persist(*customer*);
> >> }
> >>
> >> }
> >>
> >> * My JSF Back Bean calls the Stateless to create a customer.
> He tries
> >> to catch the ValidationException and display the error
> message on my
> >> page
> >>
> >> public String doCreateCustomer() {
> >>
> >> FacesContext context =
> FacesContext.getCurrentInstance();
> >> String navigateTo = null;
> >>
> >> try {
> >> customer = customerBean.createCustomer
> (customer, address);
> >> } *catch (ValidationException e)* {
> >> context.addMessage(null, new
> >> FacesMessage(FacesMessage.SEVERITY_WARN , e.getMessage(),
> null));
> >> }
> >>
> >> If I change the catch (ValidationException e) into catch
> >> (EJBException e) it woks because here is my stack trace on
> the server
> >>
> >> *javax.ejb.EJBException*
> >> at
> >>
> com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3753)
> >>
> >> at
> >>
> com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3653)
> >>
> >> at
> >>
> com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3455)
> >>
> >> at
> >>
> com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1257)
> >> at
> com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke
> >> (EJBLocalObjectInvocationHandler.java:192)
> >> at
> >>
> com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java
> :118)
> >>
> >> at $Proxy163.createCustomer(Unknown Source)
> >> at
> >>
> com.yaps.petstore.web.jsf.AccountController.doCreateCustomer(Unknown
> >> Source)
> >> at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
> >> at
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
> >> :39)
> >> at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java
> :25)
> >>
> >> at java.lang.reflect.Method.invoke(Method.java:585)
> >> at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
> >> at
> >>
> com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java
> :283)
> >> at
> >>
> javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:71)
> >>
> >> at com.sun.faces.application.ActionListenerImpl.processAction
> >> (ActionListenerImpl.java:96)
> >> at
> javax.faces.component.UICommand.broadcast(UICommand.java:383)
> >> at
> >>
> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:471)
> >> at javax.faces.component.UIViewRoot.processApplication
> >> (UIViewRoot.java:783)
> >> at
> >>
> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
> >>
> >> at
> com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:244)
> >> at com.sun.faces.lifecycle.LifecycleImpl.execute
> >> (LifecycleImpl.java:113)
> >> at javax.faces.webapp.FacesServlet.service
> (FacesServlet.java:244)
> >> at
> >>
> org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397)
> >>
> >> at org.apache.catalina.core.StandardWrapperValve.invoke
> >> (StandardWrapperValve.java:278)
> >> at
> >>
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
> >>
> >> at
> >> org.apache.catalina.core.StandardPipeline.invoke
> (StandardPipeline.java:556)
> >>
> >> at org.apache.catalina.core.StandardContextValve.invokeInternal
> >> (StandardContextValve.java:246)
> >> at
> >> org.apache.catalina.core.StandardContextValve.invoke
> (StandardContextValve.java:185)
> >>
> >> at
> >>
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
> >>
> >> at com.sun.enterprise.web.WebPipeline.invoke (
> WebPipeline.java:73)
> >> at
> >>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
> >>
> >> at
> >>
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java
> :586)
> >>
> >> at com.sun.enterprise.web.VirtualServerPipeline.invoke
> >> (VirtualServerPipeline.java:120)
> >> at
> >>
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java
> :939)
> >> at
> >>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
> >>
> >> at org.apache.catalina.core.StandardPipeline.doInvoke
> >> (StandardPipeline.java :586)
> >> at
> >>
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:556)
> >>
> >> at
> >>
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
> >> at org.apache.coyote.tomcat5.CoyoteAdapter.service
> >> (CoyoteAdapter.java:231)
> >> at
> >>
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java
> :619)
> >>
> >> at
> >>
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.processNonBlocked
> >> (DefaultProcessorTask.java:550)
> >> at
> >>
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process
> (DefaultProcessorTask.java:780)
> >>
> >> at
> >>
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask
> >> (DefaultReadTask.java:326)
> >> at
> >>
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask
> (DefaultReadTask.java:251)
> >>
> >> at
> >>
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:205)
> >>
> >> at
> >> com.sun.enterprise.web.connector.grizzly.TaskBase.run
> (TaskBase.java:252)
> >> at
> >>
> com.sun.enterprise.web.connector.grizzly.WorkerThreadImpl.run(WorkerThreadImpl.java:103)
> >>
> >> Caused by: com.yaps.petstore.exception.* ValidationException*:
> >> Invalid first name
> >> at
> com.yaps.petstore.domain.customer.Customer.validateData(Unknown
> >> Source)
> >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >> at sun.reflect.NativeMethodAccessorImpl.invoke
> >> (NativeMethodAccessorImpl.java:39)
> >> at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >>
> >> at java.lang.reflect.Method.invoke(Method.java:585)
> >> at
> >>
> oracle.toplink.essentials.internal.security.PrivilegedAccessHelper.invokeMethod
> >> (PrivilegedAccessHelper.java:307)
> >> at
> >>
> oracle.toplink.essentials.internal.ejb.cmp3.metadata.listeners.MetadataEntityListener.invokeMethod(MetadataEntityListener.java:302)
> >>
> >> at
> >>
> oracle.toplink.essentials.internal.ejb.cmp3.metadata.listeners.MetadataEntityClassListener.invokeMethod
>
> >> (MetadataEntityClassListener.java:69)
> >> at
> >>
> oracle.toplink.essentials.internal.ejb.cmp3.metadata.listeners.MetadataEntityListener.prePersist(MetadataEntityListener.java:439)
> >>
> >> at
> >>
> oracle.toplink.essentials.descriptors.DescriptorEventManager.notifyListener
> >> (DescriptorEventManager.java:658)
> >> at
> >>
> oracle.toplink.essentials.descriptors.DescriptorEventManager.notifyEJB30Listeners
> (DescriptorEventManager.java:601)
> >>
> >> at
> >>
> oracle.toplink.essentials.descriptors.DescriptorEventManager.executeEvent
> >> (DescriptorEventManager.java:199)
> >> at
> >>
> oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist(UnitOfWorkImpl.java:3226)
> >>
> >> at
> >>
> oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist
>
> >> (RepeatableWriteUnitOfWork.java:298)
> >> at
> >>
> oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3186)
> >>
> >> at
> >>
> oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist
> >> (EntityManagerImpl.java:170)
> >> at
> >>
> com.sun.enterprise.util.EntityManagerWrapper.persist(EntityManagerWrapper.java
> :433)
> >>
> >> at
> >>
> com.yaps.petstore.service.customer.CustomerBean.createCustomer(Unknown
> >> Source)
> >> at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
> >> at
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>
> >> at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >>
> >> at java.lang.reflect.Method.invoke (Method.java:585)
> >> at
> >>
> com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1050)
> >>
> >> at
> >>
> com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:165)
> >> at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod
> >> (BaseContainer.java:2788)
> >> at
> >>
> com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:3870)
> >> at
> >>
> com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:184)
> >>
> >> ... 43 more
> >>
> >> I am confused because on the EJB specification this is
> what's written :
> >>
> >> 14.1.1 Application Exceptions
> >>
> >> An application exception may be a subclass (direct or
> indirect) of
> >> java.lang.Exception (i.e., a "checked exception"), or an
> application
> >> exception class may be defined as a subclass of the
> >> java.lang.RuntimeException (an "unchecked exception")
> >>
> >> 14.1.2 Goals for Exception Hand
> >>
> >> An application exception thrown by an enterprise bean
> instance should
> >> be reported to the client precisely (i.e., the client gets
> the same
> >> exception)
> >>
> >> 14.2.1 Application Exceptions
> >>
> >> An application exception that is an unchecked exception is
> defined as
> >> an application exception by annotating it with the
> >> applicationException metadata annotation.
> >>
> >> Thanks for your help,
> >>
> >>
> >>
> >> Antonio
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
> > ---------------------------------------------------------------------
>
> > To unsubscribe, e-mail:
> ejb-unsubscribe_at_glassfish.dev.java.net
> <mailto:ejb-unsubscribe_at_glassfish.dev.java.net>
> > For additional commands, e-mail:
> ejb-help_at_glassfish.dev.java.net
> <mailto:ejb-help_at_glassfish.dev.java.net>
> >
>
>
>
>
>