From 674eb2c81b8baff04e1e2b526fca972c5ae0daac Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Thu, 11 Sep 2025 23:14:34 -0600 Subject: [PATCH] =?UTF-8?q?-=20VERSION=205.09.08=20-=20Se=20agreg=C3=B3=20?= =?UTF-8?q?que=20se=20puedan=20configurar=20en=20el=20config.properties=20?= =?UTF-8?q?los=20siguientes=20parametros:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - setInitialPoolSize = 3 - setMinPoolSize = 2 - setMaxPoolSize = 5 - Se agregaron en duro a RDConnector los siguientes parametros: - setMaxIdleTime <-- Tiempo máximo de inactividad de la conexión. - setMaxConnectionAge <-- Tiempo de vida máximo de una conexión. - setCheckoutTimeout <-- Tiempo máximo de espera por una conexión. --- RDCConnector.bas | 28 +++++++++++++++++++++++++++- jRDC_Multi.b4j.meta | 4 ++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/RDCConnector.bas b/RDCConnector.bas index 19a8409..b39d527 100644 --- a/RDCConnector.bas +++ b/RDCConnector.bas @@ -22,7 +22,33 @@ Public Sub Initialize(DB As String) Log($"Inicializamos ${DB}, usuario: ${config.Get("User")}"$) pool.Initialize(config.Get("DriverClass"), config.Get("JdbcUrl"), config.Get("User"), config.Get("Password")) Dim jo As JavaObject = pool - jo.RunMethod("setMaxPoolSize", Array(5)) 'number of concurrent connections + + ' Leer valores del config.properties o usar valores por defecto + ' Si el parámetro no se encuentra en el archivo .properties, se usará el segundo valor (el por defecto). + Dim initialPoolSize As Int = config.GetDefault("InitialPoolSize", 3) ' Por defecto 3 + Dim minPoolSize As Int = config.GetDefault("MinPoolSize", 2) ' Por defecto 3 + Dim maxPoolSize As Int = config.GetDefault("MaxPoolSize", 5) ' Por defecto 5 + + jo.RunMethod("setInitialPoolSize", Array(initialPoolSize)) ' Sets the inital pool size to 2 + jo.RunMethod("setMinPoolSize", Array(minPoolSize)) ' Sets the min pool size to 2 + jo.RunMethod("setMaxPoolSize", Array(maxPoolSize)) ' Max number of concurrent connections + + ' Define el tiempo máximo de inactividad en SEGUNDOS. + ' Una conexión que permanezca en el pool sin ser usada por más de 300 segundos (5 minutos) + ' será cerrada para liberar recursos, siempre y cuando no se viole el tamaño mínimo del pool (minPoolSize). + jo.RunMethod("setMaxIdleTime", Array As Object(300)) + + ' Define la "edad" o tiempo de vida máximo de una conexión en SEGUNDOS. + ' Después de 900 segundos (15 minutos) desde su creación, la conexión será marcada para ser + ' eliminada y reemplazada por una nueva la próxima vez que regrese al pool. + ' Esto previene problemas con conexiones "viciadas" y mantiene el pool saludable. + jo.RunMethod("setMaxConnectionAge", Array As Object(900)) + + ' Define el tiempo máximo de espera por una conexión en MILISEGUNDOS. + ' Si todas las conexiones del pool están ocupadas, una nueva petición esperará hasta + ' 60000 milisegundos (1 minuto). Si ninguna conexión se libera en ese lapso, la petición + ' fallará con un error. Esto evita que la aplicación se congele bajo carga pesada. + jo.RunMethod("setCheckoutTimeout", Array As Object(60000)) ' com.mchange.v2.c3p0.ComboPooledDataSource [ ' acquireIncrement -> 3, diff --git a/jRDC_Multi.b4j.meta b/jRDC_Multi.b4j.meta index 1b70cf1..26aa610 100644 --- a/jRDC_Multi.b4j.meta +++ b/jRDC_Multi.b4j.meta @@ -37,6 +37,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=DBHandlerJSON,Initialize,16,0,DBHandlerJSON,Handle,207,6,ChangePassHandler,Handle,15,0,DBHandlerB4X,Handle,80,0,Main,AppStart,88,0,DBHandlerJSON,Class_Globals,10,0,DBHandlerJSON,SendErrorResponse,239,0,RDCConnector,LoadConfigMap,86,0,RDCConnector,GetCommand,90,0,RDCConnector,Initialize,75,0,RDCConnector,Class_Globals,9,0 +NavigationStack=DBHandlerJSON,SendErrorResponse,239,0,RDCConnector,LoadConfigMap,86,0,RDCConnector,GetCommand,90,0,faviconHandler,Initialize,12,0,faviconHandler,Class_Globals,8,0,Manager,Initialize,9,0,RDCConnector,Class_Globals,9,0,Main,AppStart,49,0,Manager,Handle,23,6,RDCConnector,Initialize,38,0 SelectedBuild=0 -VisibleModules=2,3,11,9,12,7,1 +VisibleModules=2,3,11,9,12