- VERSION 5.09.01

- Se corrigieron errores en "Manager".
- Se cambiaron nombres de handlers.
- Se corrigio un error en la ruta de "www/login.html".
This commit is contained in:
2025-09-01 20:37:37 -06:00
parent 4083696bbe
commit 2bf75cadc0
20 changed files with 2217 additions and 204 deletions

105
Readme1.md Normal file
View File

@@ -0,0 +1,105 @@
# Servidor jRDC2-Multi Modificado (B4J)
## 1. Introducción
Este proyecto es una versión modificada del servidor [jRDC2 original](https://www.b4x.com/android/forum/threads/b4x-jrdc2-b4j-implementation-of-rdc-remote-database-connector.61801/#content), 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 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` (para `DB1`)
* `config.DB2.properties`
* `config.DB3.properties`
* `config.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:
```b4x
' Este es el nombre del archivo .jar, en este caso "C:\Ruta\Adicional\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`
```json
{
"exec": "executeQuery",
"query": "nombre_del_comando_sql",
"dbx": "DB1",
"params": {
"par1": "valor1",
"par2": 123
}
}
```
* `exec`: `"executeQuery"` (para `SELECT`) o `"executeCommand"` (para `INSERT`, `UPDATE`, etc.).
* `query`: Nombre del comando SQL en el archivo de configuración.
* `dbx` (opcional): La llave de la BD (`DB1`, `DB2`, etc.). Si se omite, usa `DB1`.
* `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 archivos `config.*.properties` sin reiniciar el servidor).
* **Reiniciar Servidor (Estándar)**: `http://tu-dominio.com:8090/manager?command=rsx`
(Ejecuta los scripts `start.bat`, `start2.bat` y `stop.bat`).
* **Reiniciar Servidor (con PM2)**: `http://tu-dominio.com:8090/manager?command=rpm2`
(Ejecuta `reiniciaProcesoPM2.bat` y asume que el nombre del proceso es "RDC-Multi". Modificar el `.bat` si el nombre es diferente).