3 pièce(s) jointe(s)
Erreur lors de la génération de WSDL: BeanSerializer cannot be cast to Serializer
Bonjour,
Je travaille actuellement sur un EAR développé à l’origine pour des web services entre une application CRM (Siebel) et d’autres systèmes.
L’EAR est maintenu sous Eclipse, et est déployé sous Jboss 4.0.4 et Axis 1.4, ce n’est pas récent mais je n’ai pas la main à ce niveau…
Mon problème survient lorsque je tente de générer l’EAR sous Eclipse au niveau de la création du WSDL avec l’erreur suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
IWAB0398E Error in generating WSDL from Java: java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializer cannot be cast to org.apache.axis.encoding.Serializer
java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializer cannot be cast to org.apache.axis.encoding.Serializer
at org.apache.axis.encoding.ser.BaseSerializerFactory.getSpecialized(BaseSerializerFactory.java:165)
at org.apache.axis.encoding.ser.BaseSerializerFactory.getSerializerAsInternal(BaseSerializerFactory.java:91)
at org.apache.axis.encoding.ser.BaseSerializerFactory.getSerializerAs(BaseSerializerFactory.java:82)
at org.apache.axis.encoding.ser.BeanSerializerFactory.getSerializerAs(BeanSerializerFactory.java:64)
at org.apache.axis.wsdl.fromJava.Types.makeTypeElement(Types.java:1838)
at org.apache.axis.wsdl.fromJava.Types.writeTypeForPart(Types.java:421)
at org.apache.axis.wsdl.fromJava.Types.writeWrappedParameter(Types.java:612)
at org.apache.axis.wsdl.fromJava.Emitter.writeWrapperPart(Emitter.java:1680)
at org.apache.axis.wsdl.fromJava.Emitter.writeRequestMessage(Emitter.java:1467)
at org.apache.axis.wsdl.fromJava.Emitter.writeMessages(Emitter.java:1106)
at org.apache.axis.wsdl.fromJava.Emitter.writePortType(Emitter.java:1075)
at org.apache.axis.wsdl.fromJava.Emitter.getWSDL(Emitter.java:484)
at org.apache.axis.wsdl.fromJava.Emitter.emit(Emitter.java:331)
at org.apache.axis.wsdl.fromJava.Emitter.emit(Emitter.java:430)
at org.apache.axis.tools.ant.wsdl.Java2WsdlAntTask.execute(Java2WsdlAntTask.java:243)
at org.eclipse.jst.ws.internal.axis.consumption.core.command.Java2WSDLCommand.executeAntTask(Java2WSDLCommand.java:180)
at org.eclipse.jst.ws.internal.axis.consumption.core.command.Java2WSDLCommand.execute(Java2WSDLCommand.java:95)
at org.eclipse.jst.ws.internal.axis.creation.ui.command.BUCodeGenOperation$BottomUpWSModifyOperation.execute(BUCodeGenOperation.java:122)
at org.eclipse.jst.ws.internal.axis.creation.ui.command.BUCodeGenOperation.execute(BUCodeGenOperation.java:86) |
Pour générer les class de l’EAR je prends simplement le WSDL du système CRM que j’utilise avec le WSDL2Java d’Axis.
Jusqu’à maintenant je n’avais pas de problème car les services web existants ou nouveaux n’avaient en entrée ou sortie que le type String, donc utilisant le type standard String de Java. J’ai donc procédé ainsi à de multiples reprises avec succès.
Là, je développe un service web qui prend en entrée un objet, avec une occurrence non fixe, 1 ou plus. Donc je n’utilise plus des types simples, il faut absolument qu'ils soient « sérialisables », ce que la génération des class via WSDL2Java à fait.
En pj les 3 class qui correspondent à mon objet complexe, que les autre méthodes de l'EAR utilisent comme dans cet exemple :
Code:
1 2
|
public java.lang.String majDonneesPersoFoyerV2(java.lang.String sId, com.TOTO.client.bean.xml.DonneesPersoFoyerV2XMLIO.ListDonneesPersoFoyerV2TopElmt sXML) |
Avez-vous déjà rencontré ce problème ? Y a-t-il une manipulation particulière à faire pour contourner ce problème ? Dois-je adapter la partie sérialisable et si oui avez-vous des exemple/cours ?
Merci pour votre aide