Grizzly - java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName
Ich habe eine wsdl Datei für den Web service. Ich möchte zum testen der Interaktion zwischen dem client und dem server. Um dies zu tun, führe ich das mock-server mit embedded grizzly.
Die Frage nach der Umsetzung der mock-server. Ich erzeugte eine Schnittstelle von wsdl (xsd) mit dem wsimport und schrieb Umsetzung. Bei der Ausführung auf der grizzly, bekomme ich die folgende Fehlermeldung:
com.sun.xml.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(META-INF/wsdl/test.wsdl)
Ich betreibe ein web service mit diesem code:
HttpHandler httpHandler = new JaxwsHandler(new TestImpl());
server.getServerConfiguration().addHttpHandler(httpHandler, "/test");
Das problem ist, dass Grizzly nicht finden können, wsdl-und xsd-Dateien. In der embedded-glassfish seine Arbeit.
EDIT1
Ich ändern wsdlLocation "testen.wsdl" und seine Arbeit. Aber jetzt grizzly sagen:
java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String;
EDIT2
Wenn die Nutzung JDK1.7 es funktioniert. Aber ich brauche das JDK 1.6
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, warum Sie sehen, dass Fehler. Ich kann laufen die Grizzly jaxws Beispiel und erhalten die wsdl mit entweder 1.6 oder 1.7.
Ich würde empfehlen, die überprüfung der QuelleEins das Beispiel an und vergleichen Sie, was Sie haben.
Ich bin ändern Sie die jdk6 zu jdk7 und funktioniert einwandfrei! Vergessen Sie nicht, ändern Sie die JAVA_HOME-und die Standard-JDK von Netbeans als Verwandte hier: Wie das JDK, Netbeans läuft auf?
Ihre version von Grizzly erwartet eine JAX-WS 2.2 API während der JDK 1.6 Schiffe, die mit JAX-WS 2.1. Wie andere erwähnt, sind einige dieser Dateien müssen installiert werden, in eine endorsed-Verzeichnis. Sie können laden Sie die erforderlichen Dateien hier oder nehmen Sie von Ihrer Grizzly-installation. Der download enthält eine Ant-build-Datei mit einem Ziel erstellen um die Dateien zu installieren, die in der JDK-endorsed-Verzeichnis. Sie können es mit
ant install-api
. Wenn Sie kann nicht ausgeführt werden, Ant, können Sie diese manuell installieren:Installieren Sie keine weitere Dateien aus dem JAX-WS-Verteilung in den endorsed-Verzeichnis, es sei denn, Sie wollen, um einige wirklich schwierig zu Debuggen, Fehler in sich selbst.
Ich Vorschlage, die Verwendung der endorsed-Verzeichnis in $JAVA_HOME/lib/endorsed denn das funktioniert mit den meisten Werkzeugen und-Anwendungen, ohne zusätzliche änderungen. Andere bereits vorgeschlagen, mehr gezielte Veränderungen, wie Einstellung eine endorsed-Verzeichnis während eines Maven-build oder kopieren Sie die Dateien in einem Tomcat-endorsed-Verzeichnis. All diese Ansätze sind gut, solange Sie sicherstellen können, dass Ihr code die Kommissionierung bis die richtigen endorsed-Verzeichnis.
Als ein Ergebnis, wir hatten zu verwenden endorsed-Mechanismus. Dokumentation
erstellen Sie einen Ordner namens gebilligt und legen Sie diese jar-Dateien
1.jaxb-api-2.2.jar
2.jaxws-api.jar
setzen Sie den Ordner im tomcat-server als
C:\tomcat-7.50\< erstellt, Ordner>
und laufen wird es funktioniert
Ändern JDK 1.6 auf 1.7 funktionierte für mich.