You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Jaliya Ekanayake <ja...@opensource.lk> on 2005/04/21 06:04:45 UTC

[Axis2] Deploying MessageReceivers per Operation

Hi All,
 
According the current implementation of Axis2, when we deploy a service, we
can specify one MessageReceiver (InOnlyMessageReceiver, InOutMessageReceiver
etc..) per service. According to my understanding we should let the user to
register one MessageReceiver per operation basis. Possible example would be
as follows.
 
We have a web service with IN-ONLY operation. However we need to let the
service to implement the RequestSecurityToken operation according to the
WS-SecCon. This operation is an IN-OUT operation. In this situation we have
to register two message receivers to these two operations. In addition, the
MEP is bind to an operation and the MessageReceiver is the one who is
driving the MEP. So I think we have let each operation to have its own
message receiver. 
 
thoughts ??
 
Thanks,
 
Jaliya

Re: [Axis2] Deploying MessageReceivers per Operation

Posted by Deepal Jayasinghe <de...@opensource.lk>.
Hi all;

Srinath I will do that changes and I was also +1 for doing so finally I 
understood the requirement operation specific receivers.

Deepal


> +1 to moving Messagereiver to Operation level
>
>> -----Original Message-----
>> From: Srinath Perera [mailto:hemapani@gmail.com]
>> Sent: Tuesday, April 26, 2005 10:01 AM
>> To: axis-dev@ws.apache.org
>> Subject: Re: [Axis2] Deploying MessageReceivers per Operation
>>
>> Yes in theory AFAIK MessageReceiver per Operation (MEP) make sense. 
>> Itmake
>> writing a Web Service bit complex. But as users are reusing the in built
>> MessageReceiver I think that is ok. So Deepal shall we movethe
>> messageReceiver attribute to the Opeartion level rather than atthe 
>> service
>> level?
>> ThanksSrinath
>> On 4/26/05, Jaliya Ekanayake <ja...@opensource.lk> wrote:> Chathura
>> Herath wrote:> > >Hi Jaliya, Deepal, all> >> >Its exactly my point, the
>> MessgeReceiver is per MEP not per operation as the heading of this thread
>> implies(nor its per service). MEP is a real pain and there is an
>> unprecedented need for properly handling it.> >> >You are right about
>> there is a need of a MessageReciever per given MEP and the fact that 
>> given
>> service can have operations with different MEP can be resolved making 
>> sure
>> we select the right receiver in the Dispatch phase. Anyway we are doing 
>> it
>> now but apparently we have only the IN_OUT MEP Receiver and infact we are
>> in the process of writing a general framework for MEPs. I.e. Proper
>> figuring out of MEP aware receives and MEP aware MEPContexts.> >So we are
>> converging I think....> >> >Btw any thought of my use case stated in the
>> earlier mail. Restating.. If both the ping operation and the echo
>> operation requires to use the same transport (e.g. HTTP would be a 
>> likely)
>> due to some external constraint like RM, we ll have to get the engine to
>> reuse same transport for two or more different MEP.> >> >Is this a valid
>> use case??> >> >Comments??> >> >Thanks,> >Chathura> >>
>> >________________________________________> >From: Jaliya Ekanayake
>> [mailto:jaliya@opensource.lk]> >Sent: Thursday, April 21, 2005 5:22 PM>
>> >To: axis-dev@ws.apache.org> >Subject: RE: [Axis2] Deploying
>> MessageReceivers per Operation> >> >Hi Chathura, Deepal and All,> >> >I
>> would like to pay your attention to the following class.> >> >public 
>> class
>> MyService {> >    public void ping(String pingStr){> >        //Ping
>> implementation> >    }> >> >    public String echo(String echoStr){> >
>> //Echo String implementatino> >        return echoStr;> >    }> >}> >>
>> >Now if we need to deploy this as a web service containing two operations
>> (one with IN-ONLY MEP and the other with IN-OUT MEP) we are in trouble if
>> we just allow the user to mention one message receiver per service.> >>
>> >Further, I am referring to the following lines( in the Axis 1.2
>> JavaProvider)> >> >--------------------------------> >> >if (operation !=
>> null &&   operation.getMep() == OperationType.ONE_WAY) {> >
>> msgContext.setResponseMessage(null);> >            } else {> >
>> Message        resMsg  = msgContext.getResponseMessage();> >> 
>>  >-----------
>> --------------------> >> >Now in our MessageReceiver we don't need to
>> check the operation type, since we have some special MEP aware
>> MessageReceivers. Only problem is that we may have many operations in one
>> service with different MEPs> >> >Comments?> >> >Thanks,> >> >Jaliya> >> 
>>  >>
>> >________________________________________> >From: Chathura Herath
>> [mailto:chathura@opensource.lk]> >Sent: Thursday, April 21, 2005 2:48 PM>
>> >To: axis-dev@ws.apache.org> >Subject: RE: [Axis2] Deploying
>> MessageReceivers per Operation> >> >Hi Jaliya, Deepal, all> >> >I think 
>> we
>> haven't looked at the problem in the correct angle. MEP and Operation 
>> have
>> a one to many relation ship so it will not be right to say we let each
>> operation have its own message receiver, neither it is correct to say we
>> should have a message receivers per service because the MEP is defined 
>> per
>> operation.> >> >Many Operation → use→ One MEP> >> >The problem that 
>> jaliya
>> has pointed out is very valid and believe we need to give proper
>> attention. But we have missed out one salient point here. The original 
>> MEP
>> was an IN_ONLY MEP but since the operation requires secure conversation
>> the security module need to send out a message  and get a message back.>
>> >The point in that in this case the security module has created a new
>> MEP(OUT_IN if you consider this EPR to be a server or it's the client 
>> side
>> of the IN_OUT MEP ) which is orthogonal to the original MEP IN_ONLY.
>> Further more now the endpoint has two parallel MEP's running> >1) 
>> Original
>> IN_ONLY MEP :- This will have a receiver – a InOnlyReceiver> >2) OUT_IN
>> MEP created by the security module :- This will have its own receiver.
>> (Like a normal client)> >> >Now I believe there are no misunderstanding 
>> of
>> having MessageReceivers because above two message receivers will be
>> provided and this operation and the security module can use them. And any
>> other service who has IN_ONLY MEP can use the above message receiver. Am 
>> I
>> right?> >> >Complications come when you want to use the same transport to
>> get everything done. That we have to figure out a way to get the engine 
>> to
>> reuse our old same transport.> >> >Comments?> >> >Cheers> >Chathura> >> 
>>  >>
>> >________________________________________> >From: Deepal Jayasinghe
>> [mailto:deepal@opensource.lk]> >Sent: Thursday, April 21, 2005 10:30 AM>
>> >To: axis-dev@ws.apache.org> >Subject: Re: [Axis2] Deploying
>> MessageReceivers per Operation> >> >Hi Jaliya;> >> >I think we can handle
>> operation basic receivers inside Message receiver , that is because when
>> some one implement a service he has to write a MessageReciver for his
>> service  , so inside the messagereciver he can write all the logic he
>> needs to handle operation basis reciever , that is inside
>> messagereciver.recive() he can implement those logic.> >> >as an example>
>> >> >MyReciver extends MessageReciver {> >> > public void
>> recieve(MessageContext context){> >    MyOperationReciever myop = new
>> MyOperationReciever();> >    myop.recieve(context);> >  }> >}> >> >> >so
>> if we do that in this way I think we do not need to define per operation
>> basis receivers.> >> >Comments ....> >> >Deepal> >> >Hi All,> >>
>> >According the current implementation of Axis2, when we deploy a service,
>> we can specify one MessageReceiver (InOnlyMessageReceiver,
>> InOutMessageReceiver etc..) per service. According to my understanding we
>> should let the user to register one MessageReceiver per operation basis.
>> Possible example would be as follows.> >> >We have a web service with IN-
>> ONLY operation. However we need to let the service to implement the
>> RequestSecurityToken operation according to the WS-SecCon. This operation
>> is an IN-OUT operation. In this situation we have to register two message
>> receivers to these two operations. In addition, the MEP is bind to an
>> operation and the MessageReceiver is the one who is driving the MEP. So I
>> think we have let each operation to have its own message receiver.> >>
>> >thoughts ??> >> >Thanks,> >> >Jaliya> >> >> >> >> >> >> >> Hi Chathura,>
>> > IMHO, there may not be a use case similar to what you have mentioned.>
>> There may be a case for one MEP to use the same transport or different>
>> transports, but not between MEPs> > Thanks,> > Jaliya>
>
>
>
>
>
> 



RE: [Axis2] Deploying MessageReceivers per Operation

Posted by Chathura Herath <ch...@opensource.lk>.
+1 to moving Messagereiver to Operation level

> -----Original Message-----
> From: Srinath Perera [mailto:hemapani@gmail.com]
> Sent: Tuesday, April 26, 2005 10:01 AM
> To: axis-dev@ws.apache.org
> Subject: Re: [Axis2] Deploying MessageReceivers per Operation
> 
> Yes in theory AFAIK MessageReceiver per Operation (MEP) make sense. Itmake
> writing a Web Service bit complex. But as users are reusing the in built
> MessageReceiver I think that is ok. So Deepal shall we movethe
> messageReceiver attribute to the Opeartion level rather than atthe service
> level?
> ThanksSrinath
> On 4/26/05, Jaliya Ekanayake <ja...@opensource.lk> wrote:> Chathura
> Herath wrote:> > >Hi Jaliya, Deepal, all> >> >Its exactly my point, the
> MessgeReceiver is per MEP not per operation as the heading of this thread
> implies(nor its per service). MEP is a real pain and there is an
> unprecedented need for properly handling it.> >> >You are right about
> there is a need of a MessageReciever per given MEP and the fact that given
> service can have operations with different MEP can be resolved making sure
> we select the right receiver in the Dispatch phase. Anyway we are doing it
> now but apparently we have only the IN_OUT MEP Receiver and infact we are
> in the process of writing a general framework for MEPs. I.e. Proper
> figuring out of MEP aware receives and MEP aware MEPContexts.> >So we are
> converging I think....> >> >Btw any thought of my use case stated in the
> earlier mail. Restating.. If both the ping operation and the echo
> operation requires to use the same transport (e.g. HTTP would be a likely)
> due to some external constraint like RM, we ll have to get the engine to
> reuse same transport for two or more different MEP.> >> >Is this a valid
> use case??> >> >Comments??> >> >Thanks,> >Chathura> >>
> >________________________________________> >From: Jaliya Ekanayake
> [mailto:jaliya@opensource.lk]> >Sent: Thursday, April 21, 2005 5:22 PM>
> >To: axis-dev@ws.apache.org> >Subject: RE: [Axis2] Deploying
> MessageReceivers per Operation> >> >Hi Chathura, Deepal and All,> >> >I
> would like to pay your attention to the following class.> >> >public class
> MyService {> >    public void ping(String pingStr){> >        //Ping
> implementation> >    }> >> >    public String echo(String echoStr){> >
> //Echo String implementatino> >        return echoStr;> >    }> >}> >>
> >Now if we need to deploy this as a web service containing two operations
> (one with IN-ONLY MEP and the other with IN-OUT MEP) we are in trouble if
> we just allow the user to mention one message receiver per service.> >>
> >Further, I am referring to the following lines( in the Axis 1.2
> JavaProvider)> >> >--------------------------------> >> >if (operation !=
> null &&   operation.getMep() == OperationType.ONE_WAY) {> >
> msgContext.setResponseMessage(null);> >            } else {> >
> Message        resMsg  = msgContext.getResponseMessage();> >> >-----------
> --------------------> >> >Now in our MessageReceiver we don't need to
> check the operation type, since we have some special MEP aware
> MessageReceivers. Only problem is that we may have many operations in one
> service with different MEPs> >> >Comments?> >> >Thanks,> >> >Jaliya> >> >>
> >________________________________________> >From: Chathura Herath
> [mailto:chathura@opensource.lk]> >Sent: Thursday, April 21, 2005 2:48 PM>
> >To: axis-dev@ws.apache.org> >Subject: RE: [Axis2] Deploying
> MessageReceivers per Operation> >> >Hi Jaliya, Deepal, all> >> >I think we
> haven't looked at the problem in the correct angle. MEP and Operation have
> a one to many relation ship so it will not be right to say we let each
> operation have its own message receiver, neither it is correct to say we
> should have a message receivers per service because the MEP is defined per
> operation.> >> >Many Operation → use→ One MEP> >> >The problem that jaliya
> has pointed out is very valid and believe we need to give proper
> attention. But we have missed out one salient point here. The original MEP
> was an IN_ONLY MEP but since the operation requires secure conversation
> the security module need to send out a message  and get a message back.>
> >The point in that in this case the security module has created a new
> MEP(OUT_IN if you consider this EPR to be a server or it's the client side
> of the IN_OUT MEP ) which is orthogonal to the original MEP IN_ONLY.
> Further more now the endpoint has two parallel MEP's running> >1) Original
> IN_ONLY MEP :- This will have a receiver – a InOnlyReceiver> >2) OUT_IN
> MEP created by the security module :- This will have its own receiver.
> (Like a normal client)> >> >Now I believe there are no misunderstanding of
> having MessageReceivers because above two message receivers will be
> provided and this operation and the security module can use them. And any
> other service who has IN_ONLY MEP can use the above message receiver. Am I
> right?> >> >Complications come when you want to use the same transport to
> get everything done. That we have to figure out a way to get the engine to
> reuse our old same transport.> >> >Comments?> >> >Cheers> >Chathura> >> >>
> >________________________________________> >From: Deepal Jayasinghe
> [mailto:deepal@opensource.lk]> >Sent: Thursday, April 21, 2005 10:30 AM>
> >To: axis-dev@ws.apache.org> >Subject: Re: [Axis2] Deploying
> MessageReceivers per Operation> >> >Hi Jaliya;> >> >I think we can handle
> operation basic receivers inside Message receiver , that is because when
> some one implement a service he has to write a MessageReciver for his
> service  , so inside the messagereciver he can write all the logic he
> needs to handle operation basis reciever , that is inside
> messagereciver.recive() he can implement those logic.> >> >as an example>
> >> >MyReciver extends MessageReciver {> >> > public void
> recieve(MessageContext context){> >    MyOperationReciever myop = new
> MyOperationReciever();> >    myop.recieve(context);> >  }> >}> >> >> >so
> if we do that in this way I think we do not need to define per operation
> basis receivers.> >> >Comments ....> >> >Deepal> >> >Hi All,> >>
> >According the current implementation of Axis2, when we deploy a service,
> we can specify one MessageReceiver (InOnlyMessageReceiver,
> InOutMessageReceiver etc..) per service. According to my understanding we
> should let the user to register one MessageReceiver per operation basis.
> Possible example would be as follows.> >> >We have a web service with IN-
> ONLY operation. However we need to let the service to implement the
> RequestSecurityToken operation according to the WS-SecCon. This operation
> is an IN-OUT operation. In this situation we have to register two message
> receivers to these two operations. In addition, the MEP is bind to an
> operation and the MessageReceiver is the one who is driving the MEP. So I
> think we have let each operation to have its own message receiver.> >>
> >thoughts ??> >> >Thanks,> >> >Jaliya> >> >> >> >> >> >> >> Hi Chathura,>
> > IMHO, there may not be a use case similar to what you have mentioned.>
> There may be a case for one MEP to use the same transport or different>
> transports, but not between MEPs> > Thanks,> > Jaliya>




Re: [Axis2] Deploying MessageReceivers per Operation

Posted by Srinath Perera <he...@gmail.com>.
Yes in theory AFAIK MessageReceiver per Operation (MEP) make sense. It
make writing a Web Service bit complex. But as users are reusing the 
in built MessageReceiver I think that is ok. So Deepal shall we move
the messageReceiver attribute to the Opeartion level rather than at
the service level?

Thanks
Srinath

On 4/26/05, Jaliya Ekanayake <ja...@opensource.lk> wrote:
> Chathura Herath wrote:
> 
> >Hi Jaliya, Deepal, all
> >
> >Its exactly my point, the MessgeReceiver is per MEP not per operation as the heading of this thread implies(nor its per service). MEP is a real pain and there is an unprecedented need for properly handling it.
> >
> >You are right about there is a need of a MessageReciever per given MEP and the fact that given service can have operations with different MEP can be resolved making sure we select the right receiver in the Dispatch phase. Anyway we are doing it now but apparently we have only the IN_OUT MEP Receiver and infact we are in the process of writing a general framework for MEPs. I.e. Proper figuring out of MEP aware receives and MEP aware MEPContexts.
> >So we are converging I think....
> >
> >Btw any thought of my use case stated in the earlier mail. Restating.. If both the ping operation and the echo operation requires to use the same transport (e.g. HTTP would be a likely) due to some external constraint like RM, we ll have to get the engine to reuse same transport for two or more different MEP.
> >
> >Is this a valid use case??
> >
> >Comments??
> >
> >Thanks,
> >Chathura
> >
> >________________________________________
> >From: Jaliya Ekanayake [mailto:jaliya@opensource.lk]
> >Sent: Thursday, April 21, 2005 5:22 PM
> >To: axis-dev@ws.apache.org
> >Subject: RE: [Axis2] Deploying MessageReceivers per Operation
> >
> >Hi Chathura, Deepal and All,
> >
> >I would like to pay your attention to the following class.
> >
> >public class MyService {
> >    public void ping(String pingStr){
> >        //Ping implementation
> >    }
> >
> >    public String echo(String echoStr){
> >       //Echo String implementatino
> >        return echoStr;
> >    }
> >}
> >
> >Now if we need to deploy this as a web service containing two operations (one with IN-ONLY MEP and the other with IN-OUT MEP) we are in trouble if we just allow the user to mention one message receiver per service.
> >
> >Further, I am referring to the following lines( in the Axis 1.2 JavaProvider)
> >
> >--------------------------------
> >
> >if (operation != null &&   operation.getMep() == OperationType.ONE_WAY) {
> >                msgContext.setResponseMessage(null);
> >            } else {
> >                Message        resMsg  = msgContext.getResponseMessage();
> >
> >-------------------------------
> >
> >Now in our MessageReceiver we don't need to check the operation type, since we have some special MEP aware MessageReceivers. Only problem is that we may have many operations in one service with different MEPs
> >
> >Comments?
> >
> >Thanks,
> >
> >Jaliya
> >
> >
> >________________________________________
> >From: Chathura Herath [mailto:chathura@opensource.lk]
> >Sent: Thursday, April 21, 2005 2:48 PM
> >To: axis-dev@ws.apache.org
> >Subject: RE: [Axis2] Deploying MessageReceivers per Operation
> >
> >Hi Jaliya, Deepal, all
> >
> >I think we haven't looked at the problem in the correct angle. MEP and Operation have a one to many relation ship so it will not be right to say we let each operation have its own message receiver, neither it is correct to say we should have a message receivers per service because the MEP is defined per operation.
> >
> >Many Operation �� use�� One MEP
> >
> >The problem that jaliya has pointed out is very valid and believe we need to give proper attention. But we have missed out one salient point here. The original MEP was an IN_ONLY MEP but since the operation requires secure conversation the security module need to send out a message  and get a message back.
> >The point in that in this case the security module has created a new MEP(OUT_IN if you consider this EPR to be a server or it's the client side of the IN_OUT MEP ) which is orthogonal to the original MEP IN_ONLY. Further more now the endpoint has two parallel MEP's running
> >1) Original IN_ONLY MEP :- This will have a receiver �C a InOnlyReceiver
> >2) OUT_IN MEP created by the security module :- This will have its own receiver. (Like a normal client)
> >
> >Now I believe there are no misunderstanding of having MessageReceivers because above two message receivers will be provided and this operation and the security module can use them. And any other service who has IN_ONLY MEP can use the above message receiver. Am I right?
> >
> >Complications come when you want to use the same transport to get everything done. That we have to figure out a way to get the engine to reuse our old same transport.
> >
> >Comments?
> >
> >Cheers
> >Chathura
> >
> >
> >________________________________________
> >From: Deepal Jayasinghe [mailto:deepal@opensource.lk]
> >Sent: Thursday, April 21, 2005 10:30 AM
> >To: axis-dev@ws.apache.org
> >Subject: Re: [Axis2] Deploying MessageReceivers per Operation
> >
> >Hi Jaliya;
> >
> >I think we can handle operation basic receivers inside Message receiver , that is because when some one implement a service he has to write a MessageReciver for his service  , so inside the messagereciver he can write all the logic he needs to handle operation basis reciever , that is inside messagereciver.recive() he can implement those logic.
> >
> >as an example
> >
> >MyReciver extends MessageReciver {
> >
> > public void recieve(MessageContext context){
> >    MyOperationReciever myop = new MyOperationReciever();
> >    myop.recieve(context);
> >  }
> >}
> >
> >
> >so if we do that in this way I think we do not need to define per operation basis receivers.
> >
> >Comments ....
> >
> >Deepal
> >
> >Hi All,
> >
> >According the current implementation of Axis2, when we deploy a service, we can specify one MessageReceiver (InOnlyMessageReceiver, InOutMessageReceiver etc..) per service. According to my understanding we should let the user to register one MessageReceiver per operation basis. Possible example would be as follows.
> >
> >We have a web service with IN-ONLY operation. However we need to let the service to implement the RequestSecurityToken operation according to the WS-SecCon. This operation is an IN-OUT operation. In this situation we have to register two message receivers to these two operations. In addition, the MEP is bind to an operation and the MessageReceiver is the one who is driving the MEP. So I think we have let each operation to have its own message receiver.
> >
> >thoughts ??
> >
> >Thanks,
> >
> >Jaliya
> >
> >
> >
> >
> >
> >
> >
> Hi Chathura,
> 
> IMHO, there may not be a use case similar to what you have mentioned.
> There may be a case for one MEP to use the same transport or different
> transports, but not between MEPs
> 
> Thanks,
> 
> Jaliya
>

Re: [Axis2] Deploying MessageReceivers per Operation

Posted by Jaliya Ekanayake <ja...@opensource.lk>.
Chathura Herath wrote:

>Hi Jaliya, Deepal, all
>
>Its exactly my point, the MessgeReceiver is per MEP not per operation as the heading of this thread implies(nor its per service). MEP is a real pain and there is an unprecedented need for properly handling it. 
>
>You are right about there is a need of a MessageReciever per given MEP and the fact that given service can have operations with different MEP can be resolved making sure we select the right receiver in the Dispatch phase. Anyway we are doing it now but apparently we have only the IN_OUT MEP Receiver and infact we are in the process of writing a general framework for MEPs. I.e. Proper figuring out of MEP aware receives and MEP aware MEPContexts.
>So we are converging I think....
>
>Btw any thought of my use case stated in the earlier mail. Restating.. If both the ping operation and the echo operation requires to use the same transport (e.g. HTTP would be a likely) due to some external constraint like RM, we ll have to get the engine to reuse same transport for two or more different MEP.
>
>Is this a valid use case??
>
>Comments??
>
>Thanks,
>Chathura
>
>________________________________________
>From: Jaliya Ekanayake [mailto:jaliya@opensource.lk] 
>Sent: Thursday, April 21, 2005 5:22 PM
>To: axis-dev@ws.apache.org
>Subject: RE: [Axis2] Deploying MessageReceivers per Operation
>
>Hi Chathura, Deepal and All,
>
>I would like to pay your attention to the following class.
>
>public class MyService {
>    public void ping(String pingStr){
>        //Ping implementation
>    }
>    
>    public String echo(String echoStr){
>       //Echo String implementatino
>        return echoStr;
>    }
>}
>
>Now if we need to deploy this as a web service containing two operations (one with IN-ONLY MEP and the other with IN-OUT MEP) we are in trouble if we just allow the user to mention one message receiver per service.
>
>Further, I am referring to the following lines( in the Axis 1.2 JavaProvider)
>
>--------------------------------
>
>if (operation != null &&   operation.getMep() == OperationType.ONE_WAY) {
>                msgContext.setResponseMessage(null);
>            } else {
>                Message        resMsg  = msgContext.getResponseMessage();
>
>------------------------------- 
>
>Now in our MessageReceiver we don’t need to check the operation type, since we have some special MEP aware MessageReceivers. Only problem is that we may have many operations in one service with different MEPs
>
>Comments?
>
>Thanks,
>
>Jaliya
>
>
>________________________________________
>From: Chathura Herath [mailto:chathura@opensource.lk] 
>Sent: Thursday, April 21, 2005 2:48 PM
>To: axis-dev@ws.apache.org
>Subject: RE: [Axis2] Deploying MessageReceivers per Operation
>
>Hi Jaliya, Deepal, all
>
>I think we haven’t looked at the problem in the correct angle. MEP and Operation have a one to many relation ship so it will not be right to say we let each operation have its own message receiver, neither it is correct to say we should have a message receivers per service because the MEP is defined per operation.
>
>Many Operation → use→ One MEP
>
>The problem that jaliya has pointed out is very valid and believe we need to give proper attention. But we have missed out one salient point here. The original MEP was an IN_ONLY MEP but since the operation requires secure conversation the security module need to send out a message  and get a message back.
>The point in that in this case the security module has created a new MEP(OUT_IN if you consider this EPR to be a server or it’s the client side of the IN_OUT MEP ) which is orthogonal to the original MEP IN_ONLY. Further more now the endpoint has two parallel MEP’s running 
>1) Original IN_ONLY MEP :- This will have a receiver – a InOnlyReceiver
>2) OUT_IN MEP created by the security module :- This will have its own receiver. (Like a normal client)
>
>Now I believe there are no misunderstanding of having MessageReceivers because above two message receivers will be provided and this operation and the security module can use them. And any other service who has IN_ONLY MEP can use the above message receiver. Am I right?
>
>Complications come when you want to use the same transport to get everything done. That we have to figure out a way to get the engine to reuse our old same transport. 
>
>Comments?
>
>Cheers
>Chathura
>
>
>________________________________________
>From: Deepal Jayasinghe [mailto:deepal@opensource.lk] 
>Sent: Thursday, April 21, 2005 10:30 AM
>To: axis-dev@ws.apache.org
>Subject: Re: [Axis2] Deploying MessageReceivers per Operation
>
>Hi Jaliya;
> 
>I think we can handle operation basic receivers inside Message receiver , that is because when some one implement a service he has to write a MessageReciver for his service  , so inside the messagereciver he can write all the logic he needs to handle operation basis reciever , that is inside messagereciver.recive() he can implement those logic.
> 
>as an example
> 
>MyReciver extends MessageReciver {
> 
> public void recieve(MessageContext context){
>    MyOperationReciever myop = new MyOperationReciever();
>    myop.recieve(context);
>  } 
>}
> 
> 
>so if we do that in this way I think we do not need to define per operation basis receivers. 
> 
>Comments ....  
> 
>Deepal
>
>Hi All,
>
>According the current implementation of Axis2, when we deploy a service, we can specify one MessageReceiver (InOnlyMessageReceiver, InOutMessageReceiver etc..) per service. According to my understanding we should let the user to register one MessageReceiver per operation basis. Possible example would be as follows.
>
>We have a web service with IN-ONLY operation. However we need to let the service to implement the RequestSecurityToken operation according to the WS-SecCon. This operation is an IN-OUT operation. In this situation we have to register two message receivers to these two operations. In addition, the MEP is bind to an operation and the MessageReceiver is the one who is driving the MEP. So I think we have let each operation to have its own message receiver. 
>
>thoughts ??
>
>Thanks,
>
>Jaliya
>
>
>
>
>
>  
>
Hi Chathura,

IMHO, there may not be a use case similar to what you have mentioned. 
There may be a case for one MEP to use the same transport or different 
transports, but not between MEPs

Thanks,

Jaliya

RE: [Axis2] Deploying MessageReceivers per Operation

Posted by Chathura Herath <ch...@opensource.lk>.
Hi Jaliya, Deepal, all

Its exactly my point, the MessgeReceiver is per MEP not per operation as the heading of this thread implies(nor its per service). MEP is a real pain and there is an unprecedented need for properly handling it. 

You are right about there is a need of a MessageReciever per given MEP and the fact that given service can have operations with different MEP can be resolved making sure we select the right receiver in the Dispatch phase. Anyway we are doing it now but apparently we have only the IN_OUT MEP Receiver and infact we are in the process of writing a general framework for MEPs. I.e. Proper figuring out of MEP aware receives and MEP aware MEPContexts.
So we are converging I think....

Btw any thought of my use case stated in the earlier mail. Restating.. If both the ping operation and the echo operation requires to use the same transport (e.g. HTTP would be a likely) due to some external constraint like RM, we ll have to get the engine to reuse same transport for two or more different MEP.

Is this a valid use case??

Comments??

Thanks,
Chathura

________________________________________
From: Jaliya Ekanayake [mailto:jaliya@opensource.lk] 
Sent: Thursday, April 21, 2005 5:22 PM
To: axis-dev@ws.apache.org
Subject: RE: [Axis2] Deploying MessageReceivers per Operation

Hi Chathura, Deepal and All,

I would like to pay your attention to the following class.

public class MyService {
    public void ping(String pingStr){
        //Ping implementation
    }
    
    public String echo(String echoStr){
       //Echo String implementatino
        return echoStr;
    }
}

Now if we need to deploy this as a web service containing two operations (one with IN-ONLY MEP and the other with IN-OUT MEP) we are in trouble if we just allow the user to mention one message receiver per service.

Further, I am referring to the following lines( in the Axis 1.2 JavaProvider)

--------------------------------

if (operation != null &&   operation.getMep() == OperationType.ONE_WAY) {
                msgContext.setResponseMessage(null);
            } else {
                Message        resMsg  = msgContext.getResponseMessage();

------------------------------- 

Now in our MessageReceiver we don’t need to check the operation type, since we have some special MEP aware MessageReceivers. Only problem is that we may have many operations in one service with different MEPs

Comments?

Thanks,

Jaliya


________________________________________
From: Chathura Herath [mailto:chathura@opensource.lk] 
Sent: Thursday, April 21, 2005 2:48 PM
To: axis-dev@ws.apache.org
Subject: RE: [Axis2] Deploying MessageReceivers per Operation

Hi Jaliya, Deepal, all

I think we haven’t looked at the problem in the correct angle. MEP and Operation have a one to many relation ship so it will not be right to say we let each operation have its own message receiver, neither it is correct to say we should have a message receivers per service because the MEP is defined per operation.

Many Operation → use→ One MEP

The problem that jaliya has pointed out is very valid and believe we need to give proper attention. But we have missed out one salient point here. The original MEP was an IN_ONLY MEP but since the operation requires secure conversation the security module need to send out a message  and get a message back.
The point in that in this case the security module has created a new MEP(OUT_IN if you consider this EPR to be a server or it’s the client side of the IN_OUT MEP ) which is orthogonal to the original MEP IN_ONLY. Further more now the endpoint has two parallel MEP’s running 
1) Original IN_ONLY MEP :- This will have a receiver – a InOnlyReceiver
2) OUT_IN MEP created by the security module :- This will have its own receiver. (Like a normal client)

Now I believe there are no misunderstanding of having MessageReceivers because above two message receivers will be provided and this operation and the security module can use them. And any other service who has IN_ONLY MEP can use the above message receiver. Am I right?

Complications come when you want to use the same transport to get everything done. That we have to figure out a way to get the engine to reuse our old same transport. 

Comments?

Cheers
Chathura


________________________________________
From: Deepal Jayasinghe [mailto:deepal@opensource.lk] 
Sent: Thursday, April 21, 2005 10:30 AM
To: axis-dev@ws.apache.org
Subject: Re: [Axis2] Deploying MessageReceivers per Operation

Hi Jaliya;
 
I think we can handle operation basic receivers inside Message receiver , that is because when some one implement a service he has to write a MessageReciver for his service  , so inside the messagereciver he can write all the logic he needs to handle operation basis reciever , that is inside messagereciver.recive() he can implement those logic.
 
as an example
 
MyReciver extends MessageReciver {
 
 public void recieve(MessageContext context){
    MyOperationReciever myop = new MyOperationReciever();
    myop.recieve(context);
  } 
}
 
 
so if we do that in this way I think we do not need to define per operation basis receivers. 
 
Comments ....  
 
Deepal

Hi All,

According the current implementation of Axis2, when we deploy a service, we can specify one MessageReceiver (InOnlyMessageReceiver, InOutMessageReceiver etc..) per service. According to my understanding we should let the user to register one MessageReceiver per operation basis. Possible example would be as follows.

We have a web service with IN-ONLY operation. However we need to let the service to implement the RequestSecurityToken operation according to the WS-SecCon. This operation is an IN-OUT operation. In this situation we have to register two message receivers to these two operations. In addition, the MEP is bind to an operation and the MessageReceiver is the one who is driving the MEP. So I think we have let each operation to have its own message receiver. 

thoughts ??

Thanks,

Jaliya



RE: [Axis2] Deploying MessageReceivers per Operation

Posted by Jaliya Ekanayake <ja...@opensource.lk>.
Hi Chathura, Deepal and All,
 
I would like to pay your attention to the following class.
 
public class MyService {
    public void ping(String pingStr){
        //Ping implementation
    }
    
    public String echo(String echoStr){
       //Echo String implementatino
        return echoStr;
    }
}
 
Now if we need to deploy this as a web service containing two operations
(one with IN-ONLY MEP and the other with IN-OUT MEP) we are in trouble if we
just allow the user to mention one message receiver per service.
 
Further, I am referring to the following lines( in the Axis 1.2
JavaProvider)
 
--------------------------------
 
if (operation != null &&   operation.getMep() == OperationType.ONE_WAY) {
                msgContext.setResponseMessage(null);
            } else {
                Message        resMsg  = msgContext.getResponseMessage();
 
------------------------------- 
 
Now in our MessageReceiver we don't need to check the operation type, since
we have some special MEP aware MessageReceivers. Only problem is that we may
have many operations in one service with different MEPs
 
Comments?
 
Thanks,
 
Jaliya
 
 
  _____  

From: Chathura Herath [mailto:chathura@opensource.lk] 
Sent: Thursday, April 21, 2005 2:48 PM
To: axis-dev@ws.apache.org
Subject: RE: [Axis2] Deploying MessageReceivers per Operation
 
Hi Jaliya, Deepal, all
 
I think we haven't looked at the problem in the correct angle. MEP and
Operation have a one to many relation ship so it will not be right to say we
let each operation have its own message receiver, neither it is correct to
say we should have a message receivers per service because the MEP is
defined per operation.
 
Many Operation --> use--> One MEP
 
The problem that jaliya has pointed out is very valid and believe we need to
give proper attention. But we have missed out one salient point here. The
original MEP was an IN_ONLY MEP but since the operation requires secure
conversation the security module need to send out a message  and get a
message back.
The point in that in this case the security module has created a new
MEP(OUT_IN if you consider this EPR to be a server or it's the client side
of the IN_OUT MEP ) which is orthogonal to the original MEP IN_ONLY. Further
more now the endpoint has two parallel MEP's running 
1)       Original IN_ONLY MEP :- This will have a receiver - a
InOnlyReceiver
2)       OUT_IN MEP created by the security module :- This will have its own
receiver. (Like a normal client)
 
Now I believe there are no misunderstanding of having MessageReceivers
because above two message receivers will be provided and this operation and
the security module can use them. And any other service who has IN_ONLY MEP
can use the above message receiver. Am I right?
 
Complications come when you want to use the same transport to get everything
done. That we have to figure out a way to get the engine to reuse our old
same transport. 
 
Comments?
 
Cheers
Chathura
 
 
  _____  

From: Deepal Jayasinghe [mailto:deepal@opensource.lk] 
Sent: Thursday, April 21, 2005 10:30 AM
To: axis-dev@ws.apache.org
Subject: Re: [Axis2] Deploying MessageReceivers per Operation
 
Hi Jaliya;
 
I think we can handle operation basic receivers inside Message receiver ,
that is because when some one implement a service he has to write a
MessageReciver for his service  , so inside the messagereciver he can write
all the logic he needs to handle operation basis reciever , that is inside
messagereciver.recive() he can implement those logic.
 
as an example
 
MyReciver extends MessageReciver {
 
 public void recieve(MessageContext context){
    MyOperationReciever myop = new MyOperationReciever();
    myop.recieve(context);
  } 
}
 
 
so if we do that in this way I think we do not need to define per operation
basis receivers. 
 
Comments ....  
 
Deepal
 
Hi All,
 
According the current implementation of Axis2, when we deploy a service, we
can specify one MessageReceiver (InOnlyMessageReceiver, InOutMessageReceiver
etc..) per service. According to my understanding we should let the user to
register one MessageReceiver per operation basis. Possible example would be
as follows.
 
We have a web service with IN-ONLY operation. However we need to let the
service to implement the RequestSecurityToken operation according to the
WS-SecCon. This operation is an IN-OUT operation. In this situation we have
to register two message receivers to these two operations. In addition, the
MEP is bind to an operation and the MessageReceiver is the one who is
driving the MEP. So I think we have let each operation to have its own
message receiver. 
 
thoughts ??
 
Thanks,
 
Jaliya

RE: [Axis2] Deploying MessageReceivers per Operation

Posted by Chathura Herath <ch...@opensource.lk>.
Hi Jaliya, Deepal, all

 

I think we haven't looked at the problem in the correct angle. MEP and
Operation have a one to many relation ship so it will not be right to say we
let each operation have its own message receiver, neither it is correct to
say we should have a message receivers per service because the MEP is
defined per operation.

 

Many Operation --> use--> One MEP

 

The problem that jaliya has pointed out is very valid and believe we need to
give proper attention. But we have missed out one salient point here. The
original MEP was an IN_ONLY MEP but since the operation requires secure
conversation the security module need to send out a message  and get a
message back.

The point in that in this case the security module has created a new
MEP(OUT_IN if you consider this EPR to be a server or it's the client side
of the IN_OUT MEP ) which is orthogonal to the original MEP IN_ONLY. Further
more now the endpoint has two parallel MEP's running 

1)       Original IN_ONLY MEP :- This will have a receiver - a
InOnlyReceiver

