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:
Und wenn wir uns die Protokolle ansehen, sehen wir ungefähr Folgendes:
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.