Hi Amila,

I followed the steps that you have mentioned.
The test is to use Mercury Client with Sandesha module for the Mercury
SampleService.

As you have mentioned, the output at the Tomcat console is countable but it
worked till the end.

Then I ran the Sandesha test without changing any configuration except
adding RMSampleService to Tomcat.
Here, with 1000 messages 4 sequences, I can see the console output moving
very fast. Please try this scenario as well.

Then again, to verify I ran the Mercury, client with SampleService for 100
messages 2 sequences.
The output is as follows:

 2008 12:22:35 PM org.apache.tomcat.util.threads.ThreadPool logFull
SEVERE: All threads (150) are currently busy, waiting. Increase maxThreads
(150) or check the servlet status
Receive the param ==> 0
Receive the param ==> 0
Receive the param ==> 1
Receive the param ==> 1
Receive the param ==> 2
Receive the param ==> 2
Receive the param ==> 3
Receive the param ==> 3
Receive the param ==> 4
Receive the param ==> 4
Receive the param ==> 5
Receive the param ==> 5
Receive the param ==> 6
Receive the param ==> 6
Receive the param ==> 7
Receive the param ==> 8

So, my guess is something is blocking the invocation with Mercury module.
Also, since Mercury client with Sandesha module also give slow performance,
we need to check the client side as well.

What I would do is this:

Add a global handler in Axis2 which count the number of messages and measure
the time for some number of messages. Say 100 messages.
Then use Mercury client send 150 messages for 1 sequence.
Then use Sandesha client to sent 150 messages for 1 sequence.

If they both send the messages in considerable speeds, then the problem is
definitely in the server side processing.

What I would do for the server side check is this:

Use the same global handler and set the current time as a property in the
message context.
Then at the Service, measure the time difference. This will give us a rough
idea of the time spend for processing at the modules.

HTH

Thanks,
Jaliya













----- Original Message -----
*From:* Amila Suriarachchi <[EMAIL PROTECTED]>
*To:* Jaliya Ekanayake <[EMAIL PROTECTED]>
*Cc:* [email protected]
*Sent:* Thursday, June 05, 2008 11:11 AM
*Subject:* Re: Mercury, a new WS-RM implementation

hi jaliya,

I could sucessfully do this test.
MercuryClient --> Mercury sample Service using Mercury and Sandesha2 jars

Here are the steps.
First go to the mercury-0.91/samples/sample1 /server/conf and change the
services.xml
(replace the Mercury with the sandesha2)

Run the build script. This generates the service with the Sandeshas2.

Then copy the Sandesha2 1.3 jars and mars to tomcat (I used 5.5.20).

That's it. you have the Mercury equivalent Sandesha2 service.

I did not do any changes and did not copy any jars. So Sandesha2 should work
on inmemory mode.

Then I send 100 messages with two sequences for the two services using this
code. Same as in the sample.

public void testRMSequence(boolean isDuplex){
        try {

            ConfigurationContext configurationContext =
                    ConfigurationContextFactory
.createConfigurationContextFromFileSystem(
                            AXIS2_REPOSITORY_LOCATION,
AXIS2_CLIENT_CONFIG_FILE);
            SampleServiceStub sampleServiceStub =
                    new SampleServiceStub(configurationContext,
                            "
http://localhost:8080/axis2/services/SampleService";,
                            isDuplex);

sampleServiceStub._getServiceClient().engageModule("addressing");
            sampleServiceStub._getServiceClient().engageModule("Mercury");
            for (int i = 0; i < 100; i++) {

sampleServiceStub._getServiceClient().getOptions().setProperty(MercuryClientConstants.INTERNAL_KEY,
"key1");
                sampleServiceStub.receiveInt(i);

sampleServiceStub._getServiceClient().getOptions().setProperty(MercuryClientConstants.INTERNAL_KEY,
"key2");
                sampleServiceStub.receiveInt(i);
            }

            MercuryClient mercuryClient = new
MercuryClient(sampleServiceStub._getServiceClient());
            mercuryClient.terminateSequence("key1");
            mercuryClient.terminateSequence("key2");

            try {
                Thread.sleep(40000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } catch (AxisFault e) {
            e.printStackTrace();
        } catch (java.rmi.RemoteException e) {
            e.printStackTrace();
        }
    }


What I observed in the tomcat console was Mercury process the messages in
Quick time. But
with sandesha2 the numbers appear is almost countable.

I did this in my local machine. Jaliya could you please do the same using
the server you have used earlier.

you can get the changed jar from here[1]. But if you test with 50 message
sequences with 0.91
you should be able to observe this.

thanks,
Amila.

[1] 
http://ww2.wso2.org/~amila/mercury-core-SNAPSHOT.jar<http://ww2.wso2.org/%7Eamila/mercury-core-SNAPSHOT.jar>

Reply via email to