2010-09-15 3 views
7

У меня есть основной класс, который настраивает и запускает Jetty. (Это стандартная практика с калитки для тестирования веб-приложения, но это на самом деле не калитка специфична.)Добавить ресурсы в Jetty программно

final Server server = new Server(); 
//skipped socketconnector initialization 

final WebAppContext bb = new WebAppContext(); 
bb.setServer(server); 
bb.setContextPath("/"); 
bb.setWar("src/main/webapp"); 
server.addHandler(bb); 
server.start(); 

Как вы можете видеть, SRC/главный/веб-приложение используется в качестве WebAPP корня. Тем не менее, у меня есть некоторые ресурсы, которые находятся в целевых/классах и которые впоследствии скопированы в webapp. Поэтому я хотел бы добавить виртуальные каталоги в причал.

Я хотел бы карту target/classes/js к /js и target/classes/css к /css

Может кто-нибудь помочь?

BTW: это мол 6.1.4

ответ

8

Добавить WebAppContext для каждого виртуального каталога:

final Server server = new Server(); 
//skipped socketconnector initialization 

final WebAppContext js = new WebAppContext(); 
js.setServer(server); 
js.setContextPath("/js"); 
js.setWar("target/classes/js"); // or whatever the correct path is in your case 
server.addHandler(js); 

// css the same way 

final WebAppContext bb = new WebAppContext(); 
bb.setServer(server); 
bb.setContextPath("/"); 
bb.setWar("src/main/webapp"); 
server.addHandler(bb); 

server.start(); 
+0

Работает как очарование, спасибо. –

+0

Зачем нужны '' WebAppContext.setServer (Server) 'и' Server.addHandler (WebAppContext)? – NSPKUWCExi2pr8wVoGNk

3

Для полноты, вот обходной путь я использую:

final Server server = new Server(); 
//skipped socketconnector initialization 

final WebAppContext bb = new WebAppContext(); 
bb.setServer(server); 
bb.setContextPath("/"); 
bb.setWar("src/main/webapp"); 
final URL url = new File("target/classes").getAbsoluteFile().toURI().toURL(); 
final Resource resource = new FileResource(url); 
final ResourceHandler handler = new ResourceHandler(); 
handler.setBaseResource(resource); 
server.addHandler(handler); 
server.addHandler(bb); 
server.start(); 

Но это не очень элегантный, он монтирует все цели/классы и использует webapp только как резерв.

Смежные вопросы