我正在使用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等)。
答案 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文件进行部署/