具有静态内容和REST资源的Grizzly Server

时间:2014-01-04 18:12:07

标签: java grizzly jersey-2.0

我有一个Jersey REST 2.5.1服务,通过Grizzly服务器提供服务。到目前为止一切正常。我想添加一些静态内容,这些内容也通过Grizzly提供,并从我的JAR文件中提供。因此我使用CLStaticHttpHandler。当我明确访问静态资源(例如index.html(例如http://localhost:8080/index.html)时,一切正常。但是,当我尝试访问根http://localhost:8080时,我得到了404.代码如下所示:

ObjectMapper mapper = new ObjectMapper();
// some configuration stuff here

JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
provider.setMapper(mapper);

ResourceConfig resourceConfig = new ResourceConfig()
            .packages("my.restapi.package")
            .register(provider);

HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), resourceConfig);
HttpHandler httpHandler = new CLStaticHttpHandler(HttpServer.class.getClassLoader(), "/static/");
httpServer.getServerConfiguration().addHttpHandler(httpHandler, "/");

据调试我可以看出,org.glassfish.grizzly.http.server.CLStaticHttpHandler.handle(String, Request, Response)永远不会被调用。任何提示,如何将index.html作为默认页面进行访问?

1 个答案:

答案 0 :(得分:9)

经过一些浪费时间后,我觉得现在有点愚蠢,但简单的解决方案是,在BASE_URIhttp://localhost:8080/api/而不是http://localhost:8080/)中指定路径。现在,在访问/时,我获得index.html,REST方法位于/api