Área de Administración es el área de documentación para desarrolladores y administradores.

Requisitos del sistema para el funcionamiento del servidor

Dominio
Se requiere un dominio registrado para un servidor en producción, mientras que en un entorno de intranet basta con un nombre de host resoluble. En un equipo de desarrollo, localhost es suficiente.
Jakarta EE Platform 10
El servidor JavaComm se ejecuta en cualquier Jakarta EE Platform 10.
Jakarta EE Web Profile 10
El servidor JavaComm se ejecuta en cualquier plataforma Jakarta EE Web Profile 10, siempre que las extensiones EE 10 necesarias estén disponibles. Utilizamos Tomcat Tomcat 10.1.44 como servidor de referencia.
MariaDB
La base de datos SQL se encarga de la gestión de los datos globales y almacena el estado del sistema. Utilizamos MariaDB 10.5.29 como base de datos de referencia.

Dominio

La domi­na es gestionada por el proveedor de dominios o por el proveedor de hosting web. A la domi­na se le puede asignar una dirección IP a través de la interfaz de administración.

Alternativamente, una domi­na puede conectarse a Internet mediante un proveedor externo. Con FreeDNS, se puede asignar una dirección IP a una domi­na. Para ello, se deben ingresar los servidores de nombres de FreeDNS en el proveedor de dominios. A continuación, se realiza una sincronización DNS. Tras unas horas, la domi­na es accesible a nivel mundial.";

Tomcat

Tomcat es un contenedor de servlets y utiliza solo las Jakarta EE 10 APIs que son necesarias para la aplicación. El servidor se mantiene ligero y eficiente. Las APIs se extraen en el directorio de Tomcat.

${CATALINA_HOME}/lib

El controlador de la base de datos también debe estar ubicado en este directorio. Después de un reinicio de Tomcat todas las extensiones están activas.

Se requiere un certificado de validación de dominio para cifrar los datos. Varias autoridades de certificación emiten certificados DV. Recomendamos Let’s Encrypt. Puede obtener un certificado directamente de Let's Encrypt o a través de su proveedor de hosting. Después, se utilizan los programas openssl y keytool para importar el certificado en el almacén de certificados de Tomcat.

openssl pkcs12 -export -in merge.crt -inkey private.key -out letsencrypt_2025_11_03.p12
keytool -changealias -alias 1 -destalias asterix -keystore letsencrypt_2025_11_03.p12 -storepass obelix

  • merge.crt es un archivo de texto creado por usted que contiene su Public Key y la cadena de certificados de Let’s Encrypt u otra Autoridad Certificadora (CA). La cadena de certificados normalmente se proporciona en un archivo de texto llamado bundle. En merge.crt, el orden es: primero el Public Key y luego la cadena de certificados.

  • private.key es un archivo de texto que contiene el Private Key de su certificado.

  • letsencrypt_2025_11_03.p12 es un almacén de certificados que se crea nuevo con exactamente un certificado. Cuando el certificado expira, el almacén se descarta y se crea uno nuevo con el certificado actualizado.

Después de importar con openssl, el certificado recibió un alias numérico. keytool lo cambió por un alias descriptivo. El alias se cambió de from 1 a asterix, y letsencrypt_2025_11_03.p12 recibió la contraseña obelix. A continuación, letsencrypt_2025_11_03.p12 se copia en la siguiente ubicación:

${CATALINA_HOME}/conf/letsencrypt_2025_11_03.p12

En el paso final, letsencrypt_2025_11_03.p12 debe especificarse en

/conf/server.xml ,

y el puerto 443 debe configurarse para HTTPS. Tomcat podrá iniciar la aplicación del servidor y la encriptación estará activa.

<!-- Ein Auszug aus der Tomcat server.xml --> <Connector port="443" defaultSSLHostConfigName="mydomain.net" protocol="org.apache.coyote.http11.Http11Nio2Protocol" sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" compression="on"> <SSLHostConfig hostName="mydomain.net" sslProtocol="TLSv1.3" certificateVerification="none"> <Certificate certificateKeyAlias="asterix" certificateKeystoreFile="${CATALINA_HOME}/conf/letsencrypt_2025_11_03.p12" certificateKeystorePassword="obelix"> </Certificate> </SSLHostConfig> </Connector>

Logging

El registro (logging) puede convertirse en un problema real si se captura demasiada información. Los servicios web se basan en HTTP, y todas las solicitudes a un servidor se registran automáticamente. Tomcat no es una excepción.

El registro excesivo o las solicitudes que contienen un ID de usuario pueden ser suprimidos mediante un filtro de registro. Para este propósito se desarrolló la clase net.javacomm.server.LogFilter. Esta clase define un patrón de URL que impide el registro de ciertos recursos. El patrón debe ajustarse según los requisitos específicos. Por defecto, todas las URL para el uso compartido de pantalla están suprimidas para evitar archivos de registro excesivamente grandes.

Tomcat registra la clase net.javacomm.server.LogFilter a través del web.xml de javacommserver.war. Si LogFilter detecta un patrón de <filter-mapping>, notifica a la configuración de AccessLogValve en server.xml, de modo que el registro se suprima en consecuencia.

