Déploiement de servlets supplémentaires 25.02
webforJ achemine toutes les requêtes via WebforjServlet, qui est mappé par défaut sur /* dans web.xml. Ce servlet gère le cycle de vie des composants, le routage et les mises à jour de l'interface utilisateur qui alimentent votre application webforJ.
Dans certains scénarios, vous pourriez avoir besoin de déployer des servlets supplémentaires aux côtés de votre application webforJ :
- Intégration de bibliothèques tierces qui fournissent leurs propres servlets
- Mise en œuvre d'API REST ou de webhooks
- Gestion des fichiers téléchargés avec un traitement personnalisé
- Prise en charge de code basé sur des servlets hérités
webforJ propose deux approches pour déployer des servlets personnalisés aux côtés de votre application :
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."
Approche 1 : Remappage de WebforjServlet
Cette approche remappe le WebforjServlet de /* à un chemin spécifique comme /ui/*, libérant ainsi l'espace d'URL pour les servlets personnalisés. Bien que cela nécessite de modifier web.xml, cela permet aux servlets personnalisés d'accéder directement à leurs motifs d'URL sans aucune surcharge de proxy.
<web-app>
<!-- WebforjServlet remappé pour gérer uniquement /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 personnalisé avec son propre motif d'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>
Avec cette configuration :
- Les composants webforJ sont accessibles sous
/ui/ - Le servlet personnalisé gère les requêtes vers
/hello-world - Aucun mécanisme de proxy impliqué - routage direct du conteneur de servlets
Lors de l'utilisation de webforJ avec Spring Boot, il n'y a pas de fichier web.xml. Au lieu de cela, configurez le mappage des servlets dans application.properties :
webforj.servlet-mapping=/ui/*
Cette propriété remappe WebforjServlet du par défaut /* au /ui/*, libérant ainsi l'espace d'URL pour vos servlets personnalisés. N'incluez pas de guillemets autour de la valeur - ils seront interprétés comme faisant partie du motif d'URL.
Approche 2 : Configuration proxy de WebforjServlet
Cette approche garde WebforjServlet à /* et configure des servlets personnalisés dans webforj.conf. Le WebforjServlet intercepte toutes les requêtes et les proxis vers les servlets personnalisés correspondants.
Configuration standard 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 personnalisé avec son propre motif d'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>
Configuration webforJ.conf
servlets: [
{
class: "com.example.HelloWorldServlet",
name: "hello-world",
config: {
foo: "bar",
baz: "bang"
}
}
]
Avec cette configuration :
WebforjServletgère toutes les requêtes- Les requêtes vers
/hello-worldsont proxis versHelloWorldServlet - La clé
configoptionnelle fournit des paires nom/valeur comme paramètres d'initialisation pour le servlet