Zum Hauptinhalt springen

Bereitstellung zusätzlicher Servlets 25.02

In ChatGPT öffnen

webforJ leitet alle Anfragen standardmäßig über WebforjServlet, das in web.xml auf /* abgebildet ist. Dieses Servlet verwaltet den Komponentenlebenszyklus, das Routing und die UI-Updates, die Ihre webforJ-App antreiben.

In einigen Szenarien müssen Sie möglicherweise zusätzliche Servlets neben Ihrer webforJ-App bereitstellen:

  • Integration von Drittanbieter-Bibliotheken, die eigene Servlets bereitstellen
  • Implementierung von REST-APIs oder Webhooks
  • Verarbeitung von Datei-Uploads mit benutzerdefinierter Verarbeitung
  • Unterstützung von legacy-Servlet-basiertem Code

webforJ bietet zwei Ansätze zur Bereitstellung benutzerdefinierter Servlets neben Ihrer App:

AI skill available

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."

Ansatz 1: Umbenennung von WebforjServlet

Dieser Ansatz benennt das WebforjServlet von /* auf einen bestimmten Pfad wie /ui/* um, wodurch der URL-Namespace für benutzerdefinierte Servlets freigegeben wird. Während dies eine Änderung von web.xml erfordert, erhalten benutzerdefinierte Servlets direkten Zugriff auf ihre URL-Muster ohne Proxy-Überkopf.

<web-app>
<!-- WebforjServlet umbenannt, um nur /ui/* zu verarbeiten -->
<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>

<!-- Benutzerdefiniertes Servlet mit eigenem URL-Muster -->
<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>

Mit dieser Konfiguration:

  • webforJ-Komponenten sind unter /ui/ zugänglich
  • Benutzerdefiniertes Servlet verarbeitet Anfragen an /hello-world
  • Kein Proxy-Mechanismus beteiligt - direktes Routing im Servlet-Container
Spring Boot-Konfiguration

Beim Einsatz von webforJ mit Spring Boot gibt es keine web.xml-Datei. Stattdessen konfigurieren Sie die Servlet-Zuordnung in application.properties:

webforj.servlet-mapping=/ui/*

Dieses Property benennt WebforjServlet vom Standard /* auf /ui/* um und gibt den URL-Namespace für Ihre benutzerdefinierten Servlets frei. Fügen Sie keine Anführungszeichen um den Wert hinzu - sie werden als Teil des URL-Musters interpretiert.

Ansatz 2: Proxy-Konfiguration von WebforjServlet

Dieser Ansatz behält WebforjServlet bei /* und konfiguriert benutzerdefinierte Servlets in webforj.conf. Das WebforjServlet interceptet alle Anfragen und leitet übereinstimmende Muster an Ihre benutzerdefinierten Servlets weiter.

Standard-konfiguration für 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>

<!-- Benutzerdefiniertes Servlet mit eigenem URL-Muster -->
<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>

Konfiguration von webforJ.conf

servlets: [
{
class: "com.example.HelloWorldServlet",
name: "hello-world",
config: {
foo: "bar",
baz: "bang"
}
}
]

Mit dieser Konfiguration:

  • WebforjServlet verarbeitet alle Anfragen
  • Anfragen an /hello-world werden an HelloWorldServlet weitergeleitet
  • Der optionale config-Schlüssel bietet Name/Wert-Paare als Initialisierungsparameter für das Servlet