You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by Thomas McKiernan <MC...@uk.ibm.com> on 2006/08/21 17:30:22 UTC

use transportOutProtocol to setup async listeners

Hi guys,
Using JAX-WS to invoke Sandesha, I get the following problem for a sync 
two-way invoke:

org.apache.sandesha2.SandeshaException: cannot start async listener 
transportInProtocol=null
        at 
org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded(SequenceManager.java:355)
        at 
org.apache.sandesha2.util.SequenceManager.setupNewClientSequence(SequenceManager.java:323)
        at 
org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage(ApplicationMsgProcessor.java:634)
        at 
org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(SandeshaOutHandler.java:131)
        at org.apache.axis2.engine.Phase.invoke(Phase.java:380)
        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638)
        at 
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:357)
        at 
org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:288)
        at 
org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(AxisInvocationController.java:146)
        at 
org.apache.axis2.jaxws.client.BaseDispatch.invoke(BaseDispatch.java:123)
        at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61)
        at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133)

Looking at it, the transportInProtocol is not being set and the code is 
deciding to listen for async acks / cntrl msgs.
The question is whether it is reasonable for Sandesha to expect 
JAX-WS/Axis2 to have set this field in this situation.
As I understand it, this is only currently done in JAX-WS/Axis2 levels if 
the client knows that it requires an asyncListener.
But in this case this is not known until it reaches Sandesha - so far as 
the client is concerned this is just a sync two way call. It is only, I 
think, because the create sequence flow is required that this is not the 
case.

Therefore could Sandesha change to use the TransportOut (which I believe 
is always set) in the case when the TransportInProtocol is not set?

Many thanks,
Thomas


----------------------------------
Thomas McKiernan

WebSphere Messaging Development,
IBM United Kingdom Limited

Internal Phone: 248241 
External Phone: +44 (0)1962 818241
Mobile: +44 (0)789 1737497
Email: MCKIERNA@uk.ibm.com

Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21 
2JN


Caminante, no hay camino 
Se hace camino al andar.
("Walker, there is no path; the path is made by walking.")  Antonio 
Machado

Re: use transportOutProtocol to setup async listeners

Posted by Chamikara Jayalath <ch...@gmail.com>.
Hi Thomas,



>
> > Ok, so as I understand it, this currently works today i.e. without
> > polling, provided that the transportIn etc is setup.
> > I agree that Sandesha needs to setup an async listener for an
> > addressable acksTo. However, is it necessarily right that the client or
> > jaxWS layer should know that, by setting an acksTo, it also has to set up a
> > transportInProtocol, in order for this async listener to be set up? It seems
> > to me that some implementation detail of sandesha is that an async listener
> > is used to receive response messages during an addressable synchronous flow.
> > It seems therefore that it would be good to shield the jaxWS layer from this
> > implementationd detail. What would be the effect of using transportOut
> > details to setup the transportIn in the case of one not having been set?
> >
>
> OK. This seems to be a valid requirement. I'll do this change. Thaks for
> pointing it out
>


Done.

Chamikara

Re: use transportOutProtocol to setup async listeners

Posted by Chamikara Jayalath <ch...@gmail.com>.
Hi Jaliya,

On 8/22/06, Jaliya Ekanayake <jn...@gmail.com> wrote:
>
>  Hi All,
>
> Few thoughts inline.
>
> -Jaliya
>
> ----- Original Message -----
> *From:* Chamikara Jayalath <ch...@gmail.com>
> *To:* Thomas McKiernan <MC...@uk.ibm.com>
> *Cc:* sandesha-dev@ws.apache.org
> *Sent:* Tuesday, August 22, 2006 6:53 AM
> *Subject:* Re: use transportOutProtocol to setup async listeners
>
> Hi Thomas,
>
> See my comments below.
>
> On 8/22/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:
>
> >
> > Hi Chamikara,
> > Thanks for your response - I've asked some questions/made some comments
> > in blue.
> >
> >
> > This restriction was added considering the WSRM 1.0 spec where it was
> > not possible to get sync Application responses in a RM sequences.
> >
>
>  Ok, I think I understand. Therefore when polling is introduced, is it
> > correct to say that sync 2-way with an anonymous acksTo will work and an
> > async listener/transportIn etc will not be required for that particular
> > flow?
> >
>
>
> yes
>
>
>  Still I belive we should start the listner if the client sets an Async
> > acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
> > to be set. Hope this is ok for the JAX-WS case.
> >
>
>
>
> > Ok, so as I understand it, this currently works today i.e. without
> > polling, provided that the transportIn etc is setup.
> > I agree that Sandesha needs to setup an async listener for an
> > addressable acksTo. However, is it necessarily right that the client or
> > jaxWS layer should know that, by setting an acksTo, it also has to set up a
> > transportInProtocol, in order for this async listener to be set up? It seems
> > to me that some implementation detail of sandesha is that an async listener
> > is used to receive response messages during an addressable synchronous flow.
> > It seems therefore that it would be good to shield the jaxWS layer from this
> > implementationd detail. What would be the effect of using transportOut
> > details to setup the transportIn in the case of one not having been set?
> >
>
> OK. This seems to be a valid requirement. I'll do this change. Thaks for
> pointing it out
>
> This is ok but we need to make sure that we have a very clear way to get
> things done. So jaxWS does not need different transports by any chance?
>
>
What Thomas is talking abt is the case where the user has not set any
incoming transport. If he want he can set the transportInProtocol which will
be picked by Sandesha (and Axis2).

Chamikara





