13.9.18. Using the SOAPProxy Action
A SOAPProxy action is:
- both a producer and consumer of web services.
- all that is required is a property pointing to the external wsdl.
- a way to allow the WSDL to be automatically transformed (via the optional wsdlTransform property.)
- a way to ensure that SOAP is not tied to HTTP. The WSDL is read, and if an HTTP transport is defined, that will be used.
- a way to optionally apply HttpRouter properties as overrides if you are using HTTP.
If the WSDL specifies an HTTP transport, then any of the HttpRouter properties can be applied.
Property | Description | Required |
---|---|---|
wsdlTransform |
A <smooks-resource-list> xml config file allowing for flexible wsdl transformation.
| No |
wsdlCharset |
The character set the original wsdl (and imported resources) is encoded in UTF-8. It will be transformed to UTF-8 if it is a supported encoding by the underlying platform.
| No |
endpointUrl |
Example of an HttpRouter property, useful when domain name matching is important for SSL certs.
| No |
file |
Apache Commons HTTPClient properties file, useful when proxying to a web service via SSL.
| No |
clientCredentialsRequired |
Whether the Basic Auth credentials are required to come from the end client, or if the credentials specified inside file can be used instead. Default is "true".
| No |
wsdl |
The original wsdl url whose WS endpoint will get re-written and exposed as new wsdl from the ESB. Depending upon the
<definitions><service><port><soap:address location attribute's protocol (for example "http"), a protocol-specific SOAPProxyTransport implementation is used.
The value can reference a location based on five different schemes:
| Yes |
Example 13.16. Sample Configuration: Basic scenario
<action name="proxy" class="org.jboss.soa.esb.actions.soap.proxy.SOAPProxy"> <property name="wsdl" value="http://host/foo/HelloWorldWS?wsdl"/> </action>
Example 13.17. Sample Configuration: Basic Authentication and SSL
<action name="proxy" class="org.jboss.soa.esb.actions.soap.proxy.SOAPProxy"> <property name="wsdl" value="https://host/foo/HelloWorldWS?wsdl"/> <property name="endpointUrl" value="https://host/foo/HelloWorldWS"/> <property name="file" value="/META-INF/httpclient-8443.properties"/> <property name="clientCredentialsRequired" value="true"/> </action>