[jboss-svn-commits] JBL Code SVN: r30078 - labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Nov 9 13:58:06 EST 2009
Author: dward
Date: 2009-11-09 13:58:06 -0500 (Mon, 09 Nov 2009)
New Revision: 30078
Modified:
labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy/SOAPProxy.java
Log:
javadoc tweak
Modified: labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy/SOAPProxy.java
===================================================================
--- labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy/SOAPProxy.java 2009-11-09 18:56:52 UTC (rev 30077)
+++ labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy/SOAPProxy.java 2009-11-09 18:58:06 UTC (rev 30078)
@@ -57,18 +57,41 @@
* A SOAPProxy focuses on the consumption of an external WS endpoint (e.g. hosted on .NET, another external Java-based AS, LAMP)
* and re-publication of a WS endpoint via the ESB. The ESB sits between the ultimate consumer/client (e.g. .NET WinForm
* application) and the ultimate producer (e.g. RoR-hosted WS). The purpose of this intermediary is to provide an abstraction
- * layer that provides for more loose coupling between the client and service, as they are both completely unaware of each other
- * (the client no longer has a direct connection to the remote service's hostname/IP address). The client will see modified WSDL
- * so that the client is pointed to the ESB's exposed endpoint instead of the original, now proxied endpoint.<p/>
+ * layer that solves the following problems:
+ * <ul>
+ * <li>Provides for more loose coupling between the client & service; they are both completely unaware of each other.</li>
+ * <li>The client no longer has a direct connection to the remote service's hostname/IP address.</li>
+ * <li>The client will see modified WSDL that changes the inbound/outbound parameters. At a minimum, the WSDL must be tweaked so that the client is pointed to the ESB's exposed endpoint instead of the original, now proxied endpoint.</li>
+ * <li>A transformation of the SOAP envelope/body can be introduced via the ESB action chain both for the inbound request and outbound response. (see XsltAction or SmooksAction)</li>
+ * <li>Service versioning is possible since clients can connect to 2 or more proxy endpoints on the ESB, each with its own WSDL and/or transformations and routing requirements, and the ESB will send the appropriate message to the appropriate endpoint and provide an ultimate response.</li>
+ * <li>Complex context-based routing via ContentBasedRouter.</li>
+ * </ul>
*
- * <i>Configuration</i><br/>
- * <ol>
+ * Other mechanisms of doing this are inappropriate or inadequate:
+ * <ul>
+ * <li>SOAPClient is used to invoke external web services, not mirror them.</li>
+ * <li>SOAPProducer only executes internally-deployed JBoss WS services.</li>
+ * <li>HttpRouter requires too much by-hand configuration for easy WS proxying.</li>
+ * <li>EBWS strips out the SOAP Envelope and only passes along the body.</li>
+ * </ul>
+ *
+ * With a SOAPProxy action:
+ * <ul>
+ * <li>It is both a producer and consumer of web services.</li>
+ * <li>All that is required is a property pointing to the external wsdl.</li>
+ * <li>The wsdl can be automatically transformed via the optional wsdlTransform property.</li>
+ * <li>It is understood that SOAP is not tied to http. The wsdl is read, and if an http transport is defined, that will be used. Other transports (jms) will need future consideration.</li>
+ * <li>If using http, any of the HttpRouter properties can also optionally be applied to as overrides.</li>
+ * </ul>
+ *
+ * <i>Configuration Properties</i><br/>
+ * <ul>
* <li><b>wsdl</b> (required): The original wsdl {@link URL 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 {@link SOAPProxyTransport} implementation is used. The value can reference a location based on
* five different schemes: http, https, file, classpath or internal (JBossWS). Here are some examples:<br/>
* <ul>
- * <li>http://localhost:8080/Quickstart_webservice_proxy_basic/HelloWorldWS?wsdl</li>
+ * <li>http://localhost:8080/Quickstart_webservice_proxy_basic_ws/HelloWorldWS?wsdl</li>
* <li>https://localhost:8443/webservice_proxy_security/HelloWorldWS?wsdl</li>
* <li>file:///tmp/HelloWorldWS.wsdl</li>
* <li>classpath://META-INF/HelloWorldWS.wsdl</li>
@@ -80,13 +103,13 @@
* <li><b>file</b> (optional): Apache Commons HTTPClient properties file, useful when proxying to a web service via SSL</li>
* <li><b>clientCredentialsRequired</b> (optional; default is "true"): Whether the Basic Auth credentials are required to come from the end
* client, or if the credentials specified inside <b>file</b> can be used instead.</li>
- * </ol>
- * * For other possible configuration properties, see the specific {@link SOAPProxyTransport} implementations themselves.<p/>
+ * </ul>
+ * <b>*</b> For other possible configuration properties, see the specific {@link SOAPProxyTransport} implementations themselves.<p/>
*
* <i>Example of a straightforward scenario:</i><br/>
* <pre>
* <action name="proxy" class="org.jboss.soa.esb.actions.soap.proxy.SOAPProxy">
- * <property name="wsdl" value="http://localhost:8080/Quickstart_webservice_proxy_basic/HelloWorldWS?wsdl"/>
+ * <property name="wsdl" value="http://localhost:8080/Quickstart_webservice_proxy_basic_ws/HelloWorldWS?wsdl"/>
* </action>
* </pre>
* <i>Example of a basic auth + ssl scenario:</i><br/>
More information about the jboss-svn-commits
mailing list