Re: EJBException et RMI

Dominique Gallot <[email protected]> Thu, 3 Nov 2011 15:18:50 +0100
Newsgroups gmane.comp.java.french.general
Message-ID <CAJmTU1jeY_SR9X_EWahZD9dbv5Yex9n-pAz5u21iuQVecPH2cQ@mail.gmail.com>
--90e6ba6e8298e9b72f04b0d54639
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Ton exception est serialisable, mais celle-ci de defini pas de UID, ou
qu'un de ces champs =E0 le meme probleme.

Donc celui-ci est caluler automatiquement, et cela la valuer depends de la
version de java.
C'est pour ca qu'eclipse rale quant une classe implemente serialisable mais
ne definit pas le champs
private static final long serialVersionUID =3D xxxx;
http://c2.com/ppr/wiki/JavaIdioms/AlwaysDeclareSerialVersionUid.html

Dominique



2011/11/3 Nicolas Delsaux <[email protected]>

> Salut,
> depuis ce matin, je me chamaille avec un test unitaire Glassfish
> client qui m'affiche des erreurs RMI/IIOP/CORBA compl=E8tement dingues.
> Apr=E8s moult ivnestigations, j'en suis venu =E0 la conclusion qu'une
> exception arrive sur le serveur, et que cette exception ne passe pas
> dans les tuyaux de RMI.
> Maintenant, comment je peux corriger ?
> Bon, je vais quand m=EAme vous donner plus de d=E9tails.
> Depuis un client Glassfish, je r=E9cup=E8re l'interface distante d'un EJB
> qui stocke des donn=E9es dans une base Neo4J en utilisant Empire-RDF
> (https://github.com/mhgrove/Empire). Pas forc=E9ment conventionnel, mais
> sacr=E9ment fonctionnel.
> Sauf que, dans certains cas, je fais des b=EAtises (genre cr=E9er un obje=
t
> qui existe d=E9ja en base).
> Dans ce cas-l=E0, c=F4t=E9 serveur, je vois =E7a :
>
>
> [#|2011-11-03T14:28:33.463+0100|WARNING|glassfish3.1.1|javax.enterprise.s=
ystem.container.ejb.com.sun.ejb.containers|_ThreadID=3D223;_ThreadName=3DTh=
read-2;|A
> system exception occurred during an invocation on EJB TemplateEJB
> method public java.lang.Object
> AbstractCrudService.create(java.lang.Object)
> javax.ejb.EJBException
>        at
> com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer=
.java:5193)
>        at
> com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:509=
1)
>        at
> com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4879=
)
>        at
> com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2039)
>        at
> com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1990)
>        at
> com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocat=
ionHandler.java:213)
>        at
> com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjec=
tInvocationHandlerDelegate.java:79)
>        at $Proxy531.create(Unknown Source)
>        at sun.reflect.GeneratedMethodAccessor190.invoke(Unknown Source)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:601)
>        at
> com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(Ref=
lectiveTie.java:144)
>        at
> com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTi=
e.java:174)
>        at
> com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchT=
oServant(CorbaServerRequestDispatcherImpl.java:528)
>        at
> com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(=
CorbaServerRequestDispatcherImpl.java:199)
>        at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequ=
est(CorbaMessageMediatorImpl.java:1624)
>        at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(Cor=
baMessageMediatorImpl.java:1486)
>        at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(Corba=
MessageMediatorImpl.java:990)
>        at
> com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback=
(RequestMessage_1_2.java:214)
>        at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(Cor=
baMessageMediatorImpl.java:742)
>        at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMes=
sageMediatorImpl.java:539)
>        at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessa=
geMediatorImpl.java:2324)
>        at
> com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.perf=
ormWork(ThreadPoolImpl.java:497)
>        at
> com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(=
ThreadPoolImpl.java:540)
> Caused by: javax.persistence.EntityExistsException:
> java.lang.IllegalArgumentException: Entity already exists: Template
>        id=3DRemoteTemplateJPATest#a template with an empty target
>        name=3Da template with an empty target
>
>        at com.clarkparsia.empire.impl.EntityManagerImpl.persist(Unknown
> Source)
>        at
> com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(Ent=
ityManagerWrapper.java:269)
>        at AbstractCrudService.create(AbstractCrudService.java:70)
>        at AbstractCrudService.create(AbstractCrudService.java:22)
>        at sun.reflect.GeneratedMethodAccessor187.invoke(Unknown Source)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:601)
>        at
> org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSe=
curityManager.java:1052)
>        at
> org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecur=
ityManager.java:1124)
>        at
> com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:=
5366)
>        at
> com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
>        at
> com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(Inte=
rceptorManager.java:800)
>        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
>        at
> org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterce=
ptor.java:57)
>        at sun.reflect.GeneratedMethodAccessor163.invoke(Unknown Source)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:601)
>        at
> com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(Int=
erceptorManager.java:861)
>        at
> com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(Inte=
rceptorManager.java:800)
>        at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
>        at
> com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(Syste=
mInterceptorProxy.java:162)
>        at
> com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(S=
ystemInterceptorProxy.java:144)
>        at sun.reflect.GeneratedMethodAccessor162.invoke(Unknown Source)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:601)
>        at
> com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(Int=
erceptorManager.java:861)
>        at
> com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(Inte=
rceptorManager.java:800)
>        at
> com.sun.ejb.containers.interceptors.InterceptorManager.intercept(Intercep=
torManager.java:370)
>        at
> com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5338)
>        at
> com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5326)
>        at
> com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocat=
ionHandler.java:206)
>        ... 18 more
> Caused by: java.lang.IllegalArgumentException: Entity already exists:
> Template
>        id=3DRemoteTemplateJPATest#a template with an empty target
>        name=3Da template with an empty target
>
>        at
> com.clarkparsia.empire.impl.EntityManagerImpl.assertNotContains(Unknown
> Source)
>        ... 49 more
> |#]
>
>
> Le message est assez clair : "Entity already exists".
> Par contre, c=F4t=E9 client, je re=E7ois une exception tout sauf limpide =
:
>
> Avertissement: IOP00810011: Exception from readValue on ValueHandler
> in CDRInputStream
> org.omg.CORBA.MARSHAL: Avertissement: IOP00810011: Exception from
> readValue on ValueHandler in CDRInputStream  vmcid: OMG  minor code:
> 11 completed: Maybe
>        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>        at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAc=
cessorImpl.java:57)
>        at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConst=
ructorAccessorImpl.java:45)
>        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
>        at
> com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(Cor=
baExtension.java:248)
>        at
> com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(Cor=
baExtension.java:95)
>        at
> com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.handleFullLogging(Wra=
pperGenerator.java:387)
>        at
> com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.access$400(WrapperGen=
erator.java:107)
>        at
> com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator$2.invoke(WrapperGener=
ator.java:511)
>        at
> com.sun.corba.ee.spi.orbutil.proxy.CompositeInvocationHandlerImpl.invoke(=
CompositeInvocationHandlerImpl.java:99)
>        at $Proxy54.valuehandlerReadException(Unknown Source)
>        at
> com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CD=
RInputStream_1_0.java:1022)
>        at
> com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStre=
am_1_0.java:1123)
>        at
> com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.j=
ava:531)
>        at
> com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream=
.java:2162)
>        at
> com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream=
.java:2404)
>        at
> com.sun.corba.ee.impl.io.IIOPInputStream.defaultReadObjectDelegate(IIOPIn=
putStream.java:596)
>        at
> com.sun.corba.ee.impl.io.InputStreamHook.defaultReadObject(InputStreamHoo=
k.java:233)
>        at java.lang.Throwable.readObject(Throwable.java:913)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java=
:57)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:601)
>        at
> com.sun.corba.ee.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStre=
am.java:1832)
>        at
> com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java=
:1214)
>        at
> com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream=
.java:425)
>        at
> com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerI=
mpl.java:308)
>        at
> com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java=
:274)
>        at
> com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CD=
RInputStream_1_0.java:1015)
>        at
> com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStre=
am_1_0.java:1123)
>        at
> com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.j=
ava:531)
>        at
> com.sun.corba.ee.impl.presentation.rmi.ExceptionHandlerImpl$ExceptionRWRM=
IImpl.read(ExceptionHandlerImpl.java:180)
>        at
> com.sun.corba.ee.impl.presentation.rmi.ExceptionHandlerImpl.readException=
(ExceptionHandlerImpl.java:290)
>        at
> com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readEx=
ception(DynamicMethodMarshallerImpl.java:502)
>        at
> com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateI=
nvoke(StubInvocationHandlerImpl.java:205)
>        at
> com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(S=
tubInvocationHandlerImpl.java:152)
>        at
> com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(Cod=
egenStubBase.java:227)
>        at
> __TemplateEJBInterface_Remote_DynamicStub.create(__TemplateEJBInterface_R=
emote_DynamicStub.java)
>        at
> _TemplateEJBInterface_Wrapper.create(_TemplateEJBInterface_Wrapper.java)
>        at
> RemoteTemplateJPATest.aTemplateWithASimpleTargetShouldTotallyWork(RemoteT=
emplateJPATest.java:97)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java=
:57)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:601)
>        at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMeth=
od.java:44)
>        at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallabl=
e.java:15)
>        at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod=
.java:41)
>        at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.=
java:20)
>        at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java=
:28)
>        at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.=
java:76)
>        at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.=
java:50)
>        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:19=
1)
>        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184=
)
>        at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java=
:28)
>        at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>        at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4Test=
Reference.java:50)
>        at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.jav=
a:38)
>        at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTes=
tRunner.java:467)
>        at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTes=
tRunner.java:683)
>        at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunn=
er.java:390)
>        at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRun=
ner.java:197)
> Caused by: java.io.IOException: Mismatched serialization UIDs : Source
> (Rep. IDRMI:javax.ejb.EJBException:958C33FAE8798D83:E573C8C3FC5EB5E2)
> =3D E573C8C3FC5EB5E2 whereas Target (Rep. ID
> RMI:javax.ejb.EJBException:958C33FAE8798D83:0B0EB2FF36CB22F6) =3D
> 0B0EB2FF36CB22F6
>        at
> com.sun.corba.ee.impl.util.RepositoryId.useFullValueDescription(Repositor=
yId.java:679)
>        at
> com.sun.corba.ee.impl.util.RepositoryId.useFullValueDescription(Repositor=
yId.java:639)
>        at
> com.sun.corba.ee.impl.io.ValueHandlerImpl.useFullValueDescription(ValueHa=
ndlerImpl.java:360)
>        at
> com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream=
.java:422)
>        at
> com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerI=
mpl.java:308)
>        at
> com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java=
:274)
>        at
> com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CD=
RInputStream_1_0.java:1015)
>        ... 52 more
>
> D'apr=E8s ce que je comprend du bazar, =E7a devrait vouloir dire qu'un de=
s
> =E9l=E9ments renvoy=E9s n'est pas s=E9rialisable.
> Ca n'est pas le cas de mon objet, que j'envoie d=E9ja =E0 travers RMI (et
> qui est donc s=E9rialis=E9).
> Ca n'est - =E0 priori - pas le cas des exceptions, piuisque Throwable
> impl=E9mente Serializable.
> Alors que reste-t-il de non s=E9rialisable ?
> Au cas o=F9 vous poseriez la question, le client s'ex=E9cute sur un JDK
> 1.7.0, comme Glassfish d'ailleurs (v=E9rifi=E9 avec JVisualVM). Il ne
> s'agit donc pas du classique probl=E8me de version diff=E9rente.
>
> --
> Nicolas Delsaux
>

