Как установить индексную страницу по умолчанию в Grizzly

В настоящее время в моем приложении, если я перехожу к http://localhost:8181/index.htm, он отлично работает, если я перехожу к http://localhost:8181, я получаю ошибку 404. Как я могу указать Grizzly загружать страницу index.htm по умолчанию?

    final HttpServer server = HttpServer.createSimpleServer(".", 8181);

    WebappContext ctx = new WebappContext("Socket", "/");

    //enable annotation configuration
    ctx.addContextInitParameter("contextClass", "org.springframework.web.context.support.AnnotationConfigWebApplicationContext");
    ctx.addContextInitParameter("contextConfigLocation", "com.production");

    //allow spring to do all of it's stuff
    ctx.addListener("org.springframework.web.context.ContextLoaderListener");

    //enable web socket support
    final WebSocketAddOn addon = new WebSocketAddOn();
    for (NetworkListener listener : server.getListeners()) {
        listener.registerAddOn(addon);

        //if false, local files (html, etc.) can be modified without restarting the server
        listener.getFileCache().setEnabled(false);
    }

    //add jersey servlet support
    ServletRegistration jerseyServletRegistration = ctx.addServlet("JerseyServlet", new ServletContainer());
    jerseyServletRegistration.setInitParameter("com.sun.jersey.config.property.packages", "com.production.resource");
    jerseyServletRegistration.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
    jerseyServletRegistration.setLoadOnStartup(1);
    jerseyServletRegistration.addMapping("/api/*");

    //add atmosphere servlet support
    AtmosphereServlet atmosphereServlet = new AtmosphereServlet();
    AtmosphereFramework f = atmosphereServlet.framework();

    ReflectorServletProcessor r = new ReflectorServletProcessor();
    r.setServletClassName("com.sun.jersey.spi.spring.container.servlet.SpringServlet");

    f.addAtmosphereHandler("/socket/*", r);

    ServletRegistration atmosphereServletRegistration = ctx.addServlet("AtmosphereServlet", atmosphereServlet);
    atmosphereServletRegistration.setInitParameter("org.atmosphere.websocket.messageContentType", "application/json");
    atmosphereServletRegistration.setInitParameter("com.sun.jersey.config.property.packages", "com.production.resource");
    atmosphereServletRegistration.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
    //atmosphereServletRegistration.addMapping("/socket/*");
    atmosphereServletRegistration.setLoadOnStartup(1);

    //serve static assets
    StaticHttpHandler staticHttpHandler = new StaticHttpHandler("src/main/web");
    server.getServerConfiguration().addHttpHandler(staticHttpHandler, "/");

    //deploy
    logger.info("Deploying server...");
    ctx.deploy(server);

person Webnet    schedule 12.04.2013    source источник
comment
На данный момент не существует концепции приветственных страниц (по крайней мере, насколько я помню). Я бы предложил зарегистрировать запрос функции.   -  person rlubke    schedule 13.04.2013
comment
что произойдет, если вы переименуете index.htm в index.html?   -  person alexey    schedule 13.04.2013


Ответы (1)


Вы не указываете, какую версию гризли вы используете, но с 2.2.19:

http://grepcode.com/file/repo1.maven.org/maven2/org.glassfish.grizzly/grizzly-http-server/2.2.19/org/glassfish/grizzly/http/server/StaticHttpHandler.java

похоже, если вы измените index.htm на index.html, страница по умолчанию должна работать.

Если это не так или вы не можете изменить имя файла по какой-либо причине, вы можете просто расширить StaticHttpHandler и переопределить метод handle, чтобы заставить его делать то, что вы хотите.

person stephen mallette    schedule 13.04.2013
comment
У меня index.html работает только на уровне без полномочий root. Если я сопоставлю StaticHttpHandler с root/, то каким-то образом запросы к localhost:8889 даже не обрабатываются StaticHttpHandler. Ты знаешь почему? (использую гризли 2.2.16 и майку). - person vladimir; 28.05.2013
comment
навскидку, не знаю почему. я пытался изменить свою реализацию, чтобы она работала от root, но это не так, поэтому я испытываю то же самое, что и вы. - person stephen mallette; 28.05.2013
comment
Вы получили ответ на эту ситуацию? Я столкнулся с той же проблемой. - person Darshan Patil; 17.09.2014