Wo wsgen?
Scheinen nicht zu wissen, wo (in welchem Verzeichnis - Quelle oder-Klassen), um richtig zu verwenden wsgen gegen meine WebService-Klasse...
Erstellen Sie eine Beispiel-document /literal-basierten WebService:
package hello;
import javax.jws.WebService;
@WebService
public class HelloWorld {
public void sayHello() {
System.out.println("Welcome to JAX-WS 2!");
}
}
Erstellt der Verlag so:
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());
}
}
Mit Eclipse Helios, ich automatisch zu erstellen, die diese beiden Dateien als *.Klassen unter der entsprechenden Klassen-Verzeichnis.
So, aus dem Dateisystem, mein Projekt sieht so aus:
/code/jws_sample
|
src
|
hello
|
HelloWorld.java
Publisher.java
|
classes
|
HelloWorld.class
Publisher.class
In welchem Verzeichnis würde ich laufen wsgen?
Als ich versuchte es im inneren zu:
/code/jaxws_sample/src/wsgen -cp . Hallo.HelloWorld
Erhalten:
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
Es tatsächlich tut, zeigen mir die WSDL-Datei in einem browser und auch, wenn ich versuchte, Sie zu Problem der wsgen-Befehl aus $MyProject/Klassen, die es tatsächlich schaffen, eine jaxws-Ordner mit der SayHelloResponse.class Dateien, aber nicht die SayHelloResponse.java Dateien?
Vielen Dank für die Zeit nehmen, dies zu Lesen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie Sie haben, kompilieren Sie die Dateien in class-Dateien zuerst und dann füttern Sie zu wsgen.
Ich könnte falsch sein, aber ich glaube, ich hatte das gleiche zu tun in der Vergangenheit.
Dank,
Jeffrey Kevin Hebeln
Müssen Sie enable '-halten' und Sie können Optional angeben '-s /path/to/src", um speichern Sie die JAXWS Dateien erzeugt. Da diese generierten Dateien, beste Praxis in der Regel führt Sie nicht halten Sie die Dateien um und nur zu erzeugen, Sie für die Verpackung. Der Nachteil der Beibehaltung der Dateien und vielleicht der Bearbeitung, ist, dass, wenn Sie regenerieren die Dateien Ihre änderungen verloren gehen könnten.
Ich habe zum Beispiel eine JAX-WS-Endpunkt, der definiert ist in einem Maven-Projekt und den WSGEN Ziel ist es, jedes mal aufgerufen, wenn der service wird verpackt.
müssen Sie zum ausführen der wsgen gegen Ihre sei Klasse Datei nicht die source-Datei. cd aus dem src-Verzeichnis und in der Klasse directory und wsgen gegen HelloWorld.class
Etwas späte Antwort, aber ich kann anderen helfen. Ich bin mit diesem Skript zum generieren von WSDL-und XSD-wenn erforderlich (Nur Windows). Kann leicht hergestellt werden, die für Linux und Mac. Ich verwende glassfish appserver Bibliothek. Sie können ersetzen Sie diese Bibliotheken mit Ihren app-server oder bare-libs.
Erste, Sie brauchen, um das Verzeichnis zu erstellen "jaxws" unter deinem "Hallo" - Verzeichnis.
Dann, versuchen Sie es mit diesem Befehl aus dem "/code/jws_sample" - Verzeichnis:
Den -s Befehl sagt dem generator, wo die source-Dateien.
Dies wurde mit einem Skript, das ich benutze hier bei der Arbeit und konnte nicht wirklich testen diese aus, bevor du Sie abschickst. Ich hoffe jedoch, dass dies gibt Ihnen eine gewisse Richtung.
Es ist merkwürdig, dass die generierten class-Dateien nicht in /Klassen/Hallo/wie Ihr Paket sagt...
Gut, wenn man bedenkt, dass die Klasse-Dateien in /classes/hello/HelloWorld.class wie es sein sollte, alles, was Sie zu tun haben von Ihrem Klassen-Ordner ist:
wsgen -halten -cp . -d.... -s ../src Hallo.HelloWorld
Gerade überprüft und funktionierte gut für mich. Remebember, call CMD von Ihrem Klassen-Ordner.
Diese sehr späte Antwort aber zum Wohle der anderen:
Den -verbose - option ist die Anzeige der Protokolle.<>
Die -cp - option im Falle, dass der aktuelle Arbeitsverzeichnis ist nicht gleich ein, wo die .class-Dateien sind vorhanden.
Die -s ist für den Ziel-Quell-Dateien.
Die -keep - option zu halten, erzeugt die Dateien.