Re: Could not update database while in transaction...( MultithreadedSOAP Server )


2005-02-20 04:19:49 AM
delphi154
Akira writes:
Quote
A client connect using BoldExpressPersistenceHandle
to 'http://hostname/bes.dll/ApplicationName' for instance.
Every call are redirected to another instance of available application
Server ( for load-balancing and multi treatment purpose.
This way we avoid concurrent update against Boldsystem and finally we
have to synchronise all running server.

Am I right?

Thanks



--- posted by geoForum on delphi.newswhat.com
Hi Cedric,
Yes. that is the only safe way to do it. Here, it is not a question
whether BoldSystem is thread-safe or not (it isn't and cannot be made
so), it is a question whether the PersistenceMapper sub-system (only
deals with interacting with the DB) is thread-safe (which we thought was
but can confirm it isn't). The BoldExpressPersistenceHandle simply wraps
the Bold provided remote persistence handle
(BoldHTTPPersistenceControllerClient) and adds some security. You must
use it in conjunction with TBoldExpressSOAPServer component which
exposes BoldExpressPersistenceHandle functionality to SOAP using a
Synchronize method making it safe and queued.
The BoldExpress server (bes.dll) has the ability to redirect a call (say
http://hostname/bes.dll/ApplicationName/Persist) to several of those
running executables and load-balance. The persistenceMapper is stateless
(which is why you could think it is thread-safe) and you therefore would
not need to synchronise (OSS) the Object spaces of the servers (in fact
you don't need ObjectSpaces on the servers since you build Fat-clients
that contain them).
Kind Regards,
Christophe
Neosight Technologies Limited