1. Proxies and Flow

soapProxy

Version

The soapProxy auto-configures itself from a WSDL: it reads the soap:address to derive the backend host, port, and path, rewrites the WSDL endpoint to point to the gateway, and serves the rewritten WSDL at ?wsdl. A built-in service explorer is available at the same address. When a path is configured, request paths are automatically rewritten between the gateway path and the backend path. See tutorials/soap/20-SOAPProxy.yaml.

Explanation:

If the WSDL is unavailable at startup, the proxy becomes inactive. Reinitialization can be triggered via the admin console or automatically by the router, which periodically retries.

Example Configuration

# Minimal: auto-configure from WSDL
soapProxy:
port: 2000
wsdl: https://www.predic8.de/city-service?wsdl

---

# Full: path rewriting, WSDL validation, custom host/port in rewritten WSDL,
# explicit service selection, and a dedicated HTTP client for WSDL retrieval
soapProxy:
port: 2000
host: api.example.com
wsdl: https://www.predic8.de/city-service?wsdl
serviceName: CityService
portName: CityServiceSoap
path:
uri: /city-service
wsdlHttpClientConfig:
connection:
timeout: 5000
flow:
- wsdlRewriter:
host: api.example.com
protocol: https
port: 443
- validator: {}
# Minimal: auto-configure from WSDL
 soapProxy:
   port: 2000
   wsdl: https://www.predic8.de/city-service?wsdl

 ---

 # Full: path rewriting, WSDL validation, custom host/port in rewritten WSDL,
 # explicit service selection, and a dedicated HTTP client for WSDL retrieval
 soapProxy:
   port: 2000
   host: api.example.com
   wsdl: https://www.predic8.de/city-service?wsdl
   serviceName: CityService
   portName: CityServiceSoap
   path:
     uri: /city-service
   wsdlHttpClientConfig:
     connection:
       timeout: 5000
   flow:
     - wsdlRewriter:
         host: api.example.com
         protocol: https
         port: 443
     - validator: {}

Syntax

soapProxy:
wsdl: <string> # required
'$ref': <string>
flow:
- <flow>
host: <string>
httpClientConfig: {}
ip: <string>
name: <string>
path: {}
port: <number>
portName: <string>
serviceName: <string>
ssl: {}
target: {}
soapProxy:
  wsdl: <string> # required
  '$ref': <string>
  flow:
    - <flow>
  host: <string>
  httpClientConfig: {}
  ip: <string>
  name: <string>
  path: {}
  port: <number>
  portName: <string>
  serviceName: <string>
  ssl: {}
  target: {}

Attributes

NameRequiredDefaultDescriptionExamples
$reffalse-Reference a component defined under components.-
hostfalsenot setRestricts to requests whose Host header matches one of the given hostnames. Separate multiple hostnames with spaces. The asterisk * matches any number of characters, including zero, for basic globbing.predic8.de *.predic8.de
ipfalsenot setIf present, binds the port only on the specified IP. Useful for hosts with multiple IP addresses.127.0.0.1
namefalseBy default, a name will be automatically generated from the target host, port, etc.The name as shown in the Admin Console.-
portfalse80The port Membrane listens on for incoming connections.8080
portNamefalse-Name of the WSDL port. When omitted, the explorer shows the first port defined in the WSDL.-
serviceNamefalse-Name of the WSDL service to use, if the WSDL defines more than one. Optional; if omitted, the first service defined in the WSDL is used.-
wsdltrue-URL or file path of the WSDL document. Both HTTP/HTTPS URLs and file: paths are supported.https://www.predic8.de/city-service?wsdl

Child Structure

ElementCardinalityDescription
flow0..*
httpClientConfig0..1Configuration container for Membrane's HTTP client. Allows defining proxy, connection, authentication, TLS, and retry behavior. Can be used as a reusable bean and referenced via . Most of its sub-elements are optional.
path0..1Restricts to requests whose path matches, either by prefix (starts-with) or, when enabled, by regular expression. In a soapProxy, setting a path also rewrites the paths of SOAP requests and the service addresses in the WSDL accordingly.
ssl0..1Configures inbound or outbound SSL connections.
target0..1The backend server that requests are forwarded to after passing through the flow.

Can be used in

No parent elements.