El ecosistema jt-framework es una solución robusta basada en Spring Boot diseñada para agilizar el desarrollo de servidores compatibles con el protocolo JT/T 808, extendiéndose además hacia el estándar JT/T 1078 para transmisión de video, servidores de archivos adjuntos y herramientas de monitorización. Este framework permite a los desarrolladores centrarse en la lógica de negocio del Internet de los Vehículos (IoV) sin tener que gestionar la complejidad de bajo nivel de Netty o la segmentación de paquetes.
Componentes Principales
1. Spring Boot Starters
El proyecto ofrece soporte para dos líneas principales de Spring Boot, facilitando la integración inmediata mediante dependencias configurables:
- Spring Boot 3.x: Requiere JDK 17 o superior. Utiliza el artefacto
jt-808-server-spring-boot-starter. - Spring Boot 2.x: Compatible con JDK 8 en adelante. Utiliza el artefacto
jt-808-server-spring-boot-starter-boot2.
2. Procesamiento de Mensajes mediante Anotaciones
En lugar de implementar estructuras complejas de control como switch-case para enrutar los mensajes del protocolo, jt-framwork emplea un modelo basado en anotaciones. Esto desacopla la decodificación del protocolo de la lógica operativa.
@Jt808RequestHandlerMapping(msgId = 0x0200)
public class LocationHandler {
@Jt808RequestHandler
public void processLocationUpdate(Jt808Request request) {
// Lógica para procesar la ubicación del vehículo
TerminalLocationData data = request.parseBody(TerminalLocationData.class);
System.out.println("Vehículo: " + request.getTerminalId() + " en lat: " + data.getLatitude());
}
}
3. Gestión de Protocolos Complejos
El framework gestiona de forma nativa los aspectos más críticos del estándar JT/T 808:
- Sub-empaquetado y reensamblado de mensajes largos.
- Cifrado y descifrado de tramas.
- Adaptación de múltiples versiones del protocolo.
- Persistencia de paquetes segmentados mediante Caffeine o Redis.
Servidores Complementarios
Servidor de Archivos Adjuntos
Diseñado para la recepción de archivos (como evidencias de alarmas o registros), este componente puede operar de forma independiente al servidor de instrucciones principal. Se activa mediante configuración simple en el archivo application.yml:
jt808:
attachment-server:
enabled: true
port: 6809
file-path: /data/jt808/attachments/
Soporte para JT/T 1078 (Audio y Video)
Proporciona un starter para gestionar flujos multimedia en tiempo real, permitiendo la integración de flujos TCP y su posterior consumo mediante HTTP (WebMVC o WebFlux).
Arquitectura Técnica
- Núcleo: Java con Netty para la capa de red.
- Construcción: Gradle con Kotlin DSL.
- Capa de Datos: Soporte para Redis como almacenamiento distribuido de sesiones y fragmentos.
- Interfaz de Usuario: Dashboard opcional construido con Vue 3 para supervisar el estado de las conexiones en tiempo real.
Configuración de Dependencias
Para integrar el framework en un proyecto Maven basado en Spring Boot 3, se debe añadir la siguiente dependencia:
<dependency>
<groupId>io.github.hylexus.jt</groupId>
<artifactId>jt-808-server-spring-boot-starter</artifactId>
<version>3.0.0-rc.1</version>
</dependency>
Estructura del Proyecto
El repositorio está organizado en módulos especializados para mantener la modularidad:
- jt-core: Funcionalidades base compartidas.
- jt-808-server-support: Implementación del motor de protocolos 808.
- jt-1078-server-suport: Soporte para transmisión multimedia.
- samples: Ejemplos listos para ejecutar que cubren desde configuraciones básicas hasta implementaciones personalizadas.
Consideraciones de Despliegue
Al implementar este framework en entornos productivos o contenedores (Docker), es fundamental asegurar que:
- Los puertos TCP (por defecto 6808 para instrucciones y 6809 para adjuntos) estén expuestos y mapeados correctamente.
- Los directorios temporales definidos para el almacenamiento de video o archivos tengan permisos de escritura adecuados.
- Se seleccione una estrategia de caché (Caffeine vs Redis) acorde a la carga de terminales simultáneos prevista para garantizar la consistencia en el reensamblado de paquetes.