Hi Deepal:
I agree on that Dispatcher itself is a handler
Ok.
but the name "Dispatcher" implies different meaning than a handler , it is obvious that a module can configure to put handlers into Dispatch phase we are not avoiding doing that (in fact I did the same thing to a the SypaseToy that I wrote , I put just a handler into Dispatch phase as its phase first handler and which will do the dispatching).
Ok.
But If some one to add dispatcher as a dispatcher not as a handler , we have give them a indirect path to do so (<dispatchingOrder> in axis2.xml) , and configure the order they want. Since Axis2 has hard coded the dispatching order. There can be some users who want to run URLDispatcher after AddressingDisptcher , since we have hard coded the dispatching order no one can change the order, therefore only way to do that by giving a way to change that , that is why I came up with that XML element. So if user wants to override he can put that XML element and do so , if not the default order will work nicely. I know that 99% of the time no one go and change that. So most of the time AxisConfigurationImpl.setDefaultDispatchers() method will be invoked.
What I'm trying to say is that we should NOT hard-code the dispatch order, we should have it simply exist as configuration in the default axis2.xml file. To do this we either use current <handler> syntax:
<handler name="MyDispatcher" class="package.MyDispatcher"> <order phase="Dispatch"/> </handler> or my suggested simpler syntax: <phaseOrder> <phase name="Dispatch"> <handler name="MyDispatcher" class="package.MyDispatcher"/> </phase> </phaseOrder> --Glen