2013-06-06 11 views
6

Chcę, aby Grizzly serwował pliki statyczne z pliku .jar, który zawiera aplikację JAX-RS, Grizzly i wszystkie inne biblioteki. Używam org.glassfish.grizzly.http.server.StaticHttpHandler do obsługi plików statycznych.Obsługa statycznej zawartości za pomocą StaticHttpHandler grizzly z .jar

public class Main { 

    // ... 

    public static void main(String[] args) throws IOException, URISyntaxException { 
    final HttpServer server = startServer(); 
    server.getServerConfiguration().addHttpHandler(
      new StaticHttpHandler(getTemplatePath()), "/static"); 
    System.in.read(); 
    server.stop(); 
    } 

    private static String getTemplatePath() throws URISyntaxException { 
    return Main.class.getClassLoader().getResource("templates/static").getPath(); 
    } 
} 

Ale działa tylko wtedy, gdy uruchomię aplikację z moim IDE. Jeśli zapakuję plik .jar i uruchomię go, statyczne pliki nie zostaną znalezione.

Czy można wyświetlać pliki statyczne z pliku .jar z grizzly's StaticHttpHandler? I jak?

Odpowiedz

7

Musisz użyć CLStaticHttpHandler zamiast StaticHttpHandler.

Proszę spojrzeć na to pytanie html server grizzly+jersey (.html from .jar archive)

+0

Dziękuję, ale gdzie mogę znaleźć CLStaticHttpHandler? Nie ma go w pakiecie Grizzly, a nawet Google znajduje tylko 3 strony na ten temat. – deamon

+0

Pochodzi z wersją Grizzly 2.3.3. Więcej szczegółów można znaleźć tutaj: https://mytecc.wordpress.com/2013/06/06/grizzly-2-3-3-serving-static-http-resources-from-jar-files/ – alexey

+0

Ok, I ' Nie jestem na bieżąco, ponieważ Grizzly jest dla mnie przejściową zależnością od JAX-RS. – deamon

Powiązane problemy