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