2013-06-06 24 views
6

Tôi muốn Grizzly phân phát các tệp tĩnh từ bên trong .jar, chứa ứng dụng JAX-RS, Grizzly và tất cả các libs khác. Tôi đang sử dụng org.glassfish.grizzly.http.server.StaticHttpHandler để phục vụ các tệp tĩnh.Cung cấp nội dung tĩnh với staticHttpHandler của grizzly từ bên trong một .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(); 
    } 
} 

Nhưng nó chỉ hoạt động, nếu tôi khởi động ứng dụng bằng IDE của mình. Nếu tôi đóng gói .jar và chạy nó, các tập tin tĩnh không được tìm thấy.

Có thể phân phát tệp tĩnh từ bên trong .jar với sốcủa grizzly không? Và làm thế nào?

Trả lời

7

Bạn phải sử dụng CLStaticHttpHandler thay vì StaticHttpHandler.

Xin hãy nhìn vào câu hỏi này html server grizzly+jersey (.html from .jar archive)

+0

Cảm ơn bạn, nhưng nơi tôi có thể tìm CLStaticHttpHandler? Nó không nằm trong gói Grizzly và thậm chí Google chỉ tìm thấy 3 trang về nó. – deamon

+0

Nó đi kèm với phiên bản Grizzly 2.3.3. Bạn có thể tìm thêm chi tiết tại đây: https://mytecc.wordpress.com/2013/06/06/grizzly-2-3-3-serving-static-http-resources-from-jar-files/ – alexey

+0

Ok, tôi ' m không cập nhật, bởi vì Grizzly là một sự phụ thuộc quá độ từ JAX-RS cho tôi. – deamon

Các vấn đề liên quan