--90e6ba6e8298e9b72f04b0d54639
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div>Ton exception est serialisable, mais celle-ci de defini pas de UID, ou=
 qu&#39;un de ces champs=A0=E0 le meme probleme.</div>
<div>=A0</div>
<div>Donc celui-ci est caluler automatiquement, et cela la valuer depends d=
e la version de java.</div>
<div>C&#39;est pour ca qu&#39;eclipse rale quant une classe implemente seri=
alisable mais ne definit pas le champs</div>
<div>private static final long serialVersionUID =3D xxxx;<br></div>
<div><a href=3D"http://c2.com/ppr/wiki/JavaIdioms/AlwaysDeclareSerialVersio=
nUid.html">http://c2.com/ppr/wiki/JavaIdioms/AlwaysDeclareSerialVersionUid.=
html</a></div>
<div>=A0</div>
<div>Dominique</div>
<div>=A0</div>
<div><br>=A0</div>
<div class=3D"gmail_quote">2011/11/3 Nicolas Delsaux <span dir=3D"ltr">&lt;=
<a href=3D"mailto:[email protected]">[email protected]</a>&=
gt;</span><br>
<blockquote style=3D"BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex=
; PADDING-LEFT: 1ex" class=3D"gmail_quote">Salut,<br>depuis ce matin, je me=
 chamaille avec un test unitaire Glassfish<br>client qui m&#39;affiche des =
