2013-04-12 27 views
2

目前在我的應用程序,如果我去http://localhost:8181/index.htm它的偉大工程,如果我去http://localhost:8181我得到一個404錯誤。我怎樣才能讓灰熊默認加載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); 
+0

有目前的時刻(至少沒有我記得)無任歡迎頁面的概念。我建議記錄一個功能請求。如果重命名的index.htm到index.html的 – rlubke

+0

會發生什麼? – alexey

回答

2

你沒有提到你使用的是什麼版本的灰熊,但作爲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.htmindex.html默認頁面等應工作工作。

如果沒有,或者你因爲某些原因改變你的文件名,你可以簡單地延長StaticHttpHandler並重寫handle方法讓它做你想要什麼。

+1

的index.html的作品對我來說唯一的非根級別。如果我映射StaticHttpHandler根/然後以某種方式要求爲localhost:8889,甚至沒有被StaticHttpHandler處理。你知道爲什麼嗎? (我使用灰熊2.2.16和澤西島)。 – vladimir

+0

副手,我不知道爲什麼。我確實嘗試將我的實現更改爲從根開始工作,但它不會,所以我正在經歷與您一樣的事情。 –

+0

發佈爲[bug](https://java.net/jira/browse/GRIZZLY-1517?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel)。但現在必須切換到碼頭。 – vladimir