2010-03-08 63 views
4

我正在使用Jetty(版本6.1.22)來爲Java Web應用程序提供服務。我想讓Jetty在兩個不同的文件夾中查找網頁資源。藉此佈局:帶Jetty的多個webroot文件夾

 
+- project1 
| +- src 
|  +- main 
|   +- webapp 
|    +- first.jsp 
| 
+- project2 
    +- src 
     +- main 
      +- webapp 
       +- second.jsp 

我想作碼頭服務於這兩個URL:

  • http://localhost/web/first.jsp
  • http://localhost/web/second.jsp

我試着開始碼頭是這樣的:

Server server = new Server(); 
SocketConnector connector = new SocketConnector(); 
connector.setPort(80); 
server.setConnectors(new Connector[] { connector }); 

WebAppContext contextWeb1 = new WebAppContext(); 
contextWeb1.setContextPath("/web"); 
contextWeb1.setWar("project1/src/main/webapp"); 
server.addHandler(contextWeb1); 

WebAppContext contextWeb2 = new WebAppContext(); 
contextWeb2.setContextPath("/web"); 
contextWeb2.setWar("project2/src/main/webapp"); 
server.addHandler(contextWeb2); 

server.start(); 

但它只能服務first.jsp,並且它返回404爲second.jsp

我該如何得到這個工作?我也想留在相同的上下文中(即相同的ClassLoader,相同的SessionManager等)。

+0

可能重複(http://stackoverflow.com/questions/11410388/add-more-than-one-resource-directory -to-碼頭) – 2015-01-31 04:41:18

回答

9

自6.1.12,這是通過使用一個ResourceCollection到WebAppContext的基礎資源支持:

Server server = new Server(80); 
WebAppContext context = new WebAppContext(); 
context.setContextPath("/"); 
ResourceCollection resources = new ResourceCollection(new String[] { 
    "project1/src/main/webapp", 
    "project2/src/main/webapp", 
}); 
context.setBaseResource(resources); 
server.setHandler(context); 
server.start(); 

更多信息:的[添加多個資源目錄到碼頭] http://docs.codehaus.org/display/JETTY/Multiple+WebApp+Source+Directory

0

我相信你將不得不寫你自己的子類WebAppContext做你想做的事。

最簡單的方法讓您的網絡應用程序部署這方面反而是利用上下文的XML文件來部署/

相關問題