Glassfish - Beschreibung der Umgebung, die eine Web-Anwendung läuft
-
18-09-2019 - |
Frage
Ich möchte eine Web-Anwendung wie die Dinge über seine Umgebung zu lernen, so dass es verschiedene Details beschreiben kann, wenn eine Ausnahme auftritt.
Wie würde ich die IP-Adresse (n), dass Glasfischen laufen auf innerhalb der Web-Anwendung?
Ich möchte auch eine Momentaufnahme der Konfiguration, JDBC-Verbindungen, JMS, JNDI nehmen, usw. Ist das möglich?
Ich denke, das an die API von Glasfischen mehr aufeinander bezogene wäre und eine Bohne oder mbean injiziert wird.
Walter
Lösung 3
ich wie folgt vor:
- finden Sie alle Netzwerkschnittstellen an der Maschine
- Datensatz JVM Informationen
Das gibt mir genügend Informationen, um zu bestimmen, wo ein Problem kam.
Walter
Andere Tipps
Wie würde ich die IP-Adresse bekommen (es) dass Glasfischen läuft auf innerhalb die Web-Anwendung?
Sie können diese Informationen in ServletRequest
erhalten, z.B. die Port .
Ich möchte auch einen Snapshot der Konfiguration, JDBC Verbindungen, JMS, JNDI, usw. Ist das möglich?
Sie müssen auf den Metadaten der Verbindung oder die Verbindung Fabrik verlassen. Wenn die Angst nicht tragbar ist, aber Sie sollten in der Lage sein, einige Informationen zu erhalten, zum Beispiel die JDBC Metadaten .
Sie können auch die JMX Bohnen von Glassfish verbinden. Ich habe das einmal von einem Web-App die Verbindung zu überwachen, das im Laufe der Zeit zugeteilt. Wenn Sie den Namen der JMX Bohnen kennen zu sehen (zum Beispiel, wenn Sie den Namen der Datenquelle kennen) können Sie einen Wagen auf Informationen dort ankommen. Im Grunde alles, was die native Glassfish Konsolenanzeige ist.
Sie könnten vielleicht alle Informationen beim Start-up sammeln, um eine ServletContextListener
withing und sie dann irgendwo speichern sie im Falle einer Ausnahme auszuspucken.
Beachten Sie, dass Sie mögliche sensible Informationen zu den Endnutzer offen legen kann, was nicht empfohlen ist.
Wie würde ich die IP-Adresse (n), dass Glasfischen laufen auf innerhalb der Web-Anwendung?
Verwenden Sie ServletRequest#getLocalPort()
für das (nicht ServletRequest#getServerPort()
die tatsächlich zurückgibt die Port-Nummer gesendet, an die die Anfrage , am häufigsten 80
und könnte zu Routing / Load Balancing) der Behälter hört vom Hafen unterschiedlich sein zurückzuführen.
Ich möchte auch eine Momentaufnahme der Konfiguration, JDBC-Verbindungen, JMS, JNDI nehmen, usw. Ist das möglich?
Nun, können Sie vielleicht den JNDI-Baum sehen, um zu sehen, was da drin ist, aber Ihre Anwendung soll nicht bewusst alle Details sein (verstehen: Ich glaube nicht, Sie in der Lage sein werden alle Metadaten zugreifen, auf dest nicht auf diese Weise).
Eine weitere Möglichkeit zu verbinden wäre Glassfish ist ausgesetzt Verwaltungs MBeans über JMX . Aber das wird die Admin-Anmeldeinformationen erforderlich ist (und könnte somit nicht möglich sein).
Vielleicht sollten Sie Ihre Bedürfnisse und Zwänge klären präzisere Antworten zu erhalten.