Je dois utiliser le service Web WSDL RPC/encodé de la vieille école pour mon backend. Au début, j'ai essayé d'utiliser Apache CXF et JAX-WS pour cela, mais l'outil JAX-WS wsimport
ne consomme pas de WSDL rpc/enoded.
[ERREUR] Les fichiers wsdls rpc/encodés ne sont pas pris en charge dans JAXWS 2.0.
Je doute également d'utiliser JAX-RPC pour ce travail, car il est dépassé. L'axe 1.4 est un outil de 5 ans.
Actuellement, je vois ces trois options:
javax.xml.ws.Dispatch
pour envoyer et recevoir SOAP et analysez-le d'une manière ou d'une autre, un exempleAucune de ces méthodes ne semble trop bonne, alors je vous serais reconnaissant de bien vouloir donner de bonnes pistes, de réfléchir à ce qu’il faut faire et à la façon de le résoudre.
Mon cas a été résolu avec l'édition manuelle WSDL de encoded à literal (essentiellement sous opérations input et output use="literal"
était le seul remplaçant) et je pouvais alors générer des stubs avec Apache CXF. Cela pourrait être fait, car le point de terminaison n'a pas analysé RPC/encodé de manière exacte et le XML de spécification RPC/encodé n'a pas pu être validé par rapport à WSDL).
Bien qu'Axis 1.4 puisse fonctionner pour vous, utiliser Apache CXF avec ce petit piratage WSDL peut constituer un meilleur moyen.
Pour référence - J'ai opté pour l'utilisation de JAX-RPC et Axis 1.4 cette fois. J'ai généré le code client et j'espère pouvoir le remplacer par une implémentation JAX-WS lorsque le service sera mis à niveau.
Au cas où quelqu'un voudrait (enfin, "comme" n'est pas le bon mot ici ;-) pour utiliser Axis 1.4, voici un plugin maven qui peut générer les classes et l'interface Port appropriées.
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>axistools-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2Java</goal>
</goals>
<configuration>
<!-- Use your .wsdl location here-->
<sourceDirectory>${basedir}/src/main/resources/wsdl</sourceDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- Here the libraries that you need to call the Axis WS client -->
<dependencies>
<dependency>
<groupId>org.Apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.Apache.axis</groupId>
<artifactId>axis-jaxrpc</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.5</version>
</dependency>
<dependency>
<groupId>axis</groupId>
<artifactId>axis-wsdl4j</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.Apache.axis</groupId>
<artifactId>axis-saaj</artifactId>
<version>1.4</version>
</dependency>
<!-- activation+mail: To stop Axis generating WARNING about "Attachment support being disabled" -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
</dependencies>