erreurs RMI/IIOP/CORBA compl=E8tement dingues.<br>

Apr=E8s moult ivnestigations, j&#39;en suis venu =E0 la conclusion qu&#39;u=
ne<br>exception arrive sur le serveur, et que cette exception ne passe pas<=
br>dans les tuyaux de RMI.<br>Maintenant, comment je peux corriger ?<br>Bon=
, je vais quand m=EAme vous donner plus de d=E9tails.<br>

Depuis un client Glassfish, je r=E9cup=E8re l&#39;interface distante d&#39;=
un EJB<br>qui stocke des donn=E9es dans une base Neo4J en utilisant Empire-=
RDF<br>(<a href=3D"https://github.com/mhgrove/Empire" target=3D"_blank">htt=
ps://github.com/mhgrove/Empire</a>). Pas forc=E9ment conventionnel, mais<br=
>

sacr=E9ment fonctionnel.<br>Sauf que, dans certains cas, je fais des b=EAti=
ses (genre cr=E9er un objet<br>qui existe d=E9ja en base).<br>Dans ce cas-l=
=E0, c=F4t=E9 serveur, je vois =E7a :<br><br>[#|2011-11-03T14:28:33.463+010=
0|WARNING|glassfish3.1.1|javax.enterprise.system.container.ejb.com.sun.ejb.=
containers|_ThreadID=3D223;_ThreadName=3DThread-2;|A<br>

system exception occurred during an invocation on EJB TemplateEJB<br>method=
 public java.lang.Object<br>AbstractCrudService.create(java.lang.Object)<br=
>javax.ejb.EJBException<br>=A0 =A0 =A0 =A0at com.sun.ejb.containers.BaseCon=
tainer.processSystemException(BaseContainer.java:5193)<br>

=A0 =A0 =A0 =A0at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseCo=
ntainer.java:5091)<br>=A0 =A0 =A0 =A0at com.sun.ejb.containers.BaseContaine=
r.postInvokeTx(BaseContainer.java:4879)<br>=A0 =A0 =A0 =A0at com.sun.ejb.co=
ntainers.BaseContainer.postInvoke(BaseContainer.java:2039)<br>

=A0 =A0 =A0 =A0at com.sun.ejb.containers.BaseContainer.postInvoke(BaseConta=
iner.java:1990)<br>=A0 =A0 =A0 =A0at com.sun.ejb.containers.EJBObjectInvoca=
tionHandler.invoke(EJBObjectInvocationHandler.java:213)<br>=A0 =A0 =A0 =A0a=
t com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjec=
tInvocationHandlerDelegate.java:79)<br>

