2017-06-06 11 views
0

次のコードを使用すると、/ restのREST APIと/とで自分のビューを表示できます。現在、私はweb.xmlを使用していません。Jettyが埋め込まれたルートコンテキストでindex.htmlを提供

Jettyで/index.htmlを使用しても、web.xmlを定義しなくてもかまいませんか? (これは私が構築しているフレームワークの一部です - 可能ならばファイルの生成を避けたいと思います)。

protected RESTServer(int port, Class<?> api, String path) { 
     // Server 
     this.server = new org.eclipse.jetty.server.Server(port); 

     // REST 
     ServletContextHandler restHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); 
     restHandler.setContextPath(path); 

     ServletHolder servlet = restHandler.addServlet(ServletContainer.class, "/rest/*"); 
     servlet.setInitOrder(0); 
     servlet.setInitParameter(JERSEY_PROVIDER, api.getCanonicalName()); 

     // Web 
     ResourceHandler webHandler = new ResourceHandler(); 
     webHandler.setDirectoriesListed(true); 
     webHandler.setResourceBase("src/main/webapp"); 
     webHandler.setWelcomeFiles(new String[]{"index.html"}); 

     // Server 
     HandlerCollection handlers = new HandlerCollection(); 
     handlers.addHandler(webHandler); 
     handlers.addHandler(restHandler); 
     server.setHandler(handlers); 
} 

答えて

1

これは私が思いついた解決策です。 Jetty webappの依存関係が必要です。

protected RESTServer(int port, Class<?> api, String path) { 
     this.server = new org.eclipse.jetty.server.Server(port); 
     WebAppContext webAppContext = new WebAppContext(); 
     webAppContext.setResourceBase("src/main/webapp"); 
     ServletHolder restServlet = webAppContext.addServlet(ServletContainer.class, "/rest/*"); 
     restServlet.setInitOrder(0); 
     restServlet.setInitParameter(JERSEY_PROVIDER, api.getCanonicalName()); 
     HandlerCollection handlers = new HandlerCollection(); 
     handlers.addHandler(webAppContext); 
     server.setHandler(handlers); 
} 
関連する問題