>
> >
> >
> >
> > ----------------------------------
> > Thomas McKiernan
> >
> > WebSphere Messaging Development,
> > IBM United Kingdom Limited
> >
> > Internal Phone: 248241
> > External Phone: +44 (0)1962 818241
> > Mobile: +44 (0)789 1737497
> > Email: MCKIERNA@uk.ibm.com
> >
> > Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> > 2JN
> >
> >
> > Caminante, no hay camino
> > Se hace camino al andar.
> > ("Walker, there is no path; the path is made by walking.")  Antonio
> > Machado
> >
> >
> >   *"Chamikara Jayalath" <ch...@gmail.com>*
> >
> > 22/08/2006 06:23
> >    To
> > Thomas McKiernan/UK/IBM@IBMGB  cc
> > sandesha-dev@ws.apache.org  Subject
> > Re: use transportOutProtocol to setup async listeners
> >
> >
> >
> >
> >
> >
> > Hi Thomas,
> >
> > This restriction was added considering the WSRM 1.0 spec where it was
> > not possible to get sync Application responses in a RM sequences. So setting
> > transport In protocol was a must if you need to get response messages.
> >
> > But due to Message Polling introduced in the new spec it is possible to
> > get reliable response messages without an endpoint in the client side. So i
> > guess we should remove this restriction.
> > (Message Polling is not implemented yet, but hope to do this in next
> > couple of weeks)
> >
> > Still I belive we should start the listner if the client sets an Async
> > acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
> > to be set. Hope this is ok for the JAX-WS case.
> >
> > Chamikara
> >
> >
> > On 8/21/06, *Thomas McKiernan* <*MCKIERNA@uk.ibm.com *<MC...@uk.ibm.com>>
> > wrote:
> >
> > Hi guys,
> > Using JAX-WS to invoke Sandesha, I get the following problem for a sync
> > two-way invoke:
> >
> > org.apache.sandesha2.SandeshaException: cannot start async listener
> > transportInProtocol=null
> >        at
> > org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded
> > (SequenceManager.java:355)
> >        at
> > org.apache.sandesha2.util.SequenceManager.setupNewClientSequence(
> > SequenceManager.java:323)
> >        at
> > org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage
> > (ApplicationMsgProcessor.java:634)
> >        at org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(
> > SandeshaOutHandler.java:131)
> >        at org.apache.axis2.engine.Phase.invoke(Phase.java:380)
> >        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528)
> >        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638)
> >        at org.apache.axis2.description.OutInAxisOperationClient.send(
> > OutInAxisOperation.java:357)
> >        at org.apache.axis2.description.OutInAxisOperationClient.execute(
> > OutInAxisOperation.java:288)
> >        at
> > org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(
> > AxisInvocationController.java:146)
> >        at org.apache.axis2.jaxws.client.BaseDispatch.invoke(
> > BaseDispatch.java:123)
> >        at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61)
> >        at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133)
> >
> > Looking at it, the transportInProtocol is not being set and the code is
> > deciding to listen for async acks / cntrl msgs.
> > The question is whether it is reasonable for Sandesha to expect
> > JAX-WS/Axis2 to have set this field in this situation.
> > As I understand it, this is only currently done in JAX-WS/Axis2 levels
> > if the client knows that it requires an asyncListener.
> > But in this case this is not known until it reaches Sandesha - so far as
> > the client is concerned this is just a sync two way call. It is only, I
> > think, because the create sequence flow is required that this is not the
> > case.
> >
> > Therefore could Sandesha change to use the TransportOut (which I believe
> > is always set) in the case when the TransportInProtocol is not set?
> >
> > Many thanks,
> > Thomas
> >
> >
> > ----------------------------------
> > Thomas McKiernan
> >
> > WebSphere Messaging Development,
> > IBM United Kingdom Limited
> >
> > Internal Phone: 248241
> > External Phone: +44 (0)1962 818241
> > Mobile: +44 (0)789 1737497
> > Email: *MCKIERNA@uk.ibm.com* <MC...@uk.ibm.com>
> >
> > Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> > 2JN
> >
> >
> > Caminante, no hay camino
> > Se hace camino al andar.
> > ("Walker, there is no path; the path is made by walking.")  Antonio
> > Machado
> >
> >
>

Re: use transportOutProtocol to setup async listeners

Posted by Chamikara Jayalath <ch...@gmail.com>.
Hi Jaliya,

On 8/22/06, Jaliya Ekanayake <jn...@gmail.com> wrote:
>
>  Hi All,
>
> Few thoughts inline.
>
> -Jaliya
>
> ----- Original Message -----
> *From:* Chamikara Jayalath <ch...@gmail.com>
> *To:* Thomas McKiernan <MC...@uk.ibm.com>
> *Cc:* sandesha-dev@ws.apache.org
> *Sent:* Tuesday, August 22, 2006 6:53 AM
> *Subject:* Re: use transportOutProtocol to setup async listeners
>
> Hi Thomas,
>
> See my comments below.
>
> On 8/22/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:
>
> >
> > Hi Chamikara,
> > Thanks for your response - I've asked some questions/made some comments
> > in blue.
> >
> >
> > This restriction was added considering the WSRM 1.0 spec where it was
> > not possible to get sync Application responses in a RM sequences.
> >
>
>  Ok, I think I understand. Therefore when polling is introduced, is it
> > correct to say that sync 2-way with an anonymous acksTo will work and an
> > async listener/transportIn etc will not be required for that particular
> > flow?
> >
>
>
> yes
>
>
>  Still I belive we should start the listner if the client sets an Async
> > acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
> > to be set. Hope this is ok for the JAX-WS case.
> >
>
>
>
> > Ok, so as I understand it, this currently works today i.e. without
> > polling, provided that the transportIn etc is setup.
> > I agree that Sandesha needs to setup an async listener for an
> > addressable acksTo. However, is it necessarily right that the client or
> > jaxWS layer should know that, by setting an acksTo, it also has to set up a
> > transportInProtocol, in order for this async listener to be set up? It seems
> > to me that some implementation detail of sandesha is that an async listener
> > is used to receive response messages during an addressable synchronous flow.
> > It seems therefore that it would be good to shield the jaxWS layer from this
> > implementationd detail. What would be the effect of using transportOut
> > details to setup the transportIn in the case of one not having been set?
> >
>
> OK. This seems to be a valid requirement. I'll do this change. Thaks for
> pointing it out
>
> This is ok but we need to make sure that we have a very clear way to get
> things done. So jaxWS does not need different transports by any chance?
>
>
What Thomas is talking abt is the case where the user has not set any
incoming transport. If he want he can set the transportInProtocol which will
be picked by Sandesha (and Axis2).

Chamikara





