Wie kann ich das ändern das automatisch generierte soap:address aus einem JAX-WS-webservice-WSDL bereitgestellt, mit Feder
Ich habe eine webservice-Implementierung generiert mit wsimport aus einer WSDL. Dieser service wird bereitgestellt in einem Tomcat-server in einer Spring webapp. Der spring-Konfigurationsdatei (nur der webservice-Teil) ist wie folgt
<wss:binding url="/fooService">
<wss:service>
<ws:service bean="#fooService">
</wss:service>
</wss:binding>
Wenn ich die Bereitstellung dieses webapp in tomcat, ich kann die WSDL-wenn ich mich
http://localhost:8080/foo/fooService?wsdl
und die wsdl soap:address-Eigenschaft ist wie folgt:
<service name="FooService">
<port name="FooService" binding="tns:FooServiceBinding">
<soap:address location="http://localhost:8080/foo/fooService"/>
</port>
</service>
Und für jetzt, es ist alles ok.
Das problem ist, dass in der Produktion haben wir einen Apache-web-server, und dieser server leitet die Anfragen an Tomcat. Es funktioniert auch, aber wenn wir die WSDL, soap:Adresse ist noch localhost:8080 und wir brauchen dazu die öffentliche url zum webservice.
Irgendwelche Ideen?
Danke Ihnen sehr.
- bitte lassen Sie mich wissen, was Ihr xml-spring-schema-Header wurden, um spring-Bindung für port und Seife in deinem code-Ausschnitt zum registrieren von benutzerdefinierten Endpunkt-Adresse und port. Ich habe versucht, jax-ws.dev.java.net/spring/core, servlet-und Nahverkehr haben, sehe aber keiner von Ihnen referenzieren. Als Ergebnis bekomme ich saxparserexceptions. Nicht finden können, eine einfache Antwort. Vielen Dank im Voraus für jegliche Hilfe.
- doh! ok, Sie verweisen wsdl-Datei hier. Entschuldigung, bin auf der Suche nach gewusst wie: überschreiben der endpoint-Adresse in der config.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich habe eine Lösung gefunden:
Scheint es, dass JAX-WS generiert diese Eigenschaft automatisch. Ich habe festgestellt, dass andere webservice-frameworks-Implementierungen dem Benutzer erlauben, dies zu ändern, indem hartzucodieren die url in eine Immobilie, aber es scheint, dass JAX-WS nicht. Jemand weiß, ob es eine Möglichkeit gibt?
Jedenfalls habe ich einen workaround gefunden: Mit proxyName und proxyPort Eigenschaften in tomcat Connector Konfiguration, man kann sagen, dass Tomcat ist hinter einem proxy (in unserem Fall Apache-server) und dass die "echten" port für die clients ist 80.
Tun, dies zu ändern, der automatisch generierte soap:address enthält den richtigen Wert.
Referenzen:
scheme="https" proxyName="host.com" proxyPort="443"
zu meinem server.xml von Tomcat.