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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
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 :
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public java.lang.String majDonneesPersoFoyerV2(java.lang.String sId, com.TOTO.client.bean.xml.DonneesPersoFoyerV2XMLIO.ListDonneesPersoFoyerV2TopElmt sXML)
Merci pour votre aide
Partager