Hi Antonio,
From
https://glassfish.dev.java.net/public/downloadsindex.html, V2b24
was built on Nov 1, 2006.
The fix for glassfish issue 1359 was committed on Nov 10, 2006.
https://glassfish.dev.java.net/issues/show_bug.cgi?id=1359
(EJBException is not properly initialized)
So the fix was not in V2B24. Can you try a recent nightly build? If
you still see this problem, feel free to reopen the issue with
additional details and tests.
-cheng
Antonio Goncalves wrote:
> Hi,
>
> I'm using V2b24 but I've also tried with b19 and even b13 just to be sure.
>
> I've tried ejbException.getCause but it returns null, and here is the
> stack trace of ejbException.getCausedByException. As you can see, my
> ValidationException has vanished from the stacktrace.
>
>
> java.rmi.ServerException: RemoteException occurred in server thread;
> nested exception is:
> java.rmi.RemoteException
> at
> com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:196)
> at
> com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke
> (StubInvocationHandlerImpl.java:176)
> at
> com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:123)
> at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke
> (BCELStubBase.java:197)
> at
> com.yaps.petstore.stateless.catalog.__CatalogRemote_Remote_DynamicStub.createCategory(__CatalogRemote_Remote_DynamicStub.java)
> at
> com.yaps.petstore.stateless.catalog._CatalogRemote_Wrapper.createCategory
> (com.yaps.petstore.stateless.catalog._CatalogRemote_Wrapper.java)
> at
> com.yaps.petstore.client.delegate.CatalogDelegate.createCategory(CatalogDelegate.java:24)
> at
> com.yaps.petstore.client.ui.catalog.category.CategoryCrudFrame.createActionPerformed
> (CategoryCrudFrame.java:79)
> at
> com.yaps.petstore.client.ui.util.YapsActionPane.fireActionPerformed(YapsActionPane.java:192)
> at
> com.yaps.petstore.client.ui.util.YapsActionPane.access$000(YapsActionPane.java:23)
> at
> com.yaps.petstore.client.ui.util.YapsActionPane$2.actionPerformed(YapsActionPane.java:106)
> at
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
> at javax.swing.AbstractButton$Handler.actionPerformed
> (AbstractButton.java:2169)
> at
> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
> at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
> at javax.swing.plaf.basic.BasicButtonListener.mouseReleased
> (BasicButtonListener.java:236)
> at java.awt.Component.processMouseEvent(Component.java:5488)
> at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
> at java.awt.Component.processEvent(Component.java:5253)
> at java.awt.Container.processEvent(Container.java:1966)
> at java.awt.Component.dispatchEventImpl(Component.java:3955)
> at java.awt.Container.dispatchEventImpl(Container.java:2024)
> at java.awt.Component.dispatchEvent (Component.java:3803)
> at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
> at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
> at java.awt.LightweightDispatcher.dispatchEvent (Container.java:3822)
> at java.awt.Container.dispatchEventImpl(Container.java:2010)
> at java.awt.Window.dispatchEventImpl(Window.java:1778)
> at java.awt.Component.dispatchEvent(Component.java:3803)
> at java.awt.EventQueue.dispatchEvent (EventQueue.java:463)
> at
> java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
> at java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:157)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
> Caused by: java.rmi.RemoteException
> at
> com.sun.enterprise.iiop.POAProtocolMgr.mapException(POAProtocolMgr.java:234)
> at
> com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1303)
> at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(
> EJBObjectInvocationHandler.java:197)
> at
> com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:110)
> at $Proxy77.createCategory(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.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:125)
> at
> com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java
> :650)
> at
> com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:193)
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java
> :1711)
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1571)
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java
> :953)
> at
> com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:182)
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java
> :723)
> at
> com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:480)
> at
> com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java
> :1356)
> at
> com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:467)
>
>
> 2006/11/27, Cheng Fang <Cheng.Fang_at_sun.com <mailto:Cheng.Fang_at_sun.com>>:
>
> 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>
>> >
>>
>>
>>
>>
>>
>