<!-- A snippet of web.xml in javacommserver.war --> <filter> <filter-name>LogFilter</filter-name> <filter-class>net.javacomm.server.LogFilter</filter-class> </filter> <filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/screenshot/*</url-pattern> <url-pattern>/videokonferenz/*</url-pattern> </filter-mapping>

<!-- A snippet of ${CATALINA_HOME}/conf/server.xml --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" conditionUnless="block" />

MariaDB

Las tablas del servidor para funciones administrativas se gestionan mediante scripts SQL y la GUI de administración. La GUI de administración forma parte del cliente JavaComm y solo se habilita para los usuarios marcados como administradores del programa en la tabla TB_USER. No se pueden crear administradores del programa a través de la GUI; la creación y eliminación se realiza exclusivamente por un administrador de base de datos mediante SQL o una herramienta de gestión de bases de datos. DBeaver es muy adecuado para este propósito. DBeaver está disponible como aplicación de escritorio o como complemento de Eclipse.

Para configurar la base de datos y las tablas, existe un script general que se ejecuta mediante el cliente de MariaDB en modo batch.

Antes de ejecutar el script maestro runolymp.cmd, se deben revisar las entradas en los scripts individuales y adaptarlas según los requisitos específicos. El script maestro es idempotente. Los usuarios que no deseen utilizar MariaDB deben tener en cuenta tres puntos:

  1. Un controlador JDBC adecuado debe copiarse en el directorio de Tomcat:

    /lib

  2. Algunos tipos de datos del archivo olymp_tables_10_11_4.sql deben reemplazarse por equivalentes en la base de datos de destino."
  3. Algunos comandos SQL pueden necesitar ajustes. Los comandos SQL están referenciados por una clave única en el archivo sqlmapper.xml , que se encuentra en el archivo fuente en:

    javacomm/javacommserver/src/main/resources/net/javacomm/database/sqlmapper

Consejo:
Todos los comandos de la base de datos se registran con su clave en el archivo:

${CATALINA_HOME}/logs/javacommserver/database.log

antes de su ejecución. Si un comando no pudo ejecutarse, el archivo de registro contiene la entrada correspondiente con la causa del error.

Configuración de base de datos y correo electrónico en Tomcat

La configuración de las credenciales de acceso para la base de datos y el correo electrónico se realiza a través del archivo context.xml. Este archivo no se distribuye y solo es accesible localmente en el servidor. Tomcat necesita las credenciales en texto plano para establecer conexiones con la base de datos y el servidor de correo. Cifrar el archivo no proporcionaría una protección adicional, ya que la clave de descifrado también tendría que estar disponible localmente.

Las bases de datos son completamente accesibles para los administradores y suelen replicarse y respaldarse. Por este motivo, almacenar las credenciales en context.xml es técnicamente adecuado y cumple con los estándares habituales de la industria para aplicaciones Tomcat.

El archivo se encuentra en el archivo del código fuente en:

javacomm/javacommserver/src/main/webapp/META-INF/context.xml

<!-- context.xml --> <?xml version="1.0" encoding="UTF-8"?> <Context path="/javacommserver" reloadable="true" > <Resource name="jdbc/olymp" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" testWhileIdle="true" testOnBorrow="true" testOnReturn="false" validationQuery="SELECT 1" validationInterval="30000" timeBetweenEvictionRunsMillis="30000" maxActive="100" minIdle="10" maxWait="10000" initialSize="10" removeAbandonedTimeout="60" removeAbandoned="true" logAbandoned="true" minEvictableIdleTimeMillis="30000" jmxEnabled="false" jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState; org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer" username="hades" password="persephone" driverClassName="org.mariadb.jdbc.Driver" url="jdbc:mariadb://localhost:3306/olymp"/> <Resource name="mail/portal" auth="Container" type="jakarta.mail.Session" mail.smtp.starttls.enable="true" mail.smtp.starttls.required="true" mail.smtp.auth="true" mail.smtp.ssl.enable="false" mail.smtp.ssl.checkserveridentity="false" mail.smtp.connectiontimeout="5000" /> <Environment name="adminmail" value="admin@domain.net" type="java.lang.String" /> <Environment name="mail.smtp.password" value="super_secret" type="java.lang.String" /> <Environment name="mail.smtp.user" value="mailuser@domain.net" type="java.lang.String" /> <Environment name="mail.smtp.host" value="mail.domain.net" type="java.lang.String" /> <Environment name="mail.smtp.port" value="587" type="java.lang.Integer" /> </Context>

Los parámetros más importantes, explicados brevemente:

Parámetros de la base de datos:

  • username: Desde la perspectiva de MariaDB, Tomcat es un usuario normal llamado hades.
  • password: La contraseña para el usuario de MariaDB es persephone.
  • driverClassName: Esta clase establece la conexión entre Tomcat y MariaDB.
  • url: Esta URL indica a Tomcat en qué host y puerto MariaDB acepta conexiones.

Parámetros de correo electrónico:

  • adminmail: Los administradores reciben notificaciones sobre solicitudes de registro de usuarios a través de este buzón.
  • mail.smtp.password: Tomcat utiliza esta contraseña para autenticarse en el servidor de correo.
  • mail.smtp.user: Tomcat inicia sesión con este nombre de usuario.
  • mail.smtp.host: El servidor de correo está disponible en esta dirección.
  • mail.smtp.port: El servidor de correo acepta solicitudes en este puerto.

Interfaz de Administración (AdminUI)

Los usuarios con derechos de administrador ven el menú Administrator en la parte superior derecha del cliente. Para conceder estos derechos a un usuario, un administrador de base de datos debe establecer la columna ISADMIN en 1 para el usuario correspondiente en la tabla TB_USER.

El administrador del programa define el proceso de inicio de sesión y establece filtros para los alias y las salas. Además, determina el período de gracia para que las salas de pausa se conviertan en un foro. El administrador también puede iniciar el proceso de actualización de todos los clientes indicando los números de versión del programa que estén obsoletos.

Menú Administrador gestionar

mvn
mvn -Pwinrunner
mvn -Plinrunner
mvn -Pwinportable
mvn -Plinportable
mvn -Prelease
mvn

Aviso Legal