>
> >
> >
> >
> > ----------------------------------
> > Thomas McKiernan
> >
> > WebSphere Messaging Development,
> > IBM United Kingdom Limited
> >
> > Internal Phone: 248241
> > External Phone: +44 (0)1962 818241
> > Mobile: +44 (0)789 1737497
> > Email: MCKIERNA@uk.ibm.com
> >
> > Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> > 2JN
> >
> >
> > Caminante, no hay camino
> > Se hace camino al andar.
> > ("Walker, there is no path; the path is made by walking.")  Antonio
> > Machado
> >
> >
> >   *"Chamikara Jayalath" <ch...@gmail.com>*
> >
> > 22/08/2006 06:23
> >    To
> > Thomas McKiernan/UK/IBM@IBMGB  cc
> > sandesha-dev@ws.apache.org  Subject
> > Re: use transportOutProtocol to setup async listeners
> >
> >
> >
> >
> >
> >
> > Hi Thomas,
> >
> > This restriction was added considering the WSRM 1.0 spec where it was
> > not possible to get sync Application responses in a RM sequences. So setting
> > transport In protocol was a must if you need to get response messages.
> >
> > But due to Message Polling introduced in the new spec it is possible to
> > get reliable response messages without an endpoint in the client side. So i
> > guess we should remove this restriction.
> > (Message Polling is not implemented yet, but hope to do this in next
> > couple of weeks)
> >
> > Still I belive we should start the listner if the client sets an Async
> > acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
> > to be set. Hope this is ok for the JAX-WS case.
> >
> > Chamikara
> >
> >
> > On 8/21/06, *Thomas McKiernan* <*MCKIERNA@uk.ibm.com *<MC...@uk.ibm.com>>
> > wrote:
> >
> > Hi guys,
> > Using JAX-WS to invoke Sandesha, I get the following problem for a sync
> > two-way invoke:
> >
> > org.apache.sandesha2.SandeshaException: cannot start async listener
> > transportInProtocol=null
> >        at
> > org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded
> > (SequenceManager.java:355)
> >        at
> > org.apache.sandesha2.util.SequenceManager.setupNewClientSequence(
> > SequenceManager.java:323)
> >        at
> > org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage
> > (ApplicationMsgProcessor.java:634)
> >        at org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(
> > SandeshaOutHandler.java:131)
> >        at org.apache.axis2.engine.Phase.invoke(Phase.java:380)
> >        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528)
> >        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638)
> >        at org.apache.axis2.description.OutInAxisOperationClient.send(
> > OutInAxisOperation.java:357)
> >        at org.apache.axis2.description.OutInAxisOperationClient.execute(
> > OutInAxisOperation.java:288)
> >        at
> > org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(
> > AxisInvocationController.java:146)
> >        at org.apache.axis2.jaxws.client.BaseDispatch.invoke(
> > BaseDispatch.java:123)
> >        at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61)
> >        at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133)
> >
> > Looking at it, the transportInProtocol is not being set and the code is
> > deciding to listen for async acks / cntrl msgs.
> > The question is whether it is reasonable for Sandesha to expect
> > JAX-WS/Axis2 to have set this field in this situation.
> > As I understand it, this is only currently done in JAX-WS/Axis2 levels
> > if the client knows that it requires an asyncListener.
> > But in this case this is not known until it reaches Sandesha - so far as
> > the client is concerned this is just a sync two way call. It is only, I
> > think, because the create sequence flow is required that this is not the
> > case.
> >
> > Therefore could Sandesha change to use the TransportOut (which I believe
> > is always set) in the case when the TransportInProtocol is not set?
> >
> > Many thanks,
> > Thomas
> >
> >
> > ----------------------------------
> > Thomas McKiernan
> >
> > WebSphere Messaging Development,
> > IBM United Kingdom Limited
> >
> > Internal Phone: 248241
> > External Phone: +44 (0)1962 818241
> > Mobile: +44 (0)789 1737497
> > Email: *MCKIERNA@uk.ibm.com* <MC...@uk.ibm.com>
> >
> > Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> > 2JN
> >
> >
> > Caminante, no hay camino
> > Se hace camino al andar.
> > ("Walker, there is no path; the path is made by walking.")  Antonio
> > Machado
> >
> >
>

Re: use transportOutProtocol to setup async listeners

Posted by Jaliya Ekanayake <jn...@gmail.com>.
Hi All,

Few thoughts inline.

-Jaliya
  ----- Original Message ----- 
  From: Chamikara Jayalath 
  To: Thomas McKiernan 
  Cc: sandesha-dev@ws.apache.org 
  Sent: Tuesday, August 22, 2006 6:53 AM
  Subject: Re: use transportOutProtocol to setup async listeners


  Hi Thomas,

  See my comments below.


  On 8/22/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:

    Hi Chamikara, 
    Thanks for your response - I've asked some questions/made some comments in blue. 


    This restriction was added considering the WSRM 1.0 spec where it was not possible to get sync Application responses in a RM sequences.


    Ok, I think I understand. Therefore when polling is introduced, is it correct to say that sync 2-way with an anonymous acksTo will work and an async listener/transportIn etc will not be required for that particular flow?


  yes 




    Still I belive we should start the listner if the client sets an Async acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol to be set. Hope this is ok for the JAX-WS case.

   
    Ok, so as I understand it, this currently works today i.e. without polling, provided that the transportIn etc is setup. 
    I agree that Sandesha needs to setup an async listener for an addressable acksTo. However, is it necessarily right that the client or jaxWS layer should know that, by setting an acksTo, it also has to set up a transportInProtocol, in order for this async listener to be set up? It seems to me that some implementation detail of sandesha is that an async listener is used to receive response messages during an addressable synchronous flow. It seems therefore that it would be good to shield the jaxWS layer from this implementationd detail. What would be the effect of using transportOut details to setup the transportIn in the case of one not having been set? 

  OK. This seems to be a valid requirement. I'll do this change. Thaks for pointing it out

  This is ok but we need to make sure that we have a very clear way to get things done. So jaxWS does not need different transports by any chance?

  Chamikara



    Many thanks 
    Thomas 



    ----------------------------------
    Thomas McKiernan

    WebSphere Messaging Development,
    IBM United Kingdom Limited

    Internal Phone: 248241 
    External Phone: +44 (0)1962 818241
    Mobile: +44 (0)789 1737497
    Email: MCKIERNA@uk.ibm.com

    Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21 2JN


    Caminante, no hay camino 
    Se hace camino al andar.
    ("Walker, there is no path; the path is made by walking.")  Antonio Machado 



          "Chamikara Jayalath" <ch...@gmail.com> 
          22/08/2006 06:23 
         To Thomas McKiernan/UK/IBM@IBMGB  
                cc sandesha-dev@ws.apache.org  
                Subject Re: use transportOutProtocol to setup async listeners 


               
               

         




    Hi Thomas,

    This restriction was added considering the WSRM 1.0 spec where it was not possible to get sync Application responses in a RM sequences. So setting transport In protocol was a must if you need to get response messages. 

    But due to Message Polling introduced in the new spec it is possible to get reliable response messages without an endpoint in the client side. So i guess we should remove this restriction. 
    (Message Polling is not implemented yet, but hope to do this in next couple of weeks) 

    Still I belive we should start the listner if the client sets an Async acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol to be set. Hope this is ok for the JAX-WS case.

    Chamikara


    On 8/21/06, Thomas McKiernan <MCKIERNA@uk.ibm.com > wrote: 

    Hi guys, 
    Using JAX-WS to invoke Sandesha, I get the following problem for a sync two-way invoke: 

    org.apache.sandesha2.SandeshaException: cannot start async listener transportInProtocol=null 
           at org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded(SequenceManager.java:355) 
           at org.apache.sandesha2.util.SequenceManager.setupNewClientSequence(SequenceManager.java:323) 
           at org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage(ApplicationMsgProcessor.java:634) 
           at org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(SandeshaOutHandler.java:131) 
           at org.apache.axis2.engine.Phase.invoke(Phase.java:380) 
           at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528) 
           at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638) 
           at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:357) 
           at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:288) 
           at org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(AxisInvocationController.java:146) 
           at org.apache.axis2.jaxws.client.BaseDispatch.invoke(BaseDispatch.java:123) 
           at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61) 
           at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133) 

    Looking at it, the transportInProtocol is not being set and the code is deciding to listen for async acks / cntrl msgs. 
    The question is whether it is reasonable for Sandesha to expect JAX-WS/Axis2 to have set this field in this situation. 
    As I understand it, this is only currently done in JAX-WS/Axis2 levels if the client knows that it requires an asyncListener. 
    But in this case this is not known until it reaches Sandesha - so far as the client is concerned this is just a sync two way call. It is only, I think, because the create sequence flow is required that this is not the case. 

    Therefore could Sandesha change to use the TransportOut (which I believe is always set) in the case when the TransportInProtocol is not set? 

    Many thanks, 
    Thomas 


    ----------------------------------
    Thomas McKiernan

    WebSphere Messaging Development,
    IBM United Kingdom Limited

    Internal Phone: 248241 
    External Phone: +44 (0)1962 818241
    Mobile: +44 (0)789 1737497
    Email: MCKIERNA@uk.ibm.com 

    Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21 2JN


    Caminante, no hay camino 
    Se hace camino al andar.
    ("Walker, there is no path; the path is made by walking.")  Antonio Machado 