=A0 =A0 =A0 =A0at $Proxy531.create(Unknown Source)<br>=A0 =A0 =A0 =A0at sun=
.reflect.GeneratedMethodAccessor190.invoke(Unknown Source)<br>=A0 =A0 =A0 =
=A0at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces=
sorImpl.java:43)<br>
=A0 =A0 =A0 =A0at java.lang.reflect.Method.invoke(Method.java:601)<br>
=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.disp=
atchToMethod(ReflectiveTie.java:144)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.=
impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:174)<br>=A0 =
=A0 =A0 =A0at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherIm=
pl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:528)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatch=
erImpl.dispatch(CorbaServerRequestDispatcherImpl.java:199)<br>=A0 =A0 =A0 =
=A0at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest=
Request(CorbaMessageMediatorImpl.java:1624)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.h=
andleRequest(CorbaMessageMediatorImpl.java:1486)<br>=A0 =A0 =A0 =A0at com.s=
un.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessage=
MediatorImpl.java:990)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMess=
age_1_2.callback(RequestMessage_1_2.java:214)<br>=A0 =A0 =A0 =A0at com.sun.=
corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageM=
ediatorImpl.java:742)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.d=
ispatch(CorbaMessageMediatorImpl.java:539)<br>=A0 =A0 =A0 =A0at com.sun.cor=
ba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImp=
l.java:2324)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$W=
orkerThread.performWork(ThreadPoolImpl.java:497)<br>=A0 =A0 =A0 =A0at com.s=
un.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadP=
oolImpl.java:540)<br>

