Running RBServer within a Delphi TService
Hi Nard
This has been asked before (some time ago), but I would like to pursue it
further, if possible.
I would like to place a TrsServer component onto a Delphi TService. When I
do this, it starts OK, but I get an access violation as follows (taken from
the log file) when I try to use it.
Processing session validate parameters request.EAccessViolation, Access
violation at address 004CBBA9 in module 'CAMRS.exe'. Read of address
00000000
By the way I am accessing this from a Web-Tier client.
Can you help at all?
I think this is a problem which many people would like resolved - and I'm
willing to put some effort into solving it if I can help in any way. It is
important to a suite of applications we are about to convert to use entirely
rbServer based (web client) reporting, and it will be a serious problem if
the entire reporting structure is forced to be run as a single service. At
present I envisage approx 5 or 6 services (we also can't afford 6 machines
and 6 rbServer licenses). I really don't want to run these as interactive
programs.
Regards
Stuart
Stuart Seath
Seath Computer Services
stuart@seath.co.uk
This has been asked before (some time ago), but I would like to pursue it
further, if possible.
I would like to place a TrsServer component onto a Delphi TService. When I
do this, it starts OK, but I get an access violation as follows (taken from
the log file) when I try to use it.
Processing session validate parameters request.EAccessViolation, Access
violation at address 004CBBA9 in module 'CAMRS.exe'. Read of address
00000000
By the way I am accessing this from a Web-Tier client.
Can you help at all?
I think this is a problem which many people would like resolved - and I'm
willing to put some effort into solving it if I can help in any way. It is
important to a suite of applications we are about to convert to use entirely
rbServer based (web client) reporting, and it will be a serious problem if
the entire reporting structure is forced to be run as a single service. At
present I envisage approx 5 or 6 services (we also can't afford 6 machines
and 6 rbServer licenses). I really don't want to run these as interactive
programs.
Regards
Stuart
Stuart Seath
Seath Computer Services
stuart@seath.co.uk
This discussion has been closed.
Comments
Send a request to support@digital-metaphors.com and we can you the source
code to the RB Windows Service - it is a Delphi TService such as you
describe.
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
Thanks, I've just done that. Does the RB Windows Service actually contain
the rsServer?
Regards
Stuart
Stuart Seath
Seath Computer Services
stuart@seath.co.uk
No. The TrsServer application needs to include a reference to the unit
rsServerActiveX in the 'uses' clause. Then run the application a single
time. The first time you run the application it is register as a COM server.
The Windows Service app uses OleAutomation to start the TrsServer
application as an out of process COM server. This enables the Windows
Service app to restart the TrsServer app if it encounters a fatal exception.
I was not thinking about this before, but with this architecture, there can
be only one COM server registered for the rsServerActiveX library. Therefore
this architecture is not gonig to support multiple services on the same
machine.
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
OK, I have my Report Server running now in its own TService (using your code
as a starting point) without using the RBWinService tool at all (I
uninstalled it).
BUT, I assume that I can still only have one of these (from your post). I
had been hoping to divide the application into logical units and prevent the
whole thing going down if there were problems (with the service, with new
code, etc, etc). But I have to assume this will not be possible.
BUT, maybe I've misunderstood again. I don't need or want the automatic
service management features of your windows service. I don't need my
rsServer to be available as a COM server. I ONLY want to access it through
port 1333 (1334, 1335, etc). Can I do that, or will my first server
register itself and all other ones fail as a result?
Regards
Stuart
Stuart Seath
Seath Computer Services
stuart@seath.co.uk
You cannot use the rsServerActiveX / COM automation feature that the
RBWinService uses. That is limited to haveing one TrsServer application
registered. You register a second one and it will replace the first.
Therefore your TService app will need to perhaps include the TrsServer
component.
Each TrsServer will need to listen on a separate port and have a separate
log file.
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
I will try that tomorrow (signing off for the night (7:33pm here)). I think
this will achieve exactly what I'm looking for.
Regards
Stuart
Stuart Seath
Seath Computer Services
stuart@seath.co.uk
If you get a solution working and would like to send an example to
support@digital-metaphors.com and we can share it with others.
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com