6
votes

Jaxws-Maven-Plugin Résolution de la WSDL Emplacement relatif à la localisation de la classe, pourquoi?

J'utilise le jaxws-maven-plugin version 2.1 . J'ai découvert un code très étrange généré pour la localisation WSDL à partir de JAR Ressources: xxx

et le code généré est le suivant: xxx

donc le Le fichier WSDL est recherché dans le répertoire (emballage) les résidents de classe générés et non dans le répertoire principal de JAR, comme cela serait logique. Et le WSDL est introuvable.

est-ce un bogue dans jaxws-maven-plugin ou est l'erreur dans ma configuration?


2 commentaires

Pendant ce temps, vous pourriez trouver une solution pour le problème? Je suis confronté au même problème que vous et Samuels Solution est vraiment un piratage laid.


Voici la même question avec une solution alternative. Stackoverflow.com/questions/4163586/...


3 Réponses :


1
votes

Pour la génération de

<plugin>
        <groupId>com.google.code.maven-replacer-plugin</groupId>
        <artifactId>replacer</artifactId>
        <version>1.5.0</version>
        <executions>
          <execution>
            <phase>process-sources</phase>
            <goals>
              <goal>replace</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <file>target/generated-sources/wsimport/lu/hitec/webservices/pssu/${wsdl.app}/${interface.name}_Service.java</file>
          <replacements>
            <replacement>
              <token>_Service\.class\.getResource\("\."\)</token>
              <value>_Service\.class\.getResource\(""\)</value>
            </replacement>
          </replacements>
        </configuration>
      </plugin>


1 commentaires

Ouais, une solution de contournement, qui nécessite d'utiliser une bibliothèque externe (plugin). J'espère que cela est fixé dans la version 2.3 de Jaxws-Maven-Plugin, comme l'écrit Miklos Krivan, dans mon cas, il sera difficile de convaincre la société d'utiliser une version plus récente de Jaxws Plugin, les convaincant d'utiliser un nouveau plugin était pratiquement impossible .. .



2
votes

Vous devez utiliser Jaxws-Maven-Plugin version 2.3 au lieu de 2.1 et le résultat sera comme vous l'attendez.

La sortie de la version 2.3 comme ceci (si votre dossier WSDL est sous SRC / Main / Ressources): xxx


5 commentaires

Vous dites qu'il est réparé dans la version 2.3 de Jaxws-Maven-Plugin? J'ai vérifié le Nexus de mon entreprise et malheureux la version la plus élevée est 2.2 (je ne peux rien utiliser sauf les artefacts de là). Donc, je devrais leur suggérer de mettre à jour la version? Avez-vous un lien vers le numéro avec des informations, dans quelle version a-t-elle été corrigée? J'ai besoin de quelque chose pour prouver une telle mise à jour est nécessaire.


Oui c'est vrai. Je n'ai changé que la version dans ma version de 2,3 retour à 2.1 afin de voir le résultat sera le même de @ łukasz 웃 L ツ. Et c'était ce qu'il y avait :-) J'ai déjà vérifié ma construction de gradle avec Wsimport Tâche qui a utilisé Jax-WS 2.1.4 et il a également été faux, alors j'ai donc mis à jour à JAX-WS 2.2.8 et le problème résolu également. Donc, Jax-WS Tools 2.2.8 fonctionne également selon les besoins.


Je vais donner cette information à ma société. S'ils mettent à jour le plugin ou combattent ce problème à la main, c'est à eux :)


Maintenant, j'ai vérifié étape par étape les versions JAX-WS à partir de 2.1.7 jusqu'à 2.2.3 La différence est vraiment visible :) Le premier changement se passe en 2.2, mais il n'a pas utilisé le chargeur de classes simples de classe.getresource () mais déjà avec le bon chemin relatif. La même chose en 2.2.1, 2.2.2 est manquante. À partir de 2.2.3, ils utilisent .Class.getClassloader (). GetResource ("") alors quel est le bon.


Sry mais, définitivement essayé tous .. Le GetClassloader () n'a jamais été apparu, basculé sur CXF-Codegen-Plugin et tout fonctionne bien .. Stackoverflow.com/Questtions/4455195/...



0
votes

Dans mon cas, le fichier généré manquait le class.getClassloader () partie. Corrigé en ajoutant la barre oblique (/) avant le nom du répertoire qui réside dans le répertoire , comme celui-ci: / wsdl / *

Snippet complet de configuration: xxx


0 commentaires