Ist es möglich, die für einen Tomcat-Webserver konfigurierten HTTP- und HTTPS-Ports aus dem Java-Code der Webanwendung zu ermitteln, bevor HTTP- oder HTTPS-Anfragen stattfinden.
Ich brauche diese Informationen beim Start der Anwendung. Ich möchte nicht warten, bis jemand eine HTTP-Anfrage einleitet und getServerPort () aufruft.
Was ich möchte, ist HTTP und HTTPS-Ports beim Start der Webapplikation herauszufinden.
Ist das möglich? Ich habe zu diesem Problem sehr gut gesucht, aber kaum Lösungen gefunden.
Um während der Laufzeit auf diese Konfiguration zugreifen zu können, ist eine Möglichkeit, Ihr eigenes Valve zu erstellen, erweitert von ValveBase
und registrieren Sie es in der Konfiguration server.xml (siehe Ссылка ) unter deinem Engine
. Überschreiben Sie die Methode setContainer(Container container)
. Wenn unter der Engine registriert, sollte der Parameter container
vom Typ StandardEngine
. Von diesem können Sie getService()
aufrufen, um einen Verweis auf die Service
. Der Service hat eine Methode findConnectors()
. Dadurch wird ein Array von Connector
Instanzen zurückgegeben. die konfigurierten Anschlüsse (Endpunkte) für Ihren Service widerspiegeln. Von diesen können Sie den konfigurierten Port abrufen, indem Sie getPort()
aufrufen.
Sie müssen catalina.jar auf Ihrem Klassenpfad haben. Beachten Sie, dass dies beim Start des Servers aufgerufen wird, sodass Sie die Portinformationen in einem global verfügbaren Speicher speichern müssen, wenn Sie später darauf zugreifen müssen.
Wenn Sie es nicht in einem Ventil machen wollen, werden die Dinge etwas schmutziger, da Sie die Introspektion und die Sichtbarkeitseinschränkung des Feldes nutzen müssen.
Dies ist ein Beispiel für einen Standardfilter, der Portinformationen in der Methode init()
extrahiert
Es erfordert commons-lang3 (für die FieldUtils-Klasse).