You can always apply throttling to services deployed in WSO2 AS using the Management console. But what if you want to apply the throttling policy while the service get deployed. Then you can specify the throttling policy in the service.xml file.
<?xml version="1.0" encoding="UTF-8"?> <!-- This file was auto-generated from WSDL --> <!-- by the Apache Axis2 version: 1.6.1-wso2v1 Built on : Jun 08, 2011 (07:37:38 IST) --> <serviceGroup> <service name="echo"> <messageReceivers> <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.wso2.carbon.sample.service.echo.EchoMessageReceiverInOut"/> </messageReceivers> <parameter name="ServiceClass">org.wso2.carbon.sample.service.echo.EchoSkeleton</parameter> <parameter name="useOriginalwsdl">true</parameter> <parameter name="modifyUserWSDLPortAddress">true</parameter> <operation name="echoString" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://echo.services.core.carbon.wso2.org"> <actionMapping>urn:echoString</actionMapping> <outputActionMapping>urn:echoStringResponse</outputActionMapping> <faultActionMapping faultName="echoFault">urn:echoFaultMessage</faultActionMapping> <faultActionMapping faultName="EchoFault">urn:echoFaultMessage</faultActionMapping> <faultActionMapping faultName="EchoFault_Exception">urn:echoFaultMessage</faultActionMapping> </operation> <operation name="throwAxisFault" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://echo.services.core.carbon.wso2.org"> <actionMapping>urn:throwAxisFault</actionMapping> <outputActionMapping>urn:throwAxisFaultResponse</outputActionMapping> </operation> <operation name="echoStringArrays" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://echo.services.core.carbon.wso2.org"> <actionMapping>urn:echoStringArrays</actionMapping> <outputActionMapping>urn:echoStringArraysResponse</outputActionMapping> </operation> <operation name="echoOMElement" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://echo.services.core.carbon.wso2.org"> <actionMapping>urn:echoOMElement</actionMapping> <outputActionMapping>urn:echoOMElementResponse</outputActionMapping> </operation> <operation name="echoInt" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://echo.services.core.carbon.wso2.org"> <actionMapping>urn:echoInt</actionMapping> <outputActionMapping>urn:echoIntResponse</outputActionMapping> </operation> <module ref="wso2throttle"/> <wsp:Policy wsu:Id="WSO2ServiceThrottlingPolicy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsp:ExactlyOne> <wsp:All> <throttle:ServiceThrottleAssertion xmlns:throttle="http://www.wso2.org/products/wso2commons/throttle"> <wsp:Policy> <throttle:ID throttle:type="DOMAIN">172.16.49.1</throttle:ID> <wsp:Policy> <throttle:Control> <wsp:Policy> <throttle:MaximumCount>2</throttle:MaximumCount> <throttle:UnitTime>20000</throttle:UnitTime> <throttle:ProhibitTimePeriod wsp:Optional="true">30000</throttle:ProhibitTimePeriod> </wsp:Policy> </throttle:Control> </wsp:Policy> </wsp:Policy> <wsp:Policy> <throttle:ID throttle:type="DOMAIN">other</throttle:ID> <wsp:Policy> <throttle:Deny/> </wsp:Policy> </wsp:Policy> </throttle:ServiceThrottleAssertion> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> </service> </serviceGroup>
Thanks for posting this :) I was looking for how to do this and it was helpful.
ReplyDeletenice article, thanks to share this
ReplyDeletemutual fund investment