Caused by: javax.persistence.EntityExistsException:<br>java.lang.IllegalArg=
umentException: Entity already exists: Template<br>=A0 =A0 =A0 =A0id=3DRemo=
teTemplateJPATest#a template with an empty target<br>=A0 =A0 =A0 =A0name=3D=
a template with an empty target<br>

<br>=A0 =A0 =A0 =A0at com.clarkparsia.empire.impl.EntityManagerImpl.persist=
(Unknown Source)<br>=A0 =A0 =A0 =A0at com.sun.enterprise.container.common.i=
mpl.EntityManagerWrapper.persist(EntityManagerWrapper.java:269)<br>=A0 =A0 =
=A0 =A0at AbstractCrudService.create(AbstractCrudService.java:70)<br>

=A0 =A0 =A0 =A0at AbstractCrudService.create(AbstractCrudService.java:22)<b=
r>=A0 =A0 =A0 =A0at sun.reflect.GeneratedMethodAccessor187.invoke(Unknown S=
ource)<br>=A0 =A0 =A0 =A0at sun.reflect.DelegatingMethodAccessorImpl.invoke=
(DelegatingMethodAccessorImpl.java:43)<br>

=A0 =A0 =A0 =A0at java.lang.reflect.Method.invoke(Method.java:601)<br>=A0 =
=A0 =A0 =A0at org.glassfish.ejb.security.application.EJBSecurityManager.run=
Method(EJBSecurityManager.java:1052)<br>=A0 =A0 =A0 =A0at org.glassfish.ejb=
.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:112=
4)<br>

=A0 =A0 =A0 =A0at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(Bas=
eContainer.java:5366)<br>=A0 =A0 =A0 =A0at com.sun.ejb.EjbInvocation.invoke=
BeanMethod(EjbInvocation.java:619)<br>=A0 =A0 =A0 =A0at com.sun.ejb.contain=
ers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:8=
00)<br>

=A0 =A0 =A0 =A0at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)=
<br>=A0 =A0 =A0 =A0at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvok=
e(SessionBeanInterceptor.java:57)<br>=A0 =A0 =A0 =A0at sun.reflect.Generate=
dMethodAccessor163.invoke(Unknown Source)<br>

=A0 =A0 =A0 =A0at sun.reflect.DelegatingMethodAccessorImpl.invoke(Delegatin=
gMethodAccessorImpl.java:43)<br>=A0 =A0 =A0 =A0at java.lang.reflect.Method.=
invoke(Method.java:601)<br>=A0 =A0 =A0 =A0at com.sun.ejb.containers.interce=
ptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)<br>

