Axis2 folks have proposed the following solution.
Synapse ships as a .MAR. So it has the control of the first Axis2 chain. So having a Handler in the last phase of this chain to get mustunderstand header and set it as processed, would make all messages to pass to SynapseMessageReceiver. This would be hold for the Gateway model as well.
Your consensus on this would greatly appreciated.
Thank you
Saminda
On 7/13/06, Saminda Abeyruwan <[EMAIL PROTECTED]> wrote:
I Agreed with you.
As Paul proposed while back, QOS like RM/Sec handles in a mediator. An AxisEngine is newed in this mediator and pass all messages to it.
Synapse execution happens in a MessageReceiver, which is the end of Axis2 execution chain. In order to get messages to this MR, according to the current AxisEngine#receive(), this message should pass the must understand check of the first chain. In this context, if a message comes with must understand would not reach SynapseMessageReceiver at the first place, because we are not applying any qos at this chain. So the problem lies with the first Axis2 chain until SynapseMessageReceiver.
IMHO, if a Synapse has to have a role or next to it, it should be checked in the SynapseEnvironment before that message injected in to the system to be mediated. In either case, first of all IMO the message should come into SynapseEnvironment.
Thank you
SamindaOn 7/13/06, Deepal jayasinghe < [EMAIL PROTECTED]> wrote:I totally agree with Paul , in this case Synapse is acting as SOAP node
(intermediate SOAP node)
Paul Fremantle wrote:
> I don't know enough about the mustUnderstand handling in Axis2, but it
> seems to me that we might also want to identify a Synapse instance as
> a given role.
>
> In other words, if we are acting as an intermediary, we may be
> implementing a specific role, and not the "ultimate receiver". So we
> only need to understand the headers that are targeted at our role or
> the "next" role.
>
> Paul
>
> On 7/12/06, Asankha C. Perera < [EMAIL PROTECTED]> wrote:
>
>> Saminda
>>
>> Yes.. you are right, we need to be able to ask Axis2 to not validate
>> mustunderstand headers.. we should get them to introduce a property for
>> this and use it..
>>
>> asankha
>>
>> Saminda Abeyruwan wrote:
>> > Hi Devs,
>> >
>> > AxisEngine#receiver() always check for must understand header before
>> > invoking the relevant message receiver. This would really give a hard
>> > time in Synapse when we tried to implement qos support such as RM ect.
>> >
>> > Synapse has its own SynapseMessageReceiver(SMR) and SynapseDispatcher
>> > and all the messages will be passed to this message receiver via
>> > SynapseDispatcher. During this first phase we are not apply any QOS.
>> > All QOS handles through mediators. Ex: RM will handles through
>> > RMMediator(RMM). RMMediator is a part of Synapse. We use these
>> > mediators to engage Axis2 modules hence supporting QOS.
>> >
>> > So in the case of RM all control messages and application messages
>> > will be passed to RMM. Now if a messages comes with must understand
>> > true, it will not pass to SMR at the first phase, because Axis2 engine
>> > check for must understand and it will throw an exception.
>> >
>> > Intermediaries like Synapse would not need to understand must
>> > understand headers and it should be upto the Service endpoint to
>> > understand it.
>> >
>> > So IMHO, in order to user AxisEngine in SynapseEnvironment, we need a
>> > switch to configure must understanding.
>> >
>> >
>> > Thank you
>> >
>> > Saminda
>> >
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
--
Thanks,
Deepal
................................................................
~Future is Open~
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
