Axis vs CXF => inner classes ?
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é :
Code:
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> |
Lorsque les classes sont générées par axis depuis maven :
Code:
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> |
Alors ça génère plein de classes différentes :
Root.java
Structure.java
SousStructure.java
En revanche si j'essaye de faire pareil par CXF depuis maven :
Code:
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> |
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.
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 :)