Home Server
New Blog Posts: Merging Reports - Part 1 and Part 2

Running RBServer within a Delphi TService

edited March 2004 in Server
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

Comments

  • edited March 2004

    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
  • edited March 2004
    Hi Nard

    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
  • edited March 2004

    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
  • edited March 2004
    Hi Nard

    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
  • edited March 2004

    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
  • edited March 2004
    Thanks Nard

    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
  • edited March 2004

    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
This discussion has been closed.