¿Alguna vez ha necesitado utilizar múltiples servidores web para, por ejemplo, dividir el código de su aplicación web en varias unidades de negocio, o separar el servidor web del administrador del del usuario o ejecutar una parte antigua, aún no preparada para el preemptive, en una instancia separada, permitiendo que la parte principal se ejecute en preemptive?
Si asiente con la cabeza, siga leyendo porque 4D v18 R3 le permite hacerlo… con facilidad.
Manipulación de servidores webS
El nuevo WEB server le permite gestionar los servidores web dentro de objetos separados para cada servidor. También acepta un parámetro opcional para definir qué servidor utilizar:
- Web database server para manipular el servidor web de la base de datos actual (la base de datos anfitriona o la base de datos componente, dependiendo de dónde se llame el comando)
- Web host database server para manipular el servidor web de la base de datos anfitriona desde un componente
- Web request receiving server para manipular el servidor web que recibe una petición, en un método común de gestión de servidores web por ejemplo.
EJECUCIÓN de un servidor web de componentes
Por razones de compatibilidad, un servidor web de componentes no se lanza por sí mismo aunque su parámetro «Lanzar el servidor web al inicio» esté activado.
Para lanzar el servidor web del componente, primero debe instanciar su objeto servidor web utilizando el comando WEB server(Web database server). Devuelve un objeto que permite gestionar el componente servidor web: la manipulación de start y stop.
C_OBJECT($myComponentWebServer)
$myComponentWebServer :=WEB Server(Web database server)
Veamos sus propiedades:
{ "name": "HDI_WebServerObject_Component1.4dbase", "isRunning": false, "defaultHomepage": "indexComponent1.html", "rootFolder": "/PACKAGE/WebFolder/", "characterSet": 106, "debugLog": 0, "HSTSEnabled": false, "HSTSMaxAge": 63072000, "HTTPCompressionLevel": 1, "HTTPCompressionThreshold": 1024, "HTTPEnabled": true, "HTTPPort": 8080, "HTTPTrace": false, "HTTPSEnabled": true, "HTTPSPort": 4431, "inactiveSessionTimeout": 480, "IPAddressToListen": "0.0.0.0", "keepSession": true, "inactiveProcessTimeout": 480, "logRecording": 0, "maxConcurrentProcesses": 100, "maxRequestSize": -1, "maxSessions": 100, "sessionCookieDomain": "", "sessionCookieName": "4DSID", "sessionCookiePath": "", "sessionIPAddressValidation": true, "minTLSVersion": 3, "openSSLVersion": "OpenSSL 1.1.1d 10 Sep 2019", "perfectForwardSecrecy": false, "cipherSuite": "...", "certificateFolder": "/PACKAGE/WebCertificate/" }
El objeto servidor web también incluye dos métodos miembros que permiten gestionar el servidor web relacionado.
Iniciar y detener un servidor web
El método miembro start permite iniciar el servidor web. Si no se establece ningún parámetro, se iniciará utilizando la configuración definida en las preferencias de la base de datos.
WEB Server(Web host database server).start()
El método miembro stop permite detener el servidor web.
WEB Server(Web host database server).stop()
Si quieres anular algunas configuraciones, sólo tienes que crear un objeto que contenga los nombres de los atributos correspondientes a las configuraciones que quieras establecer con los valores que quieras establecer. Todos los demás ajustes utilizarán la configuración actual de la base de datos.
C_OBJECT($myComponentWebServer;$options;$result)
$myComponentWebServer :=WEB Server(Web database server)
$options :=New object("HTTPPort";8081; "defaultHomepage"; "myCompHomepage.html")
$result :=$myComponentWebServer.start($options)
Tenga en cuenta que no puede cambiar directamente la configuración, primero debe detener el servidor web antes de iniciarlo con la nueva configuración.
Listado de servidores web disponibles
El comando new WEB Server list devuelve una colección de objetos correspondientes a todos los servidores web disponibles para la base de datos anfitriona.
C_COLLECTION($webServers)
$webServers :=WEB Server list
A continuación se muestra el resultado de una base de datos que ejecuta su propio servidor web y dos componentes que ejecutan sus propios servidores web:
[ {"name": "HDI_WebServerObject_Host", ...} , {"name": "HDI_WebServerObject_Component1", ...} , {"name": "HDI_WebServerObject_Component2", ...} ]
métodos de USO DE LA BASE DE DATOS WEB
Los métodos de base de datos «On Web Connection» y «On Web Authentication» pueden invocarse en la base de datos que recibe la petición, como siempre se ha hecho con los servidores web de base de datos heredados. Por ejemplo, si se envía una solicitud web a un servidor web de componentes y esta solicitud no se ajusta a un recurso existente, se llama al método «On Web Connection» de este componente. Es usted quien debe tratar la solicitud y responder, como suele ser el caso.
¿Qué pasa con los registros?
Para evitar buscar los registros del servidor web en varios lugares, los hemos guardado en la carpeta Logs de la base de datos del host. Como siempre, los registros del servidor web de la base de datos anfitriona se almacenan en su carpeta Logs y cada componente tiene su propia subcarpeta que contiene sus archivos de registro del servidor web.
Comandos web heredados
Todos los comandos web heredados que manipulan el servidor web de la base de datos anfitriona siguen teniendo como objetivo la base de datos anfitriona, incluso si se llaman desde un componente. El objetivo de ejecución de cada comando web heredado se explica en la documentación.
Sólo el nuevo objeto servidor web puede manejar el servidor web del componente. ¡Así que depende de ti manejar los diferentes servidores como quieras!