Compatibilité Generics Java / Web Services

Sylvain RICHET <[email protected]> Wed, 14 Sep 2011 14:39:00 +0200
Newsgroups gmane.comp.java.french.general
Message-ID <CAGn21GKGsfwLQezQtHGPwQ8mwO9yHQVc5eA9=O7nVxdnH1dgHQ@mail.gmail.com>
--bcaec520f4b367a35604ace60b6a
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Bonjour =E0 Tous,

Je voudrais utiliser des Generics dans des objets faisant partie des
signatures de m=E9thodes de mes WS (sous Jonas 5.1.5, via JAX-WS / CXF).
Mes WS sont impl=E9ment=E9s sous forme d'EJB 3.0 / JAX-WS.

Pas de souci pour g=E9n=E9rer les classes clientes et server (via
wsgen/wsimport).

En revanche, au runtime, je me prends une erreur du genre :


2011-09-14 12:41:45,884 : LogUtils.log : Interceptor has thrown exception,
> unwinding now
>     org.apache.cxf.interceptor.Fault: Marshalling Error: class
> com.anaolabs.generics.model.DbiMusician nor any of its super class is kno=
wn
> to this context.
>             at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:2=
41)
>             at
> org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:63)
>             at
> org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(A=
bstractOutDatabindingInterceptor.java:102)
>             at
> org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterc=
eptor.java:68)
>             at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh=
ain.java:226)
>             at
> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(Outgoin=
gChainInterceptor.java:74)
>             at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh=
ain.java:226)
>             at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiatio=
nObserver.java:88)
>             at
> org.ow2.jonas.ws.cxf.http.JOnASDestination.invoke(JOnASDestination.java:1=
11)
>             at
> org.ow2.jonas.ws.cxf.jaxws.CXFWSEndpoint.invoke(CXFWSEndpoint.java:151)
>             at
> org.ow2.jonas.ws.jaxws.http.servlet.JAXWSServlet.invokeDestination(JAXWSS=
ervlet.java:113)
>             at
> org.ow2.jonas.ws.jaxws.http.servlet.JAXWSServlet.doPost(JAXWSServlet.java=
:75)
>             at javax.servlet.http.HttpServlet.service(HttpServlet.java:63=
7)
>             at javax.servlet.http.HttpServlet.service(HttpServlet.java:71=
7)
>             at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat=
ionFilterChain.java:290)
>             at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte=
rChain.java:206)
>             at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve=
.java:233)
>             at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve=
.java:191)
>             at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:=
127)
>             at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:=
102)
>             at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.j=
ava:109)
>             at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:34=
0)
>             at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857=
)
>             at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(H=
ttp11Protocol.java:588)
>             at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
>             at java.lang.Thread.run(Thread.java:619)
>     Caused by: javax.xml.bind.MarshalException
>      - with linked exception:
>     [javax.xml.bind.JAXBException: class
> com.anaolabs.generics.model.DbiMusician nor any of its super class is kno=
wn
> to this context.]
>             at
> com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:318)
>             at
> com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:24=
4)
>             at
> javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerI=
mpl.java:100)
>             at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.jav=
a:397)
>             at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:2=
19)
>             ... 25 more
>     Caused by: javax.xml.bind.JAXBException: class
> com.anaolabs.generics.model.DbiMusician nor any of its super class is kno=
wn
> to this context.
>             at
> com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:=
246)
>             at
> com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:=
261)
>             at
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.ja=
va:653)
>             at
> com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeIt=
em(ArrayElementNodeProperty.java:65)
>             at
> com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBo=
dy(ArrayElementProperty.java:168)
>             at
> com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayE=
RProperty.java:152)
>             at
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfo=
Impl.java:332)
>             at
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfo=
Impl.java:328)
>             at
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.ja=
va:699)
>             at
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBe=
anInfoImpl.java:152)
>             at
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBe=
anInfoImpl.java:189)
>             at
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBean=
InfoImpl.java:315)
>             at
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBean=
InfoImpl.java:322)
>             at
> com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBean=
InfoImpl.java:72)
>             at
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:=
494)
>             at
> com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
>             ... 29 more
>     Caused by: javax.xml.bind.JAXBException: class
> com.anaolabs.generics.model.DbiMusician nor any of its super class is kno=
wn
> to this context.
>             at
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.j=
ava:590)
>             at
> com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.ja=
va:648)
>             ... 42 more
>

