Ich habe einen JAX-WS-Webdienst bereitgestellt, der in JBoss 7.1.1 gehostet wird. Der Zugriff auf den Webdienst erfolgt über einen Reverse-Proxy. Um vom öffentlichen Internet aus auf den Dienst zuzugreifen, muss dies über das https-Protokoll erfolgen, aber die Kommunikation zwischen dem Reverse-Proxy und JBoss erfolgt über http. Der in der WSDL-Datei vorhandene Host ist also http <soap:address location="http://example.com/WS"/>
und muss es sein <soap:address location="https://example.com/WS"/>
.
Die JBoss-Konfiguration ist wie folgt:
modify-wsdl-addres = true
wsdl-host = jbossws.undefined.host
Hier ist die Referenz für die Webservices-Konfiguration: https://docs.jboss.org/author/display/AS71/Web+services+configuration
Aber ich kann herausfinden, wo ich in der Soap-Adresse das Protokoll https erzwingen kann.
Antwort1
Die web
und webservices
Subsystemkonfigurationen arbeiten zusammen, um die Endpunkt-URL (und auch URLs für xs:import-Anweisungen) bereitzustellen.
Fügen Sie in der webservices
Konfiguration die folgende Zeile hinzu
<wsdl-port>443</wsdl-port>
Ändern Sie in der web
Konfiguration das Schema des HTTP-Connectors von http
auf https
und fügen Sie hinzuproxy-port="443"
Es wird also so aussehen:
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="https" socket-binding="http"
secure="true" proxy-port="443"/>
...
</subsystem>
<subsystem xmlns="urn:jboss:domain:webservices:1.2">
<modify-wsdl-address>true</modify-wsdl-address>
<wsdl-host>jbossws.undefined.host</wsdl-host>
<wsdl-port>443</wsdl-port>
...
</subsystem>