Introduction
This sample demonstrates the functionality of local (static) registry entries and the Validate Mediator. It sends a message from a sample client to a back-end service through the ESB and shows how a static XML fragment could be made available to the ESB's local registry. It is assumed that the resources defined in the local registry are static (never changes over the lifetime of the configuration) and may be specified as a source URL, inline text or inline XML.
Prerequisites
For a list of prerequisites, see the Prerequisites section in ESB Samples Setup.
Building the Sample
1. Start the ESB with sample 7 configuration using the instructions given in Starting Sample ESB Configurations.
2. A message should appear in the command or text Linux console stating the server started successfully.
3. The synapse configuration in the ESB used for message mediation in this sample is provided in <ESB_HOME>/repository/samples
/synapse_sample_7.xml
as shown below:
<definitions xmlns="http://ws.apache.org/ns/synapse"> <localEntry key="validate_schema"> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.apache-synapse.org/test" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://services.samples"> <xs:element name="getQuote"> <xs:complexType> <xs:sequence> <xs:element name="request"> <xs:complexType> <xs:sequence> <xs:element name="stocksymbol" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </localEntry> <in> <validate> <schema key="validate_schema"/> <on-fail> <!-- if the request does not validate againt schema throw a fault --> <makefault> <code value="tns:Receiver" xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/> <reason value="Invalid custom quote request"/> </makefault> <property name="RESPONSE" value="true"/> <header name="To" expression="get-property('ReplyTo')"/> </on-fail> </validate> </in> <send/> </definitions>
4. Deploy the back-end service 'SimpleStockQuoteService' and start the Axis2 server using the instructions given in section Starting Sample Back-End Services.
5. Now you have a running ESB instance and a back-end service deployed. In the next section, we will send a message to the back-end service through the ESB using a sample client.
Executing the Sample
The sample client used here is 'Stock Quote Client' which can operate in several modes. For instructions on this sample client and its operation modes, refer to Stock Quote Client
1. According to synapse_sample_7.xml
specified above, the schema is made available under the "validate_schema" key. The Validate Mediator by default operates on the first child element of the SOAP body. You may specify an XPath expression using the source
attribute to override this behavior. The Validate Mediator now uses the "validate_schema" resource to validate the incoming message. If the message validation fails, it invokes the "on-fail" sequence of mediators.
2. Run the following ant command from <ESB_HOME>/samples/axis2Client
directory.
ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/
3. The schema validation fails and a fault is generated back with the message "Invalid custom quote request". This is because the schema used in the example expects a slightly different message than what is created by the stock quote client. The schema used in the example expects a stocksymbol
element instead of "symbol" to specify the stock symbol.