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'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'= ;ai essay=E9 de jouer avec l'annotation JAXB <b>@XmlSeeAlso</b> (pour f= orcer JAXB =E0 binder mes classes),<br> mais l=E0 bing ... c'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'info =E0 c= e sujet, je suis preneur<br> Merci d'avance<br>:-)<br></div> --bcaec520f4b367a35604ace60b6a--