2010-12-02 33 views
4

Dans mon application, j'utilise de nombreux services Web. Comme le WSDL ne change pas, j'ai intégré les fichiers WSDL dans mon projet. Si j'utilise l'outil WSDL2Java de CXF, le chemin absolu des emplacements WSDL est codé en dur.Chemin relatif pour WSDL dans CXF Webservice Client

Maintenant ma question est, comment modifier le paramètre "wsdlocation" dans l'annotation @WebserviceClient à un chemin relatif?

Voici un exemple:

@WebServiceClient(name = "Time", 
        wsdlLocation = "file:/C:/Users/dominik/Documents/NetBeansProjects/Webservices/src/wsdl/Time.wsdl") /*I want this path to be relative */ 
public class Time extends Service { 

Répondre

11

J'ai enfin trouvé comment faire correctement cela aujourd'hui. Il suffit de mettre les fichiers sont vos ressources dossier, puis vous pouvez utiliser wsdlLocation pour désigner les relativement comme ceci:

<wsdlLocation>classpath:wsdl/myservice.wsdl</wsdlLocation> 

Voir ma réponse à une question similaire ici: https://stackoverflow.com/a/9875701/1190144

0

L'outil wsdl2java a un drapeau -wsdlLocation qui peut être utilisé pour spécifier la chaîne exacte qui est placé là-dedans.

+0

Je pense que je ne suis pas assez clair. Je veux placer le wsdlLocation à un chemin relatif. –

1

Voici ce que l'on peut faire pour générer un emplacement vide wsdl

<wsdlOptions> 
    <wsdlOption> 
    <wsdl>${basedir}/src/main/wsdl/service.wsdl</wsdl> 
    <extraargs> 
     <extraarg>-wsdlLocation</extraarg> 
     <wsdlurl /> 
    </extraargs> 
    </wsdlOption> 
</wsdlOptions> 

Le client peut alors recevoir l'emplacement wsdl comme argument et de devenir un client portable. C'est pourquoi je cherchais à utiliser un chemin relatif: réaliser un client portable

+0

Veillez à ce que les stratégies présentes dans le WSDL ne soient pas utilisées avec cette méthode. – Abbadon