J'ai un service web SOAP très simple que je dois consommer à partir d'un client Java. Quel est le moyen le plus simple d'y parvenir sans utiliser de bibliothèques tierces ? Une exigence est que l'hôte et le port soient lus à partir du web.xml avant chaque appel au service web.
Réponses
Trop de publicités?Je peux vous recommander la bibliothèque CXF. En l'utilisant, vous aurez plusieurs options pour appeler des services web :
-
Utilisez proxy dynamique pour l'appel (il n'est pas nécessaire de faire des stubs Java en utilisant wsdl2java).
DynamicClientFactory dcf = DynamicClientFactory.newInstance(); Client client = dcf.createClient("http://admin:password@localhost:8080"+ "/services/MyService?wsdl"); Object[] a = client.invoke("test", ""); System.out.println(a);
-
Utilisation d'un stub Java généré à partir de WSDL, en utilisant wsdl2java.
-
Si votre serveur a été créé en utilisant CXF, vous pouvez réutiliser directement le code de votre interface (au lieu d'utiliser wsdl2java sur le WSDL qui a été créé à partir de votre interface !)
Pour les numéros 2 et 3, le code suivant illustre l'utilisation de CXF :
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress("http://admin:password@localhost:8080/services/MyService");
factory.setServiceClass(ITest.class);
ITest client = (ITest) factory.create();
client.test();
Selon la version de JAVA que vous utilisez, une partie de JAX-WS est intégrée. Le JDK 6 possède l'implémentation standard de JAX-WS de Java et vous pouvez simplement l'utiliser.
Voir ce qui suit :
-
JAX-WS 2.1 et JAXB 2.1 sont disponibles dans la version 4 du JDK 6 Update.
-
Premiers pas avec les services Web JAX-WS (tutoriel pour utiliser le JAX-WS intégré au JDK pour déployer et consommer un service web)
Sans utiliser de bibliothèques tierces ? Apprenez à connaître parfaitement la norme SOAP et apprenez à aimer SAX.
Si vous ne pouvez pas aimer SAX, alors relâchez votre exigence de ne pas utiliser de librairies tierces et utilisez StAX (avec woodstox) à la place.
Cette approche pourrait être la plus "facile" (compte tenu de l'obligation de ne pas utiliser de librairies tierces), mais je ne pense pas qu'elle sera facile .