Quand un client Apache CXF est généré, pourquoi le WSDL est-il toujours nécessaire lors de l’instanciation du client?

Je souhaite utiliser un service SOAP, mais le WSDL m’est fourni hors ligne, ce qui entraîne la génération du client avec le chemin local vers le WSDL.

public class SoSo extends Service { public final static URL WSDL_LOCATION; public final static QName SERVICE = new QName("http://tempuri.org/", "SoSo"); public final static QName SoSoSoap12 = new QName("http://tempuri.org/", "SoSoSoap12"); public final static QName SoSoSoap = new QName("http://tempuri.org/", "SoSoSoap"); static { URL url = null; try { url = new URL("file:/c:/Dev/Java/workspace/service-individualreport/src/main/resources/wsdl/SoSo.wsdl"); } catch (MalformedURLException e) { java.util.logging.Logger.getLogger(SoSo.class.getName()) .log(java.util.logging.Level.INFO, "Can not initialize the default wsdl from {0}", "file:/c:/Dev/Java/workspace/service-individualreport/src/main/resources/wsdl/SoSo.wsdl"); } WSDL_LOCATION = url; } 

De mon sharepoint vue, je voudrais seulement construire le WSDL une seule fois, puis spécifier l’emplacement du service.

Quelques pièces à cette question:

1) Par spécification JAX-WS, le code généré ne contient PAS TOUTES les informations nécessaires à la requête. Ainsi, le wsdl est techniquement nécessaire. Avec CXF, vous pouvez passer “null” à l’URL wsdl, puis utiliser le port ((BindingProvider)) .getRequestContext (). Put (BindingProvider.ENDPOINT_ADDRESS_PROPERTY, “http: // localhost / ….”) pour définir adresse et pour de nombreux cas d’utilisation, cela fonctionnera.

2) L’outil wsdl2java a un indicateur -wsdlLocation qui peut être utilisé pour générer des objects de service avec des emplacements spécifiques. -wsdlLocation “” ne devrait entraîner aucune gravure dans le code. Le code ne serait pas vraiment portable alors. (JAXWS ri / metro nécessite le wsdl)