glurps !

Il semblerait que JAXB (sous le capot de JAX-WS) ne marshalle pas
correctement mes objets.

Alors j'ai essay=E9 de jouer avec l'annotation JAXB *@XmlSeeAlso* (pour for=
cer
JAXB =E0 binder mes classes),
mais l=E0 bing ... c'est wsgen qui plante =E0 la g=E9n=E9ration de la plomb=
erie WS !


Cette probl=E8matique des Generics / WS a probablement =E9t=E9 d=E9j=E0 =E9=
voqu=E9e ?

Si vous avez de l'info =E0 ce sujet, je suis preneur
Merci d'avance
:-)

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

Bonjour =E0 Tous,<br><br>Je voudrais utiliser des Generics dans des objets =
faisant partie des signatures de m=E9thodes de mes WS (sous Jonas 5.1.5, vi=
a JAX-WS / CXF).<br>Mes WS sont impl=E9ment=E9s sous forme d&#39;EJB 3.0 / =
JAX-WS.<br>
<br>Pas de souci pour g=E9n=E9rer les classes clientes et server (via wsgen=
/wsimport).<br><br>En revanche, au runtime, je me prends une erreur du genr=
e :<br><br><br><blockquote style=3D"margin: 0pt 0pt 0pt 0.8ex; border-left:=
 1px solid rgb(204, 204, 204); padding-left: 1ex; font-family: courier new,=
monospace;" class=3D"gmail_quote">
2011-09-14 12:41:45,884 : LogUtils.log : Interceptor has thrown exception, =
unwinding now<br>=A0=A0=A0 org.apache.cxf.interceptor.Fault: Marshalling Er=
ror: class com.anaolabs.generics.model.DbiMusician nor any of its super cla=
ss is known to this context.<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.cxf.jaxb.JAXBEncoderDecoder=
.marshall(JAXBEncoderDecoder.java:241)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
 at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:63)<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.cxf.interceptor.AbstractOut=
DatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:10=
2)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.cxf.interceptor.BareOutInte=
rceptor.handleMessage(BareOutInterceptor.java:68)<br>=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(Phas=
eInterceptorChain.java:226)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apa=
che.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInt=
erceptor.java:74)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.cxf.phase.PhaseInterceptorC=
hain.doIntercept(PhaseInterceptorChain.java:226)<br>=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 at org.apache.cxf.transport.ChainInitiationObserver.onMessage(=
ChainInitiationObserver.java:88)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at or=
g.ow2.jonas.ws.cxf.http.JOnASDestination.invoke(JOnASDestination.java:111)<=
br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.ow2.jonas.ws.cxf.jaxws.CXFWSEndpoi=
nt.invoke(CXFWSEndpoint.java:151)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at o=
rg.ow2.jonas.ws.jaxws.http.servlet.JAXWSServlet.invokeDestination(JAXWSServ=
let.java:113)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.ow2.jonas.ws.jaxw=
s.http.servlet.JAXWSServlet.doPost(JAXWSServlet.java:75)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at javax.servlet.http.HttpServlet.service=
(HttpServlet.java:637)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at javax.servle=
t.http.HttpServlet.service(HttpServlet.java:717)<br>=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 at org.apache.catalina.core.ApplicationFilterChain.internalDoF=
ilter(ApplicationFilterChain.java:290)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.catalina.core.ApplicationFi=
lterChain.doFilter(ApplicationFilterChain.java:206)<br>=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 at org.apache.catalina.core.StandardWrapperValve.invoke(Sta=
ndardWrapperValve.java:233)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apa=
che.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191=
)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.catalina.core.StandardHostV=
alve.invoke(StandardHostValve.java:127)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.=
java:102)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.catalina.core.=
StandardEngineValve.invoke(StandardEngineValve.java:109)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.catalina.connector.CoyoteAd=
apter.service(CoyoteAdapter.java:340)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:85=
7)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.coyote.http11.Http11P=
rotocol$Http11ConnectionHandler.process(Http11Protocol.java:588)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.tomcat.util.net.JIoEndpoint=
$Worker.run(JIoEndpoint.java:489)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at j=
ava.lang.Thread.run(Thread.java:619)<br>=A0=A0=A0 Caused by: javax.xml.bind=
.MarshalException<br>=A0=A0=A0=A0 - with linked exception:<br>
=A0=A0=A0 [javax.xml.bind.JAXBException: class com.anaolabs.generics.model.=
DbiMusician nor any of its super class is known to this context.]<br>=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.MarshallerImpl.w=
rite(MarshallerImpl.java:318)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.Marshaller=
Impl.marshal(MarshallerImpl.java:244)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =
at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshaller=
Impl.java:100)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.cxf.jaxb.=
JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:397)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at org.apache.cxf.jaxb.JAXBEncoderDecoder=
.marshall(JAXBEncoderDecoder.java:219)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
 ... 25 more<br>=A0=A0=A0 Caused by: javax.xml.bind.JAXBException: class co=
