2013-06-06 18 views
6

Grizzly'nin bir JAX-RS uygulaması, Grizzly ve diğer tüm lib'leri içeren bir .jar dosyasından statik dosyalar sunmasını istiyorum. Statik dosyaları sunmak için org.glassfish.grizzly.http.server.StaticHttpHandler kullanıyorum.Grizzly'nin StaticHttpHandler öğesi ile statik içeriğe .jar'dan aktarma

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(); 
    } 
} 

Ancak, yalnızca uygulamayı IDE ile başlatırsam çalışır. Bir .jar yükler ve çalıştırırsam, statik dosyalar bulunmaz.

Statik dosyaları grizzly'nin StaticHttpHandler numaralı bir .jar içinde sunması mümkün mü? Ve nasıl?

cevap

7

StaticHttpHandler yerine CLStaticHttpHandler kullanmanız gerekir.

html server grizzly+jersey (.html from .jar archive)

+0

teşekkür ederiz bu soruya bir göz atın lütfen ama CLStaticHttpHandler nerede bulabilirim? Bu Grizzly paketinde değil ve hatta Google bu konuda sadece 3 sayfa buluyor. – deamon

+0

Grizzly versiyon 2.3.3 ile birlikte gelir. Daha fazla bilgi burada bulunabilir: https://mytecc.wordpress.com/2013/06/06/grizzly-2-3-3-serving-static-http-resources-from-jar-files/ – alexey

+0

Tamam, ben ' Bugüne kadar değil, çünkü Grizzly benim için JAX-RS'den geçişli bir bağımlılık. – deamon