2)       OUT_IN MEP created by the security module :- This will have its own
receiver. (Like a normal client)

 

Now I believe there are no misunderstanding of having MessageReceivers
because above two message receivers will be provided and this operation and
the security module can use them. And any other service who has IN_ONLY MEP
can use the above message receiver. Am I right?

 

Complications come when you want to use the same transport to get everything
done. That we have to figure out a way to get the engine to reuse our old
same transport. 

 

Comments?

 

Cheers

Chathura

 

 

  _____  

From: Deepal Jayasinghe [mailto:deepal@opensource.lk] 
Sent: Thursday, April 21, 2005 10:30 AM
To: axis-dev@ws.apache.org
Subject: Re: [Axis2] Deploying MessageReceivers per Operation

 

Hi Jaliya;

 

I think we can handle operation basic receivers inside Message receiver ,
that is because when some one implement a service he has to write a
MessageReciver for his service  , so inside the messagereciver he can write
all the logic he needs to handle operation basis reciever , that is inside
messagereciver.recive() he can implement those logic.

 

as an example

 

MyReciver extends MessageReciver {

 

 public void recieve(MessageContext context){

    MyOperationReciever myop = new MyOperationReciever();

    myop.recieve(context);

  } 

}

 

 

so if we do that in this way I think we do not need to define per operation
basis receivers. 

 

