Bonjour,
J'ai un petit soucis avec la génération des classes Java par Axis ou CXF.
J'ai lr WSDL suivant à partir duquel je souhaite générer les classes Java pour être client du web service concerné :
Lorsque les classes sont générées par axis depuis maven :
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
23
24
25
26
27
28
29
30
31
32
33
34 <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="monWebService_publics" targetNamespace="com.namespace2" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdns1="com.namespace" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="com.namespace2"> <wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="com.namespace" xmlns:dx="com.namespace"> <xsd:element name="Root"> <xsd:complexType> <xsd:sequence> <xsd:element name="Structure"> <xsd:complexType> <xsd:sequence> <xsd:element name="SousStructure" nillable="true"> <xsd:complexType> <xsd:sequence> <xsd:element name="Valeur" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <!-- J'ai enlevé la partie concernant la définition du service car pas utile pour mon problème a priori --> </wsdl:definitions>
Alors ça génère plein de classes différentes :
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
23
24
25<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>axistools-maven-plugin</artifactId> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <goals> <goal>wsdl2java</goal> </goals> <configuration> <serverSide>false</serverSide> <useEmitter>true</useEmitter> <mappings> <mapping> <namespace>com.namespace</namespace> <targetPackage>com.monApp.wsClient</targetPackage> </mapping> </mappings> <typeMappingVersion>1.2</typeMappingVersion> <wrapArrays>false</wrapArrays> </configuration> </execution> </executions> </plugin>
Root.java
Structure.java
SousStructure.java
En revanche si j'essaye de faire pareil par CXF depuis maven :
Alors il me génère uniquement la classe Root.java qui contient une inner class Structure qui contient elle-même une inner class SousStructure.
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 <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <executions> <execution> <id>generate-sources</id> <configuration> <wsdlOptions> <wsdlOption> <wsdl>src/main/resources/wsdl/monWsdl.wsdl</wsdl> </wsdlOption> </wsdlOptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin>
Comment faire pour avoir une génération similaire à celle d'axis (une classe par fichier) ? J'ai essayé de me tourner vers un binding file (xjb) mais sans succès car je ne connais pas trop ce qu'il est possible d'y faire...
Si quelqu'un à une idée je suis bien évidemment preneur !
A défaut si quelqu'un connait une ressource bien faite pour expliquer ce qu'il est possible de faire dans un binding file je suis aussi preneur![]()
Partager