5
我試圖使用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();
的「澤西適配器」工作正常,但我不能以獲取靜態內容出現在「Web應用程序」文件夾送達(404錯誤)。
我的項目文件夾結構如下:
GrizzlyTest
-- src
| |
| -- main
| |
| -- java
| -- resources
| |
| -- webapp
| | |
| | -- index.html
| -- spring-context.xml
|
-- pom.xml
上午我在行new GrizzlyWebServer(host, port, "webapp", false);
提供「Web應用程序」的路徑犯了一個錯誤?
或者,有沒有其他的方式來提供靜態內容?
感謝阿列克謝。我有一個關於來自jar的靜態資源請求認證的問題,所以通過CLStaticHttpHandler與StaticHttpHandler。這是未經證實的,但它看起來認證不適用於前者,但適用於後者? 'WebappContext'中的這一行可以解釋爲:'if(!(h instanceof StaticHttpHandler))'(grizzly-http-servlet-2.3.17.jar)。思考?謝謝。 – user598656
好吧,從你發現它看起來可能會有一些問題。你可以請。在github上共享測試用例 - 對我來說更容易進行雙重檢查。 – alexey