Hi Antonio,
Which version (build #) of glassfish are you using?
--Mahesh
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>
>>
>
>
>
>
>