=A0 =A0 =A0 =A0at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl=
.invokeNext(InterceptorManager.java:800)<br>=A0 =A0 =A0 =A0at com.sun.ejb.E=
jbInvocation.proceed(EjbInvocation.java:571)<br>=A0 =A0 =A0 =A0at com.sun.e=
jb.containers.interceptors.SystemInterceptorProxy.doAround(SystemIntercepto=
rProxy.java:162)<br>

=A0 =A0 =A0 =A0at com.sun.ejb.containers.interceptors.SystemInterceptorProx=
y.aroundInvoke(SystemInterceptorProxy.java:144)<br>=A0 =A0 =A0 =A0at sun.re=
flect.GeneratedMethodAccessor162.invoke(Unknown Source)<br>=A0 =A0 =A0 =A0a=
t sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:43)<br>

=A0 =A0 =A0 =A0at java.lang.reflect.Method.invoke(Method.java:601)<br>=A0 =
=A0 =A0 =A0at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.i=
ntercept(InterceptorManager.java:861)<br>=A0 =A0 =A0 =A0at com.sun.ejb.cont=
ainers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.jav=
a:800)<br>

=A0 =A0 =A0 =A0at com.sun.ejb.containers.interceptors.InterceptorManager.in=
tercept(InterceptorManager.java:370)<br>=A0 =A0 =A0 =A0at com.sun.ejb.conta=
iners.BaseContainer.__intercept(BaseContainer.java:5338)<br>=A0 =A0 =A0 =A0=
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5326)<=
br>

=A0 =A0 =A0 =A0at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(=
EJBObjectInvocationHandler.java:206)<br>=A0 =A0 =A0 =A0... 18 more<br>Cause=
d by: java.lang.IllegalArgumentException: Entity already exists: Template<b=
r>=A0 =A0 =A0 =A0id=3DRemoteTemplateJPATest#a template with an empty target=
<br>

=A0 =A0 =A0 =A0name=3Da template with an empty target<br><br>=A0 =A0 =A0 =
=A0at com.clarkparsia.empire.impl.EntityManagerImpl.assertNotContains(Unkno=
wn<br>Source)<br>=A0 =A0 =A0 =A0... 49 more<br>|#]<br><br><br>Le message es=
t assez clair : &quot;Entity already exists&quot;.<br>

Par contre, c=F4t=E9 client, je re=E7ois une exception tout sauf limpide :<=
br><br>Avertissement: IOP00810011: Exception from readValue on ValueHandler=
<br>in CDRInputStream<br>org.omg.CORBA.MARSHAL: Avertissement: IOP00810011:=
 Exception from<br>

readValue on ValueHandler in CDRInputStream =A0vmcid: OMG =A0minor code:<br=
>11 completed: Maybe<br>=A0 =A0 =A0 =A0at sun.reflect.NativeConstructorAcce=
ssorImpl.newInstance0(Native Method)<br>=A0 =A0 =A0 =A0at sun.reflect.Nativ=
eConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)=
<br>

=A0 =A0 =A0 =A0at sun.reflect.DelegatingConstructorAccessorImpl.newInstance=
(DelegatingConstructorAccessorImpl.java:45)<br>=A0 =A0 =A0 =A0at java.lang.=
reflect.Constructor.newInstance(Constructor.java:525)<br>=A0 =A0 =A0 =A0at =
com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(Corba=
Extension.java:248)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.m=
akeException(CorbaExtension.java:95)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.=
spi.orbutil.logex.WrapperGenerator.handleFullLogging(WrapperGenerator.java:=
387)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerat=
or.access$400(WrapperGenerator.java:107)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator$2.inv=
oke(WrapperGenerator.java:511)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.spi.or=
butil.proxy.CompositeInvocationHandlerImpl.invoke(CompositeInvocationHandle=
rImpl.java:99)<br>

=A0 =A0 =A0 =A0at $Proxy54.valuehandlerReadException(Unknown Source)<br>=A0=
 =A0 =A0 =A0at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIO=
