Grizzlyのcom.sun.grizzly.http.embed.GrizzlyWebServer
を使用してJersey-SpringベースのREST APIをデプロイしようとしています。私は同じものを使って静的なコンテンツを提供したい。ここで私が持っているものです。GrizzlyWebServer + Spring + Jersey +静的コンテンツをJAR内から配信
String host = "localhost";
int port = 8081;
// For jersey + Spring
ServletAdapter jAdapter = new ServletAdapter("jersey");
jAdapter.setContextPath("/api");
jAdapter.setServletInstance(new SpringServlet());
jAdapter.addContextParameter("contextConfigLocation", "classpath:spring-context.xml");
jAdapter.addServletListener("org.springframework.web.context.ContextLoaderListener");
jAdapter.addServletListener("org.springframework.web.context.request.RequestContextListener");
// create GrizzlyWebServer
GrizzlyWebServer grizzlyServer = new GrizzlyWebServer(host, port, "webapp", false);
// add jersey adapter
grizzlyServer.addGrizzlyAdapter(jAdapter, new String[]{"/api"});
// start server
grizzlyServer.start();
System.out.println("Start running server(host: " + host + ",port: " + Integer.toString(port));
System.out.println("Press any key to stop the server.");
// hang on
System.in.read();
// stop
grizzlyServer.stop();
「ジャージー・アダプターは、」正常に動作しますが、私は(404エラー)提供する「Webアプリケーション」フォルダに存在する静的なコンテンツを取得することはできませんよ。
次のように私のプロジェクトのフォルダ構造は次のとおりです。
GrizzlyTest
-- src
| |
| -- main
| |
| -- java
| -- resources
| |
| -- webapp
| | |
| | -- index.html
| -- spring-context.xml
|
-- pom.xml
私はラインnew GrizzlyWebServer(host, port, "webapp", false);
で「Webアプリケーション」のパスを提供することでミスを作っています?
静的コンテンツを配信する方法はありますか?
おかげアレクセイ:
https://github.com/oleksiys/samples/tree/master/jersey1-grizzly2-spring
サーバーのコードは次のようになります。私はJStarsから静的リソースの要求に対する認証について質問します。そのため、CLStaticHttpHandlerとStaticHttpHandlerを使用します。これは証明されていませんが、認証は前者には適用されませんが後者に適用されるように見えますか? 'WebappContext'のこの行は' if(!(h instanceof StaticHttpHandler)) '(grizzly-http-servlet-2.3.17.jar)を説明しています。思考?ありがとう。 – user598656
あなたが見つけたものから、いくつか問題があるように見えます。あなたはplsできますか?テストケースをgithubで共有してください。ダブルチェックするのが簡単になります。 – alexey