Comments ....  

 

Deepal

 

Hi All,

 

According the current implementation of Axis2, when we deploy a service, we
can specify one MessageReceiver (InOnlyMessageReceiver, InOutMessageReceiver
etc..) per service. According to my understanding we should let the user to
register one MessageReceiver per operation basis. Possible example would be
as follows.

 

We have a web service with IN-ONLY operation. However we need to let the
service to implement the RequestSecurityToken operation according to the
WS-SecCon. This operation is an IN-OUT operation. In this situation we have
to register two message receivers to these two operations. In addition, the
MEP is bind to an operation and the MessageReceiver is the one who is
driving the MEP. So I think we have let each operation to have its own
message receiver. 

 

thoughts ??

 

Thanks,

 

Jaliya


Re: [Axis2] Deploying MessageReceivers per Operation

Posted by Deepal Jayasinghe <de...@opensource.lk>.
Hi Jaliya;

I think we can handle operation basic receivers inside Message receiver , that is because when some one implement a service he has to write a MessageReciver for his service  , so inside the messagereciver he can write all the logic he needs to handle operation basis reciever , that is inside messagereciver.recive() he can implement those logic.

as an example
 
MyReciver extends MessageReciver {

 public void recieve(MessageContext context){
    MyOperationReciever myop = new MyOperationReciever();
    myop.recieve(context);
  } 
}


so if we do that in this way I think we do not need to define per operation basis receivers. 

Comments ....  

Deepal


  Hi All,

   

  According the current implementation of Axis2, when we deploy a service, we can specify one MessageReceiver (InOnlyMessageReceiver, InOutMessageReceiver etc..) per service. According to my understanding we should let the user to register one MessageReceiver per operation basis. Possible example would be as follows.

   

  We have a web service with IN-ONLY operation. However we need to let the service to implement the RequestSecurityToken operation according to the WS-SecCon. This operation is an IN-OUT operation. In this situation we have to register two message receivers to these two operations. In addition, the MEP is bind to an operation and the MessageReceiver is the one who is driving the MEP. So I think we have let each operation to have its own message receiver. 

   

  thoughts ??

   

  Thanks,

   

  Jaliya