Ich habe ein Paket für den internen Gebrauch, das, wenn es zu einem Projekt hinzugefügt wird, eine Benachrichtigung an unsere QA-Anwendung senden muss, an welchem Endpunkt es verfügbar ist. Zu diesem Zweck muss ich den Kontextstamm des Projekts abrufen.Abrufen von Web App-Kontextinformationen nach der Projektbereitstellung, ohne den Webendpunkt zu treffen
Das Problem Was ich zum ersten Mal versucht, war folgendes:
@Path("/myEndpoint")
public class MyAPI {
@Context
ServletContext context
@Get
public MyObject getMyObject() {
...
context.getContextPath(); // store path in MyObject
return myObjectInstance;
}
Das Problem dabei ist, dass jemand den Endpunkt zuerst um den Weg Informationen zu erhalten schlagen muss. Ich möchte etwas, das ausgeführt wird, wenn das Projekt bereitgestellt wird. Mein nächster Versuch war, @Singleton
mit zu verwenden, aber ich hielt es nicht für die beste Praxis, dass meine API-Klasse diese Art von Code ausführt (und der ServletContext war null, also würde es nicht funktionieren, selbst wenn ich mich dafür entscheiden würde, das zu verlassen Code in ...)
Ich habe ein oder zwei andere Dinge ausprobiert, aber ohne Erfolg. Ein Vorschlag in der Abteilung war, ein Maven-Plugin zu machen, das den QA-Server mit dieser Art von Informationen anpingen würde, aber ich hoffe, dass ich der Einfachheit halber eine Java-Lösung finden werde. Gibt es eine andere Möglichkeit, Zugriff auf das Kontextstammverzeichnis zu erhalten und eine Methode automatisch nach der Bereitstellung des Projekts auslösen zu lassen?
Ich verwende Java8 mit Maven, und unsere Anwendungen werden mit Glassfish bereitgestellt.