带Jetty的多个webroot文件夹

时间:2010-03-08 21:49:55

标签: java jetty

我正在使用Jetty(版本6.1.22)来为Java Web应用程序提供服务。我想让Jetty在两个不同的文件夹中查找Web资源。采取这种布局:

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

我想让Jetty同时提供这两个网址:

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

我尝试像这样启动Jetty:

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,并为second.jsp返回404。

我怎样才能让它发挥作用?我也希望保持相同的上下文(即相同的ClassLoader,相同的SessionManager等)。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我相信你必须编写你自己的WebAppContext子类来做你想做的事情。

使用该上下文部署Web应用程序的最简单方法是在上下文中使用XML文件进行部署/