Où utiliser wsgen?
Ne semblent pas savoir où (dans quel répertoire source ou les classes) pour l'utiliser correctement wsgen à l'encontre de ma classe WebService...
Créer un exemple de document littérale en fonction WebService:
package hello;
import javax.jws.WebService;
@WebService
public class HelloWorld {
public void sayHello() {
System.out.println("Welcome to JAX-WS 2!");
}
}
Créé l'Éditeur comme ceci:
package hello;
import javax.xml.ws.Endpoint;
public class Publisher {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8080/jaxws/hello", new HelloWorld());
}
}
À l'aide d'Eclipse Helios, j'ai automatiquement construire à la fois de ces fichiers *.les classes en dessous des classes correspondant répertoire.
Donc, depuis le système de fichiers, mon projet ressemble à ceci:
/code/jws_sample
|
src
|
hello
|
HelloWorld.java
Publisher.java
|
classes
|
HelloWorld.class
Publisher.class
Dans quel répertoire aurais-je exécuter wsgen?
Quand je l'ai essayé à l'intérieur:
/code/jaxws_sample/src/wsgen -cp . bonjour.HelloWorld
Reçues:
Class not found: "hello.HelloWorld"
Usage: WSGEN [options] <SEI>
where [options] include:
-classpath <path> specify where to find input class files
-cp <path> same as -classpath <path>
-d <directory> specify where to place generated output files
-extension
allow vendor extensions - functionality not specified
by the specification. Use of extensions may
result in applications that are not portable or
may not interoperate with other implementations
-help display help
-keep keep generated files
-r <directory> resource destination directory, specify where to
place resouce files such as WSDLs
-s <directory> specify where to place generated source files
-verbose output messages about what the compiler is doing
-version print version information
-wsdl[:protocol] generate a WSDL file. The protocol is optional.
Valid protocols are [soap1.1, Xsoap1.2],
the default is soap1.1.
The non stanadard protocols [Xsoap1.2]
can only be used in conjunction with the
-extension option.
-servicename <name> specify the Service name to use in the generated WSDL
Used in conjunction with the -wsdl option.
-portname <name> specify the Port name to use in the generated WSDL
Used in conjunction with the -wsdl option.
Examples:
wsgen -cp . example.Stock
wsgen -cp . example.Stock -wsdl -servicename {http://mynamespace}MyService
Il fait ne me montrer le WSDL dans un navigateur et aussi quand j'ai essayé de délivrer le wsgen commande à partir de $MyProject/classes il a effectivement fait de créer un jaxws dossier avec le SayHelloResponse.class les fichiers mais pas les SayHelloResponse.java fichiers?
Merci d'avoir pris le temps de lire ce.
Vous devez vous connecter pour publier un commentaire.
Il semble que vous avez pour compiler les fichiers dans les fichiers de classe de première, et puis les nourrir à wsgen.
Je peux me tromper, mais je crois que j'ai dû faire la même chose dans le passé.
Merci,
Jeffrey Kevin Soulever
Vous devez activer l'option "- conserver " et vous pouvez éventuellement spécifier '-s /chemin/vers/src " pour enregistrer l'JAXWS fichiers générés. Puisque ce sont des fichiers générés, les meilleures pratiques généralement guides vous de ne pas garder les fichiers et de générer seulement pour l'emballage. L'inconvénient de garder les fichiers et peut-être de les éditer, c'est que si vous régénérer les fichiers de vos modifications seront perdues.
Par exemple, j'ai un JAX-WS extrémité qui est définie dans un projet Maven et le WSGEN objectif est appelée chaque fois que le service est fourni.
vous avez besoin pour exécuter wsgen contre votre sei fichier de classe pas le fichier source. cd de le répertoire src et dans la classe directory et wsgen contre HelloWorld.class
Un peu en retard de réponse, mais j'ai peut aider les autres. J'utilise ce script pour générer le WSDL et XSD en cas de besoin (Windows Uniquement). Peuvent être facilement préparés pour Linux et Mac. Je suis à l'aide du serveur d'applications glassfish de la bibliothèque. Vous pouvez remplacer ces bibliothèques à la vôtre serveur d'application ou de la nue-libs.
Tout d'abord, vous devez créer le répertoire "jaxws", sous votre "bonjour" répertoire.
Ensuite, essayez d'exécuter cette commande à partir de l' "/code/jws_sample répertoire":
La -s commande indique le générateur où placer les fichiers de la source.
Il a été créé à l'aide d'un script que j'utilise ici à l'œuvre et qui n'avaient pas pu la tester avant de l'envoyer. Cependant, j'espère que cela vous donne une certaine direction.
Il est étrange que votre classe générée fichiers ne sont pas dans /classes/bonjour/comme dit...
Bien, en considérant que vos fichiers de classe EST dans /classes/hello/HelloWorld.class comme il se doit, tout ce que vous avez à faire à partir de votre dossier classes est:
wsgen -garder-cp . -d . -s ../src bonjour.HelloWorld
Viens de vérifier et a bien fonctionné pour moi. Remebember, appel CMD à partir de votre dossier classes.
C'est très retard de réponse, mais pour le bénéfice des autres:
Le -verbose option est de montrer les journaux.<>
Le -cp option est dans le cas où votre répertoire de travail actuel n'est pas même un où la .les fichiers de classe sont présents.
Le -s est de la destination des fichiers source.
Le -gardez option est de garder généré les fichiers.