Re: use transportOutProtocol to setup async listeners

Posted by Jaliya Ekanayake <jn...@gmail.com>.
Hi All,

Few thoughts inline.

-Jaliya
  ----- Original Message ----- 
  From: Chamikara Jayalath 
  To: Thomas McKiernan 
  Cc: sandesha-dev@ws.apache.org 
  Sent: Tuesday, August 22, 2006 6:53 AM
  Subject: Re: use transportOutProtocol to setup async listeners


  Hi Thomas,

  See my comments below.


  On 8/22/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:

    Hi Chamikara, 
    Thanks for your response - I've asked some questions/made some comments in blue. 


    This restriction was added considering the WSRM 1.0 spec where it was not possible to get sync Application responses in a RM sequences.


    Ok, I think I understand. Therefore when polling is introduced, is it correct to say that sync 2-way with an anonymous acksTo will work and an async listener/transportIn etc will not be required for that particular flow?


  yes 




    Still I belive we should start the listner if the client sets an Async acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol to be set. Hope this is ok for the JAX-WS case.

   
    Ok, so as I understand it, this currently works today i.e. without polling, provided that the transportIn etc is setup. 
    I agree that Sandesha needs to setup an async listener for an addressable acksTo. However, is it necessarily right that the client or jaxWS layer should know that, by setting an acksTo, it also has to set up a transportInProtocol, in order for this async listener to be set up? It seems to me that some implementation detail of sandesha is that an async listener is used to receive response messages during an addressable synchronous flow. It seems therefore that it would be good to shield the jaxWS layer from this implementationd detail. What would be the effect of using transportOut details to setup the transportIn in the case of one not having been set? 

  OK. This seems to be a valid requirement. I'll do this change. Thaks for pointing it out

  This is ok but we need to make sure that we have a very clear way to get things done. So jaxWS does not need different transports by any chance?

  Chamikara



    Many thanks 
    Thomas 



    ----------------------------------
    Thomas McKiernan

    WebSphere Messaging Development,
    IBM United Kingdom Limited

    Internal Phone: 248241 
    External Phone: +44 (0)1962 818241
    Mobile: +44 (0)789 1737497
    Email: MCKIERNA@uk.ibm.com

    Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21 2JN


    Caminante, no hay camino 
    Se hace camino al andar.
    ("Walker, there is no path; the path is made by walking.")  Antonio Machado 



          "Chamikara Jayalath" <ch...@gmail.com> 
          22/08/2006 06:23 
         To Thomas McKiernan/UK/IBM@IBMGB  
                cc sandesha-dev@ws.apache.org  
                Subject Re: use transportOutProtocol to setup async listeners 


               
               

         




    Hi Thomas,

    This restriction was added considering the WSRM 1.0 spec where it was not possible to get sync Application responses in a RM sequences. So setting transport In protocol was a must if you need to get response messages. 

    But due to Message Polling introduced in the new spec it is possible to get reliable response messages without an endpoint in the client side. So i guess we should remove this restriction. 
    (Message Polling is not implemented yet, but hope to do this in next couple of weeks) 

    Still I belive we should start the listner if the client sets an Async acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol to be set. Hope this is ok for the JAX-WS case.

    Chamikara


    On 8/21/06, Thomas McKiernan <MCKIERNA@uk.ibm.com > wrote: 

    Hi guys, 
    Using JAX-WS to invoke Sandesha, I get the following problem for a sync two-way invoke: 

    org.apache.sandesha2.SandeshaException: cannot start async listener transportInProtocol=null 
           at org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded(SequenceManager.java:355) 
           at org.apache.sandesha2.util.SequenceManager.setupNewClientSequence(SequenceManager.java:323) 
           at org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage(ApplicationMsgProcessor.java:634) 
           at org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(SandeshaOutHandler.java:131) 
           at org.apache.axis2.engine.Phase.invoke(Phase.java:380) 
           at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528) 
           at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638) 
           at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:357) 
           at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:288) 
           at org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(AxisInvocationController.java:146) 
           at org.apache.axis2.jaxws.client.BaseDispatch.invoke(BaseDispatch.java:123) 
           at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61) 
           at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133) 

    Looking at it, the transportInProtocol is not being set and the code is deciding to listen for async acks / cntrl msgs. 
    The question is whether it is reasonable for Sandesha to expect JAX-WS/Axis2 to have set this field in this situation. 
    As I understand it, this is only currently done in JAX-WS/Axis2 levels if the client knows that it requires an asyncListener. 
    But in this case this is not known until it reaches Sandesha - so far as the client is concerned this is just a sync two way call. It is only, I think, because the create sequence flow is required that this is not the case. 

    Therefore could Sandesha change to use the TransportOut (which I believe is always set) in the case when the TransportInProtocol is not set? 

    Many thanks, 
    Thomas 


    ----------------------------------
    Thomas McKiernan

    WebSphere Messaging Development,
    IBM United Kingdom Limited

    Internal Phone: 248241 
    External Phone: +44 (0)1962 818241
    Mobile: +44 (0)789 1737497
    Email: MCKIERNA@uk.ibm.com 

    Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21 2JN


    Caminante, no hay camino 
    Se hace camino al andar.
    ("Walker, there is no path; the path is made by walking.")  Antonio Machado 




Re: use transportOutProtocol to setup async listeners

Posted by Chamikara Jayalath <ch...@gmail.com>.
Hi Thomas,



>
> > Ok, so as I understand it, this currently works today i.e. without
> > polling, provided that the transportIn etc is setup.
> > I agree that Sandesha needs to setup an async listener for an
> > addressable acksTo. However, is it necessarily right that the client or
> > jaxWS layer should know that, by setting an acksTo, it also has to set up a
> > transportInProtocol, in order for this async listener to be set up? It seems
> > to me that some implementation detail of sandesha is that an async listener
> > is used to receive response messages during an addressable synchronous flow.
> > It seems therefore that it would be good to shield the jaxWS layer from this
> > implementationd detail. What would be the effect of using transportOut
> > details to setup the transportIn in the case of one not having been set?
> >
>
> OK. This seems to be a valid requirement. I'll do this change. Thaks for
> pointing it out
>


Done.

Chamikara

Re: use transportOutProtocol to setup async listeners

Posted by Chamikara Jayalath <ch...@gmail.com>.
Hi Thomas,

See my comments below.

On 8/22/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:
>
>
> Hi Chamikara,
> Thanks for your response - I've asked some questions/made some comments in
> blue.
>
>
> This restriction was added considering the WSRM 1.0 spec where it was not
> possible to get sync Application responses in a RM sequences.
>

