EDMIService: Use config module, prepare mssql connections

This commit is contained in:
Jonathan Jenne
2020-12-03 16:29:42 +01:00
parent 52ff2713c7
commit 62be9dc666
6 changed files with 193 additions and 101 deletions

View File

@@ -4,6 +4,7 @@ Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Database
Imports DigitalData.Modules
Imports System.ServiceModel.Description
Imports DigitalData.Modules.Config
Public Class WindowsService
Inherits ServiceBase
@@ -13,9 +14,11 @@ Public Class WindowsService
Private _Logger As Logger
Private _Firebird As Firebird
Private _MSSQL As MSSQLServer
Private _MSSQL_ECM As MSSQLServer
Private _MSSQL_IDB As MSSQLServer
Private _Config As AppConfig
Private _ConfigManager As ConfigManager(Of Config)
Private _Config As Config
Private _Path As EDMI.File.Path
Private _Archive As EDMI.File.Archive
Private _Filesystem As Filesystem.File
@@ -31,27 +34,36 @@ Public Class WindowsService
Protected Overrides Sub OnStart(ByVal args As String())
Try
_Config = New AppConfig()
_LogConfig = New LogConfig(LogConfig.PathType.CustomPath, "E:\EDMService") With {
.Debug = True
}
Dim oServicePath As String = AppDomain.CurrentDomain.BaseDirectory
_LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oServicePath)
_Logger = _LogConfig.GetLogger()
_Logger.Info("Service {0} is starting...", SERVICE_DISPLAY_NAME)
_Logger.Info("ServiceDirectory: {0}", oServicePath)
MaybeStartFirebird()
MaybeStartMSSQL()
_Logger.Info("Loading Config")
_ConfigManager = New ConfigManager(Of Config)(_LogConfig, oServicePath)
_Config = _ConfigManager.Config
_LogConfig.Debug = _ConfigManager.Config.Debug
_Logger.Debug("Connecting to Databases")
_Firebird = StartFirebird()
_MSSQL_ECM = StartMSSQL_ECM()
_MSSQL_IDB = StartMSSQL_IDB()
_Logger.Debug("Initializing EDMI Functions")
_Archive = New EDMI.File.Archive(_LogConfig)
_Filesystem = New Filesystem.File(_LogConfig)
_Global = New GlobalState(_LogConfig, _MSSQL)
_Global = New GlobalState(_LogConfig, _MSSQL_IDB)
_Logger.Debug("Loading Objectstores")
_Global.LoadObjectStores()
_Logger.Info("EDMI Functions initialized.")
EDMIService.MSSQL = _MSSQL
_Logger.Debug("Preparing WCF ServiceHost")
EDMIService.MSSQL_ECM = _MSSQL_ECM
EDMIService.MSSQL_IDB = _MSSQL_IDB
EDMIService.Firebird = _Firebird
EDMIService.LogConfig = _LogConfig
EDMIService.AppConfig = _Config
@@ -59,56 +71,56 @@ Public Class WindowsService
EDMIService.Filesystem = _Filesystem
EDMIService.GlobalState = _Global
_Logger.Debug("Starting WCF ServiceHost...")
_Logger.Debug("Starting WCF ServiceHost")
_ServiceHost = New ServiceHost(GetType(EDMIService))
_ServiceHost.Open()
_Logger.Info("WCF ServiceHost started.")
_Logger.Info("WCF ServiceHost started")
_Logger.Info("Service {0} successfully started.", SERVICE_DISPLAY_NAME)
_Logger.Info("Service {0} successfully started", SERVICE_DISPLAY_NAME)
Catch ex As Exception
_Logger.Error(ex, "Failed to start the service host!")
GracefullyStop()
End Try
End Sub
Private Sub MaybeStartFirebird()
If _Config.IsFirebirdConfigured() Then
_Logger.Debug("Connecting to Firebird")
_Firebird = New Firebird(
_LogConfig,
_Config.FirebirdDataSource,
_Config.FirebirdDatabase,
_Config.FirebirdUser,
_Config.FirebirdPassword
)
_Logger.Info("Database connection established.")
Else
_Logger.Info("Firebird is not configured, will not be used!")
End If
End Sub
Private Function StartFirebird() As Firebird
_Logger.Debug("Connecting to Firebird")
Dim oFirebird = New Firebird(
_LogConfig,
_Config.Firebird_Datasource,
_Config.Firebird_DatabaseName,
_Config.Firebird_DatabaseUser,
_Config.Firebird_DatabasePassword
)
_Logger.Info("Database connection established.")
Return oFirebird
End Function
Private Sub MaybeStartMSSQL()
If _Config.IsMSSQLConfigured() Then
_Logger.Debug("Connecting to MSSQL")
_MSSQL = New MSSQLServer(_LogConfig, _Config.MSSQLConnectionString)
_Logger.Info("Database connection established.")
Else
_Logger.Info("MSSQL is not configured, will not be used!")
End If
End Sub
Private Function StartMSSQL_ECM() As MSSQLServer
_Logger.Debug("Connecting to ECM MSSQL")
Dim oMSSQL = New MSSQLServer(_LogConfig, _Config.ConnectionString_ECM)
_Logger.Info("Database connection to ECM Database established.")
Return oMSSQL
End Function
Private Function StartMSSQL_IDB() As MSSQLServer
_Logger.Debug("Connecting to IDB MSSQL")
Dim oMSSQL = New MSSQLServer(_LogConfig, _Config.ConnectionString_IDB)
_Logger.Info("Database connection to IDB Database established.")
Return oMSSQL
End Function
Protected Overrides Sub OnStop()
GracefullyStop()
End Sub
Private Sub GracefullyStop()
_Logger.Info("Service {0} is stopping!", SERVICE_DISPLAY_NAME)
If _ServiceHost IsNot Nothing Then
_ServiceHost.Close()
_ServiceHost = Nothing
End If
_Logger.Info("Service {0} is stopping!", SERVICE_DISPLAY_NAME)
End Sub
End Class