Несколько папок webroot с Jetty - PullRequest
4 голосов
/ 09 марта 2010

Я использую Jetty (версия 6.1.22) для обслуживания веб-приложения Java. Я хотел бы, чтобы Jetty смотрел в двух разных папках для веб-ресурсов. Возьми этот макет:

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

Я бы хотел, чтобы Jetty обслуживал оба URL:

  • 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 и возвращает 404 для second.jsp.

Как мне заставить это работать? Я также хотел бы остаться в том же контексте (т.е. тот же ClassLoader, тот же SessionManager и т.

Ответы [ 2 ]

9 голосов
/ 15 марта 2010

Начиная с 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 голосов
/ 09 марта 2010

Полагаю, вам придется написать свой собственный подкласс WebAppContext, который будет делать то, что вы хотите.

Самый простой способ развернуть ваше веб-приложение с этим контекстом - это развернуть его с использованием XML-файла в контекстах /

...