dev@glassfish.java.net

Re: java.lang.IllegalStateException: Keystore was tampered with, or password was incorrect

From: kedar <Kedar.Mhaswade_at_Sun.COM>
Date: Mon, 27 Nov 2006 13:22:28 -0800

Yes, this might be the cause. But to be precise, it is the "master" password
that should have a value of "changeit". But let's give Antonio a chance
to get back.
Also, Antonio - please let's know what master password you use.

Thanks,
Kedar

Lloyd L Chambers wrote:
> I think this is the same problem I've seen on Mac OS X. You must use a
> password of 'changeit'; the real password is getting trashed somewhere
> along the way.
>
> Lloyd
>
> On Nov 27, 2006, at 12:58 PM, kedar wrote:
>
>> Hi Antonio,
>>
>> Yes, something significant has changed and this problem
>> seems to be related to it. Unfortunately, I have not seen
>> this problem on various platforms that we have been running
>> tests on. May I know more about the platform,
>> the *exact* URL for the bundle that you downloaded etc.?
>>
>> Thanks,
>> Kedar
>>
>>
>> Cheng Fang wrote:
>>> Can someone please help Antonio with this problem? Thanks.
>>>
>>> -cheng
>>> ----------------------------
>>> Hmmm, I've installed the lastest night build and use my good old
>>> script to create my domain (this script has worked since b13). When
>>> I want to start it I have the following exception. Has something
>>> changed in the way to create a new domain ? I use the following
>>> command :
>>>
>>> asadmin create-domain --adminport 8282 --adminuser admin
>>> --savemasterpassword=true --instanceport 8080 petstore
>>>
>>>
>>>
>>> [#|2006-11-27T20:32:17.640+0100|WARNING|sun-appserver-ee9.1|javax.enterprise.system.stream.err|_ThreadID=10;_ThreadName=main;_RequestID=a3953086-72b0-4a69-a9e3-9c75f2e49d9f;|java.lang.reflect.InvocationTargetException
>>>
>>> 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.server.PELaunch.main(PELaunch.java:272)
>>> Caused by: java.lang.ExceptionInInitializerError
>>> at com.sun.enterprise.security.SecurityLifecycle.onInitialization
>>> (SecurityLifecycle.java:89)
>>> at
>>> com.sun.enterprise.server.ApplicationServer.onInitialization(ApplicationServer.java:240)
>>>
>>> at
>>> com.sun.enterprise.server.ondemand.OnDemandServer.onInitialization(OnDemandServer.java:93)
>>>
>>> at com.sun.enterprise.server.PEMain.run(PEMain.java:316)
>>> at com.sun.enterprise.server.PEMain.main(PEMain.java:260)
>>> ... 5 more
>>> Caused by: java.lang.IllegalStateException: Keystore was tampered
>>> with, or password was incorrect
>>> at
>>> com.sun.enterprise.security.SecuritySupportImpl.loadStores(SecuritySupportImpl.java:104)
>>>
>>> at
>>> com.sun.enterprise.security.SecuritySupportImpl.initJKS(SecuritySupportImpl.java:72)
>>>
>>> at com.sun.enterprise.security.SecuritySupportImpl
>>> .<init>(SecuritySupportImpl.java:66)
>>> at
>>> com.sun.enterprise.security.SecuritySupportImpl.<init>(SecuritySupportImpl.java:61)
>>>
>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>> Method)
>>> at
>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>>
>>> at
>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>
>>> at java.lang.reflect.Constructor.newInstance (Constructor.java:494)
>>> at java.lang.Class.newInstance0(Class.java:350)
>>> at java.lang.Class.newInstance(Class.java:303)
>>> at
>>> com.sun.enterprise.pluggable.PluggableFeatureFactoryBaseImpl.invoke(PluggableFeatureFactoryBaseImpl.java
>>> :71)
>>> at $Proxy0.getSecuritySupport(Unknown Source)
>>> at
>>> com.sun.enterprise.security.SecurityUtil.getSecuritySupport(SecurityUtil.java:354)
>>>
>>> at com.sun.enterprise.security.SSLUtils.<clinit>(SSLUtils.java:86)
>>> ... 10 more
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> Subject:
>>> Re: Application Exception being wrapped into EJBException
>>> From:
>>> Antonio Goncalves <antonio.mailing_at_gmail.com>
>>> Date:
>>> Mon, 27 Nov 2006 20:31:07 +0100
>>> To:
>>> ejb_at_glassfish.dev.java.net
>>>
>>> To:
>>> ejb_at_glassfish.dev.java.net
>>>
>>>
>>> Hmmm, I've installed the lastest night build and use my good old
>>> script to create my domain (this script has worked since b13). When
>>> I want to start it I have the following exception. Has something
>>> changed in the way to create a new domain ? I use the following
>>> command :
>>> asadmin create-domain --adminport 8282 --adminuser admin
>>> --savemasterpassword=true --instanceport 8080 petstore
>>>
>>> [#|2006-11-27T20:32:17.640+0100|WARNING|sun-appserver-ee9.1|javax.enterprise.system.stream.err|_ThreadID=10;_ThreadName=main;_RequestID=a3953086-72b0-4a69-a9e3-9c75f2e49d9f;|java.lang.reflect.InvocationTargetException
>>>
>>> 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.server.PELaunch.main(PELaunch.java:272)
>>> Caused by: java.lang.ExceptionInInitializerError
>>> at com.sun.enterprise.security.SecurityLifecycle.onInitialization
>>> (SecurityLifecycle.java:89)
>>> at
>>> com.sun.enterprise.server.ApplicationServer.onInitialization(ApplicationServer.java:240)
>>>
>>> at
>>> com.sun.enterprise.server.ondemand.OnDemandServer.onInitialization(OnDemandServer.java:93)
>>>
>>> at com.sun.enterprise.server.PEMain.run(PEMain.java:316)
>>> at com.sun.enterprise.server.PEMain.main(PEMain.java:260)
>>> ... 5 more
>>> Caused by: java.lang.IllegalStateException: Keystore was tampered
>>> with, or password was incorrect
>>> at
>>> com.sun.enterprise.security.SecuritySupportImpl.loadStores(SecuritySupportImpl.java:104)
>>>
>>> at
>>> com.sun.enterprise.security.SecuritySupportImpl.initJKS(SecuritySupportImpl.java:72)
>>>
>>> at com.sun.enterprise.security.SecuritySupportImpl
>>> .<init>(SecuritySupportImpl.java:66)
>>> at
>>> com.sun.enterprise.security.SecuritySupportImpl.<init>(SecuritySupportImpl.java:61)
>>>
>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>> Method)
>>> at
>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>>
>>> at
>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>
>>> at java.lang.reflect.Constructor.newInstance (Constructor.java:494)
>>> at java.lang.Class.newInstance0(Class.java:350)
>>> at java.lang.Class.newInstance(Class.java:303)
>>> at
>>> com.sun.enterprise.pluggable.PluggableFeatureFactoryBaseImpl.invoke(PluggableFeatureFactoryBaseImpl.java
>>> :71)
>>> at $Proxy0.getSecuritySupport(Unknown Source)
>>> at
>>> com.sun.enterprise.security.SecurityUtil.getSecuritySupport(SecurityUtil.java:354)
>>>
>>> at com.sun.enterprise.security.SSLUtils.<clinit>(SSLUtils.java:86)
>>> ... 10 more
>>>
>>>
>>> 2006/11/27, Cheng Fang <Cheng.Fang_at_sun.com
>>> <mailto:Cheng.Fang_at_sun.com>>:
>>>
>>> Hi Antonio,
>>>
>>> From https://glassfish.dev.java.net/public/downloadsindex.html
>>> <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
>>> <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> <mailto: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>
>>> >> <mailto: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>
>>> >> <mailto: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>
>>> >> <mailto: 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>
>>> >> <mailto:ejb-help_at_glassfish.dev.java.net
>>> <mailto:ejb-help_at_glassfish.dev.java.net>>
>>> >> >
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >
>>>
>>>
>>> ---------------------------------------------------------------------
>>> 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>
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>