ws-sandesha-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Amila Suriarachchi" <amilasuriarach...@gmail.com>
Subject Re: Sandesha2 In Only services.
Date Tue, 07 Oct 2008 07:32:04 GMT
On Mon, Oct 6, 2008 at 8:11 PM, David Parsons1 <PARSONSD@uk.ibm.com> wrote:

>
> Hi,
>
> In answer to your questions:
>
> *Why not sending ack back on new connection?*
>
> If you want the Ack to come back on a separate connection you'll need to
> setUseSeparateListener(true) and call sendRecieve() and not
> fireAndForget().


This is my scenario.  I have an in Only operation and I want to invoke that
using WS-RM or Sandesha2. Since my operation is in only I can not use the
sendReceive(). So it should be fireAndForget().

As I understood WS-RM 1.0 [1] describes a two channel protocol. So the
CreateSequenceResponse and Acknowledgments should come in separate channels.
Here it assumes a addressable client and server sends responds to that end
point.

The way now it operates is the way it describes in the Replay Model [2]. So
my question is how can I make
this invocation compatible with WS-RM 1.0 spec. IMHO if
isUseSeperateListneris set Sandesha2 should set those reply to address
correctly.


[1] http://specs.xmlsoap.org/ws/2005/02/rm/ws-reliablemessaging.pdf
[2] http://wso2.org/files/ws-rm-replay-model-1.0.3.pdf


 This will make WSAddressing add a replyTo header and from this sandesha
> will know to set the acksTo to the same address.  If you want to set the
> replyTo to a specific predetermined endpoint you need to explicitly set the
> replyTo on the ServiceClient and then cal fireAndForget().

yes this is correct. Even in this case I believe the operation at the server
side should be in out.

>
>
>
> *Sandesha2 not recovering*
>
> '*Then I start the client without starting the sequence and the server
> started after some time. In this case it
> could not recover messages.*'  I'm not sure what you mean by this.  Are
> you restarting the server hosting your client?  What do you mean by
> restarting your sequence?


This is what I did.
1. Start the client. so that initial create sequence fails.
2. After some time  Start the server.

Further I noticed if I start the server with a little gap still Sandesha2
client can send the sequence correctly. So this may be an issue with
Retransmission count. I'll have another look.

>
>
> *Two storage Managers in Sandesha2 module.xml*
>
> I believe this is fine.  Only one storage manager will ever get used.
>  Nevertheless i'm not sure why they both exist like that in the module.xml.
>
>
> *Why offering for one way request?*
>
> Sandesha2 will offer if RM 1.0 is requested and it finds the operation
> being called is twoway or axis has defined that an outIn MEP is being used.
>  I'd have thought that by calling fireAndForget() axis wouldn't set the MEP
> constant to outIn and therefore you wouldn't see the offer.  I wonder if
> because you have setUseSeparateListener(true) it has set this.


Nope. Even I remove this line it does not change any thing. As I saw for
fireAndForget Operations this variable is not relavent in Sansesha2.

thanks,
Amila.

>
>
>
>
> Regards,
>
> Dave
>
> Dave Parsons
> Web Services Test
> INTERNAL:  David Parsons1/UK/IBM@IBMGB :: DE3F20 :: 246930
> EXTERNAL:  ParsonsD@uk.ibm.com :: (01962) 816930
> Mail Point 211, IBM Hursley Park, Winchester. SO21 2JN
>
>
>
>  From: "Amila Suriarachchi" <amilasuriarachchi@gmail.com>
> To: "sandesha-dev@ws.apache.org" <sandesha-dev@ws.apache.org> Date: 06/10/2008
> 10:31 Subject: Sandesha2 In Only services.
> ------------------------------
>
>
>
> hi,
>
> I wrote an InOnly service and tried to invoke it using the following
> client.
>
> ConfigurationContext configurationContext =
>
>  ConfigurationContextFactory.createConfigurationContextFromFileSystem(
>                            AXIS2_REPOSITORY_LOCATION,
> AXIS2_CLIENT_CONFIG_FILE);
>            ServiceClient serviceClient = new
> ServiceClient(configurationContext, null);
>            serviceClient.setTargetEPR(new EndpointReference("*
> http://localhost:8088/axis2/services/TestInService*<http://localhost:8088/axis2/services/TestInService>
> "));
>            serviceClient.getOptions().setAction("urn:TestInOperation");
>            serviceClient.engageModule("sandesha2");
>            serviceClient.getOptions().setUseSeparateListener(true);
>
>  serviceClient.getOptions().setProperty(SandeshaClientConstants.INTERNAL_SEQUENCE_ID,
> "key1");
>            System.out.println("Invoke client using thread ==> " +
> Thread.currentThread().getName());
>            for (int i = 1; i < 100; i++) {
>                serviceClient.fireAndForget(getTestOMElement(i));
>                try {
>                    Thread.sleep(1000);
>                } catch (InterruptedException e) {
>                }
>            }
>
>  serviceClient.getOptions().setProperty(SandeshaClientConstants.LAST_MESSAGE,
> Constants.VALUE_TRUE);
>            serviceClient.fireAndForget(getTestOMElement(11));
>
> The sequence went fine. But although I have set
> serviceClient.getOptions().setUseSeparateListener(true); Sandesha2 send and
> receive messages in same channel.
>
> So how can I set it to work in dual channel (i.e with addressing reply to)?
>
> Then I do the above test randomly starting and stopping the tcp channel
> using the Tcp mon. Sandesha2 could recover messages and
> every thing worked fine. Then I start the client without starting the
> sequence and the server started after some time. In this case it
> could not recover messages. I did not make any changes to module.xml so I
> believe  it uses default value.
> Has any one face this problem?
>
> Finally I saw this in sandesha2 module.xml this,
>
> <sandesha2:StorageManagers>
>
>                    <sandesha2:InMemoryStorageManager>
>
>  org.apache.sandesha2.storage.inmemory.InMemoryStorageManager
>                    </sandesha2:InMemoryStorageManager>
>
>                    <sandesha2:PermanentStorageManager>
>
>  org.apache.sandesha2.storage.inmemory.InMemoryStorageManager
>                    </sandesha2:PermanentStorageManager>
>
>                </sandesha2:StorageManagers>
>
> What is the purpose of having two storage managers? Isn't this cause
> problems in handling transactions?
>
> Can someone please help me figuring out these issues?
>
> thanks,
> Amila.
>
>
> --
> Amila Suriarachchi
> WSO2 Inc.
> blog: *http://amilachinthaka.blogspot.com/*<http://amilachinthaka.blogspot.com/>
>
>
>
>
>  ------------------------------
>
> *
> *
>
> *Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number
> 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
> *
>
>
>
>
>
>
>


-- 
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/

Mime
View raw message