m.anaolabs.generics.model.DbiMusician nor any of its super class is known t=
o this context.<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.XMLSeriali=
zer.reportError(XMLSerializer.java:246)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0 at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.=
java:261)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runti=
me.XMLSerializer.childAsXsiType(XMLSerializer.java:653)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.property.A=
rrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65)<br>=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.property.A=
rrayElementProperty.serializeListBody(ArrayElementProperty.java:168)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.property.A=
rrayERProperty.serializeBody(ArrayERProperty.java:152)<br>=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.seriali=
zeBody(ClassBeanInfoImpl.java:332)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at =
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoIm=
pl.java:328)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.XMLSeriali=
zer.childAsXsiType(XMLSerializer.java:699)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0 at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(E=
lementBeanInfoImpl.java:152)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.su=
n.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoIm=
pl.java:189)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.ElementBea=
nInfoImpl.serializeBody(ElementBeanInfoImpl.java:315)<br>=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializ=
eRoot(ElementBeanInfoImpl.java:322)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at=
 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanI=
nfoImpl.java:72)<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.XMLSeriali=
zer.childAsRoot(XMLSerializer.java:494)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0 at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java=
:315)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ... 29 more<br>=A0=A0=A0 Caused =
by: javax.xml.bind.JAXBException: class com.anaolabs.generics.model.DbiMusi=
cian nor any of its super class is known to this context.<br>
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 at com.sun.xml.bind.v2.runtime.JAXBContex=
tImpl.getBeanInfo(JAXBContextImpl.java:590)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0 at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSeria=
lizer.java:648)<br>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ... 42 more<br>
</blockquote><div><br>glurps !<br>=A0<br>Il semblerait que JAXB (sous le ca=
pot de JAX-WS) ne marshalle pas correctement mes objets.<br><br>Alors j&#39=
;ai essay=E9 de jouer avec l&#39;annotation JAXB <b>@XmlSeeAlso</b> (pour f=
orcer JAXB =E0 binder mes classes),<br>
mais l=E0 bing ... c&#39;est wsgen qui plante =E0 la g=E9n=E9ration de la p=
lomberie WS !<br><br><br>Cette probl=E8matique des Generics / WS a probable=
ment =E9t=E9 d=E9j=E0 =E9voqu=E9e ?<br><br>Si vous avez de l&#39;info =E0 c=
e sujet, je suis preneur<br>
Merci d&#39;avance<br>:-)<br></div>

--bcaec520f4b367a35604ace60b6a--