2013-06-06 9 views
6

Grizzlyに、JAX-RSアプリケーション、Grizzlyおよび他のすべてのライブラリを含む.jar内の静的ファイルを提供したい。私はorg.glassfish.grizzly.http.server.StaticHttpHandlerを使用して静的ファイルを提供しています。.jar内からgrizzlyのStaticHttpHandlerを使って静的コンテンツを配信する

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

私のIDEでアプリケーションを起動した場合にのみ動作します。 .jarをパックして実行すると、静的ファイルが見つかりません。

grizzlyのStaticHttpHandlerで.jar内の静的ファイルを提供することは可能ですか?そしてどうやって?

答えて

7

StaticHttpHandlerの代わりにCLStaticHttpHandlerを使用する必要があります。

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

+0

ありがとう、この質問を見てください、私はCLStaticHttpHandler場所を見つけることができますか?それはGrizzlyパッケージには含まれておらず、Googleでも3ページしか見つからない。 – deamon

+0

Grizzlyバージョン2.3.3が付属しています。詳細はこちらをご覧ください:https://mytecc.wordpress.com/2013/06/06/grizzly-2-3-3-serving-static-http-resources-from-jar-files/ – alexey

+0

オクラホマ、 Grizzlyは私のためにJAX-RSからの推移的な依存関係であるため、最新ではありません。 – deamon

関連する問題