127 lines
4.2 KiB
VB.net
127 lines
4.2 KiB
VB.net
Imports System.ServiceModel
|
|
Imports System.ServiceProcess
|
|
Imports DigitalData.Modules.Logging
|
|
Imports DigitalData.Modules.Database
|
|
Imports DigitalData.Modules
|
|
Imports System.ServiceModel.Description
|
|
Imports DigitalData.Modules.Config
|
|
|
|
Public Class WindowsService
|
|
Inherits ServiceBase
|
|
|
|
Private _ServiceHost As ServiceHost
|
|
Private _LogConfig As LogConfig
|
|
Private _Logger As Logger
|
|
|
|
Private _Firebird As Firebird
|
|
Private _MSSQL_ECM As MSSQLServer
|
|
Private _MSSQL_IDB As MSSQLServer
|
|
|
|
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
|
|
Private _Global As GlobalState
|
|
|
|
Public Sub New()
|
|
ServiceName = SERVICE_NAME
|
|
End Sub
|
|
|
|
Public Shared Sub Main()
|
|
Run(New WindowsService())
|
|
End Sub
|
|
|
|
Protected Overrides Sub OnStart(ByVal args As String())
|
|
Try
|
|
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)
|
|
|
|
_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_IDB)
|
|
|
|
_Logger.Debug("Loading Objectstores")
|
|
_Global.LoadObjectStores()
|
|
|
|
_Logger.Debug("Preparing WCF ServiceHost")
|
|
EDMIService.MSSQL_ECM = _MSSQL_ECM
|
|
EDMIService.MSSQL_IDB = _MSSQL_IDB
|
|
EDMIService.Firebird = _Firebird
|
|
EDMIService.LogConfig = _LogConfig
|
|
EDMIService.AppConfig = _Config
|
|
EDMIService.EDMIArchive = _Archive
|
|
EDMIService.Filesystem = _Filesystem
|
|
EDMIService.GlobalState = _Global
|
|
|
|
_Logger.Debug("Starting WCF ServiceHost")
|
|
_ServiceHost = New ServiceHost(GetType(EDMIService))
|
|
_ServiceHost.Open()
|
|
|
|
_Logger.Info("WCF ServiceHost started")
|
|
|
|
_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 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 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
|
|
End Sub
|
|
End Class
|
|
|