PValueType(CDRInputStream_1_0.java:1022)<br>=A0 =A0 =A0 =A0at com.sun.corba=
.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:112=
3)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(=
CDRInputObject.java:531)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.io.IIOP=
InputStream.inputObjectField(IIOPInputStream.java:2162)<br>=A0 =A0 =A0 =A0a=
t com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream=
.java:2404)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.io.IIOPInputStream.defaultReadObjec=
tDelegate(IIOPInputStream.java:596)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.i=
mpl.io.InputStreamHook.defaultReadObject(InputStreamHook.java:233)<br>=A0 =
=A0 =A0 =A0at java.lang.Throwable.readObject(Throwable.java:913)<br>

=A0 =A0 =A0 =A0at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Metho=
d)<br>=A0 =A0 =A0 =A0at sun.reflect.NativeMethodAccessorImpl.invoke(NativeM=
ethodAccessorImpl.java:57)<br>=A0 =A0 =A0 =A0at sun.reflect.DelegatingMetho=
dAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>

=A0 =A0 =A0 =A0at java.lang.reflect.Method.invoke(Method.java:601)<br>=A0 =
=A0 =A0 =A0at com.sun.corba.ee.impl.io.IIOPInputStream.invokeObjectReader(I=
IOPInputStream.java:1832)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.io.IIO=
PInputStream.inputObject(IIOPInputStream.java:1214)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject=
(IIOPInputStream.java:425)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.io.Va=
lueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308)<br>=A0 =A0 =A0 =
=A0at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.=
java:274)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMI=
IIOPValueType(CDRInputStream_1_0.java:1015)<br>=A0 =A0 =A0 =A0at com.sun.co=
rba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:=
1123)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.encoding.CDRInputObject.re=
ad_value(CDRInputObject.java:531)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.presentation.rmi.ExceptionHandlerIm=
pl$ExceptionRWRMIImpl.read(ExceptionHandlerImpl.java:180)<br>=A0 =A0 =A0 =
=A0at com.sun.corba.ee.impl.presentation.rmi.ExceptionHandlerImpl.readExcep=
tion(ExceptionHandlerImpl.java:290)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarsh=
allerImpl.readException(DynamicMethodMarshallerImpl.java:502)<br>=A0 =A0 =
=A0 =A0at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.=
privateInvoke(StubInvocationHandlerImpl.java:205)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHand=
lerImpl.invoke(StubInvocationHandlerImpl.java:152)<br>=A0 =A0 =A0 =A0at com=
.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenS=
tubBase.java:227)<br>

=A0 =A0 =A0 =A0at __TemplateEJBInterface_Remote_DynamicStub.create(__Templa=
teEJBInterface_Remote_DynamicStub.java)<br>=A0 =A0 =A0 =A0at _TemplateEJBIn=
terface_Wrapper.create(_TemplateEJBInterface_Wrapper.java)<br>=A0 =A0 =A0 =
=A0at RemoteTemplateJPATest.aTemplateWithASimpleTargetShouldTotallyWork(Rem=
oteTemplateJPATest.java:97)<br>

=A0 =A0 =A0 =A0at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Metho=
d)<br>=A0 =A0 =A0 =A0at sun.reflect.NativeMethodAccessorImpl.invoke(NativeM=
ethodAccessorImpl.java:57)<br>=A0 =A0 =A0 =A0at sun.reflect.DelegatingMetho=
dAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>

=A0 =A0 =A0 =A0at java.lang.reflect.Method.invoke(Method.java:601)<br>=A0 =
=A0 =A0 =A0at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(F=
rameworkMethod.java:44)<br>=A0 =A0 =A0 =A0at org.junit.internal.runners.mod=
el.ReflectiveCallable.run(ReflectiveCallable.java:15)<br>

=A0 =A0 =A0 =A0at org.junit.runners.model.FrameworkMethod.invokeExplosively=
(FrameworkMethod.java:41)<br>=A0 =A0 =A0 =A0at org.junit.internal.runners.s=
tatements.InvokeMethod.evaluate(InvokeMethod.java:20)<br>=A0 =A0 =A0 =A0at =
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:2=
8)<br>

