Was ist die richtige URL, um ResourceBase des JAR-Ordners "resources / webapp" für Embedded Jetty anzugeben?

9

Wir möchten ein einfaches eingebettetes Jetty-Servelet mit den Web-Ressourcen im Ressourcenordner einer JAR-Datei. Wir haben einige Eigenschaftendateien im JAR und laden sie über einen Ressourcenpfad. Wir möchten die Jetty-Ressourcenbasis folgendermaßen angeben:

  • Ressourcen / webapp
  • set: resource_handler. setResourceBase ("webapp")

Ordner in der JAR-Datei. Dies ist eine Bare-Bones-JAR-Datei (nicht WAR, keine Frameworks, ohne Spring, wie Vanille wie wir können ). Initial Tests werfen weiterhin Ausnahmen für etwas wie die folgenden Zeichenfolgen:

%Vor%

Obwohl der Server scheinbar läuft, kann das Ergebnis meine index.html nicht finden. ( Update :) Dieses Beispiel nimmt nur den Jetty-Eintrag " Eingebetteter Dateiserver " Beispiel. In diesem Fall muss die Jetty Ressourcenbasis der JAR-Datei (vollständige URL) zugeordnet werden:

  • "jar: file:! / webapp / index.html",

wie folgt:

  • resource_handler.setResourceBase (" jar: file:! / webapp ");

Anstelle des angegebenen Beispiels:

  • resource_handler.setResourceBase (".");

Und wir möchten, dass dies die URL des Browsers wie folgt abbildet:

  • localhost: 8080 / index.html
    • ... geben ...
  • jar: Datei:! / webapp / index.html

Für den Kontrast der JAR-Pfad, der für die Konfigurationsdateien unten funktioniert. Die Frage: Was sollte die URL so sein, Jetty Ressourcenbasis kann meine Index.html-Datei bereitstellen?

  • Ressourcen /
    • Konfig /
      • display.properties
Die

-Datei ist: "/config/display.properties" und dies funktioniert im selben Projektcode mit einer load resources-Operation. Das Layout ist wie folgt:

%Vor%

Um die allgemeine Idee zu geben.

ähnliche Fragen:

will 06.08.2014, 07:36
quelle

1 Antwort

6

Ich habe eine funktionierende Lösung - Work-around, die ich in der Hoffnung poste, dass dieser Ansatz die richtige Methode anregen wird. Ich glaube immer noch, dass es einen Weg geben sollte, einen Ordner innerhalb des JAR relativ zum JAR anzugeben.

Wie auch immer, diese Methode funktioniert. Ich habe es verwendet, um statische Webinhalte innerhalb des JAR zu betreiben. Im Wesentlichen habe ich Java den absoluten Pfad zur laufenden JAR-Ressource auflösen und diesen Pfadnamen an Jetty übergeben. Wenn ich das mache, zeigt Jetty meine Begrüßungsdatei "helloWorld.html" an.

%Vor%

In der Willkommensdatei habe ich einen bestimmten Text angegeben, um den Ursprung der Datei (im Ressourcenordner) zu identifizieren. Im Browser:

  • localhost: 8080

Gibt die Datei halloWorld.html an.

  • localhost: 8080 / andere

Zeigt eine Verzeichnisliste des Verzeichnisses jar: / webapp / other / in der JAR-Datei an. Dies beruht darauf, dass nicht das JAR ändert, während der Server ausgeführt wird.

Unter Linux, wenn jemand cp -s eine neue JAR-Datei über die laufende JAR gibt, gibt Jetty:

%Vor%

Und Sie können nicht mehr auf Seiten zugreifen. Das war unerwartet (offensichtlich wird die JAR offen gehalten). Die gute Nachricht ist, dass wenn Sie mv -s die JAR-Datei:

  • mv fileserver.jar fileserverXX.jar

Jetty versorgt den Server weiterhin mit dem (umbenannten) DateiserverXX.jar-Inhalt. Ich kann damit glücklich sein. Allerdings möchte ich immer noch den entsprechenden relativen Pfad zum absoluten Dateinamen kennen.

    
will 07.08.2014, 02:03
quelle

Tags und Links