Question
“How can I run my report server as a Windows Service?”
Solution
RB Server Edition includes a windows service called ReportBuilder Services. ReportBuilder Services can host your report server. For details see RBServer\Windows Services\ReadMe.doc.
A second solution is to create a custom windows service. This is the approach we recommend when multiple report servers need to run on a single machine.
Download: CustomRBServiceApp.zip
Steps:
- Use Delphi to create a Windows Service Application project (File | New | Other | Service).
- Place a TrsServer component on the Service module. (Add a separate DataModule for each ReportVolume component).
- Use the Object Inspector to modify the TService properties such as Name and DisplayName.
- Use the Object Inspector to configure the TrsServer properties such as Port.
- To install the windows service run the application with a /INSTALL parameter (Use the Delphi Run | Parameters dialog).
- To uninstall the windows service run this application with the /UNINSTALL parameter.
Sample Delphi code:
{------------------------------------------------------------------------------} { TmyReportService1.StartReportServer } function TmyReportService1.StartReportServer: Boolean; begin rsServer1.Active := True; Result := rsServer1.Active; end; {------------------------------------------------------------------------------} { TmyReportService1.StopReportServer } function TmyReportService1.StopReportServer: Boolean; begin rsServer1.Active := False; Result := not(rsServer1.Active); end; {------------------------------------------------------------------------------} { TmyReportService1.ServiceStart } procedure TmyReportService1.ServiceStart(Sender: TService; var Started: Boolean); begin StartReportServer; end; {------------------------------------------------------------------------------} { TmyReportService1.ServiceStop } procedure TmyReportService1.ServiceStop(Sender: TService; var Stopped: Boolean); begin Stopped := StopReportServer; end; {------------------------------------------------------------------------------} { TmyReportService1.ServiceShutdown } procedure TmyReportService1.ServiceShutdown(Sender: TService); begin StopReportServer; end; {------------------------------------------------------------------------------} { TmyReportService1.ServiceContinue } procedure TmyReportService1.ServiceContinue(Sender: TService; var Continued: Boolean); begin StartReportServer; end; {------------------------------------------------------------------------------} { TmyReportService1.ServicePause } procedure TmyReportService1.ServicePause(Sender: TService; var Paused: Boolean); begin StopReportServer; end;