=A0 =A0 =A0 =A0at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJU=
nit4ClassRunner.java:76)<br>=A0 =A0 =A0 =A0at org.junit.runners.BlockJUnit4=
ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)<br>=A0 =A0 =A0 =A0at o=
rg.junit.runners.ParentRunner$3.run(ParentRunner.java:193)<br>

=A0 =A0 =A0 =A0at org.junit.runners.ParentRunner$1.schedule(ParentRunner.ja=
va:52)<br>=A0 =A0 =A0 =A0at org.junit.runners.ParentRunner.runChildren(Pare=
ntRunner.java:191)<br>=A0 =A0 =A0 =A0at org.junit.runners.ParentRunner.acce=
ss$000(ParentRunner.java:42)<br>

=A0 =A0 =A0 =A0at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.ja=
va:184)<br>=A0 =A0 =A0 =A0at org.junit.internal.runners.statements.RunBefor=
es.evaluate(RunBefores.java:28)<br>=A0 =A0 =A0 =A0at org.junit.runners.Pare=
ntRunner.run(ParentRunner.java:236)<br>

=A0 =A0 =A0 =A0at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReferenc=
e.run(JUnit4TestReference.java:50)<br>=A0 =A0 =A0 =A0at org.eclipse.jdt.int=
ernal.junit.runner.TestExecution.run(TestExecution.java:38)<br>=A0 =A0 =A0 =
=A0at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(Remot=
eTestRunner.java:467)<br>

=A0 =A0 =A0 =A0at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.ru=
nTests(RemoteTestRunner.java:683)<br>=A0 =A0 =A0 =A0at org.eclipse.jdt.inte=
rnal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)<br>=A0 =
=A0 =A0 =A0at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(R=
emoteTestRunner.java:197)<br>

Caused by: java.io.IOException: Mismatched serialization UIDs : Source<br>(=
Rep. IDRMI:javax.ejb.EJBException:958C33FAE8798D83:E573C8C3FC5EB5E2)<br>=3D=
 E573C8C3FC5EB5E2 whereas Target (Rep. ID<br>RMI:javax.ejb.EJBException:958=
C33FAE8798D83:0B0EB2FF36CB22F6) =3D<br>

0B0EB2FF36CB22F6<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.util.Repository=
Id.useFullValueDescription(RepositoryId.java:679)<br>=A0 =A0 =A0 =A0at com.=
sun.corba.ee.impl.util.RepositoryId.useFullValueDescription(RepositoryId.ja=
va:639)<br>
=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.io.ValueHandlerImpl.useFullValueDes=
cription(ValueHandlerImpl.java:360)<br>
=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject=
(IIOPInputStream.java:422)<br>=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.io.Va=
lueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308)<br>=A0 =A0 =A0 =
=A0at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.=
java:274)<br>

=A0 =A0 =A0 =A0at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMI=
IIOPValueType(CDRInputStream_1_0.java:1015)<br>=A0 =A0 =A0 =A0... 52 more<b=
r><br>D&#39;apr=E8s ce que je comprend du bazar, =E7a devrait vouloir dire =
qu&#39;un des<br>

=E9l=E9ments renvoy=E9s n&#39;est pas s=E9rialisable.<br>Ca n&#39;est pas l=
e cas de mon objet, que j&#39;envoie d=E9ja =E0 travers RMI (et<br>qui est =
donc s=E9rialis=E9).<br>Ca n&#39;est - =E0 priori - pas le cas des exceptio=
ns, piuisque Throwable<br>

impl=E9mente Serializable.<br>Alors que reste-t-il de non s=E9rialisable ?<=
br>Au cas o=F9 vous poseriez la question, le client s&#39;ex=E9cute sur un =
JDK<br>1.7.0, comme Glassfish d&#39;ailleurs (v=E9rifi=E9 avec JVisualVM). =
Il ne<br>

s&#39;agit donc pas du classique probl=E8me de version diff=E9rente.<br><sp=
an class=3D"HOEnZb"><font color=3D"#888888"><br>--<br>Nicolas Delsaux<br></=
font></span></blockquote></div><br>

--90e6ba6e8298e9b72f04b0d54639--