2. Proxies

soapProxy

A SOAP proxy automatically configures itself using a WSDL description. It reads the WSDL to extract: - The for target, port, and path. The proxy sits in front of a SOAP Web Service, masking it while providing the same interface to clients as the target server. The proxy serves the WSDL to gateway clients, with the WSDL address pointing to the proxy instead of the backend. This ensures that client requests using the WSDL are routed through the API Gateway. Additionally, the SOAP proxy: - Can validate requests against the WSDL - Provides a simple service explorer


Explanation:

If the WSDL specified by the wsdl attribute is unavailable at startup, the becomes inactive. Reinitialization can be triggered via the admin console or automatically by the {@link Router}, which periodically attempts to restore the proxy.

Can be used in:

router and bean

Syntax

    <soapProxy name="string"
      port="integer"
      wsdl="string"
      host="[string,*]"
      ip="[ip]">
	<path />?
	<ssl />?
	<request>
		[interceptors]*
	</request>
	[interceptors]*
	<response>
		[interceptors]*
	</response>
	<localhost />?
</serviceProxy>

Sample

<soapProxy wsdl="http://www.thomas-bayer.com/axis2/services/BLZService?wsdl">
  <soapStackTraceFilter />
  <validator />
</soapProxy>

There is also a step-by-step introduction on how to use the <soapProxy> element.


Attributes

NameRequiredDefaultDescriptionExample
blockRequest false false
legacy attribute for usage by Membrane Monitor -
wsdl true - The WSDL of the SOAP service. http://predic8.de/my.wsdl or file:my.wsdl
port false 80
The port Membrane listens on for incoming connections. 8080
ip false not set
If present, binds the port only on the specified IP. Useful for hosts with multiple IP addresses. 127.0.0.1
name false By default, a name will be automatically generated from the target host, port, etc.
The name as shown in the Admin Console. -
blockResponse false false
legacy attribute for usage by Membrane Monitor -
host false not set
A space separated list of hostnames. If set, Membrane will only consider this rule, if the "Host" header of incoming HTTP requests matches one of the hostnames. The asterisk '*' can be used for basic globbing (to match any number, including zero, characters). predic8.de *.predic8.de
wsdlHttpClientConfig false - - -
portName false - - -
serviceName false - - -

Child Elements

ElementsDescriptionCardinality
path If set, Membrane will only consider this rule, if the path of incoming HTTP requests matches. {@link Path} supports starts-with and regex matching. If used in a {@link SOAPProxy}, this causes path rewriting of SOAP requests and in the WSDL to automatically be configured. 0..1
ssl Configures the usage of inbound SSL (HTTPS). 0..1
target 0..1

Other optional Child Elements


jwtSign, oauth2PermissionChecker, accessControl, index, openTelemetry, groovy, webServiceExplorer, acmeHttpChallenge, counter, requireAuth, beautifier, apiKey, cache, logContext, soap2Rest, APIsJSON, sampleSoapService, dispatching, tokenValidator, transform, rateLimiter, tcp, analyser, authHead2Body, wsdlRewriter, call, formValidation, stompClient, javascript, jsonProtection, clamav, kubernetesValidation, oauth2authserver, validator, shadowing, destination, return, graphQLProtection, rewriter, flowInitiator, interceptor, headerFilter, xml2Json, apiDocs, rest2Soap, webServer, groovyTemplate, greaser, regExReplacer, reverseProxying, log, prometheus, for, if, replace, xmlProtection, wadlRewriter, soapOperationExtractor, balancer, throttle, userFeature, testService, exchangeStore, httpClient, json2Xml, jwtAuth, template, xmlContentFilter, adminConsole, webSocket, limit, methodOverride, ruleMatching, oauth2Resource2, statisticsCSV, static, accountRegistration, ntlm, statisticsProvider, clusterNotification, urlNormalizer, xenAuthentication, shutdown, setHeader, choose, accessLog, setProperty, http2xml, soapStackTraceFilter, paddingHeader, login, wsdlPublisher, statisticsJDBC, basicAuthentication