unit PooledService_Impl; interface uses Classes, uROClientIntf, uROServer, uROServerIntf, ClassFactoryLibrary_Intf; type TPooledService = class(TRORemotable, IPooledService) private fValue: integer; protected function GetValue: Integer; procedure SetValue(const aValue: Integer); public constructor Create; override; end; implementation uses uROClassFactories, ClassFactoryLibrary_Invk, Dialogs; procedure Create_PooledService(out anInstance: IUnknown); begin anInstance := TPooledService.Create; end; constructor TPooledService.Create; begin inherited; FValue := 0; end; function TPooledService.GetValue: Integer; begin MessageDlg('GetValue executing...', mtWarning, [mbOK], 0); result := fValue; end; procedure TPooledService.SetValue(const aValue: Integer); begin MessageDlg('SetValue executing...', mtWarning, [mbOK], 0); fValue := aValue; end; initialization TROPooledClassFactory.Create('PooledService', Create_PooledService, TPooledService_Invoker, 2); finalization end.