mirror of
https://github.com/KeymonSoft/jRDC-Multi.git
synced 2026-04-18 05:09:32 +00:00
``` feat: Implement hot-swap for DB config reload and JSON POST support **Cambios Principales:** 1. **Hot-Swap para recarga de configuraciones de DB sin reiniciar servidor** 2. **Migración a ReentrantLock para sincronización por incompatibilidad con Sync** 3. **Soporte para peticiones POST con Content-Type: application/json** 4. **Mejoras en inicialización del pool de conexiones y soporte multi-DB** **Problemas Resueltos:** - Falta de "Hot-Swap" en `reload`: El comando no permitía recarga dinámica de configuraciones sin reinicio - Ausencia de mecanismo de cierre de pools en RDCConnector para liberación ordenada de conexiones - Incompatibilidad con `Sync` en entorno B4X - Procesamiento incorrecto de peticiones POST con Content-Type: application/json - Inicialización incorrecta de pools C3P0 con TotalConnections: 0 - Configuración inconsistente de parámetros críticos de C3P0 - jdbcUrl truncada/vacía en logs por shadowing de variables **Cambios Implementados:** **Manager.bas:** - Reemplazo completo de lógica para comando "reload" - Creación de nuevos conectores antes de reemplazar los antiguos - Sincronización con ReentrantLock para acceso thread-safe - Patrón seguro de bloqueo sin `Finally` usando bandera booleana - Cierre explícito de oldConnectors después del reemplazo - Validación de inicialización y control de errores robusto - Registro detallado en log HTML del proceso **RDCConnector.bas:** - Implementación de método `Public Sub Close()` para liberar pools C3P0 - Corrección de shadowing de variable `config` en LoadConfigMap - Reordenamiento de Initialize - Configuración completa de C3P0 antes de adquirir conexiones - Forzar reportes de errores con acquireRetryAttempts y breakAfterAcquireFailure - Activación forzada del pool con conexión temporal **Main.bas:** - Declaración de `MainConnectorsLock As JavaObject` (ReentrantLock) - Inicialización del lock en AppStart - Declaración separada de conectores (con1, con2, con3, con4) **DBHandlerJSON.bas:** - Detección de peticiones POST con Content-Type: application/json - Lectura de JSON desde InputStream en lugar de parámetro URL - Cierre explícito del InputStream para liberación de recursos - Corrección de nombres de variables para evitar conflictos - Mensajes de error mejorados para ambos métodos (legacy y nuevo) **Beneficios:** - Recarga en caliente de configuraciones DB sin interrupción de servicio - Mayor disponibilidad y mantenibilidad del servidor - Prevención de fugas de recursos con cierre ordenado de pools - Compatibilidad con estándares APIs web (POST application/json) - Inicialización robusta y confiable de pools de conexiones - Mejor reporting de errores y diagnóstico de problemas - Soporte multi-DB más estable y confiable ```
46 lines
1.1 KiB
Plaintext
46 lines
1.1 KiB
Plaintext
ModuleBookmarks0=
|
|
ModuleBookmarks1=
|
|
ModuleBookmarks10=
|
|
ModuleBookmarks11=
|
|
ModuleBookmarks12=
|
|
ModuleBookmarks13=
|
|
ModuleBookmarks2=
|
|
ModuleBookmarks3=
|
|
ModuleBookmarks4=
|
|
ModuleBookmarks5=
|
|
ModuleBookmarks6=
|
|
ModuleBookmarks7=
|
|
ModuleBookmarks8=
|
|
ModuleBookmarks9=
|
|
ModuleBreakpoints0=
|
|
ModuleBreakpoints1=
|
|
ModuleBreakpoints10=
|
|
ModuleBreakpoints11=
|
|
ModuleBreakpoints12=
|
|
ModuleBreakpoints13=
|
|
ModuleBreakpoints2=
|
|
ModuleBreakpoints3=
|
|
ModuleBreakpoints4=
|
|
ModuleBreakpoints5=
|
|
ModuleBreakpoints6=
|
|
ModuleBreakpoints7=
|
|
ModuleBreakpoints8=
|
|
ModuleBreakpoints9=
|
|
ModuleClosedNodes0=
|
|
ModuleClosedNodes1=
|
|
ModuleClosedNodes10=
|
|
ModuleClosedNodes11=
|
|
ModuleClosedNodes12=
|
|
ModuleClosedNodes13=
|
|
ModuleClosedNodes2=
|
|
ModuleClosedNodes3=
|
|
ModuleClosedNodes4=
|
|
ModuleClosedNodes5=
|
|
ModuleClosedNodes6=
|
|
ModuleClosedNodes7=
|
|
ModuleClosedNodes8=
|
|
ModuleClosedNodes9=
|
|
NavigationStack=RDCConnector,Class_Globals,12,0,Manager,Initialize,8,0,RDCConnector,GetPoolStats,256,0,Main,Process_Globals,58,0,RDCConnector,Close,266,0,Manager,Handle,171,2,Main,AppStart,138,0,DBHandlerJSON,Handle,82,0,RDCConnector,Initialize,70,0,Cambios,Process_Globals,43,6
|
|
SelectedBuild=0
|
|
VisibleModules=3,4,12,10,13,1
|