2009-11-03 4 views
10

J'ai un paquet avec des classes "logiques" (comme CheckAuthenticationDataLogic.java, GetVocabulariesLogic.java). Et une autre classe - ApiService.java est utilisée pour générer wsdl. ApiService.java est plein de méthodes comme celle-ci:Générer WSDL à partir de la classe java source

/** 
    * Check authentication data. 
    * @param contractNumber - number of contract. 
    * @param msisdn - msisdn. 
    * @param superPassword - super password. 
    * @return result of authentication. 
    */ 
    @WebMethod 
    @WebResult(name = "result") 
    public CheckAuthenticationDataResult checkAuthenticationData(@WebParam(name = "contractNumber") 
                   final String contractNumber, 
                   @WebParam(name = "msisdn") 
                   final String msisdn, 
                   @WebParam(name = "superPassword") 
                   final String superPassword) { 
    return runLogic(new CheckAuthenticationDataLogic(contractNumber, msisdn, superPassword)); 
    } 

Comme vous le voyez, il est juste une des méthodes proxy ... Donc je veux éviter de faire même travail deux fois et générer WSDL droit des classes logiques sans écrire ApiService.java . Un outil ou une bibliothèque existe-t-il à cette fin?

Répondre

16

L'outil wsgen génère des artefacts portables JAX-WS utilisés dans les services Web JAX-WS. Notez que vous n'avez pas besoin de générer WSDL au moment du développement, car JAXWS génère automatiquement un WSDL lorsque vous déployez votre service.

Vous pouvez vérifier l'JAX-WS RI documentation et surtout le samples (payer une attention particulière à la fromjava échantillon).

+0

J'ai une erreur "Exception dans le fil" principal "java.lang.NoClassDefFoundError" et il se produit parce que cette classe n'est pas placée dans le classpath mais dans la bibliothèque distante (les bibliothèques sont placées juste dans un autre dossier). Comment puis-je inclure ces bibliothèques à mon classpath? – Oleksandr

+0

wsgen -wsdl: Xsoap1.2 -extension -d testGen -cp/home/vidocq/espace de travail/ws-crp/build/sortie/eclipse-classes com.crp.logic.CheckAuthenticationDataLogic – Oleksandr

+0

Quelle erreur obtenez-vous lors de l'exécution 'wsgen 'avec' -cp'? Veuillez mettre à jour votre question avec des détails sur la configuration de votre projet (où se trouvent les sources) et la trace. –

0

La pile de service Web Metro (http://metro.java.net/) fournit un outil (wsgen) pour générer des fichiers WSDL à partir de Java annoté.

+1

Vous n'avez pas besoin Metro (Metro = JAX-WS RI + WSIT/Tango), vous avez seulement besoin JAX-WS RI qui est inclus dans Java 6 Donc, si vous utilisez Java 6, vous n'avez besoin de rien. –

+0

@Pascal Thivent: Vous avez absolument raison. Cependant, je pense que Metro est généralement plus à jour que le JAX-WS RI fourni par JSE. –

+0

Eh bien, la mise à jour JDK 6 mise à jour 14 a JAX-WS 2.1.6 RI qui est assez décent. Mais en effet, Metro 1.5 inclut JAX-WS 2.1.7 (qui est considéré comme une version mineure, voir http://weblogs.java.net/blog/2009/04/21/jax-ws-ri-217metro-15- libéré). Cependant, si vous voulez utiliser JAX-WS RI 2.1.7, vous pouvez le télécharger depuis https://jax-ws.dev.java.net, vous n'avez pas besoin de Metro. Mais honnêtement, je ne voudrais pas jouer avec le mécanisme de répertoire approuvé. –

3

Axis2 est une autre alternative, en particulier la commande java2wsdl/plugin

Questions connexes