Jian J Zhang wrote:

I sent out a note asking how Sandesha works. Someone of the list replied but I deleted the reply email
by mistake before I had had a chance to read it. I could not find the reply in the archive either.

Can the person who replied reply again?

I really apprciate it.

-------------------------- The original note


Here I'd like to understand how Sandesha works.Your help is appreciated.

As far as I understand, Sandesha saves the request first in the
persistence and then sends out the acknowledgement.
Then it invokes the web service (the application code).  The reliability
is guaranteed because the message is saved and can
be resent to the web service if needed, just like messaging system.

Here is what I do not understand:

    Assume that the sandesha successfully saves the message into the
database (database transaction is committed) and sends out the
acknowledgement,
    while before it forwards the message to the web service, the server
crashes.

    Now we restart the server and AXIS plus Sandesha are ready to serve
new requests.  But how about the saved request?
   AXIS  is only invoked when we have a HTTP/SOAP message. If  we do not
get new request, then the message will never be reforwarded again?

hi,


I believe that Sandesha currently does not support this scenario: when server is restarted it should read queue of messages undelivered to services and restart delivery pipeline. however this was discussed and hopefully will be possible to implement in AXIS2 as main problem is that in AXIS1.2x it is very hard to control message processing pipelines. also i think currently Sandesha is not using database to store messages (by default?) however details on this must be provided by Jaliya as he is implementing it.

unfortunately the wiki pages for Sandesha disappeared during chinese wiki spam wars ...
http://nagoya.apache.org/wiki/apachewiki.cgi?SandeshaProjectPages/Changes
so you need to rely on mail archives
http://news.gmane.org/gmane.comp.apache.webservices.fx.devel
if you want to find more about Sandesha design and implementation

thanks,

alek






-------- Original Message --------
Subject: RE: Sandesha --(advise needed)
Date: Wed, 13 Oct 2004 10:01:47 +0600
From: Jaliya Ekanayake <[EMAIL PROTECTED]>
To: 'Krishnendu Kunti' <[EMAIL PROTECTED]>
CC: <[email protected]>








Few more ideas for you..

 

In current Sandesha architecture the idea was to make both queue and database options available (queue may be used when there is no database available). So writing a database code in the ServerQueue class will not be good. What we should do is implementing the class IServerDAO (or fill ServerDatabaseDAO).

 

So if you can have an implementation for each function of IServerDAO then the storing happens in a database. To keep the database connection we can use some static variables in ServerDatabaseDAO. And also an init() method can be added to IServerDAO for initiation purposes.

 

Thanks,

 

Jaliya and Chamikara

 

 