Ok, I think I understand. Therefore when polling is introduced, is it
> correct to say that sync 2-way with an anonymous acksTo will work and an
> async listener/transportIn etc will not be required for that particular
> flow?
>


yes


Still I belive we should start the listner if the client sets an Async
> acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
> to be set. Hope this is ok for the JAX-WS case.
>



> Ok, so as I understand it, this currently works today i.e. without
> polling, provided that the transportIn etc is setup.
> I agree that Sandesha needs to setup an async listener for an addressable
> acksTo. However, is it necessarily right that the client or jaxWS layer
> should know that, by setting an acksTo, it also has to set up a
> transportInProtocol, in order for this async listener to be set up? It seems
> to me that some implementation detail of sandesha is that an async listener
> is used to receive response messages during an addressable synchronous flow.
> It seems therefore that it would be good to shield the jaxWS layer from this
> implementationd detail. What would be the effect of using transportOut
> details to setup the transportIn in the case of one not having been set?
>

OK. This seems to be a valid requirement. I'll do this change. Thaks for
pointing it out


Chamikara


Many thanks
> Thomas
>
>
>
> ----------------------------------
> Thomas McKiernan
>
> WebSphere Messaging Development,
> IBM United Kingdom Limited
>
> Internal Phone: 248241
> External Phone: +44 (0)1962 818241
> Mobile: +44 (0)789 1737497
> Email: MCKIERNA@uk.ibm.com
>
> Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> 2JN
>
>
> Caminante, no hay camino
> Se hace camino al andar.
> ("Walker, there is no path; the path is made by walking.")  Antonio
> Machado
>
>
>  *"Chamikara Jayalath" <ch...@gmail.com>*
>
> 22/08/2006 06:23
>   To
> Thomas McKiernan/UK/IBM@IBMGB  cc
> sandesha-dev@ws.apache.org  Subject
> Re: use transportOutProtocol to setup async listeners
>
>
>
>
>
>
> Hi Thomas,
>
> This restriction was added considering the WSRM 1.0 spec where it was not
> possible to get sync Application responses in a RM sequences. So setting
> transport In protocol was a must if you need to get response messages.
>
> But due to Message Polling introduced in the new spec it is possible to
> get reliable response messages without an endpoint in the client side. So i
> guess we should remove this restriction.
> (Message Polling is not implemented yet, but hope to do this in next
> couple of weeks)
>
> Still I belive we should start the listner if the client sets an Async
> acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
> to be set. Hope this is ok for the JAX-WS case.
>
> Chamikara
>
>
> On 8/21/06, *Thomas McKiernan* <*M...@uk.ibm.com>>
> wrote:
>
> Hi guys,
> Using JAX-WS to invoke Sandesha, I get the following problem for a sync
> two-way invoke:
>
> org.apache.sandesha2.SandeshaException: cannot start async listener
> transportInProtocol=null
>        at
> org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded(
> SequenceManager.java:355)
>        at org.apache.sandesha2.util.SequenceManager.setupNewClientSequence
> (SequenceManager.java:323)
>        at
> org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage
> (ApplicationMsgProcessor.java:634)
>        at org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(
> SandeshaOutHandler.java:131)
>        at org.apache.axis2.engine.Phase.invoke(Phase.java:380)
>        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528)
>        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638)
>        at org.apache.axis2.description.OutInAxisOperationClient.send(
> OutInAxisOperation.java:357)
>        at org.apache.axis2.description.OutInAxisOperationClient.execute(
> OutInAxisOperation.java:288)
>        at
> org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(
> AxisInvocationController.java:146)
>        at org.apache.axis2.jaxws.client.BaseDispatch.invoke(
> BaseDispatch.java:123)
>        at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61)
>        at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133)
>
> Looking at it, the transportInProtocol is not being set and the code is
> deciding to listen for async acks / cntrl msgs.
> The question is whether it is reasonable for Sandesha to expect
> JAX-WS/Axis2 to have set this field in this situation.
> As I understand it, this is only currently done in JAX-WS/Axis2 levels if
> the client knows that it requires an asyncListener.
> But in this case this is not known until it reaches Sandesha - so far as
> the client is concerned this is just a sync two way call. It is only, I
> think, because the create sequence flow is required that this is not the
> case.
>
> Therefore could Sandesha change to use the TransportOut (which I believe
> is always set) in the case when the TransportInProtocol is not set?
>
> Many thanks,
> Thomas
>
>
> ----------------------------------
> Thomas McKiernan
>
> WebSphere Messaging Development,
> IBM United Kingdom Limited
>
> Internal Phone: 248241
> External Phone: +44 (0)1962 818241
> Mobile: +44 (0)789 1737497
> Email: *MCKIERNA@uk.ibm.com* <MC...@uk.ibm.com>
>
> Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> 2JN
>
>
> Caminante, no hay camino
> Se hace camino al andar.
> ("Walker, there is no path; the path is made by walking.")  Antonio
> Machado
>
>

Re: use transportOutProtocol to setup async listeners

Posted by Chamikara Jayalath <ch...@gmail.com>.
Hi Thomas,

See my comments below.

On 8/22/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:
>
>
> Hi Chamikara,
> Thanks for your response - I've asked some questions/made some comments in
> blue.
>
>
> This restriction was added considering the WSRM 1.0 spec where it was not
> possible to get sync Application responses in a RM sequences.
>

Ok, I think I understand. Therefore when polling is introduced, is it
> correct to say that sync 2-way with an anonymous acksTo will work and an
> async listener/transportIn etc will not be required for that particular
> flow?
>


yes


Still I belive we should start the listner if the client sets an Async
> acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
> to be set. Hope this is ok for the JAX-WS case.
>



> Ok, so as I understand it, this currently works today i.e. without
> polling, provided that the transportIn etc is setup.
> I agree that Sandesha needs to setup an async listener for an addressable
> acksTo. However, is it necessarily right that the client or jaxWS layer
> should know that, by setting an acksTo, it also has to set up a
> transportInProtocol, in order for this async listener to be set up? It seems
> to me that some implementation detail of sandesha is that an async listener
> is used to receive response messages during an addressable synchronous flow.
> It seems therefore that it would be good to shield the jaxWS layer from this
> implementationd detail. What would be the effect of using transportOut
> details to setup the transportIn in the case of one not having been set?
>

OK. This seems to be a valid requirement. I'll do this change. Thaks for
pointing it out


Chamikara


