Programmgesteuertes Erstellen, Konfigurieren und Ausführen eines Tomcat-Servers

Programmgesteuertes Erstellen, Konfigurieren und Ausführen eines Tomcat-Servers

1. Überblick

In diesem kurzen Artikel werden wir programmgesteuertTomcat server erstellen, konfigurieren und ausführen.

2. Konfiguration

Bevor wir beginnen, müssen wir unser Maven-Projekt einrichten, indem wir die folgenden Abhängigkeiten zu unserenpom.xml hinzufügen:


    
        org.apache.tomcat
        tomcat-catalina
        ${tomcat.version}
    
    
        org.apache.httpcomponents
        httpclient
        ${apache.httpclient}
    
    
        junit
        junit
        ${junit.version}
        test
    

Hier ist einlink to Maven Central mit den neuesten Versionen der hier im Projekt verwendeten Abhängigkeiten.

3. Tomcat initialisieren und konfigurieren

Lassen Sie uns zunächst die Schritte erläutern, die für die Initialisierung und Konfiguration eines Tomcat-Servers erforderlich sind.

3.1. Tomcat erstellen

Wir können eine Instanz erstellen, indem wir einfach Folgendes tun:

Tomcat tomcat = new Tomcat();

Nachdem wir den Server haben, konfigurieren wir ihn.

3.2. Tomcat konfigurieren

Wir konzentrieren uns darauf, wie Sie den Server zum Laufen bringen und ein Servlet und einen Filter hinzufügen.

Zunächst müssen wir einen Port, einen Hostnamen und einappBase (normalerweise Web-Apps) konfigurieren. Für unseren Zweck verwenden wir das aktuelle Verzeichnis:

tomcat.setPort(8080);
tomcat.setHostname("localhost");
String appBase = ".";
tomcat.getHost().setAppBase(appBase);

Als nächstes müssen wir eindocBase (das Kontextstammverzeichnis für diese Webanwendung) festlegen:

File docBase = new File(System.getProperty("java.io.tmpdir"));
Context context = tomcat.addContext("", docBase.getAbsolutePath());

Zu diesem Zeitpunkt haben wir einen fast funktionierenden Tomcat.

Als Nächstes fügen wir ein Servlet und einen Filter hinzu und starten den Server, um festzustellen, ob er funktioniert.

3.3. Hinzufügen eines Servlets zum Tomcat-Kontext

Als Nächstes fügen wirHttpServletResponse. einen einfachen Text hinzu. Dies ist der Text, der angezeigt wird, wenn wir auf die URL-Zuordnung für dieses Servlet zugreifen.

Definieren wir zunächst unser Servlet:

public class MyServlet extends HttpServlet {

    @Override
    protected void doGet(
      HttpServletRequest req,
      HttpServletResponse resp) throws IOException {

        resp.setStatus(HttpServletResponse.SC_OK);
        resp.getWriter().write("test");
        resp.getWriter().flush();
        resp.getWriter().close();
    }
}

Jetzt fügen wir dieses Servlet zum Tomcat-Server hinzu:

Class servletClass = MyServlet.class;
Tomcat.addServlet(
  context, servletClass.getSimpleName(), servletClass.getName());
context.addServletMappingDecoded(
  "/my-servlet/*", servletClass.getSimpleName());

3.4. Hinzufügen eines Filters zum Tomcat-Kontext

Als nächstes definieren wir einen Filter und fügen ihn Tomcat hinzu:

public class MyFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) {
        // ...
    }

    @Override
    public void doFilter(
      ServletRequest request,
      ServletResponse response,
      FilterChain chain)
      throws IOException, ServletException {

        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.addHeader("myHeader", "myHeaderValue");
        chain.doFilter(request, httpResponse);
    }

    @Override
    public void destroy() {
        // ...
    }
}

Das Hinzufügen des Filters zum Kontext erfordert etwas mehr Arbeit:

Class filterClass = MyFilter.class;
FilterDef myFilterDef = new FilterDef();
myFilterDef.setFilterClass(filterClass.getName());
myFilterDef.setFilterName(filterClass.getSimpleName());
context.addFilterDef(myFilterDef);

FilterMap myFilterMap = new FilterMap();
myFilterMap.setFilterName(filterClass.getSimpleName());
myFilterMap.addURLPattern("/my-servlet/*");
context.addFilterMap(myFilterMap);

Zu diesem Zeitpunkt sollten wir dem Tomcat ein Servlet und einen Filter hinzufügen.

Starten Sie das Programm und rufen Sie die Seite "Test" auf. Überprüfen Sie die Protokolle, um festzustellen, ob der Filter funktioniert.

4. Tomcat starten

Dies ist eine ziemlich einfache Operation und danach sollten wir Tomcat laufen sehen:

tomcat.start();
tomcat.getServer().await();

Sobald es gestartet ist, können wir zuhttp://localhost:8080/my-servlet gehen und die Testseite sehen:

image

Und wenn wir uns die Protokolle ansehen, sehen wir ungefähr Folgendes:

image

Diese Protokolle zeigen, dass Tomcat Port 8080 abgehört hat und dass unser Filter ordnungsgemäß funktioniert.

5. Fazit

In diesem Tutorial haben wir eine grundlegende programmatische Einrichtung eines Tomcat-Servers durchlaufen.

Wir haben uns angesehen, wie Sie den Server erstellen, konfigurieren und ausführen, aber auch, wie Sie dem Tomcat-Kontext programmgesteuert ein Servlet und einen Filter hinzufügen können.

Wie immer kann die vollständige Implementierungover on Github gefunden werden.