From: Krishnendu Kunti [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, October 12, 2004 7:35 PM
To: Jaliya Ekanayake
Cc: [email protected]
Subject: Sandesha --(advise needed)

 

Hi Jaliya

 

I have created class that opens connection to database (reading some user defined URL, PWD, USERNAME and DRIVER MANEGER—at present I gave these values in the Constants class), maintains connection pool and stores a set of prepared statements which will be used by all the clients. This class needs to be in memory (runnig ) as the connections, prepared statements will be initiated only at the startup.

 

Is the ServerQueue class package, “org.apache.sandesha.server.queue” persisted across two distinct client calls , if yes then can I assume that my class will be also persisted once it is deployed. If no then how to persist/ (something like deamon) for the purpose of maintaining the connection pools, prepared statements.

 

Is there any class which takes care of running deamons, so that I might start this class along with it.

 

Regads

Krish

 

A man with a dream will not be denied

 

Krishnendu Kunti

 

SETLABS, Infosys Technologies LTD

Bangalore, India
Fax: +91 80 51102520

Mobile: 9886375255


URL:
http://setlabs/wscoe (Infosys Intranet)

 

 

 


-- 
The best way to predict the future is to invent it - Alan Kay













-------- Original Message --------
Subject: RE: configuring mysql database for Sandesha
Date: Thu, 7 Oct 2004 14:30:04 +0600
From: Jaliya Ekanayake <[EMAIL PROTECTED]>
To: 'Krishnendu Kunti' <[EMAIL PROTECTED]>, <[email protected]>


Hi,

 

As I have replied you, Currently Sandesha is not using any database. It is using a in-memory queue. RMSequence class is handling this queue functionality. We are in the process of modifying Sandesha so that It will handle the messages better. And also with the new architecture Sandesha will improve its interoperability with other WS-Extentions.

 

We will be putting documentation for the new Sandesha soon. At the moment you can see the architecture using the following wiki.

http://nagoya.apache.org/wiki/apachewiki.cgi?SandeshaProjectPages/Changes

 

Thanks,

 

Jaliya

 

 


From: Krishnendu Kunti [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, October 06, 2004 1:45 PM
To: [email protected]
Subject: configuring mysql database for Sandesha

 

 

Hi

 

IS there a configuration file in Sandesha for pointing to mysql database? Which config file / class file should the location of the database be mentioned. Guys can anyone share a more detailed documentation or any link on the net which does the same.

Regards

Krish

 

A man with a dream will not be denied

 

Krishnendu Kunti

 

SETLABS, Infosys Technologies LTD

Bangalore, India
Fax: +91 80 51102520

Mobile: 9886375255


URL:
http://setlabs/wscoe (Infosys Intranet)

 

 






-------- Original Message --------

Subject: Re: Getting Started with Sandesha
Date: Sat, 25 Sep 2004 06:36:40 -0400 (EDT)
From: [EMAIL PROTECTED]
To: Dave Everson <[EMAIL PROTECTED]>
CC: [email protected]
References: <[EMAIL PROTECTED]>


Hi Dave,

I will try to explain some suggestions for the scenario you mentioned as
follows.

According to the usage of the WS-RM it will be beneficial for us to first
identify the reliability of the message before going in to any processing.
That is if we can identify whether the incoming request is a new message
or a re-transmission of a previous message we can easily ignore the
latter.

However there is a problem in this approach. That is when we try to use
WS-RM with WS-Security(encryption, digital signatures) then some one can
encrypt the WS-RM headers as well. So the message should first pass
through the Security handler and then only it can pass through the WS-RM.
But as you have explained if we can use our own encryption/decryption
mechanism for the payload then we can easily do it after the reliability
checks as long as it will not encrypt the SOAP headers.

A further enhancement will be that, we can just decrypt the reliability
headers and then check the WS-Reliability first and decrypt the rest of
the message only if that is passed. However this scenario will not be
achieved directly using the current axis implementation. That is coming
back to a handler that has already passed. But by deploying custom
handlers you may still able to achieve this.

WS-RM mainly deals with SOAP headers and it may not require the body of
the message (payload) at all. So it will be beneficial for us to do the 
verification of the payload against a schema the reliability checks.
Otherwise the engine will waste its time validating a duplicate message or
a re-transmission.


At the moment the WS-RM support we have in axis (Apache Sandesha) works at
 the provider (pivot) level and works at the last stage. This is because
we need to provide INORDER  EXACTLY ONCE delivery of messages to the
service. That is the service is invoked using the  original message
sequence and not by the order in which they are received.

If the quality of service is something other than INORDER that is just
EXACTLY ONCE or by the order they are received, then we may be able to
modify Sandesha and use it before the other handlers that deal with the
payload decryption and validation. We are in the process of modifying
Sandesha so that it will improve its usage. We may be able to provide that
functionality in the near future and it will not affect the usage of axis
other than the way in which the services are deployed.

Hope I have explained my suggestions clearly. If you need further
clarifications, just send a mail..

Thanks,

Jaliya



> Hello -
>
> We are starting a new web service project using Axis as our web service
> engine.  The requirements for our web services include reliable messaging,
> digitial signature, encryption of payload, and validation of XML in
> payload
> against schemas housed in the XML registry on our server.
>
> We are considering using several components of WS-FX to accomplish several
> of these requirements.
>
> We were thinking that many of the above requirements could be handlers
> with
> Axis Handlers before the message even gets to our true web service.
>
> If the inbound message failed the checks (e.g. digitial signature,
> validation against schema), we would throw a SOAPFault and stop processing
> the message.
>
> When I throw reliable messaging into the mix, where is the proper place
> for
> this?  Should I do this as the first step in the process (i.e as soon as
> we
> get a message) or after all the checks have been done with the message?
>
> What's the suggested approach based on your experience?  What's the pros
> and
> cons of doing WS-RM functionality before or after the other processing?
>
> Any recommendations that you can provide would be greatly appreciated.
>
> Thanks!
>
> _________________________________________________________________
> FREE pop-up blocking with the new MSN Toolbar – get it now!
> http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
>
>
>




Reply via email to