Many thanks
> Thomas
>
>
>
> ----------------------------------
> Thomas McKiernan
>
> WebSphere Messaging Development,
> IBM United Kingdom Limited
>
> Internal Phone: 248241
> External Phone: +44 (0)1962 818241
> Mobile: +44 (0)789 1737497
> Email: MCKIERNA@uk.ibm.com
>
> Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> 2JN
>
>
> Caminante, no hay camino
> Se hace camino al andar.
> ("Walker, there is no path; the path is made by walking.")  Antonio
> Machado
>
>
>  *"Chamikara Jayalath" <ch...@gmail.com>*
>
> 22/08/2006 06:23
>   To
> Thomas McKiernan/UK/IBM@IBMGB  cc
> sandesha-dev@ws.apache.org  Subject
> Re: use transportOutProtocol to setup async listeners
>
>
>
>
>
>
> Hi Thomas,
>
> This restriction was added considering the WSRM 1.0 spec where it was not
> possible to get sync Application responses in a RM sequences. So setting
> transport In protocol was a must if you need to get response messages.
>
> But due to Message Polling introduced in the new spec it is possible to
> get reliable response messages without an endpoint in the client side. So i
> guess we should remove this restriction.
> (Message Polling is not implemented yet, but hope to do this in next
> couple of weeks)
>
> Still I belive we should start the listner if the client sets an Async
> acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
> to be set. Hope this is ok for the JAX-WS case.
>
> Chamikara
>
>
> On 8/21/06, *Thomas McKiernan* <*M...@uk.ibm.com>>
> wrote:
>
> Hi guys,
> Using JAX-WS to invoke Sandesha, I get the following problem for a sync
> two-way invoke:
>
> org.apache.sandesha2.SandeshaException: cannot start async listener
> transportInProtocol=null
>        at
> org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded(
> SequenceManager.java:355)
>        at org.apache.sandesha2.util.SequenceManager.setupNewClientSequence
> (SequenceManager.java:323)
>        at
> org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage
> (ApplicationMsgProcessor.java:634)
>        at org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(
> SandeshaOutHandler.java:131)
>        at org.apache.axis2.engine.Phase.invoke(Phase.java:380)
>        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528)
>        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638)
>        at org.apache.axis2.description.OutInAxisOperationClient.send(
> OutInAxisOperation.java:357)
>        at org.apache.axis2.description.OutInAxisOperationClient.execute(
> OutInAxisOperation.java:288)
>        at
> org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(
> AxisInvocationController.java:146)
>        at org.apache.axis2.jaxws.client.BaseDispatch.invoke(
> BaseDispatch.java:123)
>        at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61)
>        at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133)
>
> Looking at it, the transportInProtocol is not being set and the code is
> deciding to listen for async acks / cntrl msgs.
> The question is whether it is reasonable for Sandesha to expect
> JAX-WS/Axis2 to have set this field in this situation.
> As I understand it, this is only currently done in JAX-WS/Axis2 levels if
> the client knows that it requires an asyncListener.
> But in this case this is not known until it reaches Sandesha - so far as
> the client is concerned this is just a sync two way call. It is only, I
> think, because the create sequence flow is required that this is not the
> case.
>
> Therefore could Sandesha change to use the TransportOut (which I believe
> is always set) in the case when the TransportInProtocol is not set?
>
> Many thanks,
> Thomas
>
>
> ----------------------------------
> Thomas McKiernan
>
> WebSphere Messaging Development,
> IBM United Kingdom Limited
>
> Internal Phone: 248241
> External Phone: +44 (0)1962 818241
> Mobile: +44 (0)789 1737497
> Email: *MCKIERNA@uk.ibm.com* <MC...@uk.ibm.com>
>
> Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> 2JN
>
>
> Caminante, no hay camino
> Se hace camino al andar.
> ("Walker, there is no path; the path is made by walking.")  Antonio
> Machado
>
>

[Sandeshaya2/C] Build failure

Posted by Samisa Abeysinghe <sa...@gmail.com>.
I took a fresh snv checkout and the build fails :(

cc1: warnings being treated as errors
sandesha2_utils.c: In function 'sandesha2_utils_start_polling_mgr':
sandesha2_utils.c:430: warning: assignment makes pointer from integer
without a cast
sandesha2_utils.c: In function 'sandesha2_utils_create_new_related_msg_ctx':
sandesha2_utils.c:745: warning: passing argument 4 of
'new_msg->ops->set_property' makes pointer from integer without a cast
sandesha2_utils.c:751: warning: passing argument 4 of
'new_msg->ops->set_property' makes pointer from integer without a cast
sandesha2_utils.c:756: warning: passing argument 4 of
'new_msg->ops->set_property' makes pointer from integer without a cast
sandesha2_utils.c:761: warning: passing argument 4 of
'new_msg->ops->set_property' makes pointer from integer without a cast
make[2]: *** [sandesha2_utils.lo] Error 1


Samisa...


---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org


[Sandeshaya2/C] Build failure

Posted by Samisa Abeysinghe <sa...@gmail.com>.
I took a fresh snv checkout and the build fails :(

cc1: warnings being treated as errors
sandesha2_utils.c: In function 'sandesha2_utils_start_polling_mgr':
sandesha2_utils.c:430: warning: assignment makes pointer from integer
without a cast
sandesha2_utils.c: In function 'sandesha2_utils_create_new_related_msg_ctx':
sandesha2_utils.c:745: warning: passing argument 4 of
'new_msg->ops->set_property' makes pointer from integer without a cast
sandesha2_utils.c:751: warning: passing argument 4 of
'new_msg->ops->set_property' makes pointer from integer without a cast
sandesha2_utils.c:756: warning: passing argument 4 of
'new_msg->ops->set_property' makes pointer from integer without a cast
sandesha2_utils.c:761: warning: passing argument 4 of
'new_msg->ops->set_property' makes pointer from integer without a cast
make[2]: *** [sandesha2_utils.lo] Error 1


Samisa...


---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org


Re: use transportOutProtocol to setup async listeners

Posted by Thomas McKiernan <MC...@uk.ibm.com>.
Hi Chamikara,
Thanks for your response - I've asked some questions/made some comments in 
blue.

This restriction was added considering the WSRM 1.0 spec where it was not 
possible to get sync Application responses in a RM sequences.
Ok, I think I understand. Therefore when polling is introduced, is it 
correct to say that sync 2-way with an anonymous acksTo will work and an 
async listener/transportIn etc will not be required for that particular 
flow?

Still I belive we should start the listner if the client sets an Async 
acksTo endpoint. In this case Sandesha2 will expect the 
TransportInProtocol to be set. Hope this is ok for the JAX-WS case.
Ok, so as I understand it, this currently works today i.e. without 
polling, provided that the transportIn etc is setup.
I agree that Sandesha needs to setup an async listener for an addressable 
acksTo. However, is it necessarily right that the client or jaxWS layer 
should know that, by setting an acksTo, it also has to set up a 
transportInProtocol, in order for this async listener to be set up? It 
seems to me that some implementation detail of sandesha is that an async 
listener is used to receive response messages during an addressable 
synchronous flow. It seems therefore that it would be good to shield the 
jaxWS layer from this implementationd detail. What would be the effect of 
using transportOut details to setup the transportIn in the case of one not 
having been set? 

Many thanks
Thomas



----------------------------------
Thomas McKiernan

WebSphere Messaging Development,
IBM United Kingdom Limited

Internal Phone: 248241 
External Phone: +44 (0)1962 818241
Mobile: +44 (0)789 1737497
Email: MCKIERNA@uk.ibm.com

Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21 
2JN


Caminante, no hay camino 
Se hace camino al andar.
("Walker, there is no path; the path is made by walking.")  Antonio 
Machado



"Chamikara Jayalath" <ch...@gmail.com> 
22/08/2006 06:23

To
Thomas McKiernan/UK/IBM@IBMGB
cc
sandesha-dev@ws.apache.org
Subject
Re: use transportOutProtocol to setup async listeners






Hi Thomas,

This restriction was added considering the WSRM 1.0 spec where it was not 
possible to get sync Application responses in a RM sequences. So setting 
transport In protocol was a must if you need to get response messages. 

But due to Message Polling introduced in the new spec it is possible to 
get reliable response messages without an endpoint in the client side. So 
i guess we should remove this restriction. 
(Message Polling is not implemented yet, but hope to do this in next 
couple of weeks) 

Still I belive we should start the listner if the client sets an Async 
acksTo endpoint. In this case Sandesha2 will expect the 
TransportInProtocol to be set. Hope this is ok for the JAX-WS case.

Chamikara


On 8/21/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:

Hi guys, 
Using JAX-WS to invoke Sandesha, I get the following problem for a sync 
two-way invoke: 

org.apache.sandesha2.SandeshaException: cannot start async listener 
transportInProtocol=null 
        at 
org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded(SequenceManager.java:355) 

        at 
org.apache.sandesha2.util.SequenceManager.setupNewClientSequence(SequenceManager.java:323) 

        at 
org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage(ApplicationMsgProcessor.java:634) 

        at 
org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(SandeshaOutHandler.java:131) 

        at org.apache.axis2.engine.Phase.invoke(Phase.java:380) 
        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528) 
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638) 
        at 
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:357) 

        at 
