org.jboss.soa.esb.actions.soap
Class SOAPProcessor
java.lang.Object
org.jboss.soa.esb.actions.AbstractActionLifecycle
org.jboss.soa.esb.actions.AbstractActionPipelineProcessor
org.jboss.soa.esb.actions.soap.SOAPProcessor
- All Implemented Interfaces:
- ActionLifecycle, ActionPipelineProcessor
@Publish(value=JBossWSWebserviceContractPublisher.class)
public class SOAPProcessor
- extends AbstractActionPipelineProcessor
JBoss Webservices SOAP Processor.
This action supports invocation of a JBossWS hosted webservice endpoint through any JBossESB hosted
listener. This means the ESB can be used to expose Webservice endpoints for Services that don't
already expose a Webservice endpoint. You can do this by writing a thin Service Wrapper Webservice
(e.g. a JSR 181 implementation) that wraps calls to the target Service (that doesn't have a Webservice endpoint),
exposing that Service via endpoints (listeners) running on the ESB. This also means that these Services
are invocable over any transport channel supported by the ESB (http, ftp, jms etc).
Webservice Endpoint Deployment
Any JBossWS Webservice endpoint can be exposed via ESB listeners using this action. That includes endpoints that are deployed
from inside (i.e. the Webservice .war is bundled inside the .esb) and outside (e.g. standalone Webservice .war deployments,
Webservice .war deployments bundled inside a .ear) a .esb deployment.
JAXB Introductions
The native JBossWS SOAP stack uses JAXB to bind to and from SOAP. This typically means that an unannotated typeset
could not be used to build a JSR 181 endpoint on JBossWS. To overcome this we use a JBossESB and JBossWS feature
called "JAXB Introductions" which basically means you can define an XML configuration to "Introduce" the JAXB Annotations.
For more on this, see the section on this action in the Message Action Guide.
Action Configuration
The <action ... /> configuration for this action is very straightforward. The action requires only one
mandatory property value, which is the "jbossws-endpoint" property. This property names the JBossWS endpoint
that the SOAPProcessor is exposing (invoking).
<action name="ShippingProcessor" class="org.jboss.soa.esb.actions.soap.SOAPProcessor">
<property name="jbossws-endpoint" value="ABI_Shipping"/>
<property name="rewrite-endpoint-url" value="true/false"/> <-- Optional. Default "true". -->
</action>
The optional "rewrite-endpoint-url" property is there to support load balancing on HTTP endpoints,
in which case the Webservice endpoint container will have been configured to set the HTTP(S) endpoint address
in the WSDL to that of the Load Balancer. The "rewrite-endpoint-url" property can be used to turn off HTTP endpoint
address rewriting in situations such as this. It has no effect for non-HTTP protocols.
Quickstarts
A number of quickstarts that demonstrate how to use this action are available in the JBossESB
distribution (samples/quickstarts). See the "webservice_jbossws_adapter_01" and "webservice_bpel"
quickstarts.
- Author:
- tom.fennelly@jboss.com, Magesh Kumar B
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
SOAPProcessor
public SOAPProcessor(ConfigTree config)
throws ConfigurationException
- Public constructor.
- Parameters:
config
- Configuration.
- Throws:
ConfigurationException
- "jbossws-endpoint" not specified.
process
public Message process(Message message)
throws ActionProcessingException
- Process the SOAP message.
Invokes the JBossWS endpoint and writes the SOAP response back into the message payload.
- Parameters:
message
- The ESB Aware (normalized) SOAP request message.
- Returns:
- The SOAP response message.
- Throws:
ActionProcessingException