Despliegue de Servlets Adicionales 25.02
webforJ enruta todas las solicitudes a través de WebforjServlet, que está mapeado a /* en web.xml por defecto. Este servlet gestiona el ciclo de vida del componente, el enrutamiento y las actualizaciones de la interfaz de usuario que impulsan tu aplicación webforJ.
En algunos escenarios, es posible que necesites desplegar servlets adicionales junto con tu aplicación webforJ:
- Integrar bibliotecas de terceros que proporcionan sus propios servlets
- Implementar API REST o webhooks
- Manejar cargas de archivos con procesamiento personalizado
- Soportar código heredado basado en servlets
webforJ ofrece dos enfoques para desplegar servlets personalizados junto con tu aplicación:
The webforj-adding-servlets skill can add REST endpoints, webhooks, and custom servlets. After installing the webforJ AI plugin, ask your assistant:
- "Add a REST endpoint at /api/orders."
- "Wire up a webhook handler for Stripe."
- "Mount Swagger UI at /api/docs."
Enfoque 1: Reasignación de WebforjServlet
Este enfoque reasigna WebforjServlet de /* a una ruta específica como /ui/*, liberando el espacio de nombres de URL para servlets personalizados. Aunque esto requiere modificar web.xml, proporciona a los servlets personalizados acceso directo a sus patrones de URL sin sobrecarga de proxy.
<web-app>
<!-- WebforjServlet reasignado para manejar solo /ui/* -->
<servlet>
<servlet-name>WebforjServlet</servlet-name>
<servlet-class>com.webforj.servlet.WebforjServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WebforjServlet</servlet-name>
<url-pattern>/ui/*</url-pattern>
</servlet-mapping>
<!-- Servlet personalizado con su propio patrón de URL -->
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.example.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/hello-world</url-pattern>
</servlet-mapping>
</web-app>
Con esta configuración:
- Los componentes de webforJ son accesibles bajo
/ui/ - El servlet personalizado maneja solicitudes a
/hello-world - No hay mecanismo de proxy involucrado - enrutamiento directo del contenedor de servlets
Al utilizar webforJ con Spring Boot, no hay un archivo web.xml. En su lugar, configura el mapeo del servlet en application.properties:
webforj.servlet-mapping=/ui/*
Esta propiedad reasigna WebforjServlet del /* por defecto a /ui/*, liberando el espacio de nombres de URL para tus servlets personalizados. No incluyas comillas alrededor del valor: se interpretarán como parte del patrón de URL.
Enfoque 2: configuración de proxy de WebforjServlet
Este enfoque mantiene WebforjServlet en /* y configura servlets personalizados en webforj.conf. El WebforjServlet intercepta todas las solicitudes y envía a proxys los patrones coincidentes a tus servlets personalizados.
Configuración estándar de web.xml
<servlet>
<servlet-name>WebforjServlet</servlet-name>
<servlet-class>com.webforj.servlet.WebforjServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WebforjServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!-- Servlet personalizado con su propio patrón de URL -->
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.example.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/hello-world</url-pattern>
</servlet-mapping>
</web-app>
Configuración de webforJ.conf
servlets: [
{
class: "com.example.HelloWorldServlet",
name: "hello-world",
config: {
foo: "bar",
baz: "bang"
}
}
]
Con esta configuración:
WebforjServletmaneja todas las solicitudes- Las solicitudes a
/hello-worldson enviadas aHelloWorldServlet - La clave
configopcional proporciona pares nombre/valor como parámetros de inicialización para el servlet