org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:288) 

        at 
org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(AxisInvocationController.java:146) 

        at 
org.apache.axis2.jaxws.client.BaseDispatch.invoke(BaseDispatch.java:123) 
        at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61) 
        at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133) 

Looking at it, the transportInProtocol is not being set and the code is 
deciding to listen for async acks / cntrl msgs. 
The question is whether it is reasonable for Sandesha to expect 
JAX-WS/Axis2 to have set this field in this situation. 
As I understand it, this is only currently done in JAX-WS/Axis2 levels if 
the client knows that it requires an asyncListener. 
But in this case this is not known until it reaches Sandesha - so far as 
the client is concerned this is just a sync two way call. It is only, I 
think, because the create sequence flow is required that this is not the 
case. 

Therefore could Sandesha change to use the TransportOut (which I believe 
is always set) in the case when the TransportInProtocol is not set? 

Many thanks, 
Thomas 


----------------------------------
Thomas McKiernan

WebSphere Messaging Development,
IBM United Kingdom Limited

Internal Phone: 248241 
External Phone: +44 (0)1962 818241
Mobile: +44 (0)789 1737497
Email: MCKIERNA@uk.ibm.com

Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21 
2JN


Caminante, no hay camino 
Se hace camino al andar.
("Walker, there is no path; the path is made by walking.")  Antonio 
Machado 


Re: use transportOutProtocol to setup async listeners

Posted by Thomas McKiernan <MC...@uk.ibm.com>.
Hi Chamikara,
Thanks for your response - I've asked some questions/made some comments in 
blue.

This restriction was added considering the WSRM 1.0 spec where it was not 
possible to get sync Application responses in a RM sequences.
Ok, I think I understand. Therefore when polling is introduced, is it 
correct to say that sync 2-way with an anonymous acksTo will work and an 
async listener/transportIn etc will not be required for that particular 
flow?

Still I belive we should start the listner if the client sets an Async 
acksTo endpoint. In this case Sandesha2 will expect the 
TransportInProtocol to be set. Hope this is ok for the JAX-WS case.
Ok, so as I understand it, this currently works today i.e. without 
polling, provided that the transportIn etc is setup.
I agree that Sandesha needs to setup an async listener for an addressable 
acksTo. However, is it necessarily right that the client or jaxWS layer 
should know that, by setting an acksTo, it also has to set up a 
transportInProtocol, in order for this async listener to be set up? It 
seems to me that some implementation detail of sandesha is that an async 
listener is used to receive response messages during an addressable 
synchronous flow. It seems therefore that it would be good to shield the 
jaxWS layer from this implementationd detail. What would be the effect of 
using transportOut details to setup the transportIn in the case of one not 
having been set? 

Many thanks
Thomas



----------------------------------
Thomas McKiernan

WebSphere Messaging Development,
IBM United Kingdom Limited

Internal Phone: 248241 
External Phone: +44 (0)1962 818241
Mobile: +44 (0)789 1737497
Email: MCKIERNA@uk.ibm.com

Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21 
2JN


Caminante, no hay camino 
Se hace camino al andar.
("Walker, there is no path; the path is made by walking.")  Antonio 
Machado



"Chamikara Jayalath" <ch...@gmail.com> 
22/08/2006 06:23

To
Thomas McKiernan/UK/IBM@IBMGB
cc
sandesha-dev@ws.apache.org
Subject
Re: use transportOutProtocol to setup async listeners






Hi Thomas,

This restriction was added considering the WSRM 1.0 spec where it was not 
possible to get sync Application responses in a RM sequences. So setting 
transport In protocol was a must if you need to get response messages. 

But due to Message Polling introduced in the new spec it is possible to 
get reliable response messages without an endpoint in the client side. So 
i guess we should remove this restriction. 
(Message Polling is not implemented yet, but hope to do this in next 
couple of weeks) 

Still I belive we should start the listner if the client sets an Async 
acksTo endpoint. In this case Sandesha2 will expect the 
TransportInProtocol to be set. Hope this is ok for the JAX-WS case.

Chamikara


On 8/21/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:

Hi guys, 
Using JAX-WS to invoke Sandesha, I get the following problem for a sync 
two-way invoke: 

org.apache.sandesha2.SandeshaException: cannot start async listener 
transportInProtocol=null 
        at 
org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded(SequenceManager.java:355) 

        at 
org.apache.sandesha2.util.SequenceManager.setupNewClientSequence(SequenceManager.java:323) 

        at 
org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage(ApplicationMsgProcessor.java:634) 

        at 
org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(SandeshaOutHandler.java:131) 

        at org.apache.axis2.engine.Phase.invoke(Phase.java:380) 
        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528) 
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638) 
        at 
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:357) 

        at 
org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:288) 

        at 
org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(AxisInvocationController.java:146) 

        at 
org.apache.axis2.jaxws.client.BaseDispatch.invoke(BaseDispatch.java:123) 
        at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61) 
        at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133) 

Looking at it, the transportInProtocol is not being set and the code is 
deciding to listen for async acks / cntrl msgs. 
The question is whether it is reasonable for Sandesha to expect 
JAX-WS/Axis2 to have set this field in this situation. 
As I understand it, this is only currently done in JAX-WS/Axis2 levels if 
the client knows that it requires an asyncListener. 
But in this case this is not known until it reaches Sandesha - so far as 
the client is concerned this is just a sync two way call. It is only, I 
think, because the create sequence flow is required that this is not the 
case. 

Therefore could Sandesha change to use the TransportOut (which I believe 
is always set) in the case when the TransportInProtocol is not set? 

Many thanks, 
Thomas 


----------------------------------
Thomas McKiernan

WebSphere Messaging Development,
IBM United Kingdom Limited

Internal Phone: 248241 
External Phone: +44 (0)1962 818241
Mobile: +44 (0)789 1737497
Email: MCKIERNA@uk.ibm.com

Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21 
2JN


Caminante, no hay camino 
Se hace camino al andar.
("Walker, there is no path; the path is made by walking.")  Antonio 
Machado 


Re: use transportOutProtocol to setup async listeners

Posted by Chamikara Jayalath <ch...@gmail.com>.
Hi Thomas,

This restriction was added considering the WSRM 1.0 spec where it was not
possible to get sync Application responses in a RM sequences. So setting
transport In protocol was a must if you need to get response messages.

But due to Message Polling introduced in the new spec it is possible to get
reliable response messages without an endpoint in the client side. So i
guess we should remove this restriction.
(Message Polling is not implemented yet, but hope to do this in next couple
of weeks)

Still I belive we should start the listner if the client sets an Async
acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
to be set. Hope this is ok for the JAX-WS case.

Chamikara


On 8/21/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:
>
>
> Hi guys,
> Using JAX-WS to invoke Sandesha, I get the following problem for a sync
> two-way invoke:
>
> org.apache.sandesha2.SandeshaException: cannot start async listener
> transportInProtocol=null
>         at
> org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded(
> SequenceManager.java:355)
>         at
> org.apache.sandesha2.util.SequenceManager.setupNewClientSequence(
> SequenceManager.java:323)
>         at
> org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage
> (ApplicationMsgProcessor.java:634)
>         at org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(
> SandeshaOutHandler.java:131)
>         at org.apache.axis2.engine.Phase.invoke(Phase.java:380)
>         at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528)
>         at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638)
>         at org.apache.axis2.description.OutInAxisOperationClient.send(
> OutInAxisOperation.java:357)
>         at org.apache.axis2.description.OutInAxisOperationClient.execute(
> OutInAxisOperation.java:288)
>         at
> org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(
> AxisInvocationController.java:146)
>         at org.apache.axis2.jaxws.client.BaseDispatch.invoke(
> BaseDispatch.java:123)
>         at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61)
>         at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133)
>
> Looking at it, the transportInProtocol is not being set and the code is
> deciding to listen for async acks / cntrl msgs.
> The question is whether it is reasonable for Sandesha to expect
> JAX-WS/Axis2 to have set this field in this situation.
> As I understand it, this is only currently done in JAX-WS/Axis2 levels if
> the client knows that it requires an asyncListener.
> But in this case this is not known until it reaches Sandesha - so far as
> the client is concerned this is just a sync two way call. It is only, I
> think, because the create sequence flow is required that this is not the
> case.
>
> Therefore could Sandesha change to use the TransportOut (which I believe
> is always set) in the case when the TransportInProtocol is not set?
>
> Many thanks,
> Thomas
>
>
> ----------------------------------
> Thomas McKiernan
>
> WebSphere Messaging Development,
> IBM United Kingdom Limited
>
> Internal Phone: 248241
> External Phone: +44 (0)1962 818241
> Mobile: +44 (0)789 1737497
> Email: MCKIERNA@uk.ibm.com
>
> Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> 2JN
>
>
> Caminante, no hay camino
> Se hace camino al andar.
> ("Walker, there is no path; the path is made by walking.")  Antonio
> Machado
>

Re: use transportOutProtocol to setup async listeners

Posted by Chamikara Jayalath <ch...@gmail.com>.
Hi Thomas,

This restriction was added considering the WSRM 1.0 spec where it was not
possible to get sync Application responses in a RM sequences. So setting
transport In protocol was a must if you need to get response messages.

But due to Message Polling introduced in the new spec it is possible to get
reliable response messages without an endpoint in the client side. So i
guess we should remove this restriction.
(Message Polling is not implemented yet, but hope to do this in next couple
of weeks)

Still I belive we should start the listner if the client sets an Async
acksTo endpoint. In this case Sandesha2 will expect the TransportInProtocol
to be set. Hope this is ok for the JAX-WS case.

Chamikara


On 8/21/06, Thomas McKiernan <MC...@uk.ibm.com> wrote:
>
>
> Hi guys,
> Using JAX-WS to invoke Sandesha, I get the following problem for a sync
> two-way invoke:
>
> org.apache.sandesha2.SandeshaException: cannot start async listener
> transportInProtocol=null
>         at
> org.apache.sandesha2.util.SequenceManager.updateClientSideListnerIfNeeded(
> SequenceManager.java:355)
>         at
> org.apache.sandesha2.util.SequenceManager.setupNewClientSequence(
> SequenceManager.java:323)
>         at
> org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor.processOutMessage
> (ApplicationMsgProcessor.java:634)
>         at org.apache.sandesha2.handlers.SandeshaOutHandler.invoke(
> SandeshaOutHandler.java:131)
>         at org.apache.axis2.engine.Phase.invoke(Phase.java:380)
>         at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:528)
>         at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:638)
>         at org.apache.axis2.description.OutInAxisOperationClient.send(
> OutInAxisOperation.java:357)
>         at org.apache.axis2.description.OutInAxisOperationClient.execute(
> OutInAxisOperation.java:288)
>         at
> org.apache.axis2.jaxws.core.controller.AxisInvocationController.invoke(
> AxisInvocationController.java:146)
>         at org.apache.axis2.jaxws.client.BaseDispatch.invoke(
> BaseDispatch.java:123)
>         at jaxws.tester.JAXInvoker.testSync(JAXInvoker.java:61)
>         at jaxws.tester.JAXInvoker.main(JAXInvoker.java:133)
>
> Looking at it, the transportInProtocol is not being set and the code is
> deciding to listen for async acks / cntrl msgs.
> The question is whether it is reasonable for Sandesha to expect
> JAX-WS/Axis2 to have set this field in this situation.
> As I understand it, this is only currently done in JAX-WS/Axis2 levels if
> the client knows that it requires an asyncListener.
> But in this case this is not known until it reaches Sandesha - so far as
> the client is concerned this is just a sync two way call. It is only, I
> think, because the create sequence flow is required that this is not the
> case.
>
> Therefore could Sandesha change to use the TransportOut (which I believe
> is always set) in the case when the TransportInProtocol is not set?
>
> Many thanks,
> Thomas
>
>
> ----------------------------------
> Thomas McKiernan
>
> WebSphere Messaging Development,
> IBM United Kingdom Limited
>
> Internal Phone: 248241
> External Phone: +44 (0)1962 818241
> Mobile: +44 (0)789 1737497
> Email: MCKIERNA@uk.ibm.com
>
> Mail Point 211, IBM, Hursley Park, Winchester, Hampshire, England, SO21
> 2JN
>
>
> Caminante, no hay camino
> Se hace camino al andar.
> ("Walker, there is no path; the path is made by walking.")  Antonio
> Machado
>