5.1 KiB
Servidor jRDC2-Multi Mod (B4J)
1. Introducción
Este proyecto es una versión modificada del servidor jRDC2 original, diseñada para actuar como un backend robusto y flexible. Su función principal es recibir peticiones HTTP, ejecutar comandos SQL predefinidos contra una base de datos y devolver los resultados en un formato estructurado.
Ha sido adaptado para servir tanto a clientes nativos (B4A/B4i) como a clientes web modernos (JavaScript, a través de frameworks como NodeJS, React, Vue, Angular, etc.).
2. Características Principales
- Soporte para Múltiples Bases de Datos: Puede cargar y gestionar hasta 4 archivos de configuración (
config.properties) simultáneamente. - Comandos SQL Externalizados: Las sentencias SQL se definen en los archivos de configuración, permitiendo modificarlas sin recompilar el servidor.
- Doble Handler de Peticiones: Incluye un handler clásico para clientes B4X y un handler JSON para clientes web.
- Validaciones de Seguridad: Verifica la existencia de comandos y la correspondencia en el número de parámetros.
- Administración Remota: Permite verificar el estado, recargar la configuración y reiniciar el servidor a través de URLs específicas.
3. Configuración
3.1. Archivos de Configuración
El sistema está preparado para manejar hasta cuatro configuraciones de bases de datos (de DB1 a DB4). No es necesario tener los cuatro archivos; el servidor cargará únicamente los que encuentre.
La nomenclatura de los archivos es fundamental:
config.properties(paraDB1)config.DB2.propertiesconfig.DB3.propertiesconfig.DB4.properties
Notas importantes:
- El puerto del servidor se toma únicamente del archivo principal
config.properties, sin importar lo que digan los demás. - Los datos de conexión (
JdbcUrl, usuario, contraseña) sí se toman del archivo correspondiente a cada base de datos.
3.2. Añadir Drivers de Bases de Datos Adicionales
Si necesitas conectarte a otros tipos de bases de datos (ej. Oracle), debes agregar el archivo del controlador .jar al proyecto antes de compilar. En el módulo Main, añade una línea como la siguiente:
' Este es el nombre del archivo .jar, en este caso "C:\Ruta\LibsAdicionales\ojdbc11.jar"
#AdditionalJar: ojdbc11
Al compilar, el driver se incluirá en el .jar final del servidor, por lo que no será necesario copiarlo por separado al directorio de producción.
4. Uso del Handler Clásico (Para Clientes B4X)
Este handler mantiene la compatibilidad con DBRequestManager. La selección de la base de datos se realiza dinámicamente a través de la URL.
- Para
config.properties=>http://tu-dominio.com:8090 - Para
config.DB2.properties=>http://tu-dominio.com:8090/DB2 - Para
config.DB3.properties=>http://tu-dominio.com:8090/DB3 - Para
config.DB4.properties=>http://tu-dominio.com:8090/DB4
5. Uso del DB1JsonHandler (Para Clientes Web)
Este handler es para clientes que se comunican vía JSON.
5.1. Endpoint y Métodos
Las peticiones van al endpoint /DBJ y deben incluir un parámetro j con el JSON. Soporta GET y POST.
Ejemplo con GET:
http://tu-dominio.com:8090/db1json?j={"dbx":"DB2","query":"get_user","exec":"executeQuery","params":{"par1":"CDAZA"}}
5.2. Formato del Parámetro j
{
"exec": "executeQuery",
"query": "nombre_del_comando_sql",
"dbx": "DB1",
"params": {
"par1": "valor1",
"par2": 123
}
}
exec:"executeQuery"(paraSELECT) o"executeCommand"(paraINSERT,UPDATE, etc.).query: Nombre del comando SQL en el archivo de configuración (ej.select_user).dbx(opcional): La llave de la BD (DB1,DB2, etc.). Si se omite, el default esDB1.params(opcional): Objeto con los parámetros.
5.3. ¡Importante! Envío de Parámetros
El servidor ordena las claves de los parámetros alfabéticamente. Para asegurar el orden correcto, nombra las claves secuencialmente: "par1", "par2", etc.
Nota para más de 9 parámetros: Usa un cero inicial para mantener el orden (
"par01","par02", ...,"par10").
5.4. Respuestas JSON
Las respuestas siempre incluyen "success": true o "success": false, con los datos en "result" o el error en "error".
6. Administración del Servidor
Se pueden ejecutar comandos de gestión directamente desde un navegador.
- Verificar Estado:
http://tu-dominio.com:8090/test - Recargar Configuración:
http://tu-dominio.com:8090/manager?command=reload(Vuelve a leer todos los archivosconfig.*.propertiessin reiniciar el servidor). - Reiniciar Servidor (Estándar):
http://tu-dominio.com:8090/manager?command=rsx(Ejecuta los scriptsstart.bat,start2.batystop.bat). - Reiniciar Servidor (con PM2):
http://tu-dominio.com:8090/manager?command=rpm2(EjecutareiniciaProcesoPM2.baty asume que el nombre del proceso es "RDC-Multi". Modificar el.batsi el nombre es diferente).