Frage

Ich habe ein Java-Webservice geschrieben, entfaltet es auf meinem Kater und der Zugriff auf den Service WSDL über meine Web-Browser, sieht alles in Ordnung. Der nächste Schritt war die Proxy-Klasse zu erzeugen, die durch den Client verwendet werden können, mit der Website zu kommunizieren. Dies ist, was ich als nächstes tat:

Nehmen wir an, meine Wsdl ist über: http: // localhost: 8080 / testSvc / testSvc Wsdl?

Mit dem wsimport Werkzeug, erzeuge ich den Proxy indem Sie den folgenden Befehl: $> Wsimport http: // localhost: 8080 / testSvc / testSvc Wsdl

Das Problem ist, dass localhost: 8080 wird in den generierten Klassen fest einprogrammiert und wenn ich den Dienst auf einem anderen Port als 8080 bereitstellen dann der Client kann es nicht erreichen, wie der Kunde immer noch versuchen, den Dienst auf Port 8080 für den Zugriff auf

Gibt es trotzdem Proxy-Klassen in einer Art und Weise zu entwickeln, dass die Portnummer nicht fest einprogrammiert ist? Damit wir den Dienst auf jedem Port bereitstellen können?

Ich habe Aktualisierung ENDPOINT_ADDRESS_PROPERTY versucht, aber das ist nicht sinnvoll, da der Code in dem Moment versagt es eine Instanz der Proxy-Klasse instanties. Es ist nie wirklich erreicht bis zu einem Punkt, wo ich ENDPOINT_ADDRESS überschrieben werden kann, dass er bereit, von der Proxy-Klasse hat.

War es hilfreich?

Lösung

Eine Möglichkeit ist es, die wsimport Parameter

zu verwenden,
-wsdllocation <location>

und zeigen es zu Ihrem neuen WSDL.

Sie können auch die

verwenden

-catalog Option.

Um die Adresse dynamisch Verwendung Code zu ändern wie:

service = new Service();
port = service.getxxxPort();

((BindingProvider) port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, newUrl);

Andere Tipps

Mit dem -keep Parameter behalten die Quelldateien, die wsimport erzeugt. Von dort können Sie die Endpunkt-URL in den wsimport-generierten Quellcode ändern, wie Sie mögen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top