Priprava na init poolingu uz ve WinService + do TBaseController dat jen FConn a na to okazovat dal
This commit is contained in:
+103
-12
@@ -24,7 +24,8 @@ uses
|
||||
{$IFDEF CUSTOM_CTRL_EMPolar}
|
||||
{$I ./_custom/EMPolar/winSvc/usesTop.inc}
|
||||
{$ENDIF}
|
||||
flcCipher, Quick.Logger, Quick.Threads, Quick.Logger.Provider.Files;
|
||||
flcCipher, Quick.Logger, Quick.Threads, Quick.Logger.Provider.Files,
|
||||
uDataMod;
|
||||
|
||||
|
||||
const
|
||||
@@ -237,6 +238,7 @@ const
|
||||
function Encrypt (const AStr: string): RawByteString;
|
||||
function ReturnEncrypted(const AStr: string): string;
|
||||
function ReadConfig (var errMsg: string): boolean;
|
||||
procedure InitConn (var errMsg: string);
|
||||
|
||||
procedure ThreadTerminated (Sender: TObject);
|
||||
{$IFDEF OMNIThreadLib}
|
||||
@@ -296,8 +298,11 @@ var
|
||||
apiPort: integer;
|
||||
webAuth, urlDZTaskyDown: string;
|
||||
|
||||
dbName, dbServer, dbUser, dbPwd, heoLic, apiLic, dataZoneKlic, heoPath, sslLibPath: string;
|
||||
dbPort, intGetDZTasks: integer;
|
||||
heoLic, apiLic, dataZoneKlic, heoPath, sslLibPath: string;
|
||||
s_dbName, s_dbServer, s_dbUser, s_dbPwd: string;
|
||||
s_dbPort: integer;
|
||||
s_dbEncConn, initConnOK: boolean;
|
||||
intGetDZTasks: integer;
|
||||
intProcessDZTasksSec: integer;
|
||||
jeSSL, jeLoginMod: boolean;
|
||||
|
||||
@@ -341,7 +346,7 @@ uses
|
||||
{$I ./_custom/Rootvin/winSvc/uses.inc}
|
||||
{$ENDIF}
|
||||
helTabsBIDs,
|
||||
uWebMod, uDataMod;
|
||||
uWebMod;
|
||||
{$R *.DFM}
|
||||
|
||||
|
||||
@@ -1650,6 +1655,67 @@ Logger.WriteLog(logItem);
|
||||
|
||||
|
||||
|
||||
procedure THDCDZApiService.InitConn (var errMsg: string);
|
||||
var Def: IFDStanConnectionDef;
|
||||
oPars: TStrings; // TFDPhysMSSQLConnectionDefParams;
|
||||
begin
|
||||
errMsg := '';
|
||||
Def := FDManager.ConnectionDefs.FindConnectionDef (sqlPoolName);
|
||||
if (Def=nil) and (s_dbServer<>'') and not(initConnOK) then
|
||||
begin
|
||||
oPars:= TStringList.Create;
|
||||
try
|
||||
try
|
||||
oPars.Add (S_FD_ConnParam_Common_Server + '=' + s_dbServer);
|
||||
oPars.Add (S_FD_ConnParam_Common_Port + '=' + s_dbPort.ToString);
|
||||
oPars.Add (S_FD_ConnParam_Common_Database + '=' + s_dbName);
|
||||
oPars.Add (S_FD_ConnParam_Common_UserName + '=' + s_dbUser);
|
||||
oPars.Add (S_FD_ConnParam_Common_Password + '=' + s_dbPwd);
|
||||
oPars.Add (S_FD_ConnParam_Common_OSAuthent + '=No');
|
||||
oPars.Add (S_FD_ConnParam_Common_MetaDefSchema + '=dbo');
|
||||
oPars.Add (S_FD_ConnParam_Common_LoginTimeout + '=15');
|
||||
oPars.Add (S_FD_ConnParam_MSSQL_MARS + '=Yes');
|
||||
oPars.Add (S_FD_ConnParam_Common_ExtendedMetadata + '=False'); // True jen pri pouziti AutoGenerate SQL / CachedUpdates / UpdateObject
|
||||
oPars.Add (S_FD_ConnParam_Common_ApplicationName + '=hdcdzAPIsvc');
|
||||
oPars.Add (S_FD_ConnParam_Common_Pooled + '=True');
|
||||
oPars.Add (S_FD_ConnParam_Common_Pool_MaximumItems + '=300');
|
||||
oPars.Add (S_FD_ConnParam_Common_Pool_ExpireTimeout + '=30000'); // FireDAC v intervalu 30 sekund testuje platnost spojeni, jestli to SQL server neukoncil
|
||||
oPars.Add (S_FD_ConnParam_Common_Pool_CleanupTimeout + '=90000'); // FireDAC v intervalu 90 sekund cisti nepouzivana spojeni
|
||||
oPars.Add (S_FD_ConnParam_ODBC_ODBCAdvanced + '=TrustServerCertificate=yes');
|
||||
// oPars.Add('CommandTimeout=120');
|
||||
if (s_dbEncConn) then
|
||||
oPars.Add (S_FD_ConnParam_MSSQL_Encrypt + '=Yes');
|
||||
|
||||
if not(ConnInit) then
|
||||
begin
|
||||
TMonitor.Enter(ConnInitLock);
|
||||
try
|
||||
if not(ConnInit) then
|
||||
begin
|
||||
if (FDManager.ConnectionDefs.FindConnectionDef(sqlPoolName) = nil) then
|
||||
FDManager.AddConnectionDef (sqlPoolName, 'MSSQL', oPars);
|
||||
ConnInit := True;
|
||||
end;
|
||||
finally
|
||||
TMonitor.Exit (ConnInitLock);
|
||||
end;
|
||||
end;
|
||||
|
||||
initConnOK := true;
|
||||
except
|
||||
initConnOK := false;
|
||||
end;
|
||||
finally
|
||||
oPars.Free;
|
||||
end;
|
||||
|
||||
if (FDManager.State = dmsInactive) then
|
||||
FDManager.Open;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function THDCDZApiService.ReadConfig (var errMsg: string): boolean;
|
||||
var xN1: TXmlNode;
|
||||
i: integer;
|
||||
@@ -1730,11 +1796,19 @@ Logger.WriteLog(logItem);
|
||||
datMod.dbName:= 'Helios001';
|
||||
datMod.dbUser:= '';
|
||||
datMod.dbPwd:= '';
|
||||
datMod.dbEncConn:= false;
|
||||
|
||||
s_dbServer:= 'localhost';
|
||||
s_dbPort:= 1433;
|
||||
s_dbName:= 'Helios001';
|
||||
s_dbUser:= '';
|
||||
s_dbPwd:= '';
|
||||
s_dbEncConn:= false;
|
||||
|
||||
datMod.chL:= true; // check licenci
|
||||
intGetDZTasks:= 0;
|
||||
intProcessDZTasksSec:= 120; // default pro zapis tasku do Heliosu (zpracovani tabulky dbo._hdc_ph_PrijataJsonData)
|
||||
DZTaksZapisTypCas:= 0; // sek
|
||||
datMod.dbEncConn:= false;
|
||||
webAuth:= 'https://forum.helios.eu/HeliosStoreWS/wsHeliosStore.asmx';
|
||||
urlDZTaskyDown:= 'http://manager.datazone.cloud/api/task/PH2';
|
||||
|
||||
@@ -1765,7 +1839,10 @@ Logger.WriteLog(logItem);
|
||||
i:= attribs.IndexOf(sServer);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
datMod.dbServer:= attribs.Get(i).NodeValue;
|
||||
begin
|
||||
datMod.dbServer:= attribs.Get(i).NodeValue;
|
||||
s_dbServer:= attribs.Get(i).NodeValue;
|
||||
end;
|
||||
{$IFDEF DEBUG}
|
||||
Writeln('Server: ' + datMod.dbServer);
|
||||
{$ENDIF}
|
||||
@@ -1775,31 +1852,43 @@ Writeln('Server: ' + datMod.dbServer);
|
||||
begin
|
||||
sTemp:= attribs.Get(i).NodeValue;
|
||||
datMod.dbPort:= sTemp.ToInteger;
|
||||
s_dbPort:= sTemp.ToInteger;
|
||||
end;
|
||||
|
||||
i:= attribs.IndexOf(sName);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
datMod.dbName:= attribs.Get(i).NodeValue;
|
||||
begin
|
||||
datMod.dbName:= attribs.Get(i).NodeValue;
|
||||
s_dbName:= attribs.Get(i).NodeValue;
|
||||
end;
|
||||
{$IFDEF DEBUG}
|
||||
Writeln('DB: ' + datMod.dbName);
|
||||
Writeln('DB: ' + s_dbName);
|
||||
{$ENDIF}
|
||||
i:= attribs.IndexOf(sUser);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
datMod.dbUser:= ReturnDecrypted(attribs.Get(i).NodeValue);
|
||||
begin
|
||||
datMod.dbUser:= ReturnDecrypted(attribs.Get(i).NodeValue);
|
||||
s_dbUser:= ReturnDecrypted(attribs.Get(i).NodeValue);
|
||||
end;
|
||||
|
||||
i:= attribs.IndexOf(sPwd);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
datMod.dbPwd:= ReturnDecrypted(attribs.Get(i).NodeValue);
|
||||
|
||||
begin
|
||||
datMod.dbPwd:= ReturnDecrypted(attribs.Get(i).NodeValue);
|
||||
s_dbPwd:= ReturnDecrypted(attribs.Get(i).NodeValue);
|
||||
end;
|
||||
|
||||
i:= attribs.IndexOf(sEncConn);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
if (attribs.Get(i).NodeValue='1') then
|
||||
datMod.dbEncConn:= true;
|
||||
begin
|
||||
datMod.dbEncConn:= true;
|
||||
s_dbEncConn:= true;
|
||||
end;
|
||||
|
||||
|
||||
i:= attribs.IndexOf(sSSL);
|
||||
@@ -2515,6 +2604,8 @@ Writeln('DB: ' + datMod.dbName);
|
||||
Exit;
|
||||
end;
|
||||
|
||||
initConnOK:= false;
|
||||
InitConn (sTemp);
|
||||
|
||||
|
||||
verText:= StringReplace(GetFileVersion2(GetModuleName(HInstance)),'.','',[rfReplaceAll]);
|
||||
|